无法访问Oracle Spatial Operators

时间:2016-09-28 05:01:21

标签: oracle oracle11g geocoding

当我尝试使用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; 

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;