تقنية

معلم بلا موقع في GeoJSON: هل geometry:null يعني نقطة الصفر؟

ثلاث بطاقات تميز نقطة معلومة من سجل geometry فيه null ومن بطاقة حذفت عضو geometry المطلوب
رسم تحريري لعقد وحساب معلنين؛ لم نشغل مكتبة أو نموذجًا.

معلم GeoJSON بلا موقع يثير سؤالًا عند تجهيز سجلات مكانية للنموذج: هل نحفظ بطاقته أم نستبدل مكانًا غير معلوم بنقطة متخيلة؟ سنراجع ثلاث بطاقات مؤلفة، إحداها تحمل موضعًا معلنًا والثانية قيمة null والثالثة تحذف عضو الهندسة. يبين اختلافها ما ينبغي أن يذكره المساعد بدل جمعها تحت وصف واحد.

الخلاصة السريعة

يتيح RFC7946 أن يكون geometry في Feature غير محدد الموقع بقيمة JSON null. [1] لا نعوضها بنقطة الصفر.

  • عضو geometry مطلوب في Feature؛ يمكن أن تكون قيمته null للمعلم غير محدد الموقع. [1] غياب العضو ليس كتابة قيمة null.
  • بطاقتنا أ تحمل معرفًا ووصفًا ونقطة معلومة، وب تحمل معرفًا ووصفًا مع geometry:null؛ ب ليست نقطة عند طول صفر وعرض صفر.
  • بطاقة ج تحذف عضو geometry؛ لذلك لا تحقق هذا الشرط البنيوي، مع اختلافها عن ب التي تبقي العضو وقيمته null.
  • احفظ السجلات الأصلية وسبب غياب الموقع وقاعدة الأداة المستقبلة؛ سماح الصيغة بهذا التمثيل لا يثبت قبول أداة بعينها أو جاهزية مدخل نموذج.

هل غاب السجل أم غاب وصف مكانه؟

يسمح تعريف Feature بقيمة JSON null لعضو geometry عندما يكون المعلم غير محدد الموقع. [1]

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

نريد الاحتفاظ بالتمييز بين ما نعرفه عن السجل وما نعرفه عن المكان. معرفة المعرف والوصف لا تملأ حقلي طول وعرض؛ كما أن عدم تحديد الموقع لا يمحو تلقائيًا المعلومات الأخرى التي وضعناها في البطاقة.

كيف تختلف النقطة المعروفة عن null؟

البطاقة أ تحمل المعرف أ 1 ووصف «علامة حمراء»، ومعها نقطة نعلن طولها 12 وعرضها 8 درجات. هذه أرقام مؤلفة لتمييز البطاقة المعروفة في المثال، لا إحداثيات علامة شاهدناها.

البطاقة ب تحمل المعرف ب 1 ووصف «علامة خضراء»، لكن قيمة geometry فيها null. لم نضع إحداثيين في هذه البطاقة. لذلك لا يحق للمساعد تحويلها إلى نقطة طولها صفر وعرضها صفر ثم تقديم هذه النقطة بوصفها مكان العلامة.

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

لماذا لا يساوي حذف العضو إبقاءه null؟

يشترط تعريف Feature وجود عضو geometry. [1]

نبدأ بطاقة ج مستقلة بمعرف ج 1 ووصف «علامة زرقاء»، لكننا نحذف عضو geometry منها. لا تحقق هذه البطاقة الشرط المذكور، بينما تبقي ب العضو وتكتب قيمته null. لا يعالج تشابه الوصفين هذا الاختلاف البنيوي.

إذا طلب المساعد تصحيح ج، نرجع إلى مصدر السجل: هل الموقع غير محدد فنريد تسجيل ذلك صراحة، أم توجد هندسة لم تنقل؟ لا نختار جوابًا من حذف العضو وحده. كما لا نكتب النص "null" ثم نسميه قيمة JSON null؛ في بطاقتنا القيمة المعلنة غير نصية.

ما القرار الذي يبقى خارج سماح الصيغة؟

قد تتطلب المهمة المقبلة مواقع محددة لكل حالة. عندئذ نحتاج إلى سياسة واضحة للبطاقة ب، مع حفظها في الأصل وسجل القرار؛ لا يحل السماح البنيوي سؤال ما يقبله مدخل النموذج أو ما نريده في التحليل.

نقترح عرض عد السجلات ومعرفاتها وعد المواقع المحددة مستقلين. وجود بطاقتي أ وب لا يعني أن لدينا نقطتين معلومتين، ولا أن الموقع غير المحدد يساوي موضع أ أو نقطة الأصل.

ونراجع عقد البرنامج الذي سيقرأ الملف بدل إعلان أن كل قارئ يرسم ب أو يقبلها للغرض نفسه. لم ننفذ قراءة ملف أو رسمًا أو اختبار نموذج. يحفظ المثال الفرق بين قيمة تعبر عن عدم تحديد المكان وقرار يختلق مكانًا أو يزيل سجلًا.

المصادر ومتابعة القراءة

  1. RFC7946 Feature geometry (يفتح في نافذة جديدة)rfc-editor.org

أُعدّ هذا المقال بصياغة عربية أصلية بالاستناد إلى المصادر أعلاه، وهو مدخل تمهيدي إلى الموضوع. اقرأ منهجية المحتوى وحدوده.