oracle spatial sdo_util,Oracle spatial抽稀函数(SDO_UTIL.SIMPLIFY)详解

在使用Oracle spatial做空间查询和展示时,经常会遇到展示或者查询过慢,这时候我可以通过空间数据抽稀来优化查询展示效率。

在Oracle spatial中的抽稀函数为:SDO_UTIL.SIMPLIFY

它内部采用了道格拉斯抽稀算法。

构造函数:

SDO_UTIL.SIMPLIFY(

geometry IN SDO_GEOMETRY,//输入的geometry

threshold IN NUMBER//抽吸阀值   该值为正树(如果该值为零,则表示输入geometry和输出geometry相同,不做处理)  ,如果输入geometry是地理坐标,则该值用米来表示。如果不是地理坐标,则表示与之相关的单位。

tolerance IN NUMBER DEFAULT 0.0000005//容差  不能比阀值大 为了取得较理想的抽稀效果,它的取值不能与阀值相等,如果阀值越大,返回geometry的点越少。

) RETURN SDO_GEOMETRY;

使用样例:

SELECT SDO_UTIL.SIMPLIFY(

SDO_GEOMETRY(

3302, -- line string, 3 dimensions (X,Y,M), 3rd is linear ref. dimension

NULL,

NULL,

SDO_ELEM_INFO_ARRAY(1,2,1), -- one line string, straight segments

SDO_ORDINATE_ARRAY(

2,2,0, -- Starting point - Exit1; 0 is measure from start.

2,4,2, -- Exit2; 2 is measure from start.

8,4,8, -- Exit3; 8 is measure from start.

12,4,12, -- Exit4; 12 is measure from start.

12,10,NULL, -- Not an exit; measure automatically calculated and filled.

8,10,22, -- Exit5; 22 is measure from start.

5,14,27) -- Ending point (Exit6); 27 is measure from start.

),

6, -- threshold value for geometry simplification

0.5 -- tolerance

) FROM DUAL;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SDO_GEOM.SDO_BUFFER函数Oracle Spatial中用于生成空间缓冲区的函数。它可以将输入几何对象沿着其边界放大或缩小指定距离,从而生成缓冲区。缓冲区可以是圆形、多边形或多线段。 函数语法如下: ``` SDO_GEOM.SDO_BUFFER( geometry IN SDO_GEOMETRY, distance IN NUMBER, tolerance IN NUMBER DEFAULT NULL, params IN VARCHAR2 DEFAULT NULL) RETURN SDO_GEOMETRY; ``` 参数说明: - geometry:输入的几何对象。可以是点、线、多边形等任何几何对象。 - distance:缓冲区距离。单位由params参数指定,默认为米。 - tolerance:缓冲区距离的精度。默认为NULL,表示使用默认精度。 - params:缓冲区距离的单位和其他参数。默认为NULL,表示使用默认参数。可以设置为'unit=KM'表示单位为千米,或者其他参数。 函数返回值为生成的缓冲区几何对象。 以下是一个示例代码,展示如何使用SDO_GEOM.SDO_BUFFER函数生成圆形缓冲区: ``` SELECT SDO_GEOM.SDO_BUFFER( SDO_GEOMETRY(2001, 8307, SDO_POINT_TYPE(-117.0, 34.0, NULL), NULL, NULL), 10, 0.005, 'unit=KM') as buffer FROM dual; ``` 在这个示例中,输入几何对象是一个点,经度为-117,纬度为34。缓冲区的距离为10公里,精度为0.005公里。最后一个参数指定缓冲区距离的单位为千米。 执行这个查询后,会返回一个包含缓冲区几何对象的结果集。你可以将结果集中的几何对象保存到Oracle表中,然后使用Oracle Spatial的其他功能进行空间分析。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值