【发布时间】:2018-09-02 18:38:59
【问题描述】:
我正在尝试根据 postgres sql 上的纬度和经度信息计算两个位置之间的距离。
在谷歌搜索时,我发现我可以使用以下功能:
创建或替换函数 gc_dist (_lat1 FLOAT8,_lon1 FLOAT8,_lat2 FLOAT8,_lon2 FLOAT8) 返回 FLOAT8 作为 $$ SELECT ACOS(SIN($1)*SIN($3) + COS($1)*COS($3)*COS($4 - $2))*6371;$$ LANGUAGE sql IMMUTABLE;
我在几个纬度/经度组合上使用了这个函数,结果似乎抛出了奇怪的值,例如
1) 选择 gc_dist(34.313004, 133.86454, 34.312454, 133.86337) 作为 dist;
结果:8.04 公里
2) 选择gc_dist(34.313004, 133.86454, 34.313983, 133.83002) 作为dist;
结果:213.50 公里
您可以看到 1) 和 2) 的更改结果太远了,而 long/lat 非常接近(检查 https://www.movable-type.co.uk/scripts/latlong.html,Result1 应该是 0.1236 和 Result2: 3.172 >> 这对我来说似乎没问题)
我在这里做错了什么?
请帮忙。我是新手。
【问题讨论】:
标签: postgresql distance latitude-longitude