Search code examples
sqloraclegeometrycoordinatesoracle-spatial

Get XY coordinates from GEOM_SEGMENT_START_PT() output


Oracle 18c:

How can I get the X & Y coordinates from GEOM_SEGMENT_START_PT()'s resulting LRS point?

select
  sdo_lrs.geom_segment_start_pt(sdo_geometry('linestring(1 2, 3 4, 5 6)'))
from
  dual

SDO_LRS.GEOM_SEGMENT_START_PT(SDO_GEOMETRY('LINESTRING(12,34,56)')) 
---------------------------------------------------
SDO_GEOMETRY(2001, NULL, NULL, SDO_ELEM_INFO_ARRAY(1, 1, 1), SDO_ORDINATE_ARRAY(1,2))

Note: The coordinates are stored in the SDO_ORDINATE_ARRAY( ), not the SDO_POINT.

Desired output:

 X  Y
-- --
 1  2

Normally, I'd use something like a.shape.sdo_point.x. But I don't think that applies here since the coordinates aren't stored in the SDO_POINT.

Related: Oracle Spatial Community - Get X & Y coordinates from GEOM_SEGMENT_START_PT()


Solution

  • Use the below SQL for getting X and Y coordinates

        select 
          t.X, 
          t.Y 
        from 
          TABLE(
            SDO_UTIL.GETVERTICES(
              sdo_lrs.geom_segment_start_pt(
                sdo_geometry('linestring(1 2, 3 4, 5 6)')
              )
            )
          ) t;