gpt4 book ai didi

postgresql - 来自 PostGIS 的 st_distance_sphere 返回意外值?

转载 作者:行者123 更新时间:2023-11-29 13:31:38 25 4
gpt4 key购买 nike

我正在使用 PostgreSQL v9.1.11 和 PostGIS 2.1.0。我正在使用 st_distance_sphere 来计算各个点之间的距离,但得到的结果不正常。根据文档,该函数应返回提供的 2 点之间的距离(以米为单位)。这是我运行的两个示例:

select st_distance_sphere(
st_setsrid(st_makepoint(33.44, -82.60), 4326), -- location near Warrenton, GA
st_setsrid(st_makepoint(33.533, -82.517), 4326) -- locaton near Thomson, GA
)

返回 9325.862 米,或 5.8 英里,这似乎是正确的

select st_distance_sphere(
st_setsrid(st_makepoint(33.44, -82.60), 4326), -- location near Warrenton, GA
st_setsrid(st_makepoint(32.819, -97.361), 4326) -- location near Forth Worth, TX
)

返回 9873.560 米,或 6.1 英里,这还差得远。

我已经阅读并重新阅读了 PostGIS 文档,但找不到任何我做错的地方。该功能是否只是行为不端?

最佳答案

验证您的查询我收到以下错误:

enter image description here

回顾文档我们可以看到:

ST_Distance_Sphere — Returns linear distance in meters between two lon/la points

这意味着点的第一个坐标必须是经度,第二个是纬度

因此,您将拥有以下正确的位置坐标:

(-82.60, 33.44)   -- location near Warrenton, GA
(-82.517, 33.533 -- locaton near Thomson, GA
(-97.361, 32.819) -- location near Forth Worth, TX

现在,让我们再次运行查询:

select st_distance_sphere(
st_setsrid(st_makepoint(-82.60, 33.44), 4326), -- location near Warrenton, GA
st_setsrid(st_makepoint(-82.517, 33.533), 4326) -- locaton near Thomson, GA
)

结果: 12891.3730143974 米 = 8.01 英里

select st_distance_sphere(
st_setsrid(st_makepoint(-82.60, 33.44), 4326), -- location near Warrenton, GA
st_setsrid(st_makepoint(-97.361, 32.819), 4326) -- location near Forth Worth, TX
)

结果: 1375107.45231354 米 = 854.45 英里

关于postgresql - 来自 PostGIS 的 st_distance_sphere 返回意外值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21945428/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com