ST_AsEncodedPolyline — Returnerar en kodad polylinje från en LineString-geometri.
text ST_AsEncodedPolyline(geometry geom, integer precision=5);
Returnerar geometrin i Encoded Polyline Algorithm Format. Formatet lagrar latitud- och longituddeltan som heltal efter att koordinaterna har multiplicerats med 10 upphöjt till den begärda precision.
De informella namnen polyline5 och polyline6 avser samma kodning med precision 5 respektive 6. Precisionen måste stämma vid kodning och avkodning; annars skalas koordinaterna felaktigt.
Indatageometrin måste använda SRID 4326, med longitud som X och latitud som Y. Använd ST_Transform för att transformera geometrier i andra koordinatsystem före kodning.
OSRM API returnerar precision 5 för geometries=polyline och precision 6 för geometries=polyline6. Avkoda den resulterande route.geometry med ST_LineFromEncodedPolyline och motsvarande precision.
Tillgänglighet: 2.2.0
Koda samma WGS 84-LineString med precision 5 och 6.
WITH route AS (
SELECT ST_GeomFromEWKT(
'SRID=4326;LINESTRING(-120.2 38.5,-120.95 40.7,-126.453 43.252)'
) AS geom
)
SELECT ST_AsEncodedPolyline(geom, 5) AS polyline5,
ST_AsEncodedPolyline(geom, 6) AS polyline6
FROM route;
polyline5 | polyline6
-----------------------------+----------------------------------
_p~iF~ps|U_ulLnnqC_mqNvxq`@ | _izlhA~rlgdF_{geC~ywl@_kwzCn`{nI
Avkoda en OSRM-route.geometry som returnerats med geometries=polyline6.
SELECT ST_AsEWKT(ST_LineFromEncodedPolyline(
'_izlhA~rlgdF_{geC~ywl@_kwzCn`{nI',
6
)) AS route;
SRID=4326;LINESTRING(-120.2 38.5,-120.95 40.7,-126.453 43.252)
Google Maps JavaScript Geometry-biblioteket avkodar strängar med precision 5. Det här webbläsarexemplet förutsätter att map är en initierad Google-karta.
<script src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&libraries=geometry"
></script>
<script>
const encodedPath = "_p~iF~ps|U_ulLnnqC_mqNvxq`@";
const flightPath = new google.maps.Polyline({
path: google.maps.geometry.encoding.decodePath(encodedPath),
map: map,
strokeColor: "#0000CC",
strokeOpacity: 1.0,
strokeWeight: 4
});
</script>