Spatial database

A spatial database is a database that is optimized to store and query data related to objects in space, including points, lines and polygons. While typical databases can understand various numeric and character types of data, additional functionality needs to be added for databases to process spatial data types. These are typically called geometry or feature. The Open Geospatial Consortium created the Simple Features specification and sets standards for adding spatial functionality to database systems. OGC Homepage.

Features of spatial databases
Database systems use indexes to quickly look up values and the way that most databases index data is not optimal for spatial queries. Instead, spatial databases use a spatial index to speed up database operations. There are different kinds of spatial indexes, which can be adjusted if desired to better fit the data stored.

In addition to typical SQL queries such as SELECT statements, spatial databases can perform a wide variety of spatial operations. The following query types and many more are supported by the Open Geospatial Consortium:


 * Spatial Measurements: Finds the distance between points, polygon area, etc.
 * Spatial Functions: Modify existing features to create new ones, for example by providing a buffer around them, intersecting features, etc.
 * Spatial Predicates: Allows true/false queries such as 'is there a residence located within a mile of the area we are planning to build the landfill?'
 * Constructor Functions: Creates new features with an SQL query specifying the vertices (points of nodes) which can make up lines. If the first and last vertex of a line are identical the feature can also be of the type polygon (a closed line).
 * Observer Functions: Queries which return specific information about a feature such as the location of the center of a circle
 * Spatial Relationships: Allows for queries regarding the relationships of features in the window

Not all spatial databases support these query types. There are other functions that a spatial database can perform, such as spatial joins, and spatial selection. However, the queries are the most commonly used feature of spatial databases.

Spatial database systems

 * All OpenGIS Specifications compliant products
 * Open source spatial databases and APIs, some of which are OpenGIS compliant
 * Boeing's Spatial Query Server (Official Site) spatially enables Sybase ASE.
 * Oracle Spatial
 * Microsoft SQL Server has support for spatial types since version 2008
 * PostgreSQL DBMS (database management system) uses the spatial extension PostGIS to implement the standardized datatype geometry and corresponding functions.
 * MySQL DBMS implements the datatype geometry plus some spatial functions that haven't been implemented according to the OpenGIS specifications. Functions that test spatial relationships are limited to working with master bounding rectangles rather than the actual geometries. MySQL versions earlier than 5.0.16 only supported spatial data in MyISAM tables. As of MySQL 5.0.16, InnoDB, NDB, BDB, and ARCHIVE also support spatial features.
 * Spatial Databox is a low-latency spatial engine that provides nearest neighbor, containment and tile-based spatial queries. It also provides a real-time response guarantee to queries so as to support interactive map mashups.

Books

 * Spatial Databases: A Tour, Shashi Shekhar and Sanjay Chawla, Prentice Hall, 2003 (ISBN 0-13-017480-7)
 * ESRI Press. ESRI Press titles include Modeling Our World: The ESRI Guide to Geodatabase Design, and Designing Geodatabases: Case Studies in GIS Data Modeling , 2005 Ben Franklin Award winner, PMA, The Independent Book Publishers Association.
 * Spatial Databases - With Application to GIS. Philippe Rigaux, Michel Scholl and Agnes Voisard. (ISBN 1-55860-588-6)