st_difference для географии

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

st_difference для географии

Сообщение alex_069 » 21 июн 2017, 12:19

Добрый день!
Столкнулся с ситуацией, когда необходимо вычесть из одной географии другую. Не нашёл никаких функций для этой цели, кроме st_difference, но она работает только с геометрией.

Есть мысль использовать ST_Intersection, но, в таком случае необходимо пересекать первую геометрию с "инверсией" второй геометрии.

Прошу помощи :?:

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

Re: st_difference для географии

Сообщение freeExec » 21 июн 2017, 12:26

Так перегоните в другой тип. География - это геометрия в проекции WGS84.

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

Re: st_difference для географии

Сообщение alex_069 » 21 июн 2017, 12:29

freeExec писал(а):Так перегоните в другой тип. География - это геометрия в проекции WGS84.
Подскажите, пожалуйста, как это сделать?

Изначально геометрии беру из st_geomfromtext('POLYGON...')

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

Re: st_difference для географии

Сообщение trir » 21 июн 2017, 12:41

о чём вообще речь?

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

Re: st_difference для географии

Сообщение alex_069 » 21 июн 2017, 12:43

trir писал(а):о чём вообще речь?
Имеется полигон на шаре, и имеется еще один полигон на шаре, пересекающийся с первым. Необходимо отрезать от первого область, которая пересекается со вторым, и, что важно, производить вычисления с типом geography, дабы не получить неверную область.

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

Re: st_difference для географии

Сообщение trir » 21 июн 2017, 12:52

дабы не получить неверную область
а с чего она должна получится?

ST_Intersection
Geography: For geography this is really a thin wrapper around the geometry implementation. It first determines the best SRID that fits the bounding box of the 2 geography objects (if geography objects are within one half zone UTM but not same UTM will pick one of those) (favoring UTM or Lambert Azimuthal Equal Area (LAEA) north/south pole, and falling back on mercator in worst case scenario) and then intersection in that best fit planar spatial ref and retransforms back to WGS84 geography.

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

Re: st_difference для географии

Сообщение alex_069 » 21 июн 2017, 12:56

trir писал(а):
дабы не получить неверную область
а с чего она должна получится?

ST_Intersection
Geography: For geography this is really a thin wrapper around the geometry implementation. It first determines the best SRID that fits the bounding box of the 2 geography objects (if geography objects are within one half zone UTM but not same UTM will pick one of those) (favoring UTM or Lambert Azimuthal Equal Area (LAEA) north/south pole, and falling back on mercator in worst case scenario) and then intersection in that best fit planar spatial ref and retransforms back to WGS84 geography.
с ST_Intersection проблем нет, но она возвращает полигон пересечения.
Мне нужно из географии А вычесть географию Б

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

Re: st_difference для географии

Сообщение trir » 21 июн 2017, 12:59

Вы поняли, что там написано?
ST_Intersection для Geography - это обёртка над ST_Intersection для geometry. Geography проецируется в UTM (или в Lambert Azimuthal Equal Area для полюсов)

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

Re: st_difference для географии

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

trir писал(а):Вы поняли, что там написано?
ST_Intersection для Geography - это обёртка над ST_Intersection для geometry. Geography проецируется в UTM (или в Lambert Azimuthal Equal Area для полюсов)
теперь да :roll:
но тогда как подать данные в st_difference? -)

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

Re: st_difference для географии

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

как geometry
перепроецировав в UTM ST_Transform

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

Re: st_difference для географии

Сообщение freeExec » 21 июн 2017, 13:08

Да вроде даже работает

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

::geometry

Ответить

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

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

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