Postgis ST_Distance_Sphere дает около 1,7 слишком высокого результата - PullRequest
0 голосов
/ 26 июня 2019

Я новичок в Postgis и пространственных вещах, и я борюсь с довольно простым запросом.

У меня есть две записи в places для теста, где столбец addressLocation - это ТОЧКА со следующими значениями:

(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 Ответ

3 голосов
/ 26 июня 2019

Координаты в 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
...