summaryrefslogtreecommitdiff
path: root/Docs
diff options
context:
space:
mode:
authorunknown <arjen@george.bitbike.com>2003-04-04 12:41:58 +1000
committerunknown <arjen@george.bitbike.com>2003-04-04 12:41:58 +1000
commit90961f249ebcb322f45cf834225e0578e63e13e4 (patch)
treeb10134689bb8eb99d35d7ff00ccb265c85335879 /Docs
parentd6b847ffe6b21a554fac7a67872ca0b698f3473f (diff)
downloadmariadb-git-90961f249ebcb322f45cf834225e0578e63e13e4.tar.gz
gis.txt deleted - updated text merged into manual (mysqldoc tree).
BitKeeper/deleted/.del-gis.txt~2dde6d55b3075921: Delete: Docs/gis.txt
Diffstat (limited to 'Docs')
-rw-r--r--Docs/gis.txt874
1 files changed, 0 insertions, 874 deletions
diff --git a/Docs/gis.txt b/Docs/gis.txt
deleted file mode 100644
index 3556949d516..00000000000
--- a/Docs/gis.txt
+++ /dev/null
@@ -1,874 +0,0 @@
-
- OpenGIS <http://www.opengis.org> support in MySQL
-
-------------------------------------------------------------------------
-Note: Blue colored lines among the text is features not implemented yet.
-They are:
-
- * Spatial Reference Systems and their IDs (SRIDs) related things:
- o Functions like Length() and Area() assume planar coordinate
- system.
- o All objects are currently considered to be in the same
- planar coordinate system.
- * Function Length() on LineString and MultiLineString currently
- should be called as GLength().
-* No binary constructors like GeomFromWKB().
-
-We also have to add "PostGIS compatibility" sections.
-
-
- 1 Introduction
-
-MySQL implements a subset of *SQL2 with Geometry Types* environment
-proposed by OpenGIS consortium's *Simple Features Specification For
-SQL*. In this environment a geometry-valued column is implemented as a
-column whose SQL type is drawn from the set of Geometry Types. SQL
-server supports both textual and binary access to geometry.
-
-
- 2 OpenGIS Geometry Model in MySQL
-
-MySQL supports the Open GIS Geometry Model based hierarcy of spatial
-objects classes, which consists of:
-
- * Geometry
- o *Point*
- o Curve
- + *LineString*
- o Surface
- + *Polygon*
- o *GeometryCollection*
- + *MultiPoint*
- + MultiCurve
- # *MultiLineString*
- + MultiSurface
- # *MultiPolygon*
-
-The base *Geometry* class has subclasses for Point, Curve, Surface and
-GeometryCollection.
-
-Geometry, Curve, Surface, MultiCurve and MultiSurface are defined to be
-non-instantiable classes, it is not possible to create an object of
-these classes.
-
-Point, LineString, Polygon, GeometryCollection, MultiPoint,
-MultiLineString, MultiPolygon are instantiable classes (bolded on the
-hierarcy tree). MySQL provides a number of functions to construct
-instances of these classes.
-
-TODO: Each spatial object is associated with a Spatial Reference System,
-which describes the coordinate space in which the geometric object is
-defined.
-
-
- 2.1 Geometry
-
-Geometry is the root class of the hierarchy. Geometry is an abstract
-(non-instantiable) class. The instantiable subclasses of Geometry
-defined in this specification are restricted to 0, 1 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 (i.e. all defined geometries
-include their boundary).
-
-
- 2.2 Point
-
-A *Point* is a 0-dimensional geometry and represents a single location
-in coordinate space. A Point in the case of 2D has a x-coordinate value
-and a y-coordinate value. In the case of more dimensions, a Point has a
-coordinate value for each dimension. The boundary of a Point is the
-empty set.
-
-
- 2.3 Curve
-
-A *Curve* is a one-dimensional geometric object usually stored as a
-sequence of points, with the subclass of Curve specifying the form of
-the interpolation between points. MySQL implementation defines only one
-subclass of Curve, LineString, which uses linear interpolation between
-points.
-
-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. A Curve that is simple and closed
-is a Ring. The boundary of a non-closed Curve consists of its two end
-points. A Curve is defined as topologically closed.
-
-
- 2.4 LineString, Line, LinearRing
-
-A LineString is a Curve with linear interpolation between points. Each
-consecutive pair of points defines a line segment. A Line is a
-LineString with exactly 2 points. A LinearRing is a LineString that is
-both closed and simple.
-
-
- 2.5 Surface
-
-A *Surface* is a two-dimensional geometric object. The OpenGIS Abstract
-Specification defines a simple Surface as consisting of a single 'patch'
-that is associated with one 'exterior boundary' and 0 or more 'interior'
-boundaries. Simple surfaces in three-dimensional space are isomorphic to
-planar surfaces. Polyhedral surfaces are formed by 'stitching' together
-simple surfaces along their boundaries, polyhedral surfaces in
-three-dimensional space may not be planar as a whole.
-
-The boundary of a simple Surface is the set of closed curves
-corresponding to its exterior and interior boundaries.
-
-The only instantiable subclass of Surface defined in this specification,
-Polygon, is a simple Surface that is planar.
-
-
- 2.6 Polygon
-
-A Polygon is a planar Surface, defined by 1 exterior boundary and 0 or
-more interior boundaries. Each interior boundary defines a hole in the
-Polygon. The assertions for polygons (the rules that define valid
-polygons) are:
-
- * Polygons are topologically closed.
- * The boundary of a Polygon consists of a set of LinearRings (i.e.
- LineStrings which 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 1 or more holes is not connected.
-Each hole defines a connected component of the Exterior.
-
-In the above assertions, Interior, Closure and Exterior have the
-standard topological definitions. The combination of 1 and 3 make a
-Polygon a Regular Closed point set. Polygons are simple geometries.
-
-
- 2.6 GeometryCollection
-
-A *GeometryCollection* is a geometry that is a collection of 1 or more
-geometries of any class. All the elements in a GeometryCollection must
-be in the same Spatial Reference (i.e. in the same coordinate system).
-GeometryCollection places no other constraints on its elements. However
-subclasses of GeometryCollection described below may restrict membership
-based on dimension and may also place other constraints on the degree of
-spatial overlap between elements.
-
-
- 2.7 MultiPoint
-
-A *MultiPoint* is a 0 dimensional geometric collection. The elements of
-a MultiPoint are restricted to Points. The points are not connected or
-ordered. A MultiPoint is simple if no two Points in the MultiPoint are
-equal (have identical coordinate values). The boundary of a MultiPoint
-is the empty set.
-
-
- 2.8 MultiCurve
-
-A MultiCurve is a one-dimensional geometry collection whose elements are
-Curves. MultiCurve is a non-instantiable class, it defines a set of
-methods for its subclasses and is included for reasons of extensibility.
-
-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": A point is in the boundary of a MultiCurve if it is in the
-boundaries of an odd number of elements of the MultiCurve.
-
-A MultiCurve is closed if all of its elements are closed. The boundary
-of a closed MultiCurve is always empty. A MultiCurve is defined as
-topologically closed.
-
-
- 2.9 MultiLineString
-
-A *MultiLineString* is a MultiCurve whose elements are LineStrings.
-
-
- 2.10 MultiSurface
-
-A MultiSurface is a two-dimensional geometric collection whose elements
-are surfaces. 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.
-
-MultiSurface is a non-instantiable class in this specification, it
-defines a set of methods for its subclasses and is included for reasons
-of extensibility. The instantiable subclass of MultiSurface is
-MultiPolygon, corresponding to a collection of Polygons.
-
-
- 2.11 MultiPolygon
-
-A MultiPolygon is a MultiSurface whose elements are Polygons.
-
-The assertions for MultiPolygons are :
-
- * The interiors of 2 Polygons that are elements of a MultiPolygon
- may not intersect.
- * The Boundaries of any 2 Polygons that are elements of a
- MultiPolygon may not cross and may touch at only a finite number
- of points. (Note that crossing is prevented by assertion 1 above).
- * A MultiPolygon is defined as topologically closed.
- * A MultiPolygon may not have cut lines, spikes or punctures, a
- MultiPolygon is a Regular, Closed point set.
- * The interior of a MultiPolygon with more than 1 Polygon is not
- connected, the number of connected components of the interior of a
-MultiPolygon is equal to the number of Polygons in the MultiPolygon.
-
-The boundary of a MultiPolygon is a set of closed curves (LineStrings)
-corresponding to the boundaries of its element Polygons. Each Curve in
-the boundary of the MultiPolygon is in the boundary of exactly 1 element
-Polygon, and every Curve in the boundary of an element Polygon is in the
-boundary of the MultiPolygon.
-
-
- 3 Exchange of spatial data
-
-MySQL provides binary and textual mechanismes to exchange spatial data.
-Exchange is provided via so called Well Known Binary (WKB) and Well
-Known Textual (WKT) representations of spatial data proposed by OpenGIS
-specifications.
-
-
- 3.1 Well-known Text representation (WKT)
-
-The Well-known Text (WKT) representation of Geometry is designed to
-exchange geometry data in textual format.
-
-WKT is defined below in Bechus-Naur forms:
-
- * the notation {}* denotes 0 or more repetitions of the tokens
- within the braces;
-* the braces do not appear in the output token list.
-
-The text representation of the implemented instantiable geometric types
-conforms to this grammar:
-
-<Geometry Tagged Text> :=
- <Point Tagged Text>
- | <LineString Tagged Text>
- | <Polygon Tagged Text>
- | <MultiPoint Tagged Text>
- | <MultiLineString Tagged Text>
- | <MultiPolygon Tagged Text>
- | <GeometryCollection Tagged Text>
-
-<Point Tagged Text> :=
-
- POINT <Point Text>
-
-<LineString Tagged Text> :=
-
- LINESTRING <LineString Text>
-
-<Polygon Tagged Text> :=
-
- POLYGON <Polygon Text>
-
-<MultiPoint Tagged Text> :=
-
- MULTIPOINT <Multipoint Text>
-
-<MultiLineString Tagged Text> :=
-
- MULTILINESTRING <MultiLineString Text>
-
-<MultiPolygon Tagged Text> :=
-
- MULTIPOLYGON <MultiPolygon Text>
-
-<GeometryCollection Tagged Text> :=
-
- GEOMETRYCOLLECTION <GeometryCollection Text>
-
-<Point Text> := EMPTY | ( <Point> )
-
-<Point> := <x> <y>
-
-<x> := double precision literal
-
-<y> := double precision literal
-
-<LineString Text> := EMPTY
-
- | ( <Point > {, <Point > }* )
-
-<Polygon Text> := EMPTY
-
- | ( <LineString Text > {, < LineString Text > }*)
-
-<Multipoint Text> := EMPTY
-
- | ( <Point Text > {, <Point Text > }* )
-
-<MultiLineString Text> := EMPTY
-
- | ( <LineString Text > {, < LineString Text > }* )
-
-<MultiPolygon Text> := EMPTY
-
- | ( < Polygon Text > {, < Polygon Text > }* )
-
-<GeometryCollection Text> := EMPTY
-
- | ( <Geometry Tagged Text> {, <Geometry Tagged Text> }* )
-
-
- WKT examples
-
-Examples of textual representations of Geometry objects are shown below:
-
- * |POINT(10 10)| - a Point
- * |LINESTRING( 10 10, 20 20, 30 40)| - a LineString with three points
- * |POLYGON((10 10, 10 20, 20 20,20 15, 10 10))| - a Polygon with one
- exterior ring and 0 interior rings
- * |MULTIPOINT(10 10, 20 20)| - a MultiPoint with two Points
- * |MULTILINESTRING((10 10, 20 20), (15 15, 30 15))| - a
- MultiLineString with two LineStrings
- * |MULTIPOLYGON(((10 10, 10 20, 20 20, 20 15, 10 10)), ((60 60, 70
- 70, 80 60, 60 60 ) ))| - a MultiPolygon with two Polygons
- * |GEOMETRYCOLLECTION( POINT (10 10),POINT (30 30), LINESTRING (15
- 15, 20 20))| - a GeometryCollection consisting of two Points and
-one LineString
-
-
- 3.2 Well-known Binary representation (WKB)
-
-Well Known Binary Representations is proposed by OpenGIS specifications
-to exchange geometry data in binary format. This is WKB description:
-
-// Basic Type definitions
-// byte : 1 byte
-// uint32 : 32 bit unsigned integer (4 bytes)
-// double : double precision number (8 bytes)
-// Building Blocks : Point, LinearRing
-
-Point {
- double [numDimentions];
-};
-
-LinearRing {
- uint32 numPoints;
- Point points[numPoints];
-}
-
-enum wkbGeometryType {
- wkbPoint = 1,
- wkbLineString = 2,
- wkbPolygon = 3,
- wkbMultiPoint = 4,
- wkbMultiLineString = 5,
- wkbMultiPolygon = 6,
- wkbGeometryCollection = 7
-};
-
-enum wkbByteOrder {
- wkbXDR = 0, // Big Endian
- wkbNDR = 1 // Little Endian
-};
-
-WKBPoint {
- byte byteOrder;
- uint32 wkbType; // 1
- Point point;
-}
-
-WKBLineString {
- byte byteOrder;
- uint32 wkbType; // 2
- uint32 numPoints;
- Point points[numPoints];
-}
-
-WKBPolygon {
- byte byteOrder;
- uint32 wkbType; // 3
- uint32 numRings;
- LinearRing rings[numRings];
-}
-
-WKBMultiPoint {
- byte byteOrder;
- uint32 wkbType; // 4
- uint32 num_wkbPoints;
- WKBPoint WKBPoints[num_wkbPoints];
-}
-
-WKBMultiLineString {
- byte byteOrder;
- uint32 wkbType; // 5
- uint32 num_wkbLineStrings;
- WKBLineString WKBLineStrings[num_wkbLineStrings];
-}
-
-wkbMultiPolygon {
- byte byteOrder;
- uint32 wkbType; // 6
- uint32 num_wkbPolygons;
- WKBPolygon wkbPolygons[num_wkbPolygons];
-}
-
-WKBGeometry {
- union {
- WKBPoint point;
- WKBLineString linestring;
- WKBPolygon polygon;
- WKBGeometryCollection collection;
- WKBMultiPoint mpoint;
- WKBMultiLineString mlinestring;
- WKBMultiPolygon mpolygon;
- }
-
-};
-
-WKBGeometryCollection {
- byte byte_order;
- uint32 wkbType; // 7
- uint32 num_wkbGeometries;
- WKBGeometry wkbGeometries[num_wkbGeometries];
-}
-
-
- 3.3 MySQL data types for spatial objects
-
-MySQL implementation of OpenGIS provides the *GEOMETRY* data type to be
-used in CREATE TABLE statements. For example, this statement creates a
-table *geom* with spatial field *g*:
-
-CREATE TABLE geom (
- g Geometry;
-);
-
-A field of *GEOMETRY* type can store a spatial objects of any OpenGIS
-geometry class described above.
-
-
- 3.4 Internal spatial data representation
-
-Internally (in *.MYD* files) spatial objects are stored in *WKB*,
-combined with object's *SRID* (a numeric ID of Spatial Reference System
-object associated with). During spatial analysis, for example,
-calculating the fact that one object crosses another one, only those
-with the same *SRID* are accepted.
-
-*SRID* may affect a way in which various spatial characteristics are
-calculated. For example, in different coordinate systems distance
-between two objects may differ even objects have the same coordinates,
-like distance on plane coordinate system and distance on geocentric
-(coordinates on Earth surface) systems are different things.
-
-There is a plan to provide a number of commonly used coordinate systems
-in MySQL OpenGIS implementation.
-
-
- 3.5 INSERTing spatial objects
-
-Spatial data can be INSERTed using a spatial constructor. The term
-*spatial constructor* is used in this manual to refer to any function
-which can construct a value of GEOMETRY type, i.e. an internal MySQL
-representation of spatial data.
-
-
- 3.5.1 Textual spatial constructors
-
-Textual spatial constructors take a gemometry description in WKT and
-built GEOMETRY value.
-
- * |*GeomFromText(geometryTaggedText String [, SRID
- Integer]):Geometry *| - constructs a Geometry value from its
- well-known textual representation.
-
- |*GeomFromText()*| function accepts a WKT of any Geometry class as
- it's first argument.
-
- For construction of Geometry values restricted to a particular
- subclass, an implementation also provides a class-specific
- construction function for each instantiable subtype as described
- in the list below:
-
- * |*PointFromText(pointTaggedText String [,SRID Integer]):Point *| -
- constructs a Point
-
- * |*LineFromText(lineStringTaggedText String [,SRID
- Integer]):LineString *| - constructs a LineString
-
- . |*LineStringFromText()*| - synonym for LineFromText().
-
- * |*PolyFromText(polygonTaggedText String [,SRID Integer]):Polygon
- *|- constructs a Polygon
-
- |*PolygonFromText()*| - synonym for PolyFromText().
-
- * |*MPointFromText(multiPointTaggedText String [,SRID
- Integer]):MultiPoint *| - constructs a MultiPoint
-
- |*MultiPointFromText()*| - synonym for MPointFromText().
-
- * |*MLineFromText(multiLineStringTaggedText String [,SRID
- Integer]):MultiLineString *| - constructs a MultiLineString
-
- |*MultiLineStringFromText()*| - synonym for MLineFromText().
-
- * |*MPolyFromText(multiPolygonTaggedText String [,SRID
- Integer]):MultiPolygon *| - constructs a MultiPolygon
-
- |*MultiPolygonFromText()*| - synonym for MPolyFromText().
-
- * |*GeomCollFromText(geometryCollectionTaggedText String [,SRID
- Integer]):GeomCollection *| - constructs a GeometryCollection
-
-Usage examples:
-
-INSERT INTO geom VALUES (GeomFromText('POINT(1 1)'))
-INSERT INTO geom VALUES (GeomFromText('LINESTRING(0 0,1 1,2 2)'))
-INSERT INTO geom VALUES (GeomFromText('POLYGON((0 0,10 0,10 10,0 10,0 0),(5 5,7 5,7 7,5 7, 5 5))'))
-INSERT INTO geom VALUES (GeomFromText('GEOMETRYCOLLECTION(POINT(1 1),LINESTRING(0 0,1 1,2 2,3 3,4 4))'))
-
-The second argument of spatial constructirs, described above, is
-currently ignored, It will be used to specify SRID in the future.
-Nowdays, it is added for reasons of compatibility with OpenGIS
-specifications and PostGIS implementation.
-
-As an optional feature, an implementation may also support building of
-Polygon or MultiPolygon values given an arbitrary collection of possibly
-intersecting rings or closed LineString values. Implementations that
-support this feature should include the following functions:
-
- * |*BdPolyFromText(multiLineStringTaggedText String, SRID
- Integer):Polygon *| - constructs a Polygon given an arbitrary
- collection of closed linestrings as a MultiLineString text
- representation.
- * |*BdMPolyFromText(multiLineStringTaggedText String, SRID
- Integer):MultiPolygon *| - constructs a MultiPolygon given an
- arbitrary collection of closed linestrings as a MultiLineString
-text representation.
-
-
- 3.5.2 Binary spatial constructors
-
- * |*GeomFromWKB(WKBGeometry Binary, SRID Integer):Geometry *| -
- constructs a Geometry value given its well-known binary
- representation.
-
- |*GeomFromWKB()*| function can accept in it's first argument a WKB
- of Geometry of any class. For construction of Geometry values
- restricted to a particular subclass, an implementation also
- provides a class-specific construction function for each
- instantiable subclass as described in the list below:
-
- * |*PointFromWKB(WKBPoint Binary, SRID Integer):Point - *|constructs
- a Point
- * |* LineFromWKB(WKBLineString Binary, SRID Integer):LineString *| -
- constructs a LineString
- * |* PolyFromWKB(WKBPolygon Binary, SRID Integer):Polygon *| -
- constructs a Polygon
- * |* MPointFromWKB(WKBMultiPoint Binary, SRID Integer):MultiPoint *|
- - constructs a MultiPoint
- * |* MLineFromWKB(WKBMultiLineString Binary, SRID
- Integer):MultiLineString *| - constructs a MultiLineString
- * |* MPolyFromWKB(WKBMultiPolygon Binary, SRID Integer):
- MultiPolygon *| - constructs a MultiPolygon
- * |* GeomCollFromWKB(WKBGeometryCollection Binary, SRID Integer):
-GeomCollection *| - constructs a GeometryCollection
-
-As an optional feature, an implementation may also support the uilding'
-of Polygon or MultiPolygon values given an arbitrary collection of
-possibly intersecting rings or closed LineString values. Implementations
-that support this feature should include the following functions:
-
- * |* BdPolyFromWKB (WKBMultiLineString Binary,SRID Integer): Polygon
- *| - constructs a Polygon given an arbitrary collection of closed
- linestrings as a MultiLineString binary representation.
- * |*BdMPolyFromWKB(WKBMultiLineString Binary, SRID
- Integer):MultiPolygon *| - constructs a MultiPolygon given an
- arbitrary collection of closed linestrings as a MultiLineString
-binary representation.
-
-Inserting in *WKB* assumes that |GeomFromWKB()| function argument
-contains a buffer with a correctly formed spatial object in WKB. In ODBC
-applications it can be done using binding of argument. One also can
-insert object in *WKB* using |mysql_escape_string()| in |libmysqlclient|
-applications.
-
-For example:
-
-INSERT INTO geom VALUES (GeomFromWKB(buf,SRID));
-
-where |buf| is a binary buffer with a spatial object in *WKB*
-representation.
-
-
- 3.5 SELECTing spatial objects
-
-Spatial objects are selected either in *WKT* or *WKB* representation by
-use of AsText() and AsBinary() functions correspondently.
-
-
-mysql> select AsText(g) as g from geom;
-+-------------------------+
-| g |
-+-------------------------+
-| POINT(1 1) |
-| LINESTRING(0 0,1 1,2 2) |
-+-------------------------+
-2 rows in set (0.00 sec)
-
-mysql>
-
-The query:
-
-SELECT AsBinary(g) FROM geom
-
-returns a BLOB which contains *WKB* representation of object.
-
-
- 4 Functions for spatial analysis
-
-
- 4.1 Basic functions on Geometry
-
- * |*AsText(g:Geometry):String*| - Exports this Geometry to a
- specific well-known text representation of Geometry.
- * |*AsBinary(g:Geometry):Binary*| - Exports this Geometry to a
- specific well-known binary representation of Geometry.
- * |*GeometryType(g:Geometry):String*| - Returns the name of the
- instantiable subtype of Geometry of which this Geometry instance
- is a member. The name of the instantiable subtype of Geometry is
- returned as a string.
- * |*Dimension(g:Geometry):Integer*| - The inherent dimension of this
- Geometry object, which must be less than or equal to the
- coordinate dimension. This specification is restricted to
- geometries in two-dimensional coordinate space.
- * |*IsEmpty(g:Geometry):Integer*| - Returns 1 (TRUE) if this
- Geometry is the empty geometry . If true, then this Geometry
- represents the empty point set, , for the coordinate space.
- * |*IsSimple(g:Geometry):Integer *| - Returns 1 (TRUE) if this
- Geometry has no anomalous geometric points, such as self
- intersection or self tangency. The description of each
- instantiable geometric class includes the specific conditions that
- cause an instance of that class to be classified as not simple.
- * |*SRID(g:Geometry):Integer*| - Returns the Spatial Reference
- System ID for this Geometry.
- * |*Distance(g1:Geometry,g2:Geometry):Double*| - the shortest
-distance between any two points in the two geometries.
-
-
- 4.2 Functions for specific geometry type
-
-
- GeometryCollection functions
-
- * *NumGeometries(g:GeometryCollection ):Integer * -Returns the
- number of geometries in this GeometryCollection.
- * *GeometryN(g:GeometryCollection,N:integer):Geometry * -Returns the
-Nth geometry in this GeometryCollection.
-
-
- Point functions
-
- * *X(p:Point):Double* -The x-coordinate value for this Point.
-* *Y(p:Point):Double* -The y-coordinate value for this Point.
-
-
- LineString functions
-
- * *StartPoint(l:LineString):Point* The start point of this LineString.
- * *EndPoint(l:LineString):Point* The end point of this LineString.
- * *PointN(l:LineString,N:Integer):Point* Returns the specified point
- N in this Linestring.
- * *Length(l:LineString):Double* The length of this LineString in its
- associated spatial reference.
- * *IsRing(l:LineString):Integer* Returns 1 (TRUE) if this LineString
- is closed (StartPoint ( ) = EndPoint ( )) and this LineString is
- simple (does not pass through the same point more than once).
- * *IsClosed(l:LineString):Integer* Returns 1 (TRUE) if this
- LineString is closed (StartPoint ( ) = EndPoint ( )).
- * *NumPoints(l:LineString):Integer* The number of points in this
-LineString.
-
-
- MultiLineString functions
-
- * *Length(m:MultiLineString):Double* The Length of this
- MultiLineString which is equal to the sum of the lengths of the
- elements.
- * *IsClosed(m:MultiLineString):Integer* Returns 1 (TRUE) if this
- MultiLineString is closed (StartPoint() = EndPoint() for each
-LineString in this MultiLineString)
-
-
- Polygon functions
-
- * *Area(p:Polygon):Double* The area of this Polygon, as measured in
- the spatial reference system of this Polygon.
- * *Centroid(p:Polygon):Point* The mathematical centroid for this
- Polygon as a Point. The result is not guaranteed to be on this
- Polygon.
- * *PointOnSurface(p:Polygon):Point* A point guaranteed to be on this
- Polygon.
- * *NumInteriorRing(p:Polygon):Integer* Returns the number of
- interior rings in this Polygon.
- * *ExteriorRing(p:Polygon):LineString* Returns the exterior ring of
- this Polygon as a LineString.
- * *InteriorRingN(p:Polygon,N:Integer):LineString* Returns the Nth
-interior ring for this Polygon as a LineString.
-
-
- MultiPolygon functions
-
- * *Area(m:MultuSurface):Double* The area of this MultiPolygon, as
- measured in the spatial reference system of this MultiPolygon.
- * *Centroid(m:MultyPolygon):Point* The mathematical centroid for
- this MultiPolygon as a Point. The result is not guaranteed to be
- on this MultiPolygon.
- * *PointOnSurface(m:MultuPolygon):Point* A Point guaranteed to be on
-this MultiPolygon.
-
-Notes: /functions for specific geometry type retrun NULL if passed
-object type is incorrect. For example Area() returns NULL if object type
-is neither Polygon nor MultiPolygon/
-
-
- 4.3 Spatial operations (compound spatial constructors)
-
- * |*Envelope(g:Geometry):Geometry*|The minimum bounding box for this
- Geometry, returned as a Geometry. The polygon is defined by the
- corner points of the bounding box
- |POLYGON((MINX,MINY),(MAXX,MINY),(MAXX,MAXY),(MINX,MAXY),(MINX,MINY))|.
-
- * |*Boundary(g:Geometry):Geometry*| - returns the closure of the
- combinatorial boundary of this Geometry.
- * |*Intersection(g1,g2:Geometry):Geometry*| - a geometry that
- represents the point set intersection of g1 with g2.
- * |*Union(g1,g2:Geometry):Geometry*| - a geometry that represents
- the point set union of g1 with g2.
- * |*Difference(g1,g2:Geometry):Geometry*| - a geometry that
- represents the point set difference of g1 with g2.
- * |*SymDifference(g1,g2:Geometry):Geometry*| - a geometry that
- represents the point set symmetric difference of g1 with g2.
- * |*Buffer(g:Geometry,distance:Double):Geometry*| - a geometry that
- represents all points whose distance from g is less than or equal
- to distance.
- * |*ConvexHull(g:Geometry):Geometry*| - a geometry that represents
-the convex hull of g.
-
-
- 4.4 Functions for testing Spatial Relations between geometric objects
-
- * |*Equals(g1,g2)*| - Returns 1 if g1 is spatially equal to g2.
- * |*Disjoint(g1,g2)*| - Returns 1 if g1 is spatially disjoint from g2.
- * |*Intersects(g1,g2)*| - Returns 1 if g1 spatially intersects g2.
- * |*Touches(g1,g2)*| - Returns 1 if g1 spatially touches g2.
- * |*Crosses(g1,g2)*| - Returns 1 if g1 spatially crosses g2.
- * |*Within(g1,g2)*| - Returns 1 if g1 is spatially within g2.
- * |*Contains(g1,g2)*| - Returns 1 if g1 spatially contains g2.
-* |*Overlaps(g1,g2)*| - Returns 1 if g1 spatially overlaps g2.
-
-
- 5 Optimizing spatial analysis
-
-
- 5.1 MBR
-
-MBR is a minimal bounding rectangle (box) for spatial object. It can be
-represented as a set of min and max values of each dimension.
-
-For example:
-
-(Xmin,Xmax,Ymin,Ymax)
-
-
- 5.2 Using SPATIAL indexes
-
-To optimize spatial object relationships analysis it is possible to
-create a spatial index on geometry field using R-tree algorythm. R-tree
-based spatial indexes store MBRs of spatial objects as a key values.
-
-CREATE SPATIAL INDEX gind ON geom (g);
-
-Or together with table definition:
-
-CREATE TABLE geom (
- g GEOMETRY,
- SPATIAL INDEX(g)
-);
-
-Optimizer attaches R-tree based SPATIAL index when a query with spatial
-objects relationship functions is executed in WHERE clause.
-
-For example:
-
-SELECT geom.name FROM geom
- WHERE Within(geom.g,GeomFromText('POLYGON((0 0, 1 0, 1 1, 0 1, 0 0))',SRID));
-
-
- 8 OpenGIS extensions implemented in MySQL
-
-MySQL provides it's own constructors to build geometry objects:
-
- * |*Point(double,double,SRID)*| - constructs a geometry of Point
- class using it's coordinates and SRID.
- * |*MultiPoint(Point,Point,...,Point)*| - constructs a MultiPoint
- using Points. When any argument is not a geometry of Point class
- the return value is NULL.
- * |*LineString(Point,Point,...,Point)*| - constructs a LineString
- from a number of Points. When any argument is not a geometry of
- Point class the return value is NULL. When the number of Points is
- less than two the return value is NULL.
- * |*MultiLineString(LineString,LineString,...,LineString)*| -
- constructs a MultiLineString using using LineStrings. When any
- argument is not a geometry of LineStringClass return value is NULL.
- * |*Polygon(LineString,LineString,...,LineString)*| - constructs a
- Polygon from a number of LineStrings. When any argument is not a
- LinearRing (i.e. not closed and simple geometry of class
- LineString) the return value is NULL.
- * |*MultiPolygon(Polygon,Polygon,...,Polygon)*| - constructs a
- MultiPolygon from a set of Polygons. When any argument is not a
- Polygon, the rerurn value is NULL.
- * |*GeometryCollection(Geometry,Geometry,..,Geometry)*| - constucts
- a GeometryCollection. When any argument is not a valid geometry
-object of any instantiable class, the return value is NULL.
-
-The above functions (except Point()) return NULL if arguments are not in
-the same spatial reference system (i.e. have different SRIDs).
-
-
- Examples:
-
-INSERT INTO geom SELECT Point(x,y,SRID) FROM coords;
-SELECT AsText(g) FROM geom WHERE
- Contains(Polygon(LineString(Point(0,0),Point(0,1),Point(1,1),Point(1,0),Point(0,0)),SRID),geom.g);
-
-
- 9 Things that differ in MySQL implemention and OpenGIS specifications
-
-
- 9.1 Single GEOMETRY type
-
-Besides a GEOMETRY type, OpenGIS consortium specifications suggest the
-implementation of several spatial field types correspondent to every
-instansiable object subclass. For example a *Point* type is proposed to
-restrict data stored in a field of this type to only Point OpenGIS
-subclass. MySQL provides an implementation of single GEOMETRY type which
-doesn't restrict objects to certain OpenGIS subclass. Other proposed
-spatial field types are mapped into GEOMETRY type, so all these types
-can be used as a symonym for GEOMETRY: POINT, MULTIPOINT, LINESTRING,
-MULTILINESTRING, POLYGON, MULTIPOLYGON.
-
-
- 9.2 No additional Metadata Views
-
-OpenGIS specifications propose several additional metadata views. For
-example, a system view named GEOMETRY_COLUMNS contains a description of
-geometry columns, one row for each geometry column in the database.
-
-
- 9.3 No functions to add/drop spatial columns
-
-OpenGIS assumes that columns can be added/dropped using
-AddGeometryColumn() and DropGeometryColumn() functions correspondently.
-In MySQL implementation one should use ALTER TABLE instead.