Oracle 从简单点SDO几何图形的SDO坐标集合中选择x、y

Oracle 从简单点SDO几何图形的SDO坐标集合中选择x、y,oracle,collections,Oracle,Collections,我想从sdo几何图形表中选择x、y值。gtype是2001,所以它们是点。sdo几何图形列名为“几何图形” 我试过: select geometry.sdo_point.x, geometry.sdo_point.y from el_pole_test 这将返回空值 我还尝试了索引: select p.geometry.SDO_ORDINATES[0] as point_x, p.geometry.SDO_ORDINATES[1] as point_y from el_pole_test

我想从sdo几何图形表中选择x、y值。gtype是2001,所以它们是点。sdo几何图形列名为“几何图形”

我试过:

select geometry.sdo_point.x, geometry.sdo_point.y from el_pole_test
这将返回空值

我还尝试了索引:

select p.geometry.SDO_ORDINATES[0] as point_x,  p.geometry.SDO_ORDINATES[1] as point_y from el_pole_test
这是一个错误

如果我在集合中查找给定点,我会看到如下数组:

1661473.42619016
2630277.19731551
1
0
数组中的前两个值是x和y。我不确定1和0扮演什么角色

表创建:

create table EL_POLE_TEST
(
  entity_id VARCHAR2(39) not null,
  geometry  MDSYS.SDO_GEOMETRY
)
示例行:

INSERT INTO el_pole_test 
VALUES      ('00001D212', 
             mdsys.Sdo_geometry(2001, NULL, NULL, 
             mdsys.Sdo_elem_info_array(1, 1, 1, 3, 1, 0), 
mdsys.Sdo_ordinate_array(1661473.42619016, 2630277.19731551, 1, 0))); 

INSERT INTO el_pole_test 
VALUES      ('00000D212', 
             mdsys.Sdo_geometry(2001, NULL, NULL, 
             mdsys.Sdo_elem_info_array(1, 1, 1, 3, 1, 0), 
mdsys.Sdo_ordinate_array(1667630.11795338, 2640351.11795338, 1, 0)));

要从该表中获取X和Y坐标,您需要大量的SQL技巧:通过交叉连接
table
操作符来取消集合元素的测试(但必须使用表别名-这是唯一需要别名的时候),使用分析函数对每个实体的元素进行排序,然后使用MAX/CASE聚合结果,每行得到一个X和一个Y:

select
    entity_id,
    max(case when rownumber = 1 then column_value else null end) x,
    max(case when rownumber = 2 then column_value else null end) y
from
(
    select
        entity_id,
        column_value,
        row_number() over (partition by entity_id order by rownum) rownumber
    from el_pole_test e
    cross join table(e.geometry.sdo_ordinates)
)
group by entity_id;


ENTITY_ID  X                 Y               
---------  ----------------  ----------------
00000D212  1667630.11795338  2640351.11795338
00001D212  1661473.42619016  2630277.19731551

请提供表的
CREATE TABLE
语句和几行示例数据,如
INSERT
语句。@GMB我用一条CREATE TABLE语句和两行示例数据更新了我的问题。这是一个简化的表格,只关注几何图形列。