用于geohash的Oracle Spatial 12C MD.HHENCODE无法正常工作

时间:2016-11-14 16:27:44

标签: oracle plsql spatial oracle-spatial

我正在尝试在Oracle Spatial 12C中使用MD.HHENCODE(或MDSYS.HHENCODE)空间函数。基于我能找到的唯一文档,我无法获得编译功能。 这是我的功能代码:

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而且我得到了同样的错误。我还读到我应该启用该软件包,但我也无法弄清楚如何做到这一点。我已整整一天,请帮忙。 感谢

1 个答案:

答案 0 :(得分:0)

感谢您的输入,但我想我通过一个不起眼的链接发现了如何通过SDO_UTIL.linear_key(args)实现我想要的东西,这显然取代了12C中旧的HHENCODE。 我的表有一个叫做几何体的col,它是一个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实际上对我有什么影响,但是我得到了我想要的东西。