SQL中的距离差异-为什么差异如此之大?

问题描述

如果使用两种方法计算坐标之间的距离,它们之间的差异很大(超过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))

解决方法

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

因此,您将需要相互交换以获得一致的结果(取决于正确的经纬度)。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...