Jaka jest różnica między ST_BuildArea a ST_Polygonize?

9

Dwie funkcje ST_BuildAreai ST_Polygonizeobie przyjmują linie i wytwarzają wielokąty.

Wydaje się, że ST_BuildAreazakłada się, że pierścienie wewnętrzne reprezentują dziury i pomija je w wyniku, a jednocześnie ST_Polygonizeuwzględnia je w wyniku. A mechanika korzystania z funkcji jest nieco inna: ST_Polygonizejest agregacją, podczas gdy sam ST_BuildAreawymaga spakowania danych wejściowych ST_Collect.

Poza tym, czy są jakieś różnice między tymi dwiema funkcjami?

dbaston
źródło
3
Być może te slajdy prezentacji mogą pomóc: http://2010.foss4g.org/presentations/3369.pdf
Joseph

Odpowiedzi:

1

To nie jest pełna odpowiedź, ale może być punktem wyjścia dla kogoś, kto szuka więcej szczegółów.

ST_Polygonize(w formie polygonize_garray) i ST_BuildAreasą zdefiniowane w kodzie źródłowym (dublowanie) na https://github.com/postgis/postgis/blob/svn-trunk/postgis/lwgeom_geos.c .

Oba ostatecznie wywołują GEOSPolygonize, co jest zdefiniowane w GEOS , który jest portem C / C ++ pakietu Java Topology Suite .

I z dokumentów -

ST_Polygonize - Tworzy GeometryCollection zawierającą możliwe wielokąty utworzone ze składowej linii linii zestawu geometrii. https://postgis.net/docs/ST_Polygonize.html

ST_BuildArea - Tworzy geometrię powierzchniową utworzoną przez element składowy danej geometrii. Zwracany typ może być wielokątem lub wielokątem, w zależności od danych wejściowych. Jeśli linie wejściowe nie tworzą wielokątów, zwracana jest wartość NULL. Wejściami mogą być LINESTRINGS, MULTILINESTRINGS, POLYGONS, MULTIPOLYGONS i GeometryCollections. Ta funkcja zakłada, że ​​wszystkie geometrie wewnętrzne reprezentują otwory. http://postgis.net/docs/ST_BuildArea.html

Brian Burns
źródło