2016-09-28 64 views
0

當我嘗試使用Oracle Spatial operators,它拋出無法訪問Oracle Spatial操作符

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

根據Oracle 11g Documentation,操作者被禁止,如果表中不具有空間的索引,如果尺寸的用於查詢窗口中的數字不匹配創建索引時指定的維數。

因此,兩個步驟必須按順序使用SDO_GEOM.WITHIN_DISTANCE完成:

1 /你要更新命名USER_SDO_GEOM_METADATA元數據視圖。在創建空間索引之前,這是必需的。例子可以在Spatial Data Types and Metadata頁面找到。

2 /你必須爲以下索引空間的數據頁上提供的SQL語句的說明「SDO」字段創建空間索引:

CREATE INDEX TEST_SDO_GEOMETRY_IDX ON TEST_SDO_GEOMETRY (SDO) 
INDEXTYPE IS MDSYS.SPATIAL_INDEX;