Oracle
 sql >> Database >  >> RDS >> Oracle

Ottieni il punto medio della polilinea SDO.GEOMETRY

Oracle Spatial ha un riferimento lineare pacchetto chiamato SDO_LRS . Può essere utilizzato per trovare le coordinate del punto medio di una polilinea.

--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

Per i punti bonus:

Ecco come ESRI SDE.ST_GEOMETRY può essere convertito in SDO_GEOMETRY allo scopo di ottenere le coordinate del punto medio:

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)

Questa risposta è stata ispirata da una risposta su Code Review:Calcola il punto medio di una polilinea .