为了提高DBMS对空间数据的管理能力,通常有两种解决方案:
1、关系型数据库+空间数据引擎
代表是ESRI的ArcSDE和MapInfo的SpatialWare
2、扩展对象关系数据库
代表:Oracle的Oracel Spatial、IBM的DB2 Spatial Extender
PostgreSQL是目前开源空间信息软件领域性能比较好的数据库,构建在其上的空间对象扩展模块PostGIS使其成为一个真正的大型空间数据库。
PostGIS通过向PostgreSQL添加对空间数据类型、空间索引和空间函数的支持,将PostgreSQL数据库管理系统转换为空间数据库。
可以说PostGIS仅仅是PostgreSQL的一个插件,但是它将PostgreSQL变成一个强大的空间数据库。
空间索引和边界框(bounding box)
空间数据库提供了一个“空间索引 (spatial index)”,它回答了“哪些对象在这个特定的边界框内” 这个问题。
边框是平行于坐标轴且包含特定地理要素的最小矩阵。
索引必须快速执行才能起到理想的作用,因此,空间索引不像B树索引那样提供精确的结果,而是提供近似的结果。
“多边形内部包含哪些线段”将由空间索引解释为“这个多边形边界框内部包含哪些线段边界框?”
各种数据库实际实现的空间索引差异很大,最常见的实现是R-tree,但是其他空间数据库中也有基于四叉树和基于网格的索引 。
空间函数
空间函数中大部分可以归纳为以下五类:
(1)转换函数:在geometry和外部数据格式之间进行转换
(2)管理: 管理关于空间表和PostGIS组织的信息的函数
(3)检索:检索几何图形的属性和空间信息测量的函数
(4)比较:比较两种几何图形的空间关系的函数
(5)生成