Mathematica Guide
Mathematica Guide
1 Manual
28 / 315
For example, consider a linear dataset representing a road network. It may be the task of a GIS analyst to identify all road
segments that cross each other, not at a point, but on a line, perhaps invalidating some business rule. In this case,
ST_Crosses does not adequately provide the necessary spatial filter since, for linear features, it returns true only where
they cross at a point.
One two-step solution might be to first perform the actual intersection (ST_Intersection) of pairs of road segments that
spatially intersect (ST_Intersects), and then compare the intersections ST_GeometryType with LINESTRING (properly
dealing with cases that return GEOMETRYCOLLECTIONs of [MULTI]POINTs, [MULTI]LINESTRINGs, etc.).
A more elegant / faster solution may indeed be desirable.
A second [theoretical] example may be that of a GIS analyst trying to locate all wharfs or docks that intersect a lakes
boundary on a line and where only one end of the wharf is up on shore. In other words, where a wharf is within, but not
completely within a lake, intersecting the boundary of a lake on a line, and where the wharfs endpoints are both
completely within and on the boundary of the lake. The analyst may need to use a combination of spatial predicates to
isolate the sought after features:
ST_Contains(lake, wharf) = TRUE
ST_ContainsProperly(lake, wharf) = FALSE
ST_GeometryType(ST_Intersection(wharf, lake)) = LINESTRING
ST_NumGeometries(ST_Multi(ST_Intersection(ST_Boundary(wharf), ST_Boundary(lake)))) = 1
... (needless to say, this could get quite complicated)
According to the OpenGIS Simple Features Implementation Specification for SQL, "the basic approach to comparing two geometries is to make pair-wise tests of the intersections between the Interiors, Boundaries and Exteriors of the two geometries and
to classify the relationship between the two geometries based on the entries in the resulting intersection matrix."
Boundary
The boundary of a geometry is the set of geometries of the next lower dimension. For POINTs, which have a dimension of
0, the boundary is the empty set. The boundary of a LINESTRING are the two endpoints. For POLYGONs, the boundary
is the linework that make up the exterior and interior rings.
Interior
The interior of a geometry are those points of a geometry that are left when the boundary is removed. For POINTs,
the interior is the POINT itself. The interior of a LINESTRING are the set of real points between the endpoints. For
POLYGONs, the interior is the areal surface inside the polygon.
Exterior
The exterior of a geometry is the universe, an areal surface, not on the interior or boundary of the geometry.