JSTS 某些 API 咋看描述有些类似,关于空间关系的描述有一个 DE-9IM 模型。
简介
描述两个二维几何对象(点、线、面)之间的空间关系的一种模型,它使用一个 3x3 的矩阵来描述几何关系类别
内部 Interior,边界 Boundary,外部 Exterior
- 对于多边形,内部是多边形的外环和内环围起来的面部分,边界由内环和外环构成,外部是除内部和边界以外的空间其他所有部分
- 对于线要素,边界是线首尾节点(中间节点不算),内部是线上除了首尾节点之外的部分。外部是空间除了内部与边界的部分
- 点要素的内部是点本身,其边界是空集,外部是除了点本身外的空间其他部分
拓扑关系描述
- Intersects:两对象的内部或边界存在交集
- Disjoint:相离,不存在交集
- Contains:A.Contains(B) 表示 A,B 的 Interior 相交并且 B 的 Interior 与 Boundary 均不与A的 exterior 相交
- Within:Within 与 Contains 互为转置
- Equal:A 和 B 的形状完全相同(但是,不是说他们所有的坐标都是完全一样的!A 或者 B 都可能有冗余的坐标,比如多点共线)。Equal 的交集矩阵是内部相交,但任意一方的内部与边界均不与对方的外界相交
- Overlap:多边形(面)之间的交集,点之间的交集均与他们的维度相同,线之间的交集可能会是点,线两种情况。表示两个几何对象对象之间有一部分是重合的情况,重叠只发生在线-线、面-面之间
- Touch:两个元素的内部(Interior)不能有交集,但是内部与边界,边界与边界可以有交集。
- Cross:A 与 B 的内部有交集,但交集的维度要比 A 与 B 最大的维度要小,横跨关系一定是建立在线与线或者线与面之间