Frage

Gibt es eine Möglichkeit von Selbstüberschneidungen von einem Polygon mit GEOS zu entfernen?

War es hilfreich?

Lösung

Also muss ich die Frage selbst beantworten. Vielleicht wird es jemand helfen.

Sie können ein Polygon reparieren die GEOS mit :: Operation :: Puffer :: BufferOp Klasse. Z.

geos::geom::Geometry * result = 
                       geos::operation::buffer::BufferOp::bufferOp(polygon, 1.0);

Sie können einige weitere gute Rezepte finden in den Geheimnisse der JTS Topology Suite.

Andere Tipps

Oft Punkt Kreuzungen sind erlaubt, so können Sie ändern

1  2   4
*--*   *       
|   \ /|
|    X |
|   / \|
*--*   *
6  5   3

1  2   4
*--*   *       
|   \ /|
|   3*6|
|   / \|
*--*   *
8  7   5

, wo die Nummern 3 und 6 sind die gleichen. Wenn Punktkreuzungen nicht erlaubt werden, bewegen sich einer von ihnen eine kleine Menge.

Nach meiner Erfahrung der meist solche Kreuzungen einige von einer fehlerhaften Polygon Vereinfachung, so wäre es besser, auf die Quelle, wenn möglich, zu gehen.

Selbst durchteuften Polygon ist ungültig. BufferOp kann somit ungültig Ergebnis. Ich fand keinen Weg, um fix Selbstschnitten Polygon in GEOS. st_makevalid Funktion in PostGIS verwendet GEOS. So ist es möglich, den Quellcode zu untersuchen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top