首页 文章

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

提问于
浏览
0

我试图在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

    感谢您的输入,但我想我通过一个不起眼的链接发现了如何通过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实际上对我有什么影响,但我得到了我想要的东西 .

相关问题