2016-11-14 11 views
0

Я пытаюсь использовать пространственную функцию MD.HHENCODE (или MDSYS.HHENCODE) в Oracle Spatial 12C. Я не могу получить функцию для компиляции на основе единственных документов, которые я мог найти. Вот мой код функции:Oracle Spatial 12C MD.HHENCODE для geohash не работает

CREATE OR REPLACE FUNCTION linear_key ( p_shape in mdsys.sdo_geometry, 
             p_diminfo in mdsys.sdo_dim_array , v_lvl number) 
RETURN RAW DETERMINISTIC 
IS 
    v_ctr MDSYS.SDO_GEOMETRY; 
    rval RAW(200); 
BEGIN 
    v_ctr := MDSYS.SDO_GEOM.SDO_CENTROID(p_shape,p_diminfo); 
    select MDSYS.HHENCODE(v_ctr.sdo_point.x, p_diminfo(1).sdo_lb, p_diminfo(1).sdo_ub, v_lvl, 
          v_ctr.sdo_point.y, p_diminfo(2).sdo_lb, p_diminfo(2).sdo_ub, v_lvl) 
          into rval from dual; 
    return rval; 
END; 

Я получаю ошибки компиляции - ORA 00904, MDSYS.HHENCODE неверный идентификатор. В некоторых примерах я видел использование MD.HHENCODE, и я получаю ту же ошибку независимо. Я также читал, что должен включить пакет, но я не могу понять, как это сделать. Я потратил целый день, пожалуйста, помогите. Спасибо

+0

У вас на самом деле установлена ​​пространственная опция? Вы можете увидеть пакет MDSYS.MD и/или функцию MDSYS.HHENCODE в словаре данных? Если вы предоставили привилегии пользователю, который вы пытаетесь скомпилировать это как - и предоставляли напрямую, а не через роль? (Почему заголовок и первая строка относятся к CCENCODE?) –

+0

спасибо @AlexPoole space определенно установлен. Что касается предоставления, я не знаю, но спасибо, что вызвал это. CCENCODE ссылается, потому что это была точка входа в эту проблему (которая может быть плохой меткой на данном этапе) – markg

ответ

0

Спасибо за ввод, но я думаю, что я обнаружил через неясную ссылку, как добиться того, что я хочу, с помощью SDO_UTIL.linear_key (args), который, по-видимому, заменяет старый HHENCODE в 12C. В моей таблице есть геометрия, называемая геометром, и это проецируемая геометрия 8307, поэтому мой bbox - это то, что ниже по этой причине. Похоже, что это выполняет функцию типа geohash, и я сейчас смотрю функциональность DECODE для строки.

Вот код

select substr(SDO_UTIL.linear_key(A.geometry,-180,-90,180,90, 10),0,3) as encoded 
from mytable A 

Я все еще пытаюсь выяснить, что последний аргумент в функции на самом деле делает для меня, но я получаю то, что я хочу от этого.

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

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