The OpenGIS Geometry Model
==========================
* It is associated with a Spatial Reference System, which describes
the coordinate space in which the object is defined.
* It belongs to some geometry class.
The Geometry Class Hierarchy
----------------------------
The geometry classes define a hierarchy as follows:
* `Geometry' (non-instantiable)
* `Point' (instantiable)
* `Curve' (non-instantiable)
* `LineString' (instantiable)
* `Line'
* `LinearRing'
* `Surface' (non-instantiable)
* `Polygon' (instantiable)
* `GeometryCollection' (instantiable)
* `MultiPoint' (instantiable)
* `MultiCurve' (non-instantiable)
* `MultiLineString' (instantiable)
* `MultiSurface' (non-instantiable)
* `MultiPolygon' (instantiable)
has
properties and instantiable classes may have assertions (rules that
define valid class instances).
`Geometry' is the base class. It's an abstract class. The instantiable
subclasses of `Geometry' are restricted to zero-, one-, and
two-dimensional geometric objects that exist in two-dimensional
coordinate space. All instantiable geometry classes are defined so that
valid instances of a geometry class are topologically closed (that is,
all defined geometries include their boundary).
The base `Geometry' class has subclasses for `Point', `Curve',
`Surface' and `GeometryCollection':
* `Point' represents zero-dimensional objects.
* `Curve' represents one-dimensional objects, and has subclass
`LineString', with sub-subclasses `Line' and `LinearRing'.
* `Surface' is designed for two-dimensional objects and has subclass
`Polygon'.
* `GeometryCollection' has specialised zero-, one-, and
two-dimensional collection classes named `MultiPoint',
`MultiLineString', and `MultiPolygon' for modelling geometries
corresponding to collections of `Points', `LineStrings', and
`Polygons', respectively. `MultiCurve' and `MultiSurface' are
introduced as abstract superclasses that generalise the collection
interfaces to handle `Curves' and `Surfaces'.
`Geometry', `Curve', `Surface', `MultiCurve', and `MultiSurface' are
defined as non-instantiable classes. They define a common set of
methods for their subclasses and are included for the reason of
extensibility.
`Point', `LineString', `Polygon', `GeometryCollection', `MultiPoint',
`MultiLineString', and `MultiPolygon' are instantiable classes.
Class `Geometry'
----------------
properties are described in the following list. (Particular
subclasses have their own specific properties, described later.)
Geometry properties
-------------------
A geometry value has the following properties:
* Its *type*. Each geometry belongs to one of the instantiable
classes in the hierarchy.
* Its *SRID*, or Spatial Reference Identifier. This value identifies
the geometry's associated Spatial Reference System that describes
the coordinate space in which the geometry object is defined.
* Its *coordinates* in its Spatial Reference System, represented as
double-precision (8-byte) numbers. All non-empty geometries
include at least one pair of (X,Y) coordinates. Empty geometries
contain no coordinates.
Coordinates are related to the SRID. For example, in different
coordinate systems, the distance between two objects may differ
even when objects have the same coordinates, because the distance
on the *planar* coordinate system and the distance on the
*geocentric* system (coordinates on the Earth's surface) are
different things.
* Its *interior*, *boundary*, and *exterior*. All geometries occupy
some position in space. The exterior of a geometry is all space
not occupied by the geometry. The interior is the space occupied
by the geometry. The boundary is the interface between geometry's
interior and exterior.
* Its *MBR* (Minimum Bounding Rectangle), or Envelope. This is the
bounding geometry, formed by the minimum and maximum (X,Y)
coordinates:
((MINX MINY, MAXX MINY, MAXX MAXY, MINX MAXY, MINX MINY))
* The quality of being *simple* or *non-simple*. Geometry values of
some types (`LineString', `MultiPoint', `MultiLineString)' are
either simple of non-simple. Each type determines its own
assertions for being simple or non-simple.
* The quality of being *closed* or *not closed*. Geometry values of
some types (`LineString', `MultiString') are either closed or not
closed. Each type determines its own assertions for being closed
or not closed.
* The quality of being *empty* or *not empty* A geometry is empty if
it does not have any points. Exterior, interior and boundary of
an empty geometry are not defined (that is, they are represented
by a `NULL' value). An empty geometry is defined to be always
simple and has an area of 0.
* Its *dimension*. A geometry can have a dimension of -1, 0, 1, or 2:
* -1 stands for empty geometries.
* 0 stands for geometries with no length and no area.
* 1 stands for geometries with non-zero length and zero area.
* 2 stands for geometries with non-zero area.
`MultiPolygon' objects are the same as the dimensions of the
elements they consist of.
Class `Point'
-------------
A `Point' is a geometry that represents a single location in coordinate
space.
`Point' Examples
----------------
* Imagine a large-scale map of the world with many cities. A point
could represent each city.
* On a city map, a Point could represent a bus stop.
`Point' Properties
------------------
* X-coordinate value.
* Y-coordinate value.
* `Point' is defined as a zero-dimensional geometry.
* The boundary of a `Point' is the empty set.
Class `Curve'
-------------
`Curve' Properties
------------------
* The coordinates of its points.
* `Curve' is defined as one-dimensional geometry.
* A `Curve' is simple if it does not pass through the same point
twice.
* A `Curve' is closed if its start point is equal to its end point.
* The boundary of a closed `Curve' is empty.
* The boundary of a non-closed `Curve' consists of its two end
points.
* A `Curve' that is simple and closed is a `LinearRing'.
Class `LineString'
------------------
A `LineString' is a `Curve' with linear interpolation between points.
`LineString' Examples
---------------------
* On a world map, `LineString' objects could represent rivers.
* In a city map, `LineString' objects could represent streets.
`LineString' Properties
-----------------------
* Coordinates of `LineString' segments, defined by each consecutive
pair of points.
* A `LineString' is a `Line' if it consists of exactly two points.
* A `LineString' is a `LinearRing' if it's both closed and simple.
Class `Surface'
---------------
A `Surface' is a two-dimensional geometry. It is a non-instantiable
class. Its only instantiable subclass is `Polygon'.
`Surface' Properties
--------------------
* A `Surface' is defined as a two-dimensional geometry.
* The boundary of a simple `Surface' is the set of closed curves
corresponding to its exterior and interior boundaries.
Class `Polygon'
---------------
the
`Polygon'.
`Polygon' Examples
------------------
* On a region map, `Polygon' objects could represent forests,
districts, etc.
`Polygon' Assertions
--------------------
* The boundary of a `Polygon' consists of a set of `LinearRing's
(that is, `LineString's that are both simple and closed) that make
up its exterior and interior boundaries.
* No two rings in the boundary cross. The rings in the boundary of a
`Polygon' may intersect at a `Point', but only as a tangent.
* A `Polygon' may not have cut lines, spikes, or punctures.
* The interior of every `Polygon' is a connected point set.
* The exterior of a `Polygon' with one or more holes is not
connected. Each hole defines a connected component of the
exterior.
In the above assertions, polygons are simple geometries. These
assertions make a `Polygon' a simple geometry.
Class `GeometryCollection'
--------------------------
A `GeometryCollection' is a geometry that is a collection of one or more
geometries of any class.
the subclasses of `GeometryCollection' described in the
following sections may restrict membership. Retrictions may be based on:
* Element type (for example, a `MultiPoint' may contain only `Point'
elements)
* Dimension
* Constraints on the degree of spatial overlap between elements
Class `MultiPoint'
------------------
A `MultiPoint' is a geometry collection composed of `Point' elements.
The points are not connected or ordered in any way.
`MultiPoint' Examples
---------------------
* On a world map, a `Multipoint' could represent a chain of small
islands.
* On a city map, a `Multipoint' could represent the outlets for a
ticket office.
`MultiPoint' Properties
-----------------------
* `MultiPoint' is defined as a zero-dimensional geometry.
* A `MultiPoint' is simple if no two of its `Point' values are equal
(have identical coordinate values).
* The boundary of a `MultiPoint' is the empty set.
Class `MultiCurve'
------------------
A `MultiCurve' is a geometry collection composed of `Curve' elements.
`MultiCurve' is a non-instantiable class.
`MultiCurve' Properties
-----------------------
* `MultiCurve' is defined as a one-dimensional geometry.
* A `MultiCurve' is simple if and only if all of its elements are
simple, the only intersections between any two elements occur at
points that are on the boundaries of both elements.
* The boundary of a `MultiCurve' is obtained by applying the "mod 2
union rule" (also known as the odd-even rule): A point is in the
boundary of a `MultiCurve' if it is in the boundaries of an odd
number of `MultiCurve' elements.
* A `MultiCurve' is closed if all of its elements are closed.
* The boundary of a closed `MultiCurve' is always empty.
Class `MultiLineString'
-----------------------
A `MultiLineString' is a `MultiCurve' geometry collection composed of
`LineString' elements.
`MultiLineString' Examples
--------------------------
* On a region map, a `MultiLineString' could represent a river
system or a highway system.
Class `MultiSurface'
--------------------
A `MultiSurface' is a geometry collection composed of surface elements.
`MultiSurface' is a non-instantiable class. Its only instantiable
subclass is `MultiPolygon'.
`MultiSurface' Assertions
-------------------------
* The interiors of any two surfaces in a `MultiSurface' may not
intersect.
* The boundaries of any two elements in a `MultiSurface' may
intersect at most at a finite number of points.
Class `MultiPolygon'
--------------------
A `MultiPolygon' is a `MultiSurface' object composed of `Polygon'
elements.
`MultiPolygon' Examples
-----------------------
* On a region map, a `MultiPolygon' could represent a system of
lakes.
`MultiPolygon' Assertions
-------------------------
* The interiors of two `Polygon' values that are elements of a
`MultiPolygon' may not intersect.
* The boundaries of any two `Polygon' values that are elements of a
`MultiPolygon' may not cross and may touch at only a finite number
of points. (Crossing is also forbidden by the preceding
assertion.)
* A `MultiPolygon' may not have cut lines, spikes or punctures. A
`MultiPolygon' is a regular, closed point set.
* The interior of a `MultiPolygon' composed of more than one
`Polygon' is not connected. The number of connected components of
the interior of a `MultiPolygon' is equal to the number of
`Polygon' values in the `MultiPolygon'.
`MultiPolygon' Properties
-------------------------
* A `MultiPolygon' is defined as a two-dimensional geometry.
* The boundary of a `MultiPolygon' is a set of closed curves
(`LineString' values) corresponding to the boundaries of its
`Polygon' elements.
* Each `Curve' in the boundary of the `MultiPolygon' is in the
boundary of exactly one element `Polygon'.
* Every `Curve' in the boundary of an element `Polygon' is in the
boundary of the `MultiPolygon'.
[Назад] [Содержание] [Вперед]
| Главная |