Postgis ST_Distance_Sphere给出的结果太高了1.7

时间:2019-06-26 13:24:46

标签: postgresql postgis

我是Postgis和空间领域的新手,我正在努力进行非常简单的查询。

我在places中有两条记录供测试,其中列addressLocation是一个POINT,具有以下值:

(51.122711,17.031819)
(51.122805,17.035522)

我正在尝试查询:

SELECT *
FROM places
WHERE ST_Distance_Sphere("addressLocation"::geometry, ST_MakePoint(51.122711, 17.033686)) <= 255;

51.122711, 17.033686大约位于这两个点之间的中心,在Google地图上测得的距离约为125和128米。

问题在于(51.122805,17.035522)205为限制进入结果,而另一个210为结果。

我一直在浏览PostGIS文档,但找不到有关此类错误的任何解释。

1 个答案:

答案 0 :(得分:3)

PostGIS中的坐标必须表示为经度/纬度,而Google Map中的坐标则表示为纬度/经度。

您的查询正在计算也门的距离:

Select ST_DistanceSphere(st_geomFromText('POINT(51.122711 17.031819)'),
st_geomFromText('POINT(51.122711 17.033686)'));
 st_distancesphere
-------------------
      207.60121386

通过交换坐标,点位于波兰,距离为:

Select ST_DistanceSphere(st_geomFromText('POINT(17.031819 51.122711)'),
 st_geomFromText('POINT(17.033686 51.122711)'));
 st_distancesphere
-------------------
      130.30184168