Oracle Spatial空间函数

Oracle Spatial提高了几何体处理函数,即空间函数。与空间操作符不同的是空间函数计算不需要有空间索引,功能比前者更丰富,可以出现在SELECT语句中(前者只能在WHERE子句中)。

Oracle Spatial空间函数分为几大类:
  • 缓冲函数(Buffering functions):
  • 关系分析函数(Relationship analysis functions):这类函数测算两个SDO_GEOMETRY对象间的关系,比如距离、是否包含等等
  • 几何体合并函数(Geometry combination functions):两个几何体的相交、合并等
  • 几何分析函数(Geometric analysis functions):例如面积计算
  • 聚合函数(Aggregate functions):上面的函数都是针对一个或一对几何体进行分析计算的,聚合函数针对一组几何体进行计算,与普通SQL聚合函数(count,sum等)类似,只能在SELECT中使用。


除了聚合函数,其他类空间函数都在SDO_GEOM包内,也不限于只在SELECT中使用。这些空间函数需要一到两个SDO_GEOMETRY作为输入参数,一个tolerance参数进行微调(tolerance表示两个点能被区分的距离,在此距离之类两个点被视为一个点;对于geodetic几何体,单位为米,通常设为0.1或0.5),此外还可能有其他可选参数。


缓冲函数
缓冲函数SDO_BUFFER围绕一个SDO_GEOMTRY对象创建缓冲区
SDO_BUFFER
(
geometry     IN SDO_GEOMETRY,
distance     IN NUMBER,
tolerance    IN NUMBER
[, params    IN VARCHAR2]
)


params包括 unit和arc_tolerance,前者指定后者及distance的单位,可以查询MDSYS.SDO_DIST_UNITS知道Oracle提供的单位。arc_tolerance只对geodesic几何体有效,其值总比tolerance大。

猜你喜欢

转载自cryolite.iteye.com/blog/486818