我正在尝试在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而且我得到了同样的错误。我还读到我应该启用该软件包,但我也无法弄清楚如何做到这一点。我已整整一天,请帮忙。 感谢
答案 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实际上对我有什么影响,但是我得到了我想要的东西。