当我尝试使用Oracle Spatial operators时,它会抛出
ORA-13226:没有空间索引时不支持接口。
使用SDO_GEOM程序时,它可以正常工作。 例如
select *
from test_sdo_geometry
where SDO_GEOM.WITHIN_DISTANCE(sdo, 25, SDO_GEOMETRY(2001, 8307, SDO_POINT_TYPE(151.16567373275757, -33.9031022157086, null), null, null), 0.05, 'unit=M')='TRUE'
order by 1;
但是对于Oracle运营商,它会引发上述错误。
select * from test_sdo_geometry where SDO_WITHIN_DISTANCE(SDO_GEOMETRY(2001, 8307, SDO_POINT_TYPE(151.16567373275757, -33.9031022157086, null), null, null), SDO_GEOMETRY(2001, 8307, SDO_POINT_TYPE(151.16567373275757, -33.9031022157086, null), null, null), 'distance=10 unit=M')='TRUE' order by 1;
答案 0 :(得分:0)
根据Oracle 11g Documentation,如果表没有空间索引,或者查询窗口的维数与创建索引时指定的维数不匹配,则禁用运算符。
因此,必须完成两个步骤才能使用SDO_GEOM.WITHIN_DISTANCE
:
1 /您必须更新名为USER_SDO_GEOM_METADATA
的元数据视图。在创建Spatial索引之前,这是必需的。可以在Spatial Data Types and Metadata页面找到示例。
2 /您必须按照SQL Statements for Indexing Spatial Data页面上提供的说明为“SDO”字段创建空间索引:
CREATE INDEX TEST_SDO_GEOMETRY_IDX ON TEST_SDO_GEOMETRY (SDO)
INDEXTYPE IS MDSYS.SPATIAL_INDEX;