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

Ответить
spatsuev
Новоприбывший
Сообщения: 3
Зарегистрирован: 14 июл 2022, 16:41
Репутация: 0
Откуда: Тольятти

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

Сообщение spatsuev » 14 июл 2022, 16:47

Всем привет!

есть 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

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

freeExec
Гуру
Сообщения: 1195
Зарегистрирован: 23 апр 2011, 10:32
Репутация: 205
Откуда: Ульяновск

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

Сообщение freeExec » 14 июл 2022, 18:01

Может там UTM зона кончается?

spatsuev
Новоприбывший
Сообщения: 3
Зарегистрирован: 14 июл 2022, 16:41
Репутация: 0
Откуда: Тольятти

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

Сообщение spatsuev » 14 июл 2022, 23:27

Вроде получилось изменить запросы так:

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
)

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

spatsuev
Новоприбывший
Сообщения: 3
Зарегистрирован: 14 июл 2022, 16:41
Репутация: 0
Откуда: Тольятти

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

Сообщение spatsuev » 14 июл 2022, 23:28

Не очень понимаю смысл. Надо будет протестировать другие запросы.

gamm
Гуру
Сообщения: 4048
Зарегистрирован: 15 окт 2010, 08:33
Репутация: 1050
Ваше звание: программист
Откуда: Казань

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

Сообщение gamm » 15 июл 2022, 03:23

Вот фрагмент описания проекции
EPSG:26986
NAD83 / Massachusetts Mainland (Google it)

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

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

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

Ответить

Вернуться в «PostGIS/PostgreSQL»

Кто сейчас на конференции

Сейчас этот форум просматривают: Semrush [Bot] и 2 гостя