我是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文档,但找不到有关此类错误的任何解释。
答案 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