[OSM-dev] Polygons and Multipolygons
Artem Pavlenko
artem.mapnik at googlemail.com
Fri Feb 8 11:42:02 GMT 2008
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?
Artem
More information about the dev
mailing list