حفظ الطوبولوجيا لا يعني الاحتفاظ بكل رأس في التمثيل الهندسي. عندما يختصر المساعد خطا أو مضلعا لتجهيز بيانات مكانية، نحتاج معرفة التسامح وخيار الحفظ، ثم فحص ما بقي من الشكل. لا تكفي عبارة حافظنا على الطوبولوجيا للقول إن كل الإحداثيات والتفاصيل بقيت كما كانت.
الخلاصة السريعة
يوثق simplify تمثيلا مبسطا بتسامح محدد؛ preserve_topology يتجنب إنشاء أشكال غير صالحة. [1] لا يجعل التبسيط نسخة متطابقة الرؤوس.
- في Shapely، tolerance حد إزاحة مسموح، وpreserve_topology=True هو الافتراضي الذي يتجنب الانهيارات وتقاطع الحلقات المؤدي إلى عدم الصلاحية. [1]
- نؤلف خطا بنقاط: أ عند س=0 وص=0، وب عند س=4 وص=0.2، وج عند س=8 وص=0؛ نقترح مقارنته بالمقطع المباشر أ إلى ج.
- يبعد ب عن المقطع الأفقي 0.2 وحدة؛ هذا يتجاوز تسامح 0.1 ويقع داخل 0.3 في المقارنة اليدوية، دون ادعاء ناتج تشغيل simplify.
- لا تتحول موافقة حد المثال إلى ضمان لكل مضلع أو لكل تفصيل مطلوب؛ احفظ الأصل والمرجع والتسامح وخيار الحفظ وافحص الناتج الفعلي قبل استعماله.
ما الذي تصفه الخيارات؟
توثق Shapely أن tolerance حد الإزاحة المسموحة، وأن preserve_topology=True يتجنب إنشاء أشكال غير صالحة، مع فحص الانهيار وتقاطع الحلقات. [1]
نقرأ ذلك وصفا لخيار في عملية تبسيط، لا وعدا بحفظ قائمة الرؤوس كما هي. لو لم يتغير التمثيل قط، لما كان وجود تمثيل أبسط سؤالا مفيدا. نحتاج فصل خاصية هندسية تحاول العملية حفظها من عدد النقاط الذي قد ينخفض.
نقصر المقال على قراءة الخيارات ومقارنة أصل بمقترح معلوم. لا نؤلف سجل تنفيذ أو نعلن أن إصدار مكتبة مجهولا سيعطي الشكل الذي سنرسمه.
أي أصل وأي مقترح نراجع؟
نضع خطا من ثلاث نقاط في مستوى ووحدة طول معلنين. أ عند س=0 وص=0، وب عند س=4 وص=0.2، وج عند س=8 وص=0. يرتبط أ بب ثم ب بج. الشكل الأصلي ينحرف قليلا فوق الخط الأفقي بين طرفيه.
نقترح تمثيلا أبسط يصل أ بج مباشرة، دون رأس ب. هذا مقترح اخترناه للمقارنة، وليس نتيجة استخرجناها من Shapely. كلا الطرفين معروفان في الورقة، ولا نملأ موضعا مفقودا أو نرسم مسارا اكتشفناه في صورة.
بقاء أ وج لا يعني بقاء ب في القائمة. يمكن أن يسجل المساعد وجود الطرفين مع غياب الرأس الأوسط، بدل وصف المقترح بأنه لم يغير أي نقطة.
كيف نفهم حدين مختلفين؟
المقطع أ إلى ج أفقي عند ص=0، وإحداثي ب الأفقي 4 يقع بين 0 و 8. لذلك أقصر بعد للنقطة ب عن هذا المقطع هو 0.2 وحدة. نراجع بهذا الحساب انحراف الرأس الأوسط في مقترحنا المحدد.
عند حد 0.1 يتجاوز الانحراف الحد، لأن 0.2 أكبر من 0.1. وعند 0.3 يقع الانحراف داخل الحد. تغيير العدد يغير قبول هذا الانحراف في الورقة، لكنه لا يخبرنا أي عدد يناسب مهمة فعلية.
لا نصف هذه المقارنة بأنها فحص شامل لكل خصائص الشكل أو ناتج دالة. قد تحتاج المهمة حفظ انعطاف صغير تحديدا؛ وجود حد أوسع لا يحول حذف هذا التفصيل إلى قرار مناسب تلقائيا.
ماذا نراجع بعد التبسيط؟
احفظ الأصل والناتج الفعلي، إن توفر، والمرجع والوحدة والتسامح وخيار الحفظ. ثم راجع الخصائص التي تحتاجها المهمة: هل استهدفت تقليل الرؤوس؟ وهل بقيت الانعطافات المطلوبة؟ لا تجيب عبارة شكل صالح عن كل ذلك.
ولا ننقل مقارنة خط بسيط إلى مضلع له حلقات أو ثقوب دون فحص حالته. خيار الحفظ لا يعني تطابق المساحة أو جميع الإحداثيات، ولا نعطي رقم 0.3 وحدة متر من دون تعريف المرجع.
لم نشغل simplify أو نقس زمنا أو ندرب نموذجا. يذكر الملخص حد الانحراف والرأس المحذوف في المقترح المعلن، ويبقي الحكم على الناتج والمهمة مرتبطا بمادتهما الفعلية.
المصادر ومتابعة القراءة
- Shapely2.1.2 simplify (يفتح في نافذة جديدة)shapely.readthedocs.io
أُعدّ هذا المقال بصياغة عربية أصلية بالاستناد إلى المصادر أعلاه، وهو مدخل تمهيدي إلى الموضوع. اقرأ منهجية المحتوى وحدوده.
