[Bug]使用ST_Intersection函数报:ORA-06530: Reference to uninitialized composite

导语

今天测试一个ST_Geometry的试验,使用了ST_Intersection函数,获得两个图层的相交部分,在执行过程中报:ORA-06530: Reference to uninitialized composite

分析

查找了Esri的官方技术文章,竟然是一个bug。

 

Bug NIM-101461

Bug Number  NIM101461
Submitted  May 7, 2014 2:55 PM
Severity  Medium
Applies To  No Product Found
Version Found  10.2
Prog Language  N/A
Server Platform  
Client Platform  
Database  All
Locale  N/A
Status  Open: Assigned
Version Fixed  N/A
SP Fixed  N/A

Synopsis

When feature classes with different SRIDs are used in an ST_intersection query, it fails with the message “ORA-06530: Reference to uninitialized composite.”

Additional Status Information

N/A

Alternate Solution

Manually use ‘st_transform':

SQL> SELECT SDE.ST_AsText(SDE.ST_Intersection(sde.st_transform(a.shape,300003), b.shape)) FROM ani3 a, ani4 b;

SDE.ST_ASTEXT(SDE.ST_INTERSECTION(SDE.ST_TRANSFORM(A.SHAPE,300003),B.SHAPE))
——————————————————————————–
POINT ( -117.38861502 34.41554692)

但是我的数据明明是同一个投影信息啊,通过数据库查询,结果发现不一致,具体原因详见
为什么相同的投影坐标系存储在ArcSDE中获得SRID不一致

结论

通过这个bug可以看出,目前ST_Intersection函数还不支持投影不一致的情况,严格意义上讲,ArcSDE里面的要素类的SRID必须一致才可以。

问题出来了,我们就把他解决掉吧!

如果是出现我上面链接的问题,你可以将这两个数据放在一个数据集下,这样肯定可以保证投影一致。

要么进行手动的投影转换,保证一致即可。

你可能感兴趣的:([Bug]使用ST_Intersection函数报:ORA-06530: Reference to uninitialized composite)