【问题标题】:TO_WKTGEOMETRY doesn't seem to work with multipolygons (Oracle)TO_WKTGEOMETRY 似乎不适用于多面体(Oracle)
【发布时间】:2012-06-19 00:35:49
【问题描述】:

我正在使用Oracle Database 11.2。我使用sdo_elem_info_arraysdo_ordinate_array 变量加载了一个带有多面体的几何列。但是当我尝试检索形状的文本版本时,我只得到MULTIPOLYGON ()

这个块说明了我的问题:

DECLARE
    v_elem_info_array sdo_elem_info_array;
    v_ordinate_array sdo_ordinate_array;
    v_boundary sdo_geometry;
BEGIN
    -- This works:
    dbms_output.put_line(SDO_UTIL.TO_WKTGEOMETRY( SDO_UTIL.FROM_WKTGEOMETRY('MULTIPOLYGON(((-109.2693 45.00528,-104.0577 44.99743,-104.05325 41.0014,-111.04673 40.99795,-111.0552 45.00132,-109.2693 45.00528)))')));

    -- This does not work:
    v_elem_info_array := sdo_elem_info_array();
    v_ordinate_array := sdo_ordinate_array();

    v_elem_info_array.extend(3);
    v_elem_info_array(1) := 1;
    v_elem_info_array(2) := 103;
    v_elem_info_array(3) := 1;

    v_ordinate_array.extend(12);
    v_ordinate_array(1) := -109.2693;
    v_ordinate_array(2) := 45.00528;
    v_ordinate_array(3) := -104.0577;
    v_ordinate_array(4) := 44.99743;
    v_ordinate_array(5) := -104.05325;
    v_ordinate_array(6) := 41.0014;
    v_ordinate_array(7) := -111.04673;
    v_ordinate_array(8) := 40.99795;
    v_ordinate_array(9) := -111.0552;
    v_ordinate_array(10) := 45.00132;
    v_ordinate_array(11) := -109.2693;
    v_ordinate_array(12) := 45.00528;

    v_boundary := sdo_geometry (2007, 8307, null, v_elem_info_array, v_ordinate_array);

    dbms_output.put_line(SDO_UTIL.TO_WKTGEOMETRY(v_boundary));
END;

【问题讨论】:

    标签: oracle spatial


    【解决方案1】:

    我认为问题出在您的 SDO_ELEM_INFO_ARRAY 构造上,不应该是 1003 来表示外部多边形吗?

    v_elem_info_array := sdo_elem_info_array(1, 1003, 1);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-04-04
      • 2023-04-06
      • 2017-08-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多