2016-11-14 71 views
0

我试图在Oracle Spatial 12C中使用MD.HHENCODE(或MDSYS.HHENCODE)空间函数。根据我能找到的唯一文档,我无法获得编译函数。 这里是我的功能代码:Oracle Spatial 12C MD.HHENCODE for geohash not working

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空间绝对安装。至于授权,我不知道但是感谢你提出。 CCENCODE被引用是因为这是该问题的入口点(这可能是一个坏标签) – markg

回答

0

感谢您的输入,但我想我通过一个不起眼的链接发现了如何通过SDO_UTIL.linear_key(args)实现我想要的,它显然取代了12C中的HHENCODE。 我的桌子有一个叫做几何体的圆柱体,它是一个8307的投影几何体,所以我的Bbox就是这个原因。 看来,这完成了一个geohash像函数,我目前正在查看该字符串的DECODE功能。

下面是代码

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

我仍然试图找出什么在函数中的最后ARG实际上做的我,但我得到我想出来的这个东西。