我试图在Oracle数据库11g企业版(11.1.0.6.0)上执行下一个查询:
SELECT "__ItemId"
FROM "Cities"
WHERE "Longitude" IS NOT NULL AND "Latitude" IS NOT NULL
AND SDO_ANYINTERACT(SDO_GEOMETRY('POINT(' || "Longitude" || ' ' || "Latitude" || ')'),
SDO_UTIL.FROM_WKTGEOMETRY('POLYGON ((-100 80, 100 80, 100 -80, -100 -80, -100 80))')) = 'TRUE'
其中“经度”和“纬度”-数字(28,5)列在“城市”表中。
UPD:下一个查询(具有相同错误)可用于测试:
SELECT 'Solved!'
FROM DUAL
WHERE SDO_ANYINTERACT(SDO_GEOMETRY('POINT(' || 100 || ' ' || 100 || ')'),
SDO_UTIL.FROM_WKTGEOMETRY('POLYGON ((-150.0 82.0, 150.0 82.0, 150.0 -67.0, -150.0 -67.0, -150.0 82.0))')) = 'TRUE';
我收到一个错误:
Error report -
SQL Error: ORA-13226: interface not supported without a spatial index
ORA-06512: at "MDSYS.MD", line 1723
ORA-06512: at "MDSYS.MDERR", line 8
ORA-06512: at "MDSYS.SDO_3GL", line 71
ORA-06512: at "MDSYS.SDO_3GL", line 239
13226. 00000 - "interface not supported without a spatial index"
*Cause: The geometry table does not have a spatial index.
*Action: Verify that the geometry table referenced in the spatial operator
has a spatial index on it.
问题:
发布于 2013-12-29 03:34:58
由于错误消息状态,您需要一个空间索引列来使用空间运算符。
您可以使用掩码“ANYINTERACT”从RELATE
包中的SDO_GEOM
函数获得等效的功能:
SELECT sdo_geom.relate(a, 'ANYINTERACT', b, 0.05)
FROM dual
发布于 2013-12-24 05:12:34
首先,您不能在没有任何空间列的情况下在表上创建空间索引,而sdo_anyinteract使用空间索引,oracle中有许多空间运算符,您可以尝试另一个,
我不确定,但你可以试试sdo_relate(obj1,obj2,'querytype=window mask=anyintereact')
希望它能成功。
https://stackoverflow.com/questions/20760735
复制相似问题