Проблемы с функцией POSTGIS ST_DISTANCE и результаты - PullRequest
0 голосов
/ 11 марта 2020

Привет У меня возникли некоторые проблемы с postgis и вычислениями.

Использование ST_DISTANCE вызывает некоторую путаницу:

SELECT st_distance(
    ST_SetSRID(ST_MakePoint(16.0420,45.8250), 4326),
    ST_SetSRID(ST_MakePoint(16.1675,45.8344), 4326));

в результате возвращает 0.12585153952177025.

Результат кажется немного странным, так как при простой видимой проверке эти точки довольно далеко, и результат должен быть в метрах.

Например:

select st_distance(
  'POINT(15.651955 73.712769 )'::geography,
  'POINT(14.806993 74.131451 )'::geography) AS d;

возвращает 53536.74349675, который, кажется, работает правильно .

Можете ли вы сказать мне, что я делаю не так?

1 Ответ

0 голосов
/ 11 марта 2020

st_distance возвращает расстояние в единицах используемой системы координат. Для 4326, единицей является degree, поэтому расстояние в градусах (что не имеет смысла).

Как вы уже сделали, вы можете сначала привести к географии, которая возвращает результат в метрах. Вы также можете использовать ST_DistanceSpheroid, чтобы получить расстояние в метрах, или вы можете использовать подходящую систему координат, единица измерения в метрах.

...