空间数据库是专门设计用于存储和管理地理空间信息的数据库系统。为了高效地处理和查询地理数据,它们扩展了传统数据库的数据类型,引入了一系列专门用于表示地理要素的空间数据类型。这些类型通常符合 Open Geospatial Consortium (OGC) 定义的“Simple Features for SQL”标准。
1. OGC Simple Features 标准空间数据类型
OGC Simple Features 是最广泛采用的空间数据类型标准,它定义了几何对象的基本结构和行为。
基本几何类型 (Basic Geometry Types):
点 (Point): 表示一个单一的零维几何对象,通常由一对或三对坐标 (x,y) 或 (x,y,z) 组成。例如,POINT (10 20) 或 POINT (10 20 30)。
线 (LineString): 表示一系列连接起来的二维或三维点,构成一条线。例如,LINESTRING (30 10, 10 30, 40 40)。
面 (Polygon): 表示一个二维区域。由一个外环(外部边界)和零个或多个内环(内部空洞)组成。例如,POLYGON ((30 10, 40 40, 20 40, 10 20, 30 10))。
多部分几何类型 (Multi-part Geometry Types): 用于表示由多个离散的几何对象组成的单个逻辑实体。
多点 (MultiPoint): MULTIPOINT (10 40, 40 30, 20 20, 30 10)。
多线 (MultiLineString): MULTILINESTRING ((10 10, 20 20), (15 15, 30 15))。
多面 (MultiPolygon): MULTIPOLYGON (((30 20, 45 40, 10 40, 30 20)), ((15 5, 40 10, 10 20, 5 10, 15 5)))。
几何集合 (GeometryCollection): 允许将不同类型的 特殊数据库 几何对象组合到一个集合中。例如,一个 GeometryCollection 可以包含一个 Point 和一个 LineString。GEOMETRYCOLLECTION(POINT(10 10), LINESTRING(10 10, 20 20))。
2. 数据库特有空间数据类型与扩展
除了 OGC 标准,一些空间数据库还提供特有的数据类型或扩展。
PostGIS 的 geometry 和 geography 类型:
geometry: 存储平面投影坐标系下的几何对象,在平面上进行距离和面积计算,适用于小范围或投影后的数据。
geography: 存储球面坐标系(经纬度)下的几何对象,在球面上进行距离和面积计算,适用于大范围或全球数据,避免投影失真。例如,在 PostGIS 中,ST_Distance(geom1, geom2) 计算平面距离,而 ST_Distance(geog1, geog2) (当数据类型为 geography 时)计算球面距离。
SQL Server Spatial 的 geometry 和 geography 类型: 功能与 PostGIS 类似,用于存储不同坐标系统下的空间数据。
栅格数据类型 (Raster Data Types): 某些空间数据库(如 PostGIS)扩展支持栅格数据类型,可以直接在数据库中存储和处理栅格数据(如遥感影像、DEM)。例如,PostGIS 的 raster 类型允许你存储栅格瓦片,并提供栅格处理函数。