В чем разница между ST_BuildArea и ST_Polygonize?

9

Две функции ST_BuildAreaи ST_Polygonizeобе занимают линии и производят многоугольники.

Похоже, что ST_BuildAreaпредполагается, что внутренние кольца представляют собой отверстия и исключает их из результата, в то время как ST_Polygonizeвключает их в результат. И механизм использования функций немного другой: ST_Polygonizeэто совокупность, в то время как ST_BuildAreaтребует, чтобы вы связали входы сами, используя ST_Collect.

Помимо этого, есть ли различия между двумя функциями?

dbaston
источник
3
Возможно, эти слайды презентации могут помочь: http://2010.foss4g.org/presentations/3369.pdf
Джозеф

Ответы:

1

Это не полный ответ, но может стать отправной точкой для тех, кто ищет более подробную информацию.

ST_Polygonize(в форме polygonize_garray) и ST_BuildAreaопределены в исходном коде (зеркало) по адресу https://github.com/postgis/postgis/blob/svn-trunk/postgis/lwgeom_geos.c .

Оба они в конечном счете вызывают GEOSPolygonize, что определено в GEOS , который является портом C / C ++ Java Topology Suite .

И из документов -

ST_Polygonize - создает коллекцию GeometryCollection, содержащую возможные многоугольники, сформированные из составляющей линии набора геометрий. https://postgis.net/docs/ST_Polygonize.html

ST_BuildArea - создает площадную геометрию, образованную составной линией заданной геометрии. Тип возвращаемого значения может быть Polygon или MultiPolygon, в зависимости от ввода. Если входные линии не образуют многоугольники, возвращается NULL. Входные данные могут быть LINESTRINGS, MULTILINESTRINGS, POLYGONS, MULTIPOLYGONS и GeometryCollections. Эта функция будет предполагать, что все внутренние геометрии представляют собой отверстия. http://postgis.net/docs/ST_BuildArea.html

Брайан Бернс
источник