Subclasses of CV_ContinuousCoverage Discrete coverage types CV_PointValuePair CV_GridPointValuePair CV_CurveValuePair CV_SurfaceValuePair

Copyright © 2007 Open Geospatial Consortium, Inc. All Rights Reserved. 26 Figure 5 — Discrete coverage types Because the superclass is not abstract, an instance of the superclass may consist of mixed types of CV_GeometryValuePair.

6.2 CV_DiscretePointCoverage

6.2.1 General

A discrete point coverage is characterized by a finite domain consisting of points. Generally, the domain is a set of irregularly distributed points. However, the principal use of discrete point coverages is to provide a basis for continuous coverage functions, where the evaluation of the continuous coverage function is accomplished by interpolation between the points of the discrete point coverage. Most interpolation algorithms depend upon a structured pattern of spatial relationships between the points. This requires either that the points in the spatial domain of the discrete point coverage be arranged in a regular way, or that the spatial domain of the continuous coverage be partitioned in a regular way in relation to the points of the discrete point coverage. Grid coverages Clauses 8 and 9 employ the first method; Thiessen polygon Clause 7 and TIN Clause 10 coverages employ the second. EXAMPLE A set of hydrographic soundings is a discrete point coverage. Copyright © 2007 Open Geospatial Consortium, Inc. All Rights Reserved. 27 Figure 6 — CV_DiscretePointCoverage

6.2.2 Inherited associations and operations

CV_DiscretePointCoverage Figure 6 inherits the association CoverageFunction and the operations locate, find, and list from CV_DiscreteCoverage 5.7, with the restriction that the associated CV_GeometryValuePairs and those returned by the operations shall be limited to CV_PointValuePairs.

6.3 CV_PointValuePair

CV_PointValuePair is the subtype of CV_GeometryValuePair that has a GM_Point as the value of its geometry attribute.

6.4 CV_DiscreteGridPointCoverage

6.4.1 General

The domain of a CV_DiscreteGridPointCoverage Figure 7 is a set of CV_GridPoints 8.5 that are associated with records of feature attribute values through a CV_GridValuesMatrix 8.14.

6.4.2 Inherited associations and operations

CV_DiscreteGridPointCoverage Figure 7 inherits the association CoverageFunction and the operations locate, find, and list, from CV_DiscreteCoverage, with the restriction that the associated CV_GeometryValuePairs and those returned by the operations shall be limited to CV_GridPointValuePairs. The association CoverageFunction is shown as derived in this case because the elements may be generated from the CV_GridValuesMatrix through the association PointFunction. The inherited operations evaluate and evaluateInverse use CV_GridValuesMatrix to assign values to the CV_GeometryValuePairs. Copyright © 2007 Open Geospatial Consortium, Inc. All Rights Reserved. 28 Figure 7 — CV_DiscreteGridPointCoverage

6.4.3 point

The operation point g: CV_GridCoordinates: CV_GridPointValuePair shall accept a grid coordinate as input and use data from the associated CV_GridValuesMatrix to construct and return the CV_GridPointValuePair associated with that grid position.

6.4.4 PointFunction

The association PointFunction shall link the CV_DiscreteGridPointCoverage to the CV_GridValuesMatrix for which it is an evaluator.

6.5 CV_GridPointValuePair

CV_GridPointValuePair is the subtype of CV_GeometryValuePair that has a GM_GridPoint as the value of its geometry attribute.

6.6 CV_DiscreteCurveCoverage

6.6.1 General

A discrete curve coverage is characterized by a finite spatial domain consisting of curves. Often the curves represent features such as roads, railroads or streams. They may be elements of a network. EXAMPLE A coverage that assigns a route number, a name, a pavement width and a pavement material type to each segment of a road system. Copyright © 2007 Open Geospatial Consortium, Inc. All Rights Reserved. 29

6.6.2 Inherited operations and associations

CV_DiscreteCurveCoverage Figure 8 inherits the association CoverageFunction and the operations locate, find, list, evaluate and evaluateInverse from CV_DiscreteCoverage, with the restriction that the associated CV_GeometryValuePairs and those returned by the operations shall be limited to CV_CurveValuePairs. Figure 8 — CV_DiscreteCurveCoverage

6.7 CV_CurveValuePair

CV_CurveValuePair is the subtype of CV_GeometryValuePair that has a GM_Curve as the value of its geometry attribute.

6.8 CV_DiscreteSurfaceCoverage

6.8.1 General

A discrete surface coverage is a coverage whose domain consists of a collection of surfaces. In most cases, the surfaces that constitute the domain of a coverage are mutually exclusive and exhaustively partition the extent of the coverage. Surfaces or their boundaries may be of any shape. The boundaries of component surfaces often correspond to natural phenomena and are highly irregular. EXAMPLE A coverage that represents soil types typically has a spatial domain composed of surfaces with irregular boundaries. Any set of polygons can be used as a spatial domain for a discrete surface coverage. Spatial domains composed of congruent polygons are very common. Often, these domains are composed of congruent rectangles or regular hexagons. The geometry of such a tessellation may be described in terms of a quadrilateral grid 8.2 or a hexagonal grid 9.1. The spatial domain of a discrete surface coverage may also consist of the triangles that compose a TIN 10.7, or the polygons of a Thiessen polygon network 7.1. Copyright © 2007 Open Geospatial Consortium, Inc. All Rights Reserved. 30 Figure 9 — CV_DiscreteSurfaceCoverage

6.8.2 Inherited operations and associations

CV_DiscreteSurfaceCoverage Figure 9 inherits the association CoverageFunction and the operations locate, find, list, evaluate, and evaluateInverse from CV_DiscreteCoverage, with the restriction that the associated CV_GeometryValuePairs and those returned by the operations shall be limited to CV_SurfaceValuePairs.

6.8.3 TINBase

The association TINBase may be used to link a CV_DiscreteSurfaceCoverage to a CV_TINCoverage 10.2. The constraint discreteTIN.element.geometry = triangleSource.controlValue.geometry requires that the spatial domain of the CV_DiscreteSurfaceCoverage be composed of the triangles belonging to the CV_TINCoverage.

6.8.4 ThiessenBase

The association ThiessenBase may be used to link a CV_DiscreteSurfaceCoverage to a CV_ThiessenPolygonCoverage 7.2. The constraint discreteThiessen.element.geometry = polygonSource.controlValue.geometry requires that the spatial domain of the CV_DiscreteSurfaceCoverage be composed of the polygons belonging to the CV_ThiessenPolygonCoverage. Copyright © 2007 Open Geospatial Consortium, Inc. All Rights Reserved. 31

6.9 CV_SurfaceValuePair

CV_SurfaceValuePair is the subtype of CV_GeometryValuePair that has a GM_Surface as the value of its geometry attribute.

6.10 CV_DiscreteSolidCoverage

6.10.1 General

A discrete solid coverage is a coverage whose domain consists of a collection of solids. Solids or their boundaries may be of any shape. Generally, the solids that constitute the domain of a coverage are mutually exclusive and exhaustively partition the extent of the coverage, but this is not required. EXAMPLE Buildings in an urban area could be represented as a set of unconnected GM_Solids each with attributes such as building name, address, floor space and number of occupants. As in the case of surfaces 5.8, the spatial domain of a discrete solid coverage may be a regular or semiregular tessellation of the extent of the coverage. The tessellation can be defined in terms of a three- dimensional grid, where the set of grid cells is the spatial domain of the coverage. Figure 10 — CV_DiscreteSolidCoverage

6.10.2 Inherited operations and associations

CV_DiscreteSolidCoverage Figure 10 inherits the association CoverageFunction and the operations locate, find, list, evaluate and evaluateInverse from CV_DiscreteCoverage, with the restriction that the associated CV_GeometryValuePairs and those returned by the operations shall be limited to CV_SolidValuePairs.

6.11 CV_SolidValuePair

CV_SolidValuePair is the subtype of CV_GeometryValuePair that has a GM_Solid as the value of its geometry attribute. Copyright © 2007 Open Geospatial Consortium, Inc. All Rights Reserved. 32 7 Thiessen polygon coverage

7.1 Thiessen polygon networks

A finite collection of points on a plane determines a partition of the plane into a collection of polygons equal in number to the collection of points. A Thiessen polygon is generated from one of a defining set of points by forming the set of direct positions that are closer to that point than to any other point in the defining set. The specific point is called the centre of the resulting polygon. The boundaries between neighbouring polygons are the perpendicular bisectors of the lines between their respective centres. Each polygon shares each of its edges with exactly one other polygon. Each polygon contains exactly one point from the defining set. Thiessen polygons are also known as Voronoi Diagrams or Proximal Sets. Figure 11 — An example of a Thiessen polygon network with x,y coordinates A Thiessen polygon network Figure 11 is a tessellation of a two-dimensional space using Thiessen Polygons. A Thiessen polygon network provides a structure that supports interpolation of feature attribute values from the polygon centres to direct positions within the polygons. EXAMPLE Figure 11 shows a collection of points with their x,y coordinates, the perpendicular bisectors of the lines that would be drawn between them, and the resultant polygons.

7.2 CV_ThiessenPolygonCoverage

7.2.1 General

A CV_ThiessenPolygonCoverage Figure 12 evaluates a coverage at direct positions within a Thiessen polygon network constructed from a set of discrete point value pairs. Evaluation is based on interpolation between the centres of the CV_ThiessenValuePolygons surrounding the input position.

7.2.2 clipArea

The attribute clipArea: GM_Surface shall describe the extent of the CV_ThiessenPolygonNetwork. Its boundary determines the boundaries of the outermost polygons in the network, which would otherwise be unbounded.