Аналог MakeValid для полилиний

Не знаете, где задать вопрос? Задавайте здесь.
Ответить
ParysNIK
Новоприбывший
Сообщения: 5
Зарегистрирован: 06 апр 2015, 01:36
Репутация: 0

Аналог MakeValid для полилиний

Сообщение ParysNIK » 06 апр 2015, 01:58

Здравствуйте. В PostGIS есть функция, именуемая ST_MakeValid, которая должна исправлять неправильную геометрию точек, полилиний, полигонов. Геометрию полигонов и вправду исправляет, а вот с полилиниями что-то не получается. Скажите, пожалуйста, существует ли аналог этой функции для полилиний, или как можно исправить их геометрию (заведомо неправильную) с использованием того же ST_MakeValid?

Аватара пользователя
Максим Дубинин
MindingMyOwnBusiness
Сообщения: 9129
Зарегистрирован: 06 окт 2003, 20:20
Репутация: 748
Ваше звание: NextGIS
Откуда: Москва
Контактная информация:

Re: Аналог MakeValid для полилиний

Сообщение Максим Дубинин » 06 апр 2015, 08:27

приведите пример полилинии с неправильной геометрией
пристегивайтесь, турбулентность прямо по курсу

Донецков
Гуру
Сообщения: 3058
Зарегистрирован: 19 май 2010, 19:44
Репутация: 189

Re: Аналог MakeValid для полилиний

Сообщение Донецков » 06 апр 2015, 09:23

Самопересечение (петли)...

ParysNIK
Новоприбывший
Сообщения: 5
Зарегистрирован: 06 апр 2015, 01:36
Репутация: 0

Re: Аналог MakeValid для полилиний

Сообщение ParysNIK » 06 апр 2015, 12:41

Именно так. Например, самопересечение. В случае с полигонами ST_MakeValid исправляет геометрию, меняя порядок вершин. В случае с полилиниями исправление не идёт.

[ Сообщение с мобильного устройства ]

Аватара пользователя
Максим Дубинин
MindingMyOwnBusiness
Сообщения: 9129
Зарегистрирован: 06 окт 2003, 20:20
Репутация: 748
Ваше звание: NextGIS
Откуда: Москва
Контактная информация:

Re: Аналог MakeValid для полилиний

Сообщение Максим Дубинин » 06 апр 2015, 13:38

эээ, што?

это по какому стандарту или спецификации самопересекающаяся линия является неправильной геометрией?
пристегивайтесь, турбулентность прямо по курсу

Донецков
Гуру
Сообщения: 3058
Зарегистрирован: 19 май 2010, 19:44
Репутация: 189

Re: Аналог MakeValid для полилиний

Сообщение Донецков » 06 апр 2015, 17:50

нет конечно, в машинном виде она не является неправильной геометрией, но по логике, самопересекающиеся реки или горизонтали не есть хорошо, что и хотелось бы исправлять... :)

Ariki
Гуру
Сообщения: 731
Зарегистрирован: 12 янв 2011, 22:40
Репутация: 304
Ваше звание:

Re: Аналог MakeValid для полилиний

Сообщение Ariki » 06 апр 2015, 19:32

Самопересекающаяся полилиния, конечно же, валидна, но не является простой геометрией в терминах OGC Simple Features. Найти такие геометрии можно с помощью ST_IsSimple, а вот исправить автоматически... с трудом представляю, как это могло бы работать на примере той же реки или горизонтали. Мне кажется, такие места должны исправляться вручную.

ParysNIK
Новоприбывший
Сообщения: 5
Зарегистрирован: 06 апр 2015, 01:36
Репутация: 0

Re: Аналог MakeValid для полилиний

Сообщение ParysNIK » 06 апр 2015, 21:08

Ariki писал(а):а вот исправить автоматически... с трудом представляю, как это могло бы работать на примере той же реки или горизонтали. Мне кажется, такие места должны исправляться вручную.
Просто в документации сказано, что для полилиний данная функция тоже подходит, но на деле он у них ничего не исправляет :( Быть может, этот MakeValid для полилиний как-то особенно, в некой связке, использовать?

Ariki
Гуру
Сообщения: 731
Зарегистрирован: 12 янв 2011, 22:40
Репутация: 304
Ваше звание:

Re: Аналог MakeValid для полилиний

Сообщение Ariki » 07 апр 2015, 00:38

Ещё раз: самопересечение означает некорректную геометрию для полигона, но не для полилинии. По стандарту OGC, полилинии и точки вообще не могут быть невалидными (хотя PostGIS считает таковыми полилинии, имеющие менее двух различных вершин). А значит, ST_MakeValid ничего с полилинией не делает.

Ответить

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

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

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