Complete Note#1 in the http://wiki.osgeo.org/wiki/GEOS_Provenance_Review to get out...
[geos.git] / include / geos / opOverlay.h
blobb7f0ae2be590a379df55d38098defe4b6e0b7798
1 /**********************************************************************
3 * GEOS - Geometry Engine Open Source
4 * http://geos.osgeo.org
6 * Copyright (C) 2005-2006 Refractions Research Inc.
7 * Copyright (C) 2001-2002 Vivid Solutions Inc.
9 * This is free software; you can redistribute and/or modify it under
10 * the terms of the GNU Lesser General Public Licence as published
11 * by the Free Software Foundation.
12 * See the COPYING file for more information.
14 **********************************************************************/
16 #ifndef GEOS_OPOVERLAY_H
17 #define GEOS_OPOVERLAY_H
19 namespace geos {
20 namespace operation {
22 /** \brief
23 * Contains classes that perform a topological overlay to compute boolean
24 * spatial functions.
26 * The Overlay Algorithm is used in spatial analysis methods for computing
27 * set-theoretic operations (boolean combinations) of input {@link Geometry}s.
28 * The algorithm for computing the overlay uses the intersection operations
29 * supported by topology graphs.
30 * To compute an overlay it is necessary to explicitly compute the resultant
31 * graph formed by the computed intersections.
33 * The algorithm to compute a set-theoretic spatial analysis method has the
34 * following steps:
36 * - Build topology graphs of the two input geometries. For each geometry all
37 * self-intersection nodes are computed and added to the graph.
38 * - Compute nodes for all intersections between edges and nodes of the graphs.
39 * - Compute the labeling for the computed nodes by merging the labels from
40 * the input graphs.
41 * - Compute new edges between the compute intersection nodes.
42 * Label the edges appropriately.
43 * - Build the resultant graph from the new nodes and edges.
44 * - Compute the labeling for isolated components of the graph. Add the
45 * isolated components to the resultant graph.
46 * - Compute the result of the boolean combination by selecting the node
47 * and edges with the appropriate labels. Polygonize areas and sew linear
48 * geometries together.
50 * <h2>Package Specification</h2>
52 * - Java Topology Suite Technical Specifications
53 * - <A HREF="http://www.opengis.org/techno/specs.htm">
54 * OpenGIS Simple Features Specification for SQL</A>
57 namespace overlay { // geos.operation.overlay
59 } // namespace geos.operation.overlay
60 } // namespace geos.operation
61 } // namespace geos
63 #include <geos/operation/overlay/OverlayOp.h>
64 //#include <geos/operation/overlay/PolygonBuilder.h>
65 //#include <geos/operation/overlay/PointBuilder.h>
66 //#include <geos/operation/overlay/LineBuilder.h>
67 //#include <geos/operation/overlay/MinimalEdgeRing.h>
68 //#include <geos/operation/overlay/MaximalEdgeRing.h>
69 //#include <geos/operation/overlay/OverlayNodeFactory.h>
70 //#include <geos/operation/overlay/EdgeSetNoder.h>
71 //#include <geos/operation/overlay/ElevationMatrix.h>
73 #endif