GIS 的主要功能是确定要素之间的空间关系:它们是否叠加?一个要素中是否包含另一个要素?是否相互交叉?
几何可通过多种不同方式建立空间关系。下面是如何在几何之间建立空间关系的示例:
- 几何 A 经过几何 B。
- 几何 A 完全包含在几何 B 中。
- 几何 A 完全包含几何 B。
- 几何之间彼此没有相交或接触。
- 几何完全重合。
- 几何相互叠加。
- 几何接触于一点。
要确定这些关系是否存在,请执行空间关系函数。这些函数会对在查询中指定的几何的下列属性进行比较:
- 几何的外部 (E),即未被几何占用的所有空间
- 几何的内部 (I),即几何所占空间
- 几何的边界 (B),即几何内部和外部的分界
在构造空间关系查询时,请指定要查找空间关系的类型和要进行比较的几何。查询返回“真”或“假”;表示几何之间存在或不存在指定的空间关系。在大多数情况下,您可能会将空间关系查询放在 WHERE 子句中来过滤结果集。
例如,如果一个表中包含计划开发地点的位置,另一个表中包含重要考古遗址的位置,您可能想要确保开发地点表中的要素与考古遗址表中的要素互不相交。您可以通过查询来验证开发地点与考古遗址是否互不相交,如果相交,则返回计划开发地点的 ID。本示例程序中调用了 ST_Disjoint 函数,如下所示。
SELECT d.projname,a.siteid
FROM dev d, archsites a
WHERE sde.st_disjoint(d.shape,a.shape)= 'f'
projname siteid
bow wow chow A1009
以上查询代码将返回相交开发地点的名称和考古遗址的 ID,即返回相交地点。该查询返回的开发项目名称是 Bow Wow Chow,此项目与 ID 为 A1009 的考古遗址相交。
有关在 Oracle 或 PostgreSQL 中测试空间关系的 ST_Geometry 函数的信息,请参阅ST_Geometry 的空间关系函数。有关用于 IBM DB2、IBM Informix、Oracle Spatial、PostGIS 或 Microsoft SQL Server 空间类型的空间关系函数的信息,请参阅数据库管理系统的文档。