[geos-devel] geos_c question from new user

strk at refractions.net strk at refractions.net
Thu Dec 22 09:24:20 EST 2005


On Thu, Dec 22, 2005 at 09:17:30AM -0500, Stephen Woodbridge wrote:
> Hi all,
> 
> I'm making my first attempt at using the GEOS C api. Basically, what I 
> am trying to do is take a bunch of linestrings, polygonize them, extract 
> the polygons and write them to a shapefile. This seems all pretty 
> straight forward to do using GEOS.
> 
> My questions are:
> 
> 1. How do I decompose a MULTIPOLYGON?
> 
> It appears the GEOSGetNumGeometries() and GEOSGetGeometryN() only work 
> on collections.

If confirmed I'd call this a bug, and eventually handle it from
the C-API.

> 2. Is a POLYGON only a single ring and a MULTIPOLYGON a single exterior 
> ring and some N interior rings? but multiple exterior rings would always 
> be returned from polygonize as a COLLECTION? If this is true, then I see 
> how to do it.

A Polygon is a "shell" ring and an arbitrary number of "hole" rings.
polygonize would return both exterior-ring only and shell/holes versions.
You might want to take a look at the BuildArea function in postgis
which contained an algorithm suggested by Carl Anderson for extracting
*valid* (multi)polygons from polygonize.

--strk;



More information about the geos-devel mailing list