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

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

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

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

Добавлено: 06 апр 2015, 08:27
Максим Дубинин
приведите пример полилинии с неправильной геометрией

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

Добавлено: 06 апр 2015, 09:23
Донецков
Самопересечение (петли)...

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

Добавлено: 06 апр 2015, 12:41
ParysNIK
Именно так. Например, самопересечение. В случае с полигонами ST_MakeValid исправляет геометрию, меняя порядок вершин. В случае с полилиниями исправление не идёт.

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

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

Добавлено: 06 апр 2015, 13:38
Максим Дубинин
эээ, што?

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

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

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

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

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

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

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

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

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