/**********************************************************************
*
* GEOS - Geometry Engine Open Source
* http://geos.osgeo.org
*
* Copyright (C) 2001-2002 Vivid Solutions Inc.
* Copyright (C) 2005 Refractions Research Inc.
*
* This is free software; you can redistribute and/or modify it under
* the terms of the GNU Lesser General Public Licence as published
* by the Free Software Foundation.
* See the COPYING file for more information.
*
**********************************************************************/
#ifndef GEOS_OPRELATE_H
#define GEOS_OPRELATE_H
namespace geos {
namespace operation { // geos::operation
/** \brief
* Contains classes to implement the computation of the spatial relationships of Geometry
s.
*
* The relate
algorithm computes the IntersectionMatrix
describing the
* relationship of two Geometry
s. The algorithm for computing relate
* uses the intersection operations supported by topology graphs. Although the relate
* result depends on the resultant graph formed by the computed intersections, there is
* no need to explicitly compute the entire graph.
* It is sufficient to compute the local structure of the graph
* at each intersection node.
*
* The algorithm to compute relate
has the following steps:
*
IntersectionMatrix
from the labels on the nodes and edges.
* Geometry
which
* do not contain any intersections with the other input Geometry
. The
* topological relationship of these components to the other input Geometry
* must be computed in order to determine the complete labeling of the component. This can
* be done by testing whether the component lies in the interior or exterior of the other
* Geometry
. If the other Geometry
is 1-dimensional, the isolated
* component must lie in the exterior (since otherwise it would have an intersection with an
* edge of the Geometry
). If the other Geometry
is 2-dimensional,
* a Point-In-Polygon test can be used to determine whether the isolated component is in the
* interior or exterior.
*
*