空间拓扑关系判断方法的研究
徐黎明 陈天滋
(江苏大学计算机科学与通信工程学院 江苏镇江 212013)
【摘 要】空间拓扑关系是空间分析中的重要部分,如何有效地进行空间拓扑关系的生成和判断,将直接影响到GIS系统的有效性。本文在借助已有的拓扑关系识别规则,并分析其思路的基础上,提出了一种利用解析几何的思想来进行空间拓扑关系判断的新方法。
【关键词】 解析几何 地理信息系统 拓扑关系 判断
1 引言
地理信息系统(GIS,Geographic Information System)是以采集、存储、管理、分析、描述和应用整个或部分地球表面(包括大气层在内)与空间和地理分布有关的数据的计算机系统。它由硬件、软件、数据和用户有机结合而构成。它的主要功能是实现地理空间数据的采集、编辑、管理、分析、统计、制图。由于地球是人们赖以生存的基础,所以GIS是与人类的生存、发展、进步密切关联的一门信息科学与技术,并愈来愈受到人们的重视。
GIS实现技术的核心之一就是空间数据库的建立,以及在此基础上实现的空间查询和空间分析。空间数据库不仅对空间目标进行描述,而且对目标间的空间关系进行显式表达。完备和形式化的空间关系描述与表达是设计空间查询语言的关键,是实现有效空间查询的前提,同时也是空间分析的基础,它直接影响到空间分析获取的信息量及其有效性。传统GIS着重于目标间拓扑空间关系的描述与表达,点集拓扑学、代数拓扑学和图论是目前用得比较多的描述空间关系的理论基础,很多著名学者在此方面做了大量的研究工作,提出了基于点集拓扑理论的识别规则,但这类算法往往比较复杂。本文借助于解析几何的思想,提出了一种利用代数方程来解决几何对象之间关系的新思路,通过直线的单调性及斜率等性质,只须经过简单的运算,便可给出空间拓扑关系的具体判断。
2 相关知识
2.1 定理
⑴ xoy平面上的任意一条直线,其方程都是关于x、y的一次方程。
⑵ 任意一个关于x、y的一次方程Ax+Bx+C=0(A、B不同时为零),都表示xoy平面上的一条直线。
2.2 公式
点 到直线的距离为:
,
2.3 定义
⑴ 斜率:在坐标平面上,如果已知两个点 ( 、 ,那么过 、 的直线 就是确定的。 此时直线的斜率为:
(当 )
不存在 (当
⑵ 两点式直线方程:对于空间关系中的线段,它是由两个结点组成的,故可通过已知的两点的点坐标来写出直线方程。现设直线段 通过两点 、 ,求 的方程时,我们应考虑横坐标 和 的关系:
当 时, 轴, 的方程是
当 时,可转化为点斜式处理。此时 的斜率 ,所以 的方程可写成 ,从而化简可得一般式: 。
上述定理和定义揭示了坐标平面上的直线与关于x、y的一次方程上的联系,根据这种联系,研究直线的几何问题就可以和研究一次方程的代数问题互化了。这也是本文利用此方法来解决线与其他对象相关关系的理由。
3 拓扑关系判断的具体方法
3.1点与点的关系
现实世界中,具有物理意义的点与点之间的关系有二种,可通过点之间的距离来判断。
(1)重合 对于点 ,若有 且有 ,则可认为两点是重合的。
(2)分离 对于不满足以上条件的两点则认为是分离的。
3.2 点与线的关系
点与线之间的基本关系有以下三种:
(1)相接:点与直线段两端点之一重合。
(2)包含:若点到线的距离d为0,且根据线的单调性,此点的点坐标位于两端点之间,则此时为包含的关系,即线包含了点。
(3)分离:点到线的距离d不等于0。
点与线的距离为0,但排除点包含于线段的情况,即此点的点坐标不在两端点之外,则此时点与直线段也是分离的。
若涉及的是不确定坐标值的点与线,可以根据比例尺的大小及视觉效果,利用隶属函数来进行其中相关拓扑关系的模糊判断。
3.3 点与多边形的关系
下面的方法既适用于P是凸多边形的情况,又适用于P是凹多边形的情况,甚至还可适用于P内部有孔的情况。具体方法是,从点 向右作一水平射线至无穷远,则:
(其中t指大于等于0的任意数)
然后求射线与多边形P的交点个数,进而根据交点个数来判断 是位于P外还是位于P内。若有奇数个交点,则 位于P内;若有偶数个交点,则 位于P外。
(1)分离:若 位于P外,则点与多边形的关系是分离的。
(2)包含:若 位于P内,则多边形包含点。
(3)点在多边形上(相邻):由于多边形P由 组成,故多边形是由直线段 组成,若此点落在组成多边形的某一条直线段上(可参照点与线的关系),则可认为点在多边形上,即两者为相邻关系。
3.4 线与线的关系
在解析几何中,线和线的关系可以通过两点式分别求其直线方程后,通过比较两者的斜率以及相应的系数,来判断其相互的关系。
设直线段 的直线方程为
设直线段 的直线方程为
(1)重合:若 、 、 ,则可判断两直线相互重合,此时,对两线段的关系关键看彼此两端点之间的关系。现设直线 的两端点为 、 ,直线 的两端点为 、 ,根据直线上的点坐标是单调增或单调减的,则有 或 , 或 ,不妨设直线 是单调增的(此时直线 也是单调增的),则有 ,若对直线 上的两端点有 和 则可得两直线是重合的。
(2)交叠:对同样满足上述条件的两直线上的直线段,若有 或 ,就可以判断这两直线是交叠的。其中有包含于和包含两种情况:对于满足直线方程一样的两线段,若有 ,则称 包含 ,即 包含于 ,因为包含和包含于是一个对应的关系
(3)相接:对于上述两线段若直线方程一样,那么如有 、 、 、 中之一情况,则可推得两直线是相接的。
若两线段的直线方程不一样,但其中的一条线段的一个端点到另一条直线段的距离为0,即此端点在另外一个直线段上,则也是相接的。
(4)分离:对于直线方程相同的两个线段,若有 或 ,则两直线段是分离的。
若由两线段的直线方程比较出斜率不等(通过点斜式很容易就能发现斜率的相等与否),则这两条直线有相交的趋势。但因为这是个直线段,则可由两直线方程求出的交点坐标,来判断交点是否落在其一的延长线上,若是则是分离的。
(5)相交:对相离中的第2种情况,若交点属于两直线段,则可判断是相交的。具体可见图1所示。
3.5 线与多边形的关系
线与多边形的关系可通过点与多边形的关系及直线段的连续性来进行判断。
(1)相交:若直线段的一个端点落在多边形内,但另一个端点不在多边形内,则可判断其是相交的。
图1 线与线之间的拓扑关系示意图 图2 线与多边形之间的拓扑关系示意图
包含于:若直线段的两个端点皆落在多边形的内部,则可判断直线是包含于多边形。
(3)相接:若直线段的一个端点落在多边形的一个边上,因为直线上的点坐标呈现单调性,不妨设单调增,