C++ CSS HTML Java JavaScript MySQL Oracle PERL PHP SQL Unix VBScript XHTML XML Сети
The OpenGIS Geometry Model (MySQL 4.0)
 
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'.


[Назад] [Содержание] [Вперед]

Главная