使用SDO_FILTER

开始在SQL Plus中使用sdo_filter的时候不成功。后来总算解决了问题。

1开始时候:select a.uwi   

               from SPATIAL_USER.C_WELL a
               where sdo_filter(a.shape,mdsys.sdo_geometry(2003,null,null,
               mdsys.sdo_elem_info_array(1,1003,3),
               mdsys.sdo_ordinate_array(28.8,9.5,29.2,10.0)),
               'querytype=window')='true'

     错误为:ORA-29902: 执行 ODCIIndexStart() 例行程序中出错
                  ORA-13207: 运算符 [SDO_FILTER] 使用不正确
                  ORA-06512: 在"MDSYS.SDO_INDEX_METHOD_9I", line 368
                  ORA-06512: 在line 1

2换一种去掉最后一个参数(显然不成功。因为这是必须给定的参数)关于第三个参数,可以参看文档。

3最后想着第三参数应该是为空:

               select a.uwi   

               from SPATIAL_USER.C_WELL a
               where sdo_filter(a.shape,mdsys.sdo_geometry(2003,null,null,
               mdsys.sdo_elem_info_array(1,1003,3),
               mdsys.sdo_ordinate_array(28.8,9.5,29.2,10.0)),
               '')='TRUE'

OK! 成功了!

 

那么问题到这里是完了吗?我再看了看Oracle® Spatial User's Guide and Reference


http://stanford.edu/dept/itss/docs/oracle/10g/appdev.101/b10826/sdo_operat.htm#BJAFBCFC

它的例子中居然没有第三参数?我不知道它是怎么成功的!但是我发现最后='TRUE'一定要大写,否则就会报错。事实上我想的3的第三参数加上querytype=window也是成功的。

 

目前由于精力和水平有限,没法深入的学习和探讨,也只能记录些小问题是怎么解决的。

 

 

 

 

 

 

 

 


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的其他功能进行空间分析。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值