使用纬度和距离计算距离时出错经度(PostgreSQL)

时间:2018-03-24 02:28:20

标签: postgresql distance latitude-longitude

我试图计算两个位置之间的距离,给出他们在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 KM

2)选择gc_dist(34.313004,133.86454,34.313983,133.83002)为dist;

结果:213.50 KM

您可以看到1)&的更改结果2)太远而long / lat非常接近(在https://www.movable-type.co.uk/scripts/latlong.html上检查,Result1应该是0.1236而Result2:3.172>>这对我来说似乎没问题)

我在这里做错了什么?

请帮忙。我是新手。

2 个答案:

答案 0 :(得分:0)

答案 1 :(得分:0)

您可以使用内置的PostGIS功能吗?例如,您的第一个距离可以使用以下公式计算:

select st_distancesphere(st_makepoint(34.313004, 133.86454), st_makepoint(34.312454, 133.86337));

结果为136.82660446(米)。