Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Holen Sie sich den Mittelpunkt der SDO.GEOMETRY-Polylinie

Oracle Spatial hat eine lineare Referenzierung Paket namens SDO_LRS . Es kann verwendet werden, um die Mittelpunktkoordinaten einer Polylinie zu finden.

--In this case, 'sdo' is the name of the sdo_geometry column.

sdo_lrs.convert_to_std_geom(sdo_lrs.locate_pt(sdo_lrs.convert_to_lrs_geom(sdo,3)
    ,sdo_geom.sdo_length(sdo,3)/2)).sdo_point.x as midpoint_x,

sdo_lrs.convert_to_std_geom(sdo_lrs.locate_pt(sdo_lrs.convert_to_lrs_geom(sdo,3)
    ,sdo_geom.sdo_length(sdo,3)/2)).sdo_point.y as midpoint_y

Für Bonuspunkte:

So funktioniert SDE.ST_GEOMETRY kann in SDO_GEOMETRY konvertiert werden, um die Mittelpunktkoordinaten zu erhalten:

select
    sdo_lrs.convert_to_std_geom(sdo_lrs.locate_pt(sdo_lrs.convert_to_lrs_geom(sdo,3),sdo_geom.sdo_length(sdo,3)/2)).sdo_point.x as midpoint_x,
    sdo_lrs.convert_to_std_geom(sdo_lrs.locate_pt(sdo_lrs.convert_to_lrs_geom(sdo,3),sdo_geom.sdo_length(sdo,3)/2)).sdo_point.y as midpoint_y
from
    (select
        sdo_util.from_wktgeometry(sde.st_astext(shape)) as sdo
    from
        roads)

Diese Antwort wurde von einer Antwort auf Code Review inspiriert:Berechnen Sie den Mittelpunkt einer Polylinie .