[OSM-dev] Polygons and Multipolygons

Andy Robinson (blackadder) blackadderajr at googlemail.com
Fri Feb 8 11:46:50 GMT 2008


Artem Pavlenko wrote:
>Sent: 08 February 2008 11:42 AM
>To: talk Openstreetmap
>Cc: OSM-Dev Openstreetmap
>Subject: [OSM-dev] Polygons and Multipolygons
>
>Hello,
>
>I found the way term 'Multipolygon' is used in OSM context is confusing.
>
>Here are ISO 19125-1 definitions :
>
>1. Polygon
>
>A Polygon is a planar Surface, defined by 1 exterior boundary and 0
>or more interior boundaries. Each
>interior boundary defines a hole in the Polygon.
>
>The assertions for polygons (the rules that define valid polygons) are:
>1. Polygons are topologically closed.
>2. The boundary of a Polygon consists of a set of LinearRings that
>make up its exterior and interior
>boundaries.
>3. No two rings in the boundary cross, the rings in the boundary of a
>Polygon may intersect at a Point but
>only as a tangent :
>" P Î Polygon, " c1, c2 Î P.Boundary(), c1 1 c2, " p, q Î Point, p, q
>Î c1, p 1 q, [ p Î c2 ? q Ï c2]
>4. A Polygon may not have cut lines, spikes or punctures:
>" P Î Polygon, P = Closure(Interior(P))
>5. The Interior of every Polygon is a connected point set.
>6. The Exterior of a Polygon with 1 or more holes is not connected.
>Each hole defines a connected
>component of the Exterior.
>In the above assertions, Interior, Closure and Exterior have the
>standard topological definitions. The
>combination of 1 and 3 make a Polygon a Regular Closed point set.
>
>2. MultiPolygon
>
>A MultiPolygon is a MultiSurface whose elements are Polygons.
>
>The assertions for MultiPolygons are :
>1. The interiors of 2 Polygons that are elements of a MultiPolygon
>may not intersect.
>" M Î MultiPolygon, " Pi, Pj Î M.Geometries(), i1j, Interior(Pi) Ç
>Interior(Pj) = Æ
>2. The Boundaries of any 2 Polygons that are elements of a
>MultiPolygon may not ‘cross’ and may touch
>at only a finite number of points. (Note that crossing is prevented
>by assertion 1 above).
>" M Î MultiPolygon, " Pi, Pj Î M.Geometries(), " ci Î Pi.Boundaries
>(), cj Î Pj.Boundaries()
>ci Ç cj = {p1, 
.., pk | pi Î Point, 1 <= i <= k}
>3. A MultiPolygon is defined as topologically closed.
>4. A MultiPolygon may not have cut lines, spikes or punctures, a
>MultiPolygon is a Regular, Closed point
>set:
>" M Î MultiPolygon, M = Closure(Interior(M))
>5. The interior of a MultiPolygon with more than 1 Polygon is not
>connected, the number of connected
>components of the interior of a MultiPolygon is equal to the number
>of Polygons in the MultiPolygon.
>
>The boundary of a MultiPolygon is a set of closed curves
>(LineStrings) corresponding to the boundaries of
>its element Polygons. Each Curve in the boundary of the MultiPolygon
>is in the boundary of exactly 1
>element Polygon, and every Curve in the boundary of an element
>Polygon is in the boundary of the
>MultiPolygon.
>
>
>It might look quite verbose but it all comes down to very simple fact:
>
>1. What we call Multipolygon is just a Polygon
>2. Multipolygon is a collection of Polygons
>
>
>Shouldn't we be calling MultiPolygon  Polygon?
>

Mostly I suspect so. Perhaps the issue came to light when people started to
refer to islands in lakes where there are two polygons, one inside the
other.

Cheers

Andy





More information about the dev mailing list