首页 理论教育 关系分析函数-空间数据库实验教程

关系分析函数-空间数据库实验教程

时间:2023-08-29 理论教育 版权反馈
【摘要】:接下来将介绍两个用于分析SDO_GEOMETRY对象之间关系的函数。tolerance表示数据集的容差。脚本的输出结果为:Distance=150Pt on Trajectory:29729872.8,43920828.9,650Pt on Bldg16:29729872.8,43920828.9,500图6-13SDO_CLOSEST_POINT空间过程的使用6.3.2.3 RELATESDO_GEOM包中的RELATE函数与SDO_RELATE操作符实现功能基本相同,其函数的语法如下:其中,Geometry_A和Geometry_Q代表两个几何体。

关系分析函数-空间数据库实验教程

接下来将介绍两个用于分析SDO_GEOMETRY对象之间关系的函数。第一个函数是SDO_DISTANCE,这个函数用于确定两个几何体之间的距离长度。第二个函数是RELATE,这个函数用于确定两个几何体是否以任一指定形式相交。

6.3.2.1 SDO_DISTANCE

SDO_DISTSNCE函数计算了两个几何体的任意两点之间的最小距离。其语法如下:

其中,geometry1和geometry2是起始的两个参数,它们表示SDO_GOMETRY对象。tolerance表示数据集的容差。对于大地测量的数据,它们通常是0.5或者0.1(0.5m或者是0.1m)。对于非大地测量的数据,它将被设置为合适的值,来避免四舍五入引起的错误。params可选的第四个参数,是形如“unit=<value_string>”的字符串,这个参数指定了返回距离的单位。可以通过查看MDSYS.SDO_DIST_UNITS表获得可能的单位值。

例如,要确定在竞争对手位置周围0.25英里半径范围内的客户。其代码如下:

其运行结果如图6-12所示。

6.3.2.2 SDO_CLOSEST_POINT

如果想找到建筑物和轨迹之间最近的特定点该怎么做呢?可以通过PL/SQL的SDO_GEOM包中的SDO_CLOSEST_POINTS过程(注意不是函数)获得最近的点。这个过程的语法如下:

图6-12 SDO_DISTANCE空间函数的使用

其中,geometry1和geometry2是SDO_GEOMETRY对象,可以计算它们的距离和最近点。tolerance表示数据集的容差。对于大地测量数据,这个值通常是0.5或0.1(0.5m或0.1m)。对于非大地测量的数据,它将被设置为合适的值,来避免四舍五入引起的错误。params是形如“unit=<value_string>”字符串。这个参数指定了返回距离的单位。可以通过查看MDSYS>.SDO_DIST_UNITS表获得可能的单位值。

这个过程的返回如下:

(1)dist是geometry1和geometry2之间的距离。

(2)pt1是上述距离的geometry1上的点。

(3)pt2是上述距离的geometry2上的点。

本过程和空间函数SDK_DISTANCE相比,除了可以返回最近距离,还能返回最近的两个点对象。例如,使用这个函数来计算第16号建筑和直升机轨迹之间的最近的点。代码如下:

运行结果如图6-13所示。

脚本的输出结果为:(www.xing528.com)

Distance=150

Pt on Trajectory:29729872.8,43920828.9,650

Pt on Bldg16:29729872.8,43920828.9,500

图6-13 SDO_CLOSEST_POINT空间过程的使用

6.3.2.3 RELATE

SDO_GEOM包中的RELATE函数与SDO_RELATE操作符实现功能基本相同,其函数的语法如下:

其中,Geometry_A和Geometry_Q代表两个几何体。mask参数可取如下几个值:①DETERMINE,确定Geometry_A和Geometry_Q之间的关系或者相互作用;②任何一个关系,包括INSIDE(在内部)、COVEREDBY(被覆盖)、COVERS(覆盖)、CONTAINS(包含)、EQUAL(等价)、OVERLAPBDYDISJOINT、OVERLAPBDYINTERSECT、ON(在……上)和TOUCH(接触);③ANYINTERACT,如果先前的任何一个关系存在;④DISJOINT,如果先前的关系不存在。

RELATE函数的返回值如下:

(1)如果几何体相交并且指定了ANYINTERACT,返回“TRUE”。

(2)如果Geometry_A和Geometry_Q满足指定的mask类型关系,返回mask值。

(3)如果几何体之间的关系不符合第二个参数mask指定的关系,返回“FALSE”。

(4)如果mask被设置为DETERMINE,返回关系的类型。

例如,可以通过SDO_GEOM.RELATE函数得知哪些建筑与指定轨迹相交。代码如下:

运行结果如图6-14所示。

图6-14 SDO_GEOM.RELATE空间函数的使用

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

我要反馈