[geos-devel] Polygonizer returns inner rings on their own?
Martin Davis
mbdavis at refractions.net
Wed Aug 5 12:01:07 EDT 2009
The Polygonizer creates every possible polygon defined by the input
linework. That is, it forms the linework into a polygonal coverage.
That's why the hole also has a polygon filling it.
This is one common requirement for polygonization. Howwever, I can see
that it might be useful to be able to specify that the Polygonizer
should return only a (Multi)Polygon out of the input linework, which
sounds like it would meet your need. This would compute the depth
parity of the (potentially nested) polygons, and discard those with even
parity. I might try and add this to JTS shortly.
Frederik Ramm wrote:
> Hi,
>
> why is it that the (C++) Polygonizer, when given the following four
> geometries,
>
> "LINESTRING(1 1, 1 10, 10 10)"
> "LINESTRING(10 10, 10 1, 1 1)"
> "LINESTRING(20 20, 20 30, 30 30, 30 20, 20 20)"
> "LINESTRING(3 3, 3 4, 4 4, 4 3, 3 3)"
>
> (1 and 2 together form a shell, 3 forms a disjunct shell, 4 forms an
> inner ring of 1+2)
>
> returns a collection of three polygons:
>
> POLYGON ((1.00 1.00, 1.00 10.00, 10.00 10.00, 10.00 1.00, 1.00 1.00),
> (3.00 3.00, 4.00 3.00, 4.00 4.00, 3.00 4.00, 3.00 3.00))
> POLYGON ((20.00 20.00, 20.00 30.00, 30.00 30.00, 30.00 20.00, 20.00
> 20.00))
> POLYGON ((3.00 3.00, 3.00 4.00, 4.00 4.00, 4.00 3.00, 3.00 3.00))
>
> I'm ok with the first and second, but the third one has already been
> used as a "hole" inside the first and should not be returned again -
> or is there a misunderstanding on my part?
>
> Bye
> Frederik
>
--
Martin Davis
Senior Technical Architect
Refractions Research, Inc.
(250) 383-3022
More information about the geos-devel
mailing list