2016-09-28 4 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. Примеры можно найти на странице Spatial Data Types and Metadata.

2/Вы должны создать пространственный индекс для поля «ГКБ», следуя инструкциям на операторов SQL для индексирования страницы пространственных данных:

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

 Смежные вопросы

  • Нет связанных вопросов^_^