首页 理论教育 空间数据库实验教程中的有效性验证

空间数据库实验教程中的有效性验证

时间:2023-08-29 理论教育 版权反馈
【摘要】:在这里只关心SDO_GEOMTRY的有效性判断准则。

空间数据库实验教程中的有效性验证

上面的有效性函数是用什么样的准则来判定一个几何对象是否有效的呢?这就涉及到Oracle Spatial的SDO_GEOMTRY类型的具体细节实现,可以参见3.1。在这里只关心SDO_GEOMTRY的有效性判断准则。在有效性检验中,Oracle首先会看几何对象的SDO_TYPE,其主要类型包括点、线、环、多边形、面和体,针对不同类型的几何对象,其检验准则也不尽相同,下面一一讨论。

2.5.2.1 点

点(Point)是一种比较简单的几何对象,其检验只有一项,就是看点坐标是否在给定的有限范围内。比如对于ovcdemo数据,其有效范围就是经度范围为(-180°,180°),纬度范围为(-90°,90°)。如果一个点的坐标范围超出这个范围,则该点是无效点。

2.5.2.2 线

线(Line String)的有效性检验准则有两点:

(1)所有线上的点都是离散的并能相互区别的,例如,tolerance=0.5,如果存在两个点:(1.50,1.50)、(1.52,1.52),这两个点就不能相互区分。

(2)所有的线应该具有两个或两个以上的点。

2.5.2.3 环

环(Ring)的判定准则与线(Line String)基本相同,不同的地方是:

(1)环要求首尾闭合,也就是说第一个点和最后一个点是同一个点,也即闭合性。(2)所有点必须是共面的,也即共面性。

(3)环上所有的边都是不相交的。

2.5.2.4 多边形

多边形(Polygon)通过一个外环(Outer Ring)和0~n个内环(Inner Ring)定义了一个连续区域。其规则是:

(1)Oracle Spatial中的多边形要求所有的环都是共面的。

(2)所有的环必须是有方向的,并且内环与外环的方向相反。

(3)多边形定义的是单个连续区域,也就是说任何内环不能将多边形分成两个或多个不相连的区域。

(4)任何两个环都不可能有重叠区域,至多只能有一个重叠点。

(5)任何内环都必须在外环内部,如果内环与外环有接触,其接触点有且只有一个。

(6)对于二维多边形,外环是逆时针方向,而内环则是顺时针方向。如果是三维多边形则没有这项限制。

2.5.2.5 复杂面

复杂面(Composite Surface)定义了由一个或者多个多边形构成的连续区域。其有效性规则是:(www.xing528.com)

(1)其中的每个多边形都是有效的多边形。

(2)其中任意两个多边形的相交面积为0。

(3)其中的任意两个多边形P1和P2,从P1出发总能通过共享边找到P2,也就是说复杂面的区域必须是连续的。

2.5.2.6 简单体

简单体(Solid)是一个单一连续体,其外边界是一个复杂面,内部可以包含0~n个复杂面(Composite Surface)。基于这个定义,其有效性规则为:

(1)体必须是连续的。

(2)外边界必须是封闭的。

(3)连接性,也就是说从其中的任意组件(面或体)可以到达其他任何组件(面或体)。

(4)每一个标记为内部的面都必须在体的外边界里面。

(5)方向性,也即面中的多边形通常都是有方向的,其方向为多边形的所有点的法向量指向它们形成的体的外面。共面的多个面的法向量遵循右手大拇指(Right Thumb)原则(右手手指弯曲的方向是点序列的方向,则大拇指指向的就是法线方向)。

(6)每一个面都是有效的面。

(7)不存在有内环的多边形。

2.5.2.7 复杂体

复杂体(Composite Solid)是一个单一连续的体,它可以由一个或多个简单体构成。其有效性规则为:

(1)每一个简单体都是有效的。

(2)简单体之间存在共面但不存在体相交的情况,也就是任意两个简单体之间的交集的体积为0。

(3)体是连续的。

2.5.2.8 集合

集合(Collection)是多个几何对象的集合,其有效性规则就是其中的每个组件都是有效的。如果是同质集合,如多点(MultiPoint)、多线(MultiLine String)、多面(MultiSurface或MultiPolygon)或多体(MultiSolid),则其中的所有元素必须类型相同。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈