الفرق بين Geod.inv وGeod.fwd هو السؤال الذي تملكه قبل الحساب. إذا عرفت نقطة البداية والنهاية، يختلف طلبك عن معرفة نقطة البداية واتجاه الحركة ومسافتها. نرسم هذين المسارين لإعداد ميزات مكانية واضحة، دون اختراع نتيجة حساب أو خلط المسافة بإحداثي.
الخلاصة السريعة
نبدأ بنقطتين مع inv؛ أما fwd فيبدأ بنقطة وسمت ومسافة ليحدد نقطة النهاية، وفق نموذج الأرض الذي نختاره. [1]
- في inv، المدخلات طول البداية وعرضها ثم طول النهاية وعرضها؛ المخرجات سمت أمامي، وسمت رجوع افتراضيًا، ومسافة بالمتر. [1]
- في fwd، نرسل طول البداية وعرضها والسمت الأمامي والمسافة بالمتر؛ يعاد طول النهاية وعرضها وسمت الرجوع افتراضيًا. [1]
- نعلن نموذج الأرض والزوايا بالدرجات؛ طلبنا المباشر من أ له سمت 60 درجة ومسافة 2000 متر. خيار return_back_azimuth=True يعطي سمت الرجوع افتراضيًا، وFalse يعطي سمتًا أماميًا في موضع خرج السمت المعني. [1]
- نحفظ اسم الإجراء ومدخلاته وإعداداته؛ نراجع اكتمال نقطتين لطلب inv، واكتمال نقطة وسمت ومسافة لطلب fwd. لم نشغل pyproj أو نحسب نهاية فعلية.
ما البيانات التي يملكها كل سؤال؟
يوثق pyproj أن inv يحل المسألة العكسية بين بدايات ونهايات، وأن fwd يحل المسألة المباشرة من بداية وسمت ومسافة. [1]
نفترض مهمة إعداد جدول لسمات حركة مؤلفة. في الطلب الأول نملك موقع أ وموقع ب. نريد وصف الاتجاه والمسافة بينهما ضمن نموذج محدد، ولا نحتاج اختراع اتجاه قبل الحساب.
في الطلب الثاني نملك أ، ونعلن سمتًا أماميًا 60 درجة ومسافة 2000 متر. نبحث عن النهاية التي تخص هذين المدخلين. لا نملك ب مسبقًا في هذا الطلب.
ماذا تعني عناصر الخرج؟
توثق inv المسافة في العنصر الثالث، وتوثق fwd طول النهاية وعرضها قبل السمت. [1] لذلك لا نأخذ ثالث قيمة من الدالتين ونضعها في عمود «المسافة» لمجرد تشابه طول الخرج.
نجعل ترتيب المدخلات والمخرجات جزءًا من تعريف الجدول. إذا كان صف inv ينتج اتجاهين ومسافة، لا نسمي الاتجاه الثاني خط عرض؛ وإذا كان صف fwd ينتج إحداثيين وسمتًا، لا نسمي السمت طول الرحلة.
هذا اختلاف في أدوار القيم، لا حكم على أي الدالتين أدق. اختيار الدالة يبدأ من المعلومات المتاحة والسؤال المطلوب.
| الإجراء | ما نعرفه أولًا | ما نطلبه |
|---|---|---|
| inv | طول وعرض أ؛ طول وعرض ب | سمتان ومسافة |
| fwd | طول وعرض أ؛ سمت؛ مسافة | طول وعرض النهاية؛ سمت |
ما الإعدادات التي تحفظ المعنى؟
في المثال نعلن الزوايا بالدرجات، ونحتفظ بمسافة 2000 متر. لو حفظنا العدد 2 وحده دون وحدة، لا نعرف من السجل هل يعني مترين أم كيلومترين أو شيئًا آخر.
نفترض نموذج أرض محددًا ونحفظ تعريفه مع الطلب. لا نجعل نقطة ومدخلات اتجاه كافية لتفسير خرج من نموذج مجهول، ولا نقارن نتيجتين دون معرفة الإعدادات التي ولدتهما.
يوثق return_back_azimuth=True السمت الراجع افتراضيًا؛ مع False يعاد سمت أمامي في موضع خرج السمت المعني. [1] لا نخلط هذا الاختيار بخيار وحدة الزاوية.
كيف نراجع سجل الطلب قبل استعماله؟
نقترح خانة لاسم الإجراء، وخانة للمدخلات ذات الأسماء والوحدات، وخانة لتعريف نموذج الأرض وخيارات الخرج. عند التنفيذ الفعلي، تحفظ المخرجات بالأسماء نفسها التي يحددها العقد.
في طلب أ إلى ب، نستطيع مراجعة اكتمال نقطتين قبل الحساب. وفي طلب الحركة من أ، نراجع اكتمال السمت والمسافة. لا نعوض معلومة غائبة بمجرد تبديل اسم inv إلى fwd.
لم نحسب موقع النهاية أو المسافة بين مدينتين، ولم نشغل pyproj أو نموذجًا. الجدول يحدد ما ينبغي تفسيره عند الحصول على خرج فعلي، حتى لا تبنى ميزة مكانية من عمود ذي دور مختلف.
المصادر ومتابعة القراءة
- pyproj: Geod (يفتح في نافذة جديدة)pyproj4.github.io
أُعدّ هذا المقال بصياغة عربية أصلية بالاستناد إلى المصادر أعلاه، وهو مدخل تمهيدي إلى الموضوع. اقرأ منهجية المحتوى وحدوده.
