PostGIS数据库空间拓展

PostGIS是开源对象/关系数据库PostgreSQL的空间扩展,提供包含空间对象、空间索引、空间操作函数和空间操作符在内的空间信息服务功能。

新版本PostGIS 1.4.0刚刚发布,这个版本在性能上有很大的提升,重点体现在ST_Union、ST_Intersects、ST_Contains和ST_Within等空间分析操作上。并且增加了ST_GeoHash、ST_LineCrossingDirection、ST_AsGeoJSON等新的空间操作函数。同时新版本增强了API的稳定性和一致性,支持PostgreSQL当前最新的8.4发布版,并在PostGIS文档细节和参考手册方面做了增补。

在数据格式方面,PostGIS支持各种常用空间数据类型,包括点(POINT)、线(LINESTRING)、多边形(POLYGON)、多点(MULTI_POINT)、多线(MULTI_LINESTRING)、多多边形(MULTI_POLYGON)和集合对象集(GEOMETRY_COLLECTION)等。在PostGIS中,使用文本表达方法WKT(Well Known Text)和二进制表达方法WKB(Well Known Binary)表达不同的几何体类型,并由对象类型和构成对象的坐标两部分组成。

在PostGIS提供的空间操作中,基于OpenGIS的空间操作包括:字段处理函数、几何关系函数、几何分析函数和读写函数。除此之外,在OpenGIS基础上扩展的空间操作包括:空间索引创建、空间查询、网络地图服务、数据类型支持、量算函数、几何操作函数等扩展功能。除空间操作符之外,PostGIS提供了一系列用于检测空间对象关系的二元谓词(如Contains、Within、Overlaps),并返回布尔值来表征对象间符合关系。

在空间数据查询方面,PostGIS依照OGC的Simple Features for SQL 1.1规范设计,同时,PostGIS也实现了ISO组织SQL Multi-media标准的绝大多数空间操作函数,并能够在SQL查询中实现常用的空间运算并获得返回结果。同时PostGIS支持空间聚集函数查询操作,以对某一属性列所有空间对象执行操作,如返回一系列要素的最大外包矩形框的聚集操作。

在空间索引方面,PostgreSQL目前支持B树索引、R树索引和通用搜索树GiST(Generalized Search Trees)三种类型空间索引。B树索引主要用于顺序排列的一维数据,在存储空间数据的PostGIS上应用较少;R树索引将数据分成矩形、子矩形、子子矩形,适用于为二维空间数据建立索引;GiST索引是一种平衡,树状结构的访问方法,将数据划分成:一般数据、重叠数据和内部数据,并可在基础模版中实现多种索引模式。

目前OSGeo旗下大多数开源GIS软件如GeoServer、uDig、OpenJUMP等都支持PostGIS数据表的直接载入,读写操作。但PostGIS在栅格数据的存储、管理和分析方面还有待增强。感兴趣的朋友可以查看PostGIS手册来获取更多使用细节。