位置、距离、方向与空间关系
区分绝对位置、相对位置以及度量和拓扑关系,理解空间查询真正比较的对象。
位置、距离、方向与空间关系
空间查询并不是把两个坐标交给数据库就能得到唯一答案。位置采用什么参考系统,距离沿什么表面计算,对象的边界是否有效,都会改变结果。GIS 中的“附近”“相邻”和“位于内部”需要转成明确关系,才能被计算和复核。
位置必须带有参考语境
绝对位置通常由坐标参考系统中的坐标表达,相对位置则描述对象之间的关系,例如某站点位于河流东侧。坐标值脱离 CRS 没有完整含义:数值 120 可以是经度、米制横坐标,也可能属于本地工程坐标。
对象的位置还可能由几何范围而不是单一点表示。一座建筑用质心参与最近邻计算时,结果与使用入口点不同;一条河流的位置无法由单个坐标概括。选择代表点、边界或完整几何,应由分析问题决定。
距离取决于度量方式
平面距离适用于合适投影坐标下的局部计算,椭球面上的测地距离适合跨较大范围的位置比较,网络距离则沿可通行边累计成本。三者回答的问题不同。直线最近的医院不一定驾车时间最短,跨越日期变更线的经纬度差也不能直接当作距离。
距离计算还要说明对象之间取最近边界、中心点还是指定入口。对面状对象,点到面的距离在点位于内部时可能为零,但这不表示它离面边界为零。把度量对象写清楚,比选择函数名称更重要。
拓扑关系不依赖具体长度
OGC Simple Feature Access 定义了简单要素的几何模型和空间关系基础。相交、包含、内部、接触和重叠等关系关注对象的内部、边界和外部怎样相遇。它们与“距离很近”不同:两个多边形可以接触但没有重叠面积,一条线可以穿过面而不完全位于面内。
关系判断依赖有效几何和维度。自相交多边形的内部可能不明确,零长度线和重复点也会带来异常。浮点计算和数据采集误差使“刚好接触”非常敏感,工程中常需要根据数据精度设置合理容差,但不能用任意缓冲掩盖语义问题。
方向需要说明参照
东、西、上游、顺行等方向都依赖参照。地图坐标轴方向不一定等同于真实方位,线的数字化顺序也不一定表示水流或道路行驶方向。网络数据通常需要单独属性记录方向约束。
方位角可以从指定起点和参考北方向计算,但在大范围或不同投影中,网格北、真北和磁北并不相同。对一般 GIS 分析,应明确所用参考和精度,不把屏幕上的视觉方向当成测量结果。
把自然语言改成可执行条件
“查找附近学校”需要进一步确定搜索对象、距离方式、阈值和开放时间;“找出受影响地块”要说明影响范围、边界接触是否算入以及数据日期。PostGIS 提供空间类型和关系函数,OGC 标准提供共同语义,但最终条件仍由应用定义。
一条可靠查询应能回答:比较的是哪些几何,使用哪个 CRS,采用什么关系或距离,边界和容差怎样处理。这样得到的空间结论才不会只在一张地图上看起来合理。
资料依据
- Open Geospatial Consortium:OGC Simple Feature Access,https://www.ogc.org/standards/sfa/
- PostGIS Project:PostGIS Official Manual,https://www.postgis.net/documentation/manual/