An important concept in spatial data modelling is that of a coverage. A coverage models a two-dimensional region in which every point has a value out of a range (which may be defined over one or a set of attributes). Coverages can be represented in both of the main physical spatial data models: raster and vector. In the raster data model a coverage is represented by a grid of cells with varying values. In the vector data model a coverage is a set of non-overlapping polygons (which usually, but not always, cover a contiguous area).
This post is about the vector data coverage model, which is termed (naturally) a polygonal coverage. These are used to model regions which are occupied by discrete sub-regions with varying sets of attribute values. The sub-regions are modelled by simple polygons. The coverage may contain gaps between polygons, and may cover multiple disjoint areas. The essential characteristics are:
- polygon interiors do not overlap
- the common boundary of adjacent polygons has the same set of vertices in both polygons.
There are many types of data which are naturally modelled by polygonal coverages. Classic examples include:
- Man-made boundaries
- parcel fabrics
- political jurisdictions
- Natural boundaries
- vegetation cover
- land use
Topological and Discrete Polygonal Coverages
Polygonal Coverage Operations
Operations which can be performed on polygonal coverages include:
- Validation - check that a set of discrete polygons forms a valid coverage
- Gap Detection - check if a polygonal coverage contains narrow gaps (using a given distance tolerance)
- Cleaning - fix errors such as gaps, overlaps and slivers in a polygonal dataset to ensure that it forms a clean, valid coverage
- Simplification - simplify (generalize) polygon boundary linework, ensuring coverage topology is preserved
- Precision Reduction - reduce precision of polygon coordinates, ensuring coverage topology is preserved
- Union - merge all or portions of the coverage polygons into a single polygon (or multipolygon, if the input contains disjoint regions)
- Overlay - compute the intersection of two coverages, producing a coverage of resultant polygons
Implementing polygonal coverage operations is a current focus for development in the JTS Topology Suite. Since most operations require a valid coverage as input, the first goal is to provide Coverage Validation. Cleaning and Simplification are priority targets as well. Coverage Union is already available, as is Overlay (in a slightly sub-optimal way). In addition, a Topology data structure will be provided to support the edge-node representation. (Yes, the Topology Suite will provide topology at last!). Stay tuned for further blog posts as functionality is rolled out.
As usual, the coverage algorithms developed in JTS will be ported to GEOS, and will thus be available to downstream projects like PostGIS.