Veel

Kuidas arvutada ümber POSTGISe lähedal asuva geograafiapunkti geograafiajoone pikkus?

Kuidas arvutada ümber POSTGISe lähedal asuva geograafiapunkti geograafiajoone pikkus?


Mul on geograafia tüüp linestring *route_geography geography (LineString, 4326) *, selle marsruut punktist A punkti B. Nüüd on mul selle joone lähedal punkt C. Ma tahan leida selle joone lähima punkti, nimetagem seda D. Ja arvutage siis kaugus D ja B vahel.

Kas ma peaksin punkti D leidmiseks kasutama * ST_Line_Locate_Point () *?

Ja kui ma leian punkti D, kas ma peaksin siis kasutama * ST_Line_Substring () * AB -liini jagamiseks uue DB -liini jaoks?

Need kaks funktsiooni on mõeldud geomeetria tüübi, mitte geograafia jaoks, milles minu andmed asuvad, nii et mida ma peaksin tegema?


Pikkuse A -st D saamiseks peate lihtsalt korrutama ST_Line_Locate_Pointi tagastusväärtuse marsruudi pikkusega, sest

ST_Line_Locate_Point - tagastab ujuki vahemikus 0 kuni 1, mis tähistab antud punktile LineStringi lähima punkti asukohta 2d rea pikkuse murdosana.

Kasutamiseks D kuni B

(1 - ST_Line_Locate_Point) * pikkus A -B

Jah, teil on vaja kombinatsiooni ST_Line_Interpolate_Point ja ST_Line_Locate_Point, kasutades teie näite termineid ja eeldades, et teil on juba liin A -st B joonejoonesse,

ST_Distance_Sphere (ST_Line_Interpolate_Point (lineAtoB, ST_Line_Locate_Point (lineAtoB, pointC)), punktB)