【问题标题】:Distance difference in SQL - why so big discrepancy?SQL中的距离差异-为什么差异如此之大?
【发布时间】:2020-08-20 11:31:55
【问题描述】:

如果计算坐标之间的距离,我使用2种方法,它们之间的差异很大(超过400 m)。你知道为什么吗?在所有计算方法中,哪一种最准确?

第一个:

DECLARE @source geography = 'POINT(53.9202690124512 14.2586479187012)'
DECLARE @target geography = 'POINT(53.8970128 14.2387088)'

SELECT @source.STDistance(@target)

第二个:

SELECT geography::Point(53.9202690124512, 14.2586479187012, 4326).STDistance(geography::Point(53.8970128, 14.2387088, 4326))

【问题讨论】:

  • 用您正在使用的数据库标记您的问题。

标签: sql sql-server spatial-query sqlgeography


【解决方案1】:

geography::Point 期望按该顺序传递纬度和经度。 WKT 的POINT 期望按该顺序传递经度和纬度。查看结果:

DECLARE @wkt_source geography = 'POINT(53.9202690124512 14.2586479187012)'
DECLARE @wkt_target geography = 'POINT(53.8970128 14.2387088)'

select @wkt_source.STAsText() as wkt_source, @wkt_target.STAsText() as wkt_target

declare @point_source geography = geography::Point(53.9202690124512, 14.2586479187012, 4326)
declare @point_target geography = geography::Point(53.8970128, 14.2387088, 4326)


select @point_source.STAsText() as point_source, @point_target.STAsText() as point_target

因此,您需要交换一个或另一个以获得一致的结果(取决于哪个 lat/lng 是正确的)。

【讨论】:

    猜你喜欢
    • 2019-11-24
    • 1970-01-01
    • 2012-01-20
    • 1970-01-01
    • 2019-09-13
    • 2012-10-18
    • 2011-12-03
    • 2012-11-19
    • 1970-01-01
    相关资源
    最近更新 更多