حساب الصعود / النزول / الميل
يستخدم OsmAnd خوارزميات مختلفة لحساب الميل والصعود بناءً على بيانات الأقمار الصناعية SRTM المضمنة في الخرائط غير المتصلة بالإنترنت وبناءً على مسارات GPX المسجلة.
الهدف الرئيسي من حساب الصعود هو توفير معلومات ذات صلة حول مقدار الطاقة الإضافية التي تُبذل في الصعود، ومن الواضح أن ذلك يعتمد على عوامل متعددة مثل نوع المركبة أو طريقة النقل، والسطح، ووزن الشخص، وغيرها. لذا في النهاية، يجب أن يكون الصعود معلمة تؤخذ في الاعتبار عند التوجيه بناءً على الارتفاع، لإنتاج توجيه فعال من حيث الطاقة.
الهدف الرئيسي من حساب الميل هو توفير مؤشر بصري للطرق شديدة الانحدار التي يجب تجنبها.
الصعود / النزول
هناك العديد من المشكلات في حساب الصعود لأنه لا يوجد معيار، ولأنه يعتمد على طريقة النقل والعديد من المعلمات الأخرى، فمن الصعب توفير تحكم معقول للمستخدم حتى لا يكون معقدًا للغاية. عادةً ما يُقارن الصعود ببرامج أخرى، ولكن لا يوجد برنامج لديه معيار ذهبي.
يستخدم OsmAnd خوارزمية من 3 خطوات:
- تصفية البيانات المشوشة.
- إيجاد النقاط القصوى المحلية (الحد الأدنى والحد الأقصى).
- حساب مجموع الفروق بين الحد الأدنى والحد الأقصى.
تحتوي بعض المسارات على الكثير من البيانات المشوشة التي تحتاج إلى تصفية أولاً. في الوقت الحالي، نطبق التصفية على جميع المسارات، ولكن المسارات المعدة مثل تلك التي تم إنشاؤها بواسطة أداة تخطيط المسار، أو أداة الملاحة، أو بعد تصحيح SRTM، لا ينبغي أن يكون للتصفية أي تأثير.
تصفية ميل 70%
تعتمد التصفية على إيجاد النقاط القصوى التي تكون أعلى أو أقل بكثير من نقطة مجاورة واحدة على اليسار ونقطة مجاورة واحدة على اليمين على الرسم البياني.
تُستبعد هذه النقاط القصوى من الحسابات اللاحقة. العتبة threshold هي ميل 70% - الكود.
مثال 1. (جميع النقاط موزعة بمسافة 10م)، الارتفاع - [5, 3, 10, 3, 5]. 10 هي نقطة قصوى: لأنها 10 > 3 (ميل 70%).
مثال 2. (جميع النقاط موزعة بمسافة 10م)، الارتفاع - [5, 3, 10, 13, 15]. 10 ليست نقطة قصوى: لأن 10 > 3 ولكن 10 < 13، لذا فهي قمة محلية.
تصفية نقاط القفز
تُصفى النقاط التي تمثل تلالًا محلية /\، وهذا يؤدي إلى مشكلة تتمثل في أن أعلى وأدنى نقطة ستُصفى دائمًا، ولكنه يسمح بالتعامل مع المسارات المشوشة حيث لم يكن التسجيل متكررًا، لذا فإن الفحص الأول بالميل الشديد لا يعمل. مرجع إلى الكود.
مثال 1. الارتفاع - [5, 3, 10, 3, 5] -> [5, 5].
مثال 2. الارتفاع - [5, 6, 10, 7, 5] -> [5, 6, 7, 5].
مثال 3. الارتفاع - [5, 2, 3, 4, 5] -> [5, 3, 4, 5].
إيجاد النقاط القصوى
لإيجاد النقاط القصوى، تُستخدم خوارزمية Rames-Dougals-Peucker. ليست هذه الخوارزمية جيدة تمامًا لإيجاد النقاط القصوى بالضبط على الرسم البياني العشوائي، ولكن في حساب الارتفاع، تتجنب الكثير من القمم الصغيرة العشوائية التي يمكن أن تحدث أثناء صعود طويل واحد وبعض الانحدارات القصيرة غير الملحوظة بينهما.
الغرض الرئيسي من الخوارزمية هو إيجاد الحد الأدنى من الخطوط المستقيمة التي يمكن أن تمثل الرسم البياني للارتفاع. العتبة threshold هي 7 أمتار. لذا ستُكتشف جميع القمم التي يزيد ارتفاعها عن 7 أمتار على الأسطح المسطحة ولن تُكتشف إذا كانت أقل.
تُعرض النقاط القصوى على الرسم البياني كنقاط زرقاء مع تمكين إضافة OsmAnd للتطوير.
مثال 1. الارتفاع - [0, 0, 10, 0, 0]. نقطة قصوى هي 10.
مثال 2. الارتفاع - [0, 1, 5, 4, -3, -2, -1, 0]. لا توجد نقاط قصوى - جميعها أقل من 7 أمتار فرق.
حساب الصعود / النزول بين النقاط القصوى
على سبيل المثال، إذا كان لديك مسار بسيط يصعد وينزل، فلديك حد أقصى واحد فقط في مسارك، لذا
فرق الارتفاع البدائي = <ارتفاع البداية> - <ارتفاع النقطة القصوى> :
فرق الارتفاع النهائي = <ارتفاع النقطة القصوى> - <ارتفاع النهاية> : إذا كان إيجابيًا - **صعود**، إذا كان سلبيًا - **نزول**
- إذا كان فرق الارتفاع البدائي > 0
- صعود = فرق الارتفاع البدائي
- نزول = فرق الارتفاع النهائي
- إذا كان فرق الارتفاع النهائي > 0
- صعود = فرق الارتفاع النهائي
- نزول = فرق الارتفاع البدائي
ستُضاف المزيد من الأمثلة.
تصحيح الارتفاع
يعدل تصحيح الارتفاع قيم الارتفاع في مسار GPX باستخدام مصادر ارتفاع خارجية. يتوفر مصادران بيانات ارتفاع:
- استخدام خرائط التضاريس (DEM / SRTM / بيانات الارتفاع ثلاثية الأبعاد)
- يستبدل قيم الارتفاع ببيانات من خرائط التضاريس المحملة (DEM/SRTM أو ملفات GeoTIFF ثلاثية الأبعاد).
- يعمل محليًا على الجهاز إذا تم تثبيت بلاطات الارتفاع.
- تحافظ هذه الطريقة على هندسة المسار الأصلية.
- استخدام الطرق القريبة (الارتباط بالطرق)
- يعدل هندسة المسار لتطابق شبكة الطرق.
- يستخدم بيانات ارتفاع الطرق لتصحيح الارتفاع.
- قد تعدل هذه الطريقة شكل المسار بسبب الالتصاق بالطريق.
البيانات التي قد تتغير بعد تطبيق تصحيح الارتفاع:
- المسافة
- الحجم
- الصعود
- النزول
- السرعة المتوسطة
- السرعة القصوى
- المدة
- الوقت في الحركة
تُحفظ طوابع الوقت GPX (التاريخ/الوقت) عند استخدام كلا مصدري الارتفاع.
الميل
يُحسب الرسم البياني الأخضر بطريقة مختلفة عن الصعود / النزول وقد يكون له اختلافات طفيفة. من الناحية النظرية، في جميع النقاط القصوى، يجب أن يتقاطع الرسم البياني الأخضر مع خط الصفر، على الرغم من أن جميع نقاط الميل الصفري هي نقاط قصوى.
لحساب الميل، تُقسم البيانات بأكملها إلى خطوات متساوية بطول 20 مترًا. لكل نقطة من هذه الشبكة، يُحسب متوسط الارتفاع حول النقطة (نصف قطر 10 أمتار). ثم تُحسب المشتقة المنفصلة باستخدام الفرق المركزي المحدود.