空间数据的有效性检查能够查询SDO_GEMOTRY对象的无效情况,但并没有进行排错。例如,在ovcpolygons表中出现如图2-24所示的Ora-13356错误,只是查出来了,但并没有进行清理。Oracle Spatial的SDO_UTIL包提供了一些函数用于清理这些空间数据中存在的错误,如REMOVE_DUPLICATE_VERTICES、EXTRACT、APPEND等函数。具体的函数用法请参见Oracle Spatial Developer′s Guide一书。在这里以去除重复点为例,演示一下REMOVE_DUPLICATE_VERTICES函数的用法。
运行脚本Code_2_3,DBMS输出的结果为:
13356[Element<1>][Coordinate<1>][Ring<1>](www.xing528.com)
TRUE
第一行的输出是采用tolerance=0.05检测geom对象发现的有效性问题,它表示在该容忍值下,geom的一个元素中存在重复点。于是调用REMOVE_DUPLICATE_VERTICES去除其中的重复点,并将其复制给geomvalid,然后再检测geomvalid对象的有效性。第二行输出的是检测结果,证明REMOVE_DUPLICATE_VERTICES已经排除了geom中存在的问题。SDO_UTIL中有很多函数用于SDO_GEOMETRY,初步学习的时候没有必要去记住这些函数或过程,只需要掌握如何通过Oracle提供的帮助文档查询所要用到的函数,然后根据说明会使用这些函数就可以了。更多具体的SDO_GEOMETRY操作方法,将在下一章详细讨论。此外,对于有些空间有效性问题,Oracle Spatial并没有提供完善的排错函数,在这种情况下需要自己根据实际应用编写相关工具包。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。