我正在使用Oracle的空间数据库,但我遇到了一些麻烦。
我正在使用像SDO_GEOM.SDO_LENGTH
那样返回数字的几何子程序做一些程序,但是当我使用其他几何子程序如SDO_GEOM.CENTROID
时,我不知道如何显示信息,因为这会返回{{1 }}
我是Spatial Oracle子程序的新手,所以感谢您的帮助。
这是我正在处理它的代码:
SDO_OBJECT
我做错了什么? 我该如何显示这些信息?可以使用st_asText吗?
答案 0 :(得分:0)
SDO GEOMETRY确实是一个复杂的主题。如果您要对此做很多事情,我建议您仔细阅读Oracle的“空间用户指南和参考”#34; (对于您的Oracle版本),可能需要几次。
您询问了如何从对象中获取信息,但未指定目标信息。我必须接受所提出的逻辑并假设它收集必要的数据。除了 dist 定义和/或它的分配之外。函数SDO_GEOM.SDO_CENTROID不返回sring,而是返回SDO_GEOMETRY。另一个对象是SDO_POINT_TYPE,它本身由3个数字组成; (x,y,z)。在地理或地理空间数据中对应经度,纬度,海拔高度。
访问这些值没有什么特别之处,只需使用标准点(。)表示法。所以这里:
declare
dest sdo_geometry;
.
.
.
dest := sdo_geom.sdo_centroid(geomEntrada,dim);
dbms_output.put_line(pnombre||' have this center: '
|| "longitude=' || to_char(l_centroid.sdo_point.x)
|| " latitude=' || to_char(l_centroid.sdo_point.y)
);
从SDO类型访问信息与从任何其他Oracle对象访问信息没有什么不同:您需要知道定义并在每个级别使用点(。)表示法。
BTW:上述参考手册包含这些定义。
CREATE TYPE sdo_geometry AS OBJECT (
SDO_GTYPE NUMBER,
SDO_SRID NUMBER,
SDO_POINT SDO_POINT_TYPE,
SDO_ELEM_INFO MDSYS.SDO_ELEM_INFO_ARRAY,
SDO_ORDINATES MDSYS.SDO_ORDINATE_ARRAY);
CREATE TYPE sdo_point_type AS OBJECT (
X NUMBER,
Y NUMBER,
Z NUMBER);