Страница 1 из 1

Проблема с PostGIS функцией ST_Length

Добавлено: 14 июл 2022, 16:47
spatsuev
Всем привет!

есть 2 запроса:

этот запрос возвращает расстояние 10354 км :

SELECT ST_Length(
ST_Transform(
ST_SetSRID(
ST_GeomFromText('LINESTRING (108.492499 51.252564, 108.500315 51.249156)')
, 4326)
, 26986)
)


а этот, похожий запрос - 95 метров:

SELECT ST_Length(
ST_Transform(
ST_SetSRID(
ST_GeomFromText('LINESTRING (108.500315 51.249156, 108.501256 51.249767)')
, 4326)
, 26986)
)
похоже как то сильно влияет переход в координатах значения 108.5

Подскажите, почему так и как исправить?
Спасибо!

Re: Проблема с PostGIS функцией ST_Length

Добавлено: 14 июл 2022, 18:01
freeExec
Может там UTM зона кончается?

Re: Проблема с PostGIS функцией ST_Length

Добавлено: 14 июл 2022, 23:27
spatsuev
Вроде получилось изменить запросы так:

SELECT ST_Length(
ST_SetSRID(
ST_GeomFromText('LINESTRING (108.492499 51.252564, 108.500315 51.249156)')
, 4326)::geography
)

SELECT ST_Length(
ST_SetSRID(
ST_GeomFromText('LINESTRING (108.500315 51.249156, 108.501256 51.249767)')
, 4326)::geography
)

вроде теперь все ок.

Re: Проблема с PostGIS функцией ST_Length

Добавлено: 14 июл 2022, 23:28
spatsuev
Не очень понимаю смысл. Надо будет протестировать другие запросы.

Re: Проблема с PostGIS функцией ST_Length

Добавлено: 15 июл 2022, 03:23
gamm
Вот фрагмент описания проекции
EPSG:26986
NAD83 / Massachusetts Mainland (Google it)

WGS84 Bounds: -73.5100, 41.3500, -69.8600, 42.8900

Так что ничего странного, если применять далеко за пределами допустимых значений. Кстати, зачем :shock:

P.S. похоже у вас разность с центральным меридианом переваливает через 180, и вот результат :mrgreen: