st_difference и 180 мередиан

Не знаете, где задать вопрос? Задавайте здесь.
Ответить
alex_069
Интересующийся
Сообщения: 15
Зарегистрирован: 21 июн 2017, 12:14
Репутация: 0

st_difference и 180 мередиан

Сообщение alex_069 » 21 июн 2017, 13:09

Ситуация такова:
есть полигон некой области в районе Чукотского автономного округа
при помощи st_difference из него вычитаю полигон, включающий часть России, не полностью пересекающий первый полигон. в результате получаю "расколбас" данных. Что-то подсказывает, что это возникает при проходе через 180 мередиан. Кто-нибудь сталкивался с такой проблемой?
Последний раз редактировалось alex_069 23 июн 2017, 10:20, всего редактировалось 1 раз.

trir
Гуру
Сообщения: 5298
Зарегистрирован: 09 апр 2010, 19:30
Репутация: 1015
Ваше звание: просто мимо прохожу
Откуда: Ё-бург

Re: st_difference и 180 мередиан

Сообщение trir » 21 июн 2017, 13:17

обсуждалось, нужно просто выбрать подходящую проекцию

alex_069
Интересующийся
Сообщения: 15
Зарегистрирован: 21 июн 2017, 12:14
Репутация: 0

Re: st_difference и 180 мередиан

Сообщение alex_069 » 22 июн 2017, 08:14

trir писал(а):обсуждалось, нужно просто выбрать подходящую проекцию
найти не удалось, не направите в направлении топика с обсуждением?

trir
Гуру
Сообщения: 5298
Зарегистрирован: 09 апр 2010, 19:30
Репутация: 1015
Ваше звание: просто мимо прохожу
Откуда: Ё-бург

Re: st_difference и 180 мередиан

Сообщение trir » 22 июн 2017, 08:27


alex_069
Интересующийся
Сообщения: 15
Зарегистрирован: 21 июн 2017, 12:14
Репутация: 0

Re: st_difference и 180 мередиан

Сообщение alex_069 » 23 июн 2017, 08:57

trir писал(а):viewtopic.php?f=2&t=18501
Благодарю.
Попробовал использовать цилиндрическую проекцию для использования st_difference, но результат не оправдал ожиданий. Проблема сохраняется.
Запрос вида:
SELECT st_astext(st_transform(ST_Difference(st_transform(ST_GeomFromText(A,4326),MySRID), st_transform(ST_GeomFromText(B,4326),MySRID)),4326)

SRID создал из строки proj4 из темы, на которую Вы дали ссылку.

Код: Выделить всё

+proj=eqc +lat_0=0 +lon_0=100 +lat_ts=60 +x_0=0 +y_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs

trir
Гуру
Сообщения: 5298
Зарегистрирован: 09 апр 2010, 19:30
Репутация: 1015
Ваше звание: просто мимо прохожу
Откуда: Ё-бург

Re: st_difference и 180 мередиан

Сообщение trir » 23 июн 2017, 09:00

а что получается, если не переводить обратно в исходную проекцию?

alex_069
Интересующийся
Сообщения: 15
Зарегистрирован: 21 июн 2017, 12:14
Репутация: 0

Re: st_difference и 180 мередиан

Сообщение alex_069 » 23 июн 2017, 09:14

trir писал(а):а что получается, если не переводить обратно в исходную проекцию?
Что-то получается, но где отобразить данные в такой проекции?)

alex_069
Интересующийся
Сообщения: 15
Зарегистрирован: 21 июн 2017, 12:14
Репутация: 0

Re: st_difference и 180 мередиан

Сообщение alex_069 » 23 июн 2017, 09:27

Загнал в обычный сервис по построению графика по точкам. Результат визуально верный. Теперь встаёт вопрос, что же не так с st_transform?

trir
Гуру
Сообщения: 5298
Зарегистрирован: 09 апр 2010, 19:30
Репутация: 1015
Ваше звание: просто мимо прохожу
Откуда: Ё-бург

Re: st_difference и 180 мередиан

Сообщение trir » 23 июн 2017, 09:53

где отобразить данные в такой проекции?
в QGIS например, а в чём нужно?
Результат визуально верный. Теперь встаёт вопрос, что же не так с st_transform?
просто при трансформации происходит нарушение топологии, что бы его избежать, нужно разрезать полигон по 180 мередиан

alex_069
Интересующийся
Сообщения: 15
Зарегистрирован: 21 июн 2017, 12:14
Репутация: 0

Re: st_difference и 180 мередиан

Сообщение alex_069 » 23 июн 2017, 10:19

trir писал(а):
где отобразить данные в такой проекции?
в QGIS например, а в чём нужно?
Результат визуально верный. Теперь встаёт вопрос, что же не так с st_transform?
просто при трансформации происходит нарушение топологии, что бы его избежать, нужно разрезать полигон по 180 мередиан
Да, вы правы. Если разрезать полигон по 180 меридиану, всё становится на свои места. Спасибо!

alex_069
Интересующийся
Сообщения: 15
Зарегистрирован: 21 июн 2017, 12:14
Репутация: 0

Re: st_difference и 180 мередиан

Сообщение alex_069 » 26 июн 2017, 09:47

Аналогично 180 меридиану, на пересечении с экватором с использованием st_difference получаю ошибочную географию. Если в первом случае помогала функция ST_Shift_Longitude, то какая поможет в этом?

trir
Гуру
Сообщения: 5298
Зарегистрирован: 09 апр 2010, 19:30
Репутация: 1015
Ваше звание: просто мимо прохожу
Откуда: Ё-бург

Re: st_difference и 180 мередиан

Сообщение trir » 26 июн 2017, 09:52

а проекция какая?

alex_069
Интересующийся
Сообщения: 15
Зарегистрирован: 21 июн 2017, 12:14
Репутация: 0

Re: st_difference и 180 мередиан

Сообщение alex_069 » 26 июн 2017, 09:55

trir писал(а):а проекция какая?
4326

trir
Гуру
Сообщения: 5298
Зарегистрирован: 09 апр 2010, 19:30
Репутация: 1015
Ваше звание: просто мимо прохожу
Откуда: Ё-бург

Re: st_difference и 180 мередиан

Сообщение trir » 27 июн 2017, 08:15

Меркатор должен помочь

Ответить

Вернуться в «Я новичок!»

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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 0 гостей