空间数据库提供了一套丰富的内置函数和操作符,用于执行各种空间查询和分析。
空间关系 (Spatial Relationships):
拓扑关系: 判断两个几何对象之间的空间关系,如 ST_Intersects() (相交), ST_Contains() (包含), ST_Within() (被包含), ST_Touches() (接触), ST_Overlaps() (重叠), ST_Disjoint() (不相交)。
距离关系: 计算两个几何对象之间的距离,如 ST_Distance()。
空间量算 (Spatial Measurement): 计算几何对象的几何属性,如 ST_Area() (面积), ST_Length() (长度), ST_Perimeter() (周长), ST_Centroid() (质心)。
几何操作 (Geometry Operations): 创建新的几何对象或修改现有几何对象。
缓冲区分析: ST_Buffer() (在几何对象周围创建指定距离的缓冲区)。
叠加分析: ST_Intersection() (计算两个几何对象的交集), ST_Union() (计算两个几何对象的并集), ST_Difference() (计算两个几何对象的差集)。
几何转换: ST_Transform() (坐标转换), ST_AsText() (转换为 WKT), ST_AsGeoJSON() (转换为 GeoJSON)。
网络分析 (Network Analysis): 一些高级空间数据库或其扩展(如 PostGIS 的 pgRouting)支持基于拓扑网络的路径规划、可达性分析等。
这些核心功能共同构成了空间数据库的强大能力,使其成为处理地理空间信息的不可或缺的工具。
空间关系与拓扑结构介绍
在地理信息系统 (GIS) 和空间数据库中,空间关系 (Spatial Relationships) 是指地理要素之间在空间上的相互位置和连接方式。而拓扑结构 (Topology) 则是空间关系的一种特殊形式,它通过显式地存储和管理几何要素之间的连通性、邻接性 特殊数据库 和包含性,来确保空间数据的一致性和完整性。理解这两者对于进行准确的空间分析至关重要。
1. 空间关系:地理要素的相互位置
空间关系是描述两个或多个几何对象在空间中如何相对于彼此定位的概念。它们通常是布尔型的,即判断是否满足某种关系。OGC (Open Geospatial Consortium) Simple Features for SQL 标准定义了一系列常用的空间关系。
拓扑关系 (Topological Relationships): 这些关系在几何对象发生平移、旋转、缩放等变换时保持不变。它们描述了要素之间的连接、重叠、包含等。
相交 (Intersects): 两个几何对象有共同的部分。ST_Intersects(geom1, geom2)
包含 (Contains): 一个几何对象完全包含另一个几何对象。ST_Contains(polygon1, point1)
在...之内 (Within): 一个几何对象完全被另一个几何对象包含。ST_Within(point1, polygon1) (与 ST_Contains 互为逆操作)
接触 (Touches): 两个几何对象的边界相接,但内部不重叠。ST_Touches(polygon1, polygon2)
不相交 (Disjoint): 两个几何对象没有任何共同的部分。ST_Disjoint(geom1, geom2)
重叠 (Overlaps): 两个几何对象有共同的部分,且它们都是相同维度的(例如两个多边形重叠),并且它们的交集也是相同维度的。ST_Overlaps(polygon1, polygon2)
相等 (Equals): 两个几何对象在空间上完全相同。ST_Equals(geom1, geom2)
交叉 (Crosses): 两个几何对象在它们的内部相交,并且它们的交集的维度小于它们的最大维度。例如,一条线穿过一个多边形。ST_Crosses(line1, polygon1)
距离关系 (Distance Relationships): 描述两个几何对象之间的距离。
最近距离 (Distance): 计算两个几何对象之间最近的点之间的距离。ST_Distance(geom1, geom2)
在距离内 (DWithin): 判断两个几何对象是否在指定距离内。ST_DWithin(geom1, geom2, distance)
2. 拓扑结构:确保空间数据一致性
拓扑结构是矢量数据模型中的一种高级表示方法,它显式地存储和管理地理要素之间的空间关系(如邻接、连通、包含),以消除数据冗余,并确保空间数据的一致性和有效性。
核心原则:
节点 (Node): 线的起点和终点,以及多条线相交的点。
边 (Edge): 连接两个节点的线段。
面 (Face): 由一组闭合的边围成的区域。
拓扑规则的体现:
所有线段都以节点结束。
线段不能在节点之外交叉。
每个区域都必须被闭合的边所界定。
相邻区域共享一条公共边界,且这条边界只存储一次。 这样就避免了“缝隙 (slivers)”和“重叠 (overlaps)”等制图错误。
拓扑模型的优点:
数据完整性: 强制执行空间规则,防止数据制图错误(如重叠多边形、悬挂线)。
数据冗余减少: 共享边界只存储一次,节省存储空间。
高效空间分析: 支持复杂的网络分析(路径规划、可达性分析)、邻近分析、缓冲区分析、叠加分析等。例如,在道路网络中,可以快速找到连接某两个路口的所有路径。