الأدلة

أضف بيانات الارتفاع إلى ملف مسار GPX

غالبًا ما يحتوي ملف GPX المسجل من هاتف أو جهاز GPS بسيط على قيم ارتفاع مفقودة تمامًا أو غير دقيقة بشكل ملحوظ، لأن قراءات الارتفاع في أجهزة GPS الاستهلاكية عادة أقل موثوقية بكثير من خط العرض وخط الطول اللذين تسجلهما.

استخراج النقاط

حلّل نقاط المسار في ملف GPX، واستخرج خط العرض وخط الطول فقط لكل نقطة، وتخلص من قيم الارتفاع الحالية التي تنوي استبدالها.

<trkpt lat="45.8326" lon="6.8652"><ele>1050</ele></trkpt>

الاستعلام عن الارتفاع الصحيح

أرسل الإحداثيات المستخرجة إلى /v1/elevation، إما عبر المعامل points لملف أصغر أو عبر مصفوفة POST مجمعة لملف أكبر.

POST /v1/elevation
Content-Type: application/json

[{"lat": 45.8326, "lon": 6.8652}, {"lat": 45.8400, "lon": 6.8700}]
{
  "status": "ok",
  "results": [
    {"lat": 45.8326, "lon": 6.8652, "elevation_m": 1035},
    {"lat": 45.8400, "lon": 6.8700, "elevation_m": 1210}
  ]
}

مثال ثانٍ: التحقق من نقطة بداية مسار واحدة

ليس كل استخدام يحتاج إلى معالجة مسار كامل. قبل نشر وصف رحلة مشي، يؤكد استدعاء واحد الارتفاع عند نقطة بداية المسار نفسها.

GET /v1/elevation?lat=45.8326&lon=6.8652

يعيد هذا شكل النتيجة نفسه بعنصر واحد، وهو مفيد للتحقق السريع من رقم ارتفاع البداية أو النهاية المذكور في ملاحظات المسار دون الحاجة إلى المساس بملف GPX الكامل.

كتابة القيم مجددًا

تعود النتائج بترتيب الإحداثيات التي أرسلتها نفسه، لذا اكتب elevation_m في الوسم ele لكل نقطة مسار بمطابقة الموضع، مستبدلًا القيمة المسجلة الأصلية بالقيمة المستعلم عنها.

<trkpt lat="45.8326" lon="6.8652"><ele>1035</ele></trkpt>

خطأ شائع يجب تجنبه

لا تخلط بين صيغة معامل الاستعلام points وجسم POST المجمّع في مهمة واحدة دون الاتساق في طريقة مطابقة النتائج مع نقاط المسار. فالمعامل points ومصفوفة JSON يعيدان النتائج بالترتيب المُعطى، لكن جلب إحداثيات نقطة واحدة عبر معامل استعلام والباقي عبر POST مجمّع، ثم دمج مجموعتي الاستجابة بالافتراض بدلًا من المطابقة الصريحة للإحداثيات، طريقة سهلة لإدخال خطأ إزاحة بمقدار واحد في الملف المكتوب.

تحديد عدد النقاط المراد إثراؤها

قد يحتوي ملف GPX على آلاف نقاط المسار المسجلة على فترات قصيرة. وإثراء كل نقطة منها يعني طلبًا لكل نقطة، وهذا يتراكم في مسار طويل مسجل. وتقليل العينات إلى فترة أكبر قبل الاستعلام عن الارتفاع، ثم الاستيفاء بين القيم المستعلم عنها للنقاط الواقعة بينها، طريقة معقولة لخفض عدد الطلبات مع الحصول على مقطع جانبي يبدو دقيقًا.

حالة حدّية: النقاط الساحلية والمنخفضة

المسار الذي ينخفض على طول ساحل أو عبر دلتا منخفضة قد يعيد بشكل مشروع قيمة elevation_m عند الصفر أو قريبة منه، أو أحيانًا رقمًا سالبًا صغيرًا لأرض تقع تحت مستوى سطح البحر. ولا يُعد أي منهما خطأ. تعامل مع القيمة القريبة من الصفر كقراءة حقيقية معقولة لتلك التضاريس بدلًا من استبعادها كنقطة بيانات سيئة.

كم يكلف

كل نقطة مُثراة تساوي طلبًا واحدًا. ومسار مشي متواضع ببضع مئات من النقاط، مأخوذة كعينات من تسجيل خام أكبر بكثير، يبقى ضمن 2,500 طلب مجاني يوميًا المضمنة مع كل مفتاح بفارق كبير.

تنظيف بيانات الارتفاع بهذه الطريقة يحوّل مسارًا مهتزًا مسجلًا بالهاتف إلى شيء يستحق المشاركة أو التحليل. يصف توثيق الاستعلام عن الارتفاع كلًا من المعامل points وصيغة الطلب المجمّع.