两个地理坐标之间的距离
Distance Between Two Geo Coordinates
我刚开始在 SQL Server (2008 r2) 中处理空间数据。我正在寻找计算两个坐标(英里)之间的距离。
DECLARE @source geography
DECLARE @target geography
SET @source = geography::STGeomFromText('POINT (43.420026 -83.974472)', 4326);
SET @target = geography::STGeomFromText('POINT (43.458786 -84.029471)', 4326);
SELECT @source.STDistance(@target)/1609.344 -- meters to miles
我的查询结果值为 3.827 英里,但我根据下面链接的网站对其进行了检查,他们返回的距离为 3.85 英里。我做错了吗?
http://www.boulter.com/gps/distance/?from=43.420026+-83.974472&to=43.458786+-84.029471&units=m
我不认为你做错了什么。您的 SQL 查询在我看来很合理。但是……
我远不是空间参考系统和测地线方面的专家(您是否考虑过向 GIS SE 的专家请教?);尽管如此,我想到了三种可能性:
也许他们计算的是直线距离而不是测地距离(即曲线距离,地球毕竟不是平的)。 SQL 服务器的 geography
类型应说明这一点。
这似乎不太合理,因为“他们的”距离大于“您的”:您会认为直线距离小于测地线距离。
也许他们可以比 SQL 服务器更准确地进行计算(参见 the MSDN reference page for geography.STDistance 上的注释) :
"STDistance()
returns the shortest LineString
between two geography types. This is a close approximate to the geodesic distance. The deviation of STDistance()
on common earth models from the exact geodesic distance is no more than .25%. This avoids confusion over the subtle differences between length and distance in geodesic types."
或者说,这两种计算都有些不准确,但是方向相反。如果我没记错的话,你引用的两个结果相差大约 0.5%,这可能只是它们的偏差和 SQL 服务器的偏差之和。
但我可能完全错了。
我刚开始在 SQL Server (2008 r2) 中处理空间数据。我正在寻找计算两个坐标(英里)之间的距离。
DECLARE @source geography
DECLARE @target geography
SET @source = geography::STGeomFromText('POINT (43.420026 -83.974472)', 4326);
SET @target = geography::STGeomFromText('POINT (43.458786 -84.029471)', 4326);
SELECT @source.STDistance(@target)/1609.344 -- meters to miles
我的查询结果值为 3.827 英里,但我根据下面链接的网站对其进行了检查,他们返回的距离为 3.85 英里。我做错了吗?
http://www.boulter.com/gps/distance/?from=43.420026+-83.974472&to=43.458786+-84.029471&units=m
我不认为你做错了什么。您的 SQL 查询在我看来很合理。但是……
我远不是空间参考系统和测地线方面的专家(您是否考虑过向 GIS SE 的专家请教?);尽管如此,我想到了三种可能性:
也许他们计算的是直线距离而不是测地距离(即曲线距离,地球毕竟不是平的)。 SQL 服务器的
geography
类型应说明这一点。这似乎不太合理,因为“他们的”距离大于“您的”:您会认为直线距离小于测地线距离。
也许他们可以比 SQL 服务器更准确地进行计算(参见 the MSDN reference page for geography.STDistance 上的注释) :
"
STDistance()
returns the shortestLineString
between two geography types. This is a close approximate to the geodesic distance. The deviation ofSTDistance()
on common earth models from the exact geodesic distance is no more than .25%. This avoids confusion over the subtle differences between length and distance in geodesic types."或者说,这两种计算都有些不准确,但是方向相反。如果我没记错的话,你引用的两个结果相差大约 0.5%,这可能只是它们的偏差和 SQL 服务器的偏差之和。
但我可能完全错了。