Wiki page
[topo-intro] by
sandro
2012-01-05 10:28:31.
D 2012-01-05T10:28:31.612
L topo-intro
U sandro
W 3453
<table cellspacing="12" width="100%">
<tr><td colspan="2">
<table width="100%" bgcolor="#f0f0f8">
<tr><td align="center">
<h1>Topology: a quick intro</h1>
</td></tr></table>
<tr><td width="50%">
<table width="100%" bgcolor="#f0f0f8" cellspacing="4" cellpadding="4">
<tr><td>
<h4>OGC-SFS Geometries</h4>
As you already know, the standard representation of Geometries supported by any existing Spatial DBMS is based on the following SFS classes (non-topological):<ul>
<li>(MULTI)POINT</li>
<li>(MULTI)LINESTRING</li>
<li>(MULTI)POLYGON</li>
<li>GEOMETRYCOLLECTION</li>
</ul>
<h4>Topology</h4>
An alternative representation (<a href="http://en.wikipedia.org/wiki/Planar_graph">planar graph</a>) is based on the following elements:<ul>
<li>a <b>NODE</b> simply is a notable point, and can be assumed to
be equivalent to SFS POINT.
<i>Examples</i>: <i>N1</i>, <i>N2</i>, <i>N3</i>, <i>N4</i>, <i>N5</i>
</li>
<li>an <b>EDGE</b> is an oriented path joining two nodes, and can
be assumed to be equivalent to SFS LINESTRING.<br>
<i>Examples</i>: <i>E1</i>, <i>E2</i>, <i>E3</i>, <i>E4</i>, <i>E5</i>,
<i>E6</i>, <i>E7</i>
</li>
<li>a <b>FACE</b> is a portion of the plane delimited by edges,
and can be assumed to be equivalent to SFS POLYGON.<br>
<i>Examples</i>: <i>F1</i>, <i>F2</i>, <i>F3</i>, <i>F4</i>
</li>
<li>a <b>TopoCurve</b> is a collection of one (or more) Edges, and can
be assumed to be equivalent to SFS MULTILINESTRING.</li>
<li>a <b>TopoSurface</b> is a collection of one (or more) Faces, and can
be assumed to be equivalent to SFS MULTIPOLYGON.<br>
<i>Example</i>: Faces <i>F2</i> and <i>F4</i> belongs to the same MultiPolygon.</li>
</ul>
</td></tr></table>
</td><td>
<table>
<tr><td>
<img src="http://www.gaia-gis.it/gaia-sins/topo1.png" alt="topology-1">
</td></tr></table>
</td></tr>
<tr><td colspan="2">
<table width="100%" bgcolor="#f0f0f8">
<tr><td>
Constraints on Nodes:<ul>
<li>two (or more) Nodes cannot overlap</li>
</ul>
Constraints on Edges:<ul>
<li>each Edge has a <i><u>node-from</u></i> and a <i><u>node-to</u></i>: this implies that any Edge is <i><u>oriented</u></i></li>
<li><i><u>node-from</u></i> and a <i><u>node-to</u></i> may be the same: and in this case we have a <i><u>self-closed</u></i> Edge (aka Ring).
<i>Example</i>: <i>E1</i></li>
<li>an Edge cannot contain loops (or any other kind of self-intersection)</li>
<li>two (or more) Edges can intersect only where a Node is defined.
<i>Example</i>: Edges <i>E3</i>, <i>E4</i> and <i>E5</i> intersect exactely at Node <i>N4</i></li>
<li>no Node can overlap an Edge except than at its extermities</li>
</ul>
Representation of Faces:<ul>
<li>each Face is delimited by a set of Edges: <i>Example</i>: Face <i>F3</i>
is delimited by Edges <i>E2</i>, <i>E5</i>, <i>E4</i> and <i>E6</i></li>
<li>a Face can be delimited by a single Edge: <i>Example</i>: Face <i>F2</i>
is delimited by Edge <i>E1</i></li>
<li>a Face must always have an <i><u>exterior boundary</i></u>; but can can legitimately have one (or more) <i><u>interior boundaries</i></u>
(aka <i>holes</i>) at the same time.<br>
<i>Example</i>: Face <i>F1</i> is delimited by Edges <i>E1</i>, <i>E2</i>,
<i>E3</i> and <i>E7</i><br>
Edges <i>E2</i>, <i>E3</i> and <i>E7</i> represent the <i><u>exterior boundary</u></i><br>
Edge <i>E1</i> represents an <i><u>interior boundary</u></i> (<i>hole</i>)</li>
</ul>
</td></tr></table>
</table>
Z b7304034b4ddb02f12af5ee7ebefcc35