GISarabia.org
PostGIS › الدليل الرسمي › 7. مرجع PostGIS › 7.9.3. صيغ أخرى
PostGIS 3.6 · Official Manual · ترجمة عربية

ST_AsEncodedPolyline

الصفحة الأصلية بالإنجليزية postgis.net ↗

الاسم

ST_AsEncodedPolyline — تُعيد خطًا متعدد الأجزاء مُرمَّزًا (Encoded Polyline) من شكل هندسي من نوع LineString.

المختصر

text ST_AsEncodedPolyline(geometry geom, integer precision=5);

الوصف

تُعيد الشكل الهندسي بصيغة Encoded Polyline. تستخدم هذه الصيغةَ خرائطُ Google بدقة precision=5، ومحرك Open Source Routing Machine بدقة precision=5 و6.

تحدد precision الاختيارية عدد المنازل العشرية التي ستُحفَظ في Encoded Polyline. ويجب أن تكون القيمة نفسها عند الترميز وفك الترميز، وإلا ستكون الإحداثيات غير صحيحة.

متاحة منذ: 2.2.0

أمثلة

أساسي

SELECT ST_AsEncodedPolyline(GeomFromEWKT('SRID=4326;LINESTRING(-120.2 38.5,-120.95 40.7,-126.453 43.252)'));
  --result--
  |_p~iF~ps|U_ulLnnqC_mqNvxq`@
  

استخدامها مع خط geography وتقسيم geography إلى مقاطع (segmentize)، ثم عرضه على خرائط Google

-- the SQL for Boston to San Francisco, segments every 100 KM
  SELECT ST_AsEncodedPolyline(
    ST_Segmentize(
      ST_GeogFromText('LINESTRING(-71.0519 42.4935,-122.4483 37.64)'),
        100000)::geometry) As encodedFlightPath;

ستبدو شيفرة javascript على نحو مشابه لما يلي، حيث تستبدل متغير $ بنتيجة الاستعلام

<script type="text/javascript" src="http://maps.googleapis.com/maps/api/js?libraries=geometry"
></script>
<script type="text/javascript">
   flightPath = new google.maps.Polyline({
      path:  google.maps.geometry.encoding.decodePath("$encodedFlightPath"),
      map: map,
      strokeColor: '#0000CC',
      strokeOpacity: 1.0,
      strokeWeight: 4
    });
</script>