Chapter 17. Spatial Extensions

Table of Contents

17.1. Introduction to MySQL Spatial Support
17.2. The OpenGIS Geometry Model
17.2.1. The Geometry Class Hierarchy
17.2.2. Class Geometry
17.2.3. Class Point
17.2.4. Class Curve
17.2.5. Class LineString
17.2.6. Class Surface
17.2.7. Class Polygon
17.2.8. Class GeometryCollection
17.2.9. Class MultiPoint
17.2.10. Class MultiCurve
17.2.11. Class MultiLineString
17.2.12. Class MultiSurface
17.2.13. Class MultiPolygon
17.3. Supported Spatial Data Formats
17.3.1. Well-Known Text (WKT) Format
17.3.2. Well-Known Binary (WKB) Format
17.4. Creating a Spatially Enabled MySQL Database
17.4.1. MySQL Spatial Data Types
17.4.2. Creating Spatial Values
17.4.3. Creating Spatial Columns
17.4.4. Populating Spatial Columns
17.4.5. Fetching Spatial Data
17.5. Analyzing Spatial Information
17.5.1. Geometry Format Conversion Functions
17.5.2. Geometry Functions
17.5.3. Functions That Create New Geometries from Existing Ones
17.5.4. Functions for Testing Spatial Relations Between Geometric Objects
17.5.5. Relations on Geometry Minimal Bounding Rectangles (MBRs)
17.5.6. Functions That Test Spatial Relationships Between Geometries
17.6. Optimizing Spatial Analysis
17.6.1. Creating Spatial Indexes
17.6.2. Using a Spatial Index
17.7. MySQL Conformance and Compatibility

MySQL supports spatial extensions to allow the generation, storage, and analysis of geographic features. Before MySQL 5.0.16, these features are available for MyISAM tables only. As of MySQL 5.0.16, InnoDB, NDB, BDB, and ARCHIVE also support spatial features.

For spatial columns, MyISAM supports both SPATIAL and non-SPATIAL indexes. Other storage engines support non-SPATIAL indexes, as described in Section 12.1.4, “CREATE INDEX Syntax”.

This chapter covers the following topics:

Additional resources

17.1. Introduction to MySQL Spatial Support

MySQL implements spatial extensions following the specification of the Open Geospatial Consortium (OGC). This is an international consortium of more than 250 companies, agencies, and universities participating in the development of publicly available conceptual solutions that can be useful with all kinds of applications that manage spatial data. The OGC maintains a Web site at http://www.opengis.org/.

In 1997, the Open Geospatial Consortium published the OpenGIS® Simple Features Specifications For SQL, a document that proposes several conceptual ways for extending an SQL RDBMS to support spatial data. This specification is available from the OGC Web site at http://www.opengis.org/docs/99-049.pdf. It contains additional information relevant to this chapter.

MySQL implements a subset of the SQL with Geometry Types environment proposed by OGC. This term refers to an SQL environment that has been extended with a set of geometry types. A geometry-valued SQL column is implemented as a column that has a geometry type. The specification describe a set of SQL geometry types, as well as functions on those types to create and analyze geometry values.

A geographic feature is anything in the world that has a location. A feature can be:

  • An entity. For example, a mountain, a pond, a city.

  • A space. For example, town district, the tropics.

  • A definable location. For example, a crossroad, as a particular place where two streets intersect.

Some documents use the term geospatial feature to refer to geographic features.

Geometry is another word that denotes a geographic feature. Originally the word geometry meant measurement of the earth. Another meaning comes from cartography, referring to the geometric features that cartographers use to map the world.

This chapter uses all of these terms synonymously: geographic feature, geospatial feature, feature, or geometry. Here, the term most commonly used is geometry, defined as a point or an aggregate of points representing anything in the world that has a location.