Was ist der Unterschied zwischen ST_BuildArea und ST_Polygonize?

9

Die beiden Funktionen ST_BuildAreaund ST_Polygonizebeide nehmen Linien und erzeugen Polygone.

Es scheint, dass ST_BuildAreaangenommen wird, dass innere Ringe Löcher darstellen und sie im Ergebnis weglassen, während ST_Polygonizesie in das Ergebnis einbezogen werden. Und die Mechanik der Verwendung der Funktionen ist etwas anders: Es ST_Polygonizehandelt sich um ein Aggregat, bei ST_BuildAreadem Sie die Eingaben selbst bündeln müssen ST_Collect.

Gibt es darüber hinaus Unterschiede zwischen den beiden Funktionen?

dbaston
quelle
3
Vielleicht könnten diese Präsentationsfolien helfen: http://2010.foss4g.org/presentations/3369.pdf
Joseph

Antworten:

1

Dies ist keine vollständige Antwort, könnte aber ein Ausgangspunkt für jemanden sein, der nach weiteren Details sucht.

ST_Polygonize(in Form von polygonize_garray) und ST_BuildAreasind im Quellcode (Spiegel) unter https://github.com/postgis/postgis/blob/svn-trunk/postgis/lwgeom_geos.c definiert .

Beide rufen schließlich auf GEOSPolygonize, was in GEOS definiert ist, einem C / C ++ - Port der Java Topology Suite .

Und aus den Dokumenten -

ST_Polygonize - Erstellt eine GeometryCollection mit möglichen Polygonen, die aus den konstituierenden Linien einer Reihe von Geometrien gebildet werden. https://postgis.net/docs/ST_Polygonize.html

ST_BuildArea - Erstellt eine Flächengeometrie, die aus den konstituierenden Linien einer bestimmten Geometrie besteht. Der Rückgabetyp kann je nach Eingabe ein Polygon oder ein MultiPolygon sein. Wenn die Eingabezeilen keine Polygone bilden, wird NULL zurückgegeben. Die Eingaben können LINESTRINGS, MULTILINESTRINGS, POLYGONS, MULTIPOLYGONS und GeometryCollections sein. Diese Funktion setzt voraus, dass alle inneren Geometrien Löcher darstellen. http://postgis.net/docs/ST_BuildArea.html

Brian Burns
quelle