今天测试一个ST_Geometry的试验,使用了ST_Intersection函数,获得两个图层的相交部分,在执行过程中报:ORA-06530: Reference to uninitialized composite
查找了Esri的官方技术文章,竟然是一个bug。
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 |
When feature classes with different SRIDs are used in an ST_intersection query, it fails with the message “ORA-06530: Reference to uninitialized composite.”
N/A
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必须一致才可以。
问题出来了,我们就把他解决掉吧!
如果是出现我上面链接的问题,你可以将这两个数据放在一个数据集下,这样肯定可以保证投影一致。
要么进行手动的投影转换,保证一致即可。