أكثر

كيفية إنشاء خطوط غير مكررة بين جميع النقاط المحددة في Spatialite؟

كيفية إنشاء خطوط غير مكررة بين جميع النقاط المحددة في Spatialite؟


هناك إجابة لطيفة عن السؤال المشابه لـ PostGIS.

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

باستخدام النقاط 1 AS (حدد الهندسة من نقاط_التحقق) ، النقاط 2 AS (حدد الهندسة من نقاط_الاختبار) أدخل cp_path (الهندسة) حدد * من (حدد DISTINCT MakeLine (Points1.geometry ، Points2.geometry) من النقاط 1 ، Points2 حيث توجد نقطة هندسة! = النقاط 2. الهندسة)

كيف يمكنني تجنب الأشكال الهندسية المكررة؟


هذا يذكرنا بالمسابقة القديمة: 5 أشخاص سوف يتصافحون مع بعضهم البعض. كم عدد المصافحة سيكون هناك في المجموع؟ هل هي 20 لأن الجميع يجب أن يتصافحوا مع 4 أشخاص آخرين؟ لا ، لأنه إذا صافح مايك جون ، فلن يحتاج جون إلى مصافحة مايك لوقت آخر.

لنفترض أن لديك 5 نقاط. النقطة رقم 1 لا تصافح نفسها ، ولكن فقط بالنقاط 2 و 3 و 4 و 5. عندما تكون النقطة رقم 2 بدورها ، فإنها تترك الرقم 1 وتصافح نفسها فقط مع 3 و 4 و 5.

باستخدام بياناتك ، يصبح استعلام المصافحة كما يلي:

مع نقاط 1 AS (حدد rowid ، هندسة من نقاط check_points) ، نقاط 2 AS (حدد rowid ، هندسة من نقاط check_points) أدخل cp_path (هندسة) حدد * من (حدد MakeLine (Points1.geometry ، Points2.geometry) من النقاط 1 ، النقاط 2 حيث النقاط 1. رويد<>

التقييم المكاني للخدمات الجمالية في منطقة جبلية معقدة: الجمع بين خصائص المناظر الطبيعية مع المعلومات الجغرافية التعهيد

تتفاعل الأنظمة البشرية والطبيعية على نطاقات متعددة خاصة بالسياق فيما يتعلق بإمداد خدمات النظام الإيكولوجي. يتم التعرف على جمال المناظر الطبيعية كخدمة بيئية ثقافية يتم إدراك قيمتها الجمالية على مستوى المناظر الطبيعية الشاملة.

أهداف

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

أساليب

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

نتائج

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

الاستنتاجات

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


كيف تساعد نظم المعلومات المنظمات على الازدهار؟

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

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

أساسيات نظم المعلومات

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

من الأمثلة الرائعة على نظام معلومات الأعمال الذي يتم تطبيقه بشكل شائع إدارة العلاقات مع العملاء. تم تصميم أنظمة إدارة علاقات العملاء (CRM) لتجميع وتتبع أنشطة المستهلك مثل كيفية تفاعلهم لأول مرة مع العلامة التجارية واتجاهات الشراء العامة واستفسارات العملاء وغير ذلك الكثير.

سيجمع CRM القوي هذه البيانات ثم يقدم إمكانات سهلة للشركات والمؤسسات لتحليل تلك البيانات واتخاذ قرارات تسويقية وعملية رئيسية من تلك البيانات. على سبيل المثال ، إذا أظهر CRM استجابة قوية بشكل خاص لإعلان معين على YouTube ، فمن المحتمل أن يركز قسم الإعلان والتسويق على ما يجعل مثل هذا الفيديو ناجحًا ويكرر المحاولة على نطاق أوسع.

الطرق الرئيسية لمساعدة المنظمات في نظم المعلومات

  1. تواصل سلس. يتمثل أحد المكونات الرئيسية للقيادة التنظيمية والإدارة في جمع المعلومات وتوزيعها بحيث يكون لكل منصب الأشياء التي يحتاجها للنجاح في دور الشركة. تساعد أنظمة المعلومات في نشر المعلومات من خلال السماح للمديرين وقادة المنظمات الآخرين بتخزين البيانات في مجلدات ووثائق يمكن مشاركتها بسلاسة مع الموظفين المناسبين. تسمح معظم أنظمة المعلومات أيضًا للمستخدمين بالتواصل عن بُعد بحيث بغض النظر عن مكان وجود الموظف ، يمكنهم تلقي المعلومات والرد وفقًا لذلك.
  2. إدارة عمليات أكثر كفاءة. تمكّن أنظمة المعلومات المؤسسات من جمع المعلومات الحديثة والوصول إليها بالإضافة إلى الاحتفاظ بمجموعة شاملة من جميع بيانات المنظمة. مجتمعة ، يتيح هذا للشركات العمل بكفاءة أكبر لأن أشياء مثل بيانات المبيعات في الوقت الفعلي تقدم رؤى حول مشتريات العملاء الفورية للإبلاغ عن ممارسات التخزين أو الإنتاج الأفضل.
  3. حفظ أفضل للسجلات. بغض النظر عن الصناعة التي تعمل بها المنظمة ، فإن حفظ السجلات بكفاءة أمر ضروري. هناك لوائح صناعية يجب الالتزام بها وإثبات مسجل تم الالتزام بهذه اللوائح. ثم هناك قائمة طويلة من السجلات المالية المختلفة التي تشكل أحد مكونات كل عمل تجاري. تجعل أنظمة المعلومات حفظ السجلات أسهل وأسرع وأكثر دقة من خلال الميزات التي تتيح تخزين المستندات وتاريخ المراجعة وسجلات الاتصالات والجوانب الأخرى للبيانات التشغيلية. هذا النوع من حفظ السجلات ليس مفيدًا فقط لضمان بقاء المؤسسة ضمن الخطوط التنظيمية والمالية الضرورية ، ولكنه يساعد أيضًا قادة الأعمال في إعداد تقديرات التكلفة ووضع توقعات أفضل لفهم كيفية تأثير بعض الإجراءات السابقة على العمليات.
  4. اتخاذ قرارات أكثر استنارة. هذه النقطة تستحق التكرار حيث يتم استخدام أنظمة المعلومات بشكل متكرر لإبلاغ عمليات صنع القرار التي يمكن أن تؤدي إلى إنشاء منظمة أو كسرها. يحتاج قادة المؤسسات والأعمال إلى المعلومات الأكثر دقة وحداثة إذا أرادوا اتخاذ أفضل القرارات لمستقبل مجموعتهم. لا تقدم أنظمة المعلومات الاتجاهات السابقة فحسب ، ولكنها توفر معلومات تجارية في الوقت الفعلي ويمكن ضبطها للتنبؤ بالإمكانيات المستقبلية. يحتاج قادة الأعمال إلى كل ما سبق من أجل اتخاذ القرارات الصحيحة التي ستمكن مؤسستهم من الازدهار.

Go Graduate: إمكانيات الماجستير في نظم المعلومات

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

هل أنت مهتم بنظم معلومات تكنولوجيا المعلومات؟ هل أنت مستعد للارتقاء بحياتك المهنية إلى المستوى التالي؟ إذا كان الأمر كذلك ، فقد يكون ماجستير العلوم في نظم المعلومات مناسبًا لك. تقدم جامعة ECPI هذا البرنامج بوتيرة متسارعة. بمعنى أنه يمكنك التخرج في أقل من 15 شهرًا. لمزيد من المعلومات حول هذه الدرجة المثيرة ، تواصل مع مستشار القبول الودود اليوم.

يمكن أن يكون أفضل قرار اتخذته على الإطلاق!


قواعد الطوبولوجيا¶

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

باستثناء بعض تنسيقات بيانات GIS الخاصة ، لا يتم عادةً فرض الهيكل افتراضيًا. تعرف العديد من نظم المعلومات الجغرافية المشتركة ، مثل QGIS ، الهيكل كقواعد للعلاقة والسماح للمستخدم باختيار القواعد ، إن وجدت ، ليتم تنفيذها في طبقة متجه.

تعرض القائمة التالية بعض الأمثلة حيث يمكن تعريف قواعد الهيكل لمعالم العالم الحقيقي في خريطة متجه:

  • يجب ألا تتداخل حواف منطقة خريطة البلدية.
  • يجب ألا تحتوي حواف منطقة خريطة البلدية على فجوات (شظايا).
  • يجب إغلاق المضلعات التي تعرض حدود الملكية. غير مسموح برمي الجذور أو التجاوزات في الخطوط الحدودية.
  • يجب ألا تتقاطع خطوط الكنتور في طبقة خط متجه (تتقاطع مع بعضها البعض).

Для чего вам нужно выбирать канонический URL

ыбрать каноническую страницу из исла одинаковых или похожих стоит по нескольким причинам:

  • Чтобы указать، какой URL следует показывать в результатах поиска. Предположим، вы хотите، чтобы посетители переходили на страницу с описанием платьев зеленого цвета по адресу https://www.example.com/dresses/green/greendress.html، а не https://example.com/dresses/cocktail؟gclid = ABCD.
  • ля консолидации переходов на одинаковые или повторяющиеся страницы. اقرأ المزيد ак ، ссылки с других сайтов на страницу http://example.com/dresses/cocktail؟gclid=ABCD будут объединены сосылками: на страниут.
  • тобы упростить получение статистики отдельным товарам или темам. сли контент размещен на нескольких страницах с разными URL، зто затрудняет получение обобщеннойстпие обобщенойстпие обобщенойстпие обобщеннойстпиетата
  • Для управления скопированным контентом. сли вы размещаете контент в других доменах، нужно، тобы в результатах поиска появлялся основной URL.
  • Чтобы оптимизировать сканирование сайта. У робота برنامج Googlebot должна быть возможность обрабатывать новый и обновленный контент، не тратя время на множество вариантов страниц، например предназначенных для разных типов устройств. противном случае ваш сайт не будет сканироваться ективно.

كيفية إنشاء خطوط غير مكررة بين جميع النقاط المحددة في Spatialite؟ - نظم المعلومات الجغرافية

في جوهرنا ، Spatial Networks هي شركة جغرافية. من بناء منتجات التكنولوجيا الجغرافية المكانية إلى جمع البيانات الجغرافية وتنظيمها وتحليلها ، فنحن نأكل ونشرب ونتنفس الجغرافيا. من المثير للقلق معرفة أنه بالنسبة للعديد من عملائنا ، غالبًا ما توفر Fulcrum تعرضهم الأول لعالم نظم المعلومات الجغرافية الرائع (GIS).

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

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

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

فهم الموقع

في عالم نظم المعلومات الجغرافية ، يتم تمثيل الموقع بواسطة الهندسة، المكون المكاني للخصائص الجغرافية. لأغراض عملية ، تتكون هندسة المتجهات عادةً من نقاط أو خطوط أو مضلعات ، محددة بواحد أو أكثر مترابطة الرؤوس. الرأس هو ببساطة موضع في الفضاء محدد بمحور X ، Y (اختياري Z). يدعم Fulcrum حاليًا هندسة النقاط ، المحددة بواسطة زوج واحد من إحداثيات X و Y - خطوط الطول وخط العرض بتنسيق درجة عشرية.

إذا كان لديك جدول بيانات بالعناوين التي تريد استيرادها إلى Fulcrum ، فيمكنك استخدام برنامج GIS أو خدمة تستند إلى الويب من أجل تكويد جغرافي العناوين ، التي ستحسب الإحداثيات ، تستند بشكل عام إلى شبكات الشوارع أو آثار أقدام المباني.

العمل مع تنسيقات البيانات الجغرافية المكانية

يمكن أن تأتي البيانات الجغرافية المكانية في مجموعة متنوعة من التنسيقات ، بعضها مفتوح وقابل للقراءة ومألوف (CSV ، GeoJSON) ولكن الكثير منها ليس (ملف شكل ، قاعدة بيانات جغرافية ، تغطية). يدعم Fulcrum استيراد البيانات بتنسيق CSV و شكل صيغة. إذا كان لديك تطبيق بسيط بدون أي حقول قابلة للتكرار ، فيمكنك ببساطة تحميل ملف CSV واحد مع أعمدة خطوط الطول والعرض وسيتم تعيين بياناتك.تتكون ملفات الأشكال في الواقع من عدة ملفات تحمل جميعها نفس الاسم وامتدادات مختلفة. يجب ضغط كل هذه الملفات قبل أن يتم استيرادها إلى Fulcrum. إذا كان لديك تطبيق Fulcrum معقد مع مستويات متداخلة من العناصر القابلة للتكرار ، فستحتاج إلى التأكد من أن ملفات الاستيراد تحتوي على حقول مرتبطة يمكن ربطها أثناء الاستيراد.

إذا لم تكن بياناتك بتنسيق CSV أو ملف شكل أو كنت بحاجة إلى تحويل الإحداثيات من نظام مرجعي إحداثي آخر ، فإنني أوصي بشدة بمكتبة مترجم GDAL مفتوحة المصدر. يمكن استخدام الأداة المساعدة ogr2ogr التي تعد جزءًا من GDAL لتحويل التنسيقات وتحويل / إعادة إخراج الإحداثيات. يدعم Ogr2ogr مجموعة متنوعة من تنسيقات بيانات المتجه وسوف يكتب إلى كل من ملف CSV و shapefile.

SQLite + GeoPackage

سواء كنت تقوم بإعداد البيانات الحالية للاستيراد ، أو إجراء فحوصات مراقبة الجودة طوال عملية التجميع ، أو تحليل النتائج النهائية ، فستحتاج إلى أدوات للعمل مع بياناتك. بينما تعمل برامج جداول البيانات مثل Excel غالبًا بشكل جيد مع مجموعات البيانات الجدولية البسيطة ، فمن المحتمل أنك تريد شيئًا أكثر قوة بمجرد أن تبدأ العمل مع مجموعات البيانات العلائقية والجغرافية المكانية. لكن لا تخف - على الرغم من الكثير من الأمثلة على عكس ذلك ، لا يجب أن تكون الأدوات القوية معقدة ومكلفة دائمًا!

منذ فترة وجيزة ، قدمت قضية إدارة عمليات تصدير البيانات باستخدام SQLite. بعد بضع سنوات ، أصبحت SQLite أكثر انتشارًا في صناعة الجغرافيا المكانية. إنه شائع لأنه بسيط ومفتوح ومتعدد الأنظمة الأساسية وقوي بشكل لا يصدق. كانت تنسيقات GIS المستندة إلى SQLite موجودة منذ فترة ، في شكل MBTiles و SpatiaLite ، لكن إضفاء الطابع الرسمي الأخير على معيار GeoPackage واعتماده عبر منصات GIS الرئيسية قد عزز SQLite باعتبارها تقنية الانتقال إلى تبادل البيانات عبر سطح المكتب و منصات المحمول.

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

أدوات للعمل مع سكليتي

إن أداة go-to الخاصة بي للعمل مع قواعد بيانات SQLite هي متصفح DB الممتاز لـ SQLite. توفر هذه الأداة المساعدة المتاحة مجانًا والمفتوحة المصدر وعبر الأنظمة الأساسية واجهة مستخدم رسومية نظيفة لإنشاء ملفات قاعدة بيانات SQLite وعرضها وتحريرها والاستعلام عنها. هذه أداة مساعدة لقواعد البيانات بشكل صارم وعلى الرغم من أنها يمكن أن تدعم الاستعلام المكاني ، إلا أنه لا توجد وظيفة تعيين باستخدام هذه الأداة. إذا كنت بحاجة إلى عرض بياناتك على الخريطة ، فإنني أوصي باستخدام QGIS ، ومع ذلك ، يمكنك إجراء الكثير من التحليل المكاني دون الحاجة إلى عرض الخريطة.

من أجل دعم جميع الوظائف المكانية لقواعد بيانات GeoPackage أو SpatiaLite ، نحتاج إلى "تمكين" مستعرض DB مكانيًا عن طريق تحميل امتداد SpatiaLite. لقد جعلنا هذه الخطوة سهلة من خلال توفير مجموعة كاملة من ثنائيات SpatiaLite لنظام التشغيل macOS و Linux و Windows ، والتي تتوفر للتنزيل في GitHub repo.

لحسن الحظ ، يسهل DB Browser for SQLite تحميل الامتدادات الدائمة. بمجرد تنزيل الملف الثنائي لنظام التشغيل الخاص بك ، من داخل شريط أدوات قائمة متصفح DB ، انتقل إلى "DB Browser for SQLite - & gt Preferences" وانقر على علامة التبويب "الإضافات". انقر فوق زر قطعة اللغز مع Green plus واستعرض الملف الذي قمت بتنزيله للتو. مستخدمو Windows ، انظر هنا للحصول على ملاحظات إضافية حول إعداد هذا.

يمكنك التأكد من تثبيت ملحق SpatiaLite بشكل صحيح عن طريق تنفيذ أمر SQL التالي لإرجاع إصدار SpatiaLite:

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

إنشاء حزمة جغرافية ببيانات مرجعية

في هذا التمرين ، سنحقق في البيانات التي تم جمعها من تطبيق "GeoBeers" Fulcrum الداخلي الخاص بنا. GeoBeers هو تطبيق بسيط لتسجيل الدخول والمشاركة في الأماكن التي استمتعنا فيها بالمشروبات المفضلة لدينا. يتكامل هذا التطبيق أيضًا مع نظام التواصل Slack الخاص بنا لنشر الصور مباشرةً على قناة للمشاركة الفورية ، لذا فهي طريقة ممتعة لاستخدام Fulcrum! بينما يتم وضع علامات جغرافية على هذه السجلات باستخدام إحداثيات خطوط الطول والعرض ، فإننا لا نخزن أي عنوان أو معلومات إضافية عن الموقع ، ولكني مهتم بمعرفة كيفية توزيع هذه السجلات عبر الولايات. ما هي الولاية التي لديها أكبر عدد من السجلات؟ ما هو نوع البيرة الأكثر تمثيلاً في كل ولاية؟ يمكنك أن ترى إلى أين نحن ذاهبون مع هذا ، لكننا نحتاج أولاً إلى بعض البيانات المرجعية لتحديد حدود الدولة.

في حين أن GeoPackage هو تنسيق جديد نسبيًا ، إلا أن معظم البيانات القابلة للتنزيل متاحة بتنسيق ملف الشكل. سأقوم بتنزيل أحدث ملف شكل لحدود الولاية من مكتب الإحصاء الأمريكي المتاح هنا.

  • قم بفك ضغط الملف الذي تم تنزيله وسترى العديد من الملفات المسماة tl_2017_us_state ، وكلها ذات امتدادات مختلفة (المزيد حول ذلك هنا).
  • قم بإنشاء قاعدة بيانات GeoPackage باستخدام ogr2ogr لاستيراد ملف شكل الحالات كجدول جديد: ogr2ogr -f GPKG -nln States -t_srs EPSG: 4326 working.gpkg tl_2017_us_state.shp
  • يحدد الخيار -f GPKG تنسيق الإخراج على أنه GeoPackage.
  • يعيّن خيار الحالات -nln اسم الجدول إلى الحالات (الافتراضي هو اسم ملف الأشكال).
  • يتم تعيين الخيار -t_srs EPSG: 4326 على نظام الإسناد المكاني إلى النظام الجيوديسي العالمي 1984 (النظام العالمي لإحداثيات خطوط الطول والعرض التي يستخدمها نظام تحديد المواقع العالمي). سيؤدي هذا إلى "إعادة إسقاط" الإحداثيات من EPSG: 4269 إلى EPSG: 4326.
  • والنتيجة هي اسم ملف قاعدة بيانات GeoPackage work.gpkg مع جدول باسم الدول يحمل مضلعات حدود الولاية.
  • قم بتنزيل بيانات Fulcrum بتنسيق CSV وفك ضغط الملف الذي تم تنزيله. إذا فتحت الملف في برنامج جدول بيانات ، فسترى أعمدة _latitude & amp _longitude التي تحتوي على إحداثيات النقطة.
  • قم باستيراد هذه البيانات إلى قاعدة بيانات GeoPackage التي أنشأناها للتو باستخدام الأمر التالي ogr2ogr: ogr2ogr -f GPKG -update -nln geobeers -a_srs EPSG: 4326 -oo X_POSSIBLE_NAMES = _longitude -oo Y_POSSIBLE_NAMES = _latitude working.gpkg geobeers.
  • يمنع الخيار -update إنشاء ملف GeoPackage جديد.
  • يقوم الخيار -a_srs EPSG: 4326 بتعيين نظام الإسناد المكاني إلى WGS 84. بالنسبة إلى CSV ، يتعين علينا تعيين SRS نظرًا لأنه على عكس ملفات الأشكال ، لم يتم تعريفه في أي مكان في الملف.
  • تحدد خيارات -oo X_POSSIBLE_NAMES & amp -oo Y_POSSIBLE_NAMES مباشرةً الأسماء المحتملة للأعمدة التي يمكن أن تحتوي على X / خط الطول و Y / خط العرض.

تحليل مكاني بسيط

لدينا الآن قاعدة بيانات GeoPackage مع بيانات نقطة Fulcrum GeoBeers وبيانات مرجع حدود الدولة كجداول ، جاهزة لبعض التحليل المكاني!

لنبدأ ببعض لغة SQL القياسية للحصول على فهم أفضل لبياناتنا. إذا كنت جديدًا على SQL أو SQLite ، فقد ترغب في مراجعة هذا المستند المفيد: SQL As Understood By SQLite.

كم عدد سجلات GeoBeers التي لدينا؟

ما هي أشهر أنواع البيرة؟

ما هو متوسط ​​التقييم مجمعة حسب نوع البيرة؟

من يشرب الصباح؟ تحذير: نستخدم هذا التطبيق لأغراض الاختبار والعروض التوضيحية :)

الآن بعد أن أصبح لدينا فهم أفضل لبياناتنا ، دعنا نحاول دمج جدول الدول لدينا لبدء كتابة بعض الاستفسارات المكانية. لاحظ أن ملفات قاعدة بيانات GeoPackage التي تم إنشاؤها بواسطة org2ogr (و Fulcrum) هي حزم GeoPackage أولية ، مع تخزين الهندسة في تنسيق ثنائي مختلف قليلاً عن SpatiaLite ، ولكن بدءًا من الإصدار 4.2.0 ، يدعم SpatiaLite العمل مع تنسيق GeoPackage.

قد يبدو هذا محيرًا بشكل لا يصدق ، لكن خلاصة القول هي أنه من أجل العمل مع قواعد بيانات GeoPackage من المكون الإضافي SpatiaLite ، نحتاج أولاً إلى تشغيل الأمر التالي: SELECT EnableGpkgAmphibiousMode () يخبر هذا الأمر أساسًا SpatiaLite بالعمل محليًا مع GeoPackage geometry ، وإزالة الحاجة إلى استدعاء وظائف تحويل التنسيق المناسبة بشكل صريح مثل GeomFromGPB () أو CastAutomagic ().

يتبع SpatiaLite بشكل عام مواصفات OGC Simple Feature لـ SQL ، ولكن يمكنك مراجعة جميع وظائف SQL المدعومة هنا.

لنقم أولاً بتمكين وضع GeoPackage البرمائي لتسهيل كتابة الاستعلامات المكانية:

دعنا الآن نلقي نظرة على تمثيل النص المعروف جيدًا لأشكالنا الهندسية.

لاحظ أنها كلها أشكال هندسية لـ POINT

لاحظ أنها مزيج من هندسة POLYGON و MULTIPOLYGON

ابحث بعد ذلك عن أكبر 10 ولايات حسب المنطقة المحسوبة:

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

إذن أي ولاية لديها أكبر عدد من السجلات؟

ما هي أفضل أنواع البيرة التي تم تجميعها حسب الولاية؟

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

الاستنتاجات

لقد خدشنا للتو سطح قوة GIS و SQL المكاني ، ولكن نأمل أن تكون هذه المشاركة قد ساعدت في إزالة الغموض عن بعض المفاهيم وقدمت بعض الأدوات المفيدة للعمل مع بياناتك. هناك الكثير من الموارد المتاحة للمساعدة في توسيع معرفتك في هذا المجال ، وأنا أوصي بشدة بالموارد التالية عبر الإنترنت:

    - خاص بـ PostGIS ، ولكنه يتضمن العديد من المفاهيم والوظائف المفيدة - قائمة مرجعية للوظائف المتاحة - التوثيق والخيارات التفصيلية - روابط سهلة الاستخدام لجميع تنسيقات بيانات المتجه المدعومة

في الختام ، يعد GeoPackage ، المستند إلى تقنية SQLite ، تنسيقًا رائعًا لتخزين البيانات الجغرافية المكانية والعمل معها. توفر الأدوات المجانية والمفتوحة المصدر مثل GDAL / OGR و DB Browser لـ SQLite مع امتداد SpatiaLite آليات لاستيراد البيانات وتشغيل الاستعلامات المكانية للتحليل. بمجرد كسر اعتمادك على جداول البيانات ، يمكنك حقًا تجربة فوائد تأثير الموقع!


لماذا من المهم أن تكون مفكر أنظمة؟

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

& ldquo إذا حاولت فقط إصلاح مشكلة من خلال التركيز على الجزء الذي يحتاج إلى إصلاح وعدم التفكير في كيفية كسر هذا الجزء في المقام الأول ، "قال براون ،" أو كيف يمكن أن يؤثر الإصلاح على الآخرين ، فأنت تخاطر إما بالحصول على مشكلة جديدة ، أو تحصل على نفس المشكلة مرة أخرى لاحقًا. & rdquo


كيفية إنشاء خطوط غير مكررة بين جميع النقاط المحددة في Spatialite؟ - نظم المعلومات الجغرافية

مقدمة في البرمجة المكانية باستخدام RGeo

أحد أهم الاتجاهات الحالية في صناعة التكنولوجيا الفائقة هو ظهور التقنيات المكانية والقائمة على الموقع. كانت هذه التقنيات ، التي كانت ذات يوم مجالًا حصريًا لأنظمة GIS المعقدة ، متاحة بشكل متزايد في التطبيقات الصغيرة والمواقع الإلكترونية والمؤسسات. يقدم هذا المستند نظرة عامة موجزة عن المفاهيم والتقنيات والأدوات اللازمة لتنفيذ ميزات التطبيق المدركة للموقع ، مع التركيز على لغة برمجة Ruby ومجموعة تقنيات مفتوحة المصدر.

محتويات هذه الوثيقة هي على النحو التالي.

  • القسم 1 عبارة عن مقدمة قصيرة لتقنية الجغرافيا المكانية ، بما في ذلك مسح للأدوات والمكتبات الشائعة المتاحة.
  • يقدم القسم 2 أنواع البيانات المكانية القياسية مثل النقاط والخطوط والمضلعات المستخدمة في معظم التطبيقات الجغرافية المكانية.
  • يلخص القسم 3 العمليات المكانية القياسية التي تم تحديدها في أنواع البيانات هذه.
  • يناقش القسم 4 أنظمة الإحداثيات والإسقاطات الجغرافية ، ولماذا من المهم الحصول عليها بشكل صحيح.
  • يغطي القسم 5 قواعد البيانات المكانية مفتوحة المصدر الأكثر شيوعًا.
  • يغطي القسم 6 بإيجاز قابلية التشغيل البيني مع خدمات الموقع والبيانات الجغرافية المكانية الأخرى من مصادر خارجية.

تعد نظم المعلومات الجغرافية (GIS) مجالًا واسعًا ومتطورًا للغاية ، وستؤدي هذه المقدمة فقط إلى خدش سطح الحالة الحالية للفن. لا يتمثل الهدف في أن تكون شاملاً ، ولكن تلخيص العناصر المهمة ، والإشارة إلى الموارد الخارجية للقراء الذين يبحثون عن معلومات أكثر تفصيلاً.

دانيال أزوما هو كبير مهندسي البرمجيات وأحد مؤسسي GeoPage، Inc. ، وهي شركة ناشئة مقرها سياتل تعمل على تطوير تطبيقات المستهلك المدركة للمواقع. يعمل دانيال مع Ruby on Rails منذ عام 2006 ، ولديه خلفية في رسومات الكمبيوتر والتصور. وهو أيضًا مؤلف RGeo ، مكتبة البيانات المكانية المتقدمة لروبي المغطاة في هذا المستند.

1. الفضاء: الحدود التالية

1.1. لماذا البرمجة المكانية؟

بحلول عام 2010 ، أثبت الموقع نفسه كواحد من أهم الاتجاهات التكنولوجية الناشئة. في كانون الثاني (يناير) ، توقع تقرير صادر عن شركة Juniper Research أن خدمات تحديد المواقع على الهاتف المحمول وحدها يمكن أن تحقق عائدات تصل إلى ما يقرب من 13 مليار دولار بحلول عام 2014 (انظر مقالة TechCrunch) ، بينما سيطر الموقع على عروض الميزات الجديدة من عدد لا يحصى من الشركات الناشئة وكذلك من الشركات العملاقة مثل Facebook و Twitter. على الرغم من أن التخصصات الأساسية لرسم الخرائط بمساعدة الكمبيوتر وأنظمة المعلومات الجغرافية (GIS) كانت موجودة منذ عدة عقود ، إلا أنها اقتحمت التكنولوجيا الاستهلاكية السائدة فقط مؤخرًا. كان هذا إلى حد كبير بسبب بعض التطورات الرئيسية ، ولا سيما نجاح تطبيقات رسم الخرائط عبر الإنترنت بدءًا من خرائط Google ، وانتشار أجهزة GPS المحمولة في كل مكان خاصة في الهواتف المحمولة.

على الرغم من هذا الاهتمام المتزايد ، لا تزال التطبيقات المدركة للموقع صعبة التطوير لأن المفاهيم والتقنيات المعنية بدأت للتو في شق طريقها إلى وعي وأدوات المطورين السائدة. الغرض الأساسي من هذا المستند هو تغطية الأساسيات التي يحتاج مطور Ruby أو Ruby On Rails إلى معرفتها عند التطوير باستخدام بيانات الموقع ، وتقديم الأدوات والموارد المتاحة.

1.2 النظام البيئي المكاني الناشئ

لحسن الحظ ، يوجد الآن عدد من مكتبات ومؤسسات البرمجيات لتعزيز ومساعدة تطوير التطبيقات المكانية. سنقوم هنا بمسح بعض أنظمة البرامج المفتوحة الشائعة والناشئة المتاحة للتكامل في تطبيقك المدرك للموقع.

تطورت أدوات التصور بشكل كبير في السنوات الأخيرة. تتمتع خدمات رسم الخرائط مثل خرائط Google و Bing Maps الآن بدعم شامل لواجهة برمجة التطبيقات لتطوير تطبيقات الخرائط. كما تم إطلاق خدمة الخرائط المفتوحة OpenStreetMap وهي تكتسب زخمًا. بالإضافة إلى ذلك ، ظهرت أيضًا الأدوات التي تتيح لك خدمة بيانات الخرائط الخاصة بك ، مثل OpenLayers و PolyMaps.

تدعم معظم قواعد البيانات العلائقية الآن الامتدادات المكانية. توفر قاعدة بيانات MySQL دعمًا أساسيًا للعمود المكاني. توجد مكتبات إضافية لجهات خارجية لـ Sqlite3 و PostgreSQL في شكل SpatiaLite و PostGIS ، على التوالي. توفر قواعد البيانات التجارية مثل Oracle و Microsoft SQL Server أيضًا تسهيلات لتخزين البيانات المكانية والاستعلام عنها. تظهر الميزات المكانية أيضًا في مخازن البيانات غير العلائقية. قدمت MongoDB مؤخرًا الفهرسة الجغرافية المكانية ، وتدعم Solr الاستعلامات المكانية في أحدث إصدار من محرك البحث القائم على Lucene ، وتوفر Sphinx أيضًا إمكانات بحث مكانية محدودة.

ظهرت أيضًا مجموعة متنوعة من خدمات البيانات. التكويد الجغرافي ، العملية التي تقترب من إحداثيات خطوط الطول / العرض من عنوان الشارع ، يتم تقديمها الآن من قبل معظم بائعي خدمات رسم الخرائط الرئيسيين مثل Google و Microsoft و Yahoo. قواعد بيانات الأماكن مع قوائم الأعمال التجارية والمواقع الرئيسية متاحة الآن أيضًا من مجموعة متنوعة من البائعين. ظهرت مؤخرًا العديد من الخدمات ، ولا سيما SimpleGeo ، للتخزين المستند إلى السحابة والاستعلام عن بيانات الموقع المخصصة.

غالبًا ما يمثل دمج هذه الخدمات الموجودة في تطبيق ويب تحديًا ، ولكن يوجد عدد قليل من مكتبات وأطر التكامل. GeoDjango هي وظيفة إضافية لإطار عمل ويب Django المستند إلى Python لبناء التطبيقات المستندة إلى الموقع. RGeo هي مجموعة من مكتبات Ruby يمكنها أداء نفس الوظيفة لـ Ruby on Rails.

ولعل الأهم من ذلك كله هو المنظمات التي ظهرت لدعم تطوير المعايير والبرمجيات الجيومكانية. الاتحاد الجغرافي المكاني المفتوح (OGC) هو اتحاد دولي من الشركات والوكالات الحكومية والمنظمات الأخرى التي تعزز قابلية التشغيل البيني من خلال تطوير معايير مفتوحة وواجهات لأنظمة البرمجيات الجيومكانية. تم توحيد العديد من المفاهيم وأنواع البيانات والعمليات الموضحة في هذا المستند بواسطة OGC. تقوم مؤسسة Open Source Geospatial Foundation بتطوير ودعم مجموعة متنوعة من البرامج الجغرافية المكانية مفتوحة المصدر ، بما في ذلك PostGIS و GEOS و Proj وغيرها من البرامج التي سنغطيها في هذا المستند. تعد لجنة الجيوماتكس OGP (المعروفة سابقًا باسم EPSG ، المجموعة الأوروبية لمسح البترول) جزءًا من اتحاد صناعي يحافظ على بحكم الواقع مجموعة البيانات الجيوديسية EPSG القياسية ، وهي مجموعة من أنظمة الإحداثيات والتحولات المستخدمة دوليًا لوصف الموقع العالمي. تشكل هذه المنظمات وغيرها العمود الفقري لتقنية الجغرافيا المكانية ، وستتفاعل معظم التطبيقات الجغرافية المكانية على الأقل بشكل غير مباشر مع خدماتها.

1.3 مكتبات روبي و RGeo

تمكن مطورو Ruby من الوصول إلى عدد لا بأس به من الأدوات المكانية ، وخاصة مكتبات التكامل للخدمات الخارجية. يوفر Geokit و Geocoder واجهات مشتركة للاستعلام عن خدمات الترميز الجغرافي ، وامتدادات ActiveRecord الأساسية للاستعلامات المكانية البسيطة. يوفر YM4R واجهة بسيطة لدمج أدوات تصور خرائط Google و Yahoo في تطبيق Ruby. أخيرًا ، يوفر GeoRuby فئات لأنواع البيانات المكانية الأساسية مثل النقاط والخطوط والمضلعات ، كما تخترق مكتبة spatial_adapter الإضافية عددًا قليلاً من محولات قاعدة بيانات ActiveRecord الشائعة لدعم الأعمدة المكانية في قاعدة البيانات.

في هذا المستند ، سنغطي RGeo ، وهي مكتبة بيانات مكانية حديثة لـ Ruby توفر تنفيذًا كاملاً وقويًا لأنواع وعمليات البيانات المكانية OGC القياسية. ويغطي بعضًا من نفس الوظائف مثل GeoRuby و spatial_adapter. ومع ذلك ، حيث تنفذ GeoRuby مجموعة فرعية صغيرة فقط من واجهات ميزات OGC ، يدعم RGeo المواصفات بأكملها ، بالإضافة إلى توفير العديد من الميزات والإضافات غير المتوفرة مع المكتبات القديمة.

تضم RGeo العديد من المكتبات ، موزعة على هيئة جواهر: مكتبة أساسية ، ومجموعة من الوحدات الإضافية الاختيارية. تتضمن المكتبة الأساسية ، الموزعة على أنها جوهرة rgeo ، تنفيذ البيانات المكانية نفسها. تتضمن الوحدات الإضافية المتوفرة حاليًا rgeo-geojson ، الذي يقرأ ويكتب تنسيق GeoJSON ، وملف الشكل rgeo-shapefile ، الذي يقرأ ملفات أشكال ESRI. يستخدم عدد من محولات ActiveRecord أيضًا RGeo للتواصل مع قواعد البيانات المكانية التي تشمل mysqlspatial و mysql2spatial و spatialite و postgis.

سيغطي هذا القسم الأنواع القياسية من البيانات المكانية المستخدمة في التطبيقات الجغرافية المكانية.

2.1. مواصفات الميزات البسيطة

يحدد الاتحاد الجغرافي المكاني المفتوح (OGC) وينشر مواصفة بعنوان "المعلومات الجغرافية - الوصول البسيط إلى الميزات" ، والتي تحدد ، من بين أشياء أخرى ، مجموعة من أنواع البيانات المكانية والعمليات التي يمكن إجراؤها عليها. يحدد هذا المعيار ، الذي سنشير إليه باسم مواصفات الميزات البسيطة (SFS) ، الأنواع الأساسية والواجهات المستخدمة في معظم التطبيقات وقواعد البيانات المكانية. على الرغم من توفر إصدارات أحدث من المواصفات الآن ، فإن معظم التطبيقات الحالية ، بما في ذلك RGeo ، تتبع الإصدار 1.1 من SFS ، وهذه هي المواصفات التي سنغطيها هنا.

"الميزة" في SFS هي كائن هندسي في مساحة ثنائية أو ثلاثية الأبعاد. يمكن أن تكون هذه الكائنات نقاط وخطوط ومنحنيات وأسطح ومضلعات - بشكل عام ، يتم دعم معظم الكائنات ذات الأبعاد 0 أو 1 أو 2. يتم تحديد كل عنصر من هذه الكائنات بواسطة الإحداثيات (X ، Y ، وأحيانًا Z) ، وله واجهة كائنية التوجه مرتبطة به ، وتحديد مجموعة من العمليات التي يمكن تنفيذها. في RGeo ، توجد هذه الواجهات كوحدات نمطية في مساحة الاسم RGeo :: Feature.

سنغطي بسرعة أنواع الكائنات الهندسية المدعومة ، ثم نناقش كيفية استخدام RGeo لإنشاء ومعالجة البيانات المكانية ككائنات Ruby.

توجد الكائنات الهندسية بشكل عام في مجال ثنائي الأبعاد (مثل المستوى أو الكرة الأرضية) محدد بإحداثيات X و Y. يمكن أن تكون هذه الإحداثيات إحداثيات شاشة ، كما هو الحال على الخريطة المعروضة على شاشة الكمبيوتر ، يمكن أن تكون إحداثيات خطوط الطول / العرض ، حيث تمثل X خط الطول و Y تمثل خط العرض ، أو يمكن أن تكون في نظام إحداثيات مختلف تمامًا.

بالمعنى الدقيق للكلمة ، يدعم الإصدار 1.1 من SFS بعدين فقط. ومع ذلك ، يمكن أن تمثل العديد من التطبيقات ما يصل إلى أربعة إحداثيات ، بما في ذلك إحداثيات Z و M. اختيارية. Z ، عند وجودها ، تُستخدم عمومًا لبُعد ثالث من الموقع على سبيل المثال ، يمكن أن تمثل الارتفاع أو المسافة فوق أو أسفل سطح الأرض. M ، عند وجودها ، تُستخدم لتمثيل "مقياس" ، وهي قيمة قياسية يمكن أن تتغير عبر كائن. يمكن أن يمثل المقياس ، على سبيل المثال ، درجة الحرارة أو كثافة السكان أو بعض الوظائف الأخرى للموقع. معظم التطبيقات الحالية ، على الرغم من أنها يمكن أن تمثل وتخزن Z و M ، لن تقوم في الواقع بإجراء أي تحليل مع تلك الإحداثيات التي تعمل فقط كحقول بيانات إضافية.

"نقطة" SFS هي نقطة أحادية الأبعاد في الفضاء. تُستخدم النقاط عادةً في تطبيقات الموقع لتمثيل موقع واحد ، يتم عرضها كعلامة خريطة. يمكنك استرداد الإحداثيات X و Y (واختياريا Z و M) من كائن نقطي.

"LineString" SFS عبارة عن مجموعة من مقطع خط متصل واحد أو أكثر يمثل مسارًا خطيًا واحدًا متواصلًا متعدد العناصر. يمكن أن يمثل ، على سبيل المثال ، مسار شارع واحد ، اتجاهات القيادة الكاملة من نقطة إلى أخرى ، أو مسار مجرى مائي. يتم تعريفه عن طريق توصيل سلسلة من النقاط بالترتيب مع مقاطع الخط ، ويمكنك استرداد هذه النقاط من كائن LineString.

يحتوي LineString نفسه على مجموعتين فرعيتين ، Line و LinearRing. الخط مقيد بقطعة من سطر واحد (أي نقطتين). LinearRing عبارة عن LineString "مغلق" ، حيث تتطابق نقطتا النهاية.

(إن LineString هو في الواقع فئة فرعية من فئة "Curve" المجردة الأكثر عمومية ، والتي لا تحتاج إلى أن تكون خطية متعددة الأجزاء. ومع ذلك ، فإن Curve ليس في حد ذاته قابلًا للتشغيل ، وإصدار SFS الحالي لا يحدد في الواقع نوعًا آخر من المنحنى القابل للتشغيل غير LineString.)

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

(تعد المضلعات أيضًا فئة فرعية من فئة مجردة أكثر عمومية ، وتسمى هذه الفئة "السطح". بشكل عام ، لا يلزم أن تكون حدود السطح خطية متعددة العناصر. ومع ذلك ، فإن السطح ليس قابلاً للتشغيل في حد ذاته ، كما أن إصدار SFS الحالي لا تحديد نوع آخر من السطح القابل للتشغيل غير المضلع.)

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

"MultiLineString" SFS عبارة عن مجموعة من صفر أو أكثر من كائنات LineString. يمكن استخدامه ، على سبيل المثال ، لتمثيل جميع الأقسام "المزدحمة" حاليًا للطرق السريعة للمدينة أثناء ساعة الذروة. يمكن أن تمثل ، من حيث المبدأ ، خريطة الشارع بالكامل للمدينة ، على الرغم من أن بنية البيانات هذه قد تكون أكبر من أن تكون عملية.

(MultiLineString هي فئة فرعية من فئة MultiCurve المجردة غير القابلة للإنشاء.)

SFS "MultiPolygon" عبارة عن مجموعة من صفر أو أكثر من كائنات المضلع. كما أن لديها بعض القيود الإضافية ، لا سيما أن المضلعات المكونة يجب أن تكون جميعها مفككة ولا يمكن أن تتداخل. تُستخدم المضلعات المتعددة لتمثيل منطقة يمكن أن تحتوي على أجزاء متعددة غير متصلة.

(MultiPolygon هي فئة فرعية من فئة MultiSurface لفئة مجردة غير قابلة للإنشاء.)

2.9 مجموعة الهندسة والهندسة

يتم ترتيب أنواع البيانات الهندسية المختلفة الموضحة أعلاه في تسلسل هرمي للفئة. الفئة الأساسية لهذا التسلسل الهرمي هي الهندسة. تعد أنواع MultiPoint و MultiLineString و MultiPolygon (أو بشكل أكثر دقة ، MultiPoint و MultiCurve و MultiSurface) فئات فرعية لنوع بيانات أكثر عمومية يسمى GeometryCollection. يمكن أيضًا إنشاء مجموعة هندسية من تلقاء نفسها. يمثل مجموعة عامة من كائنات الهندسة الأخرى ، يمكن أن يكون كل منها من أي نوع.

للحصول على تفاصيل كاملة حول التسلسل الهرمي لفئة الهندسة ، قم بتنزيل مواصفات الميزات البسيطة الفعلية. أوصي بتنزيل الإصدار 1.1 ، لأن الإصدارات الأحدث (1.2 وما بعده) تصف أنواعًا وميزات إضافية غير متوفرة بشكل شائع في عمليات التنفيذ الحالية. قد تكون هذه المعلومات الإضافية محيرة.

2.10. مصانع RGeo Geometry

أنواع البيانات التي قمنا بتغطيتها هنا هي في الواقع مجرد مواصفات واجهة. يوفر RGeo العديد من التطبيقات الملموسة المختلفة لواجهات نوع البيانات هذه ، المخصصة لحالات الاستخدام المختلفة. على سبيل المثال ، يعد تنفيذ RGeo :: Geos هو التطبيق الرئيسي لـ RGeo والذي يوفر كل نوع بيانات وكل عملية محددة بواسطة SFS. ومع ذلك ، يتطلب هذا التنفيذ تثبيت مكتبة C لجهة خارجية ، GEOS. في الحالات التي لا تتوفر فيها هذه المكتبة ، توفر RGeo بديلاً ، وهو التطبيق الديكارتي البسيط ، وهو تطبيق Ruby الخالص الذي يوفر كل أنواع البيانات ولكنه لا ينفذ بعض العمليات الهندسية الأكثر تقدمًا. يوفر RGeo أيضًا المزيد من التطبيقات المصممة خصيصًا للعمل مع الإحداثيات الجغرافية (خطوط الطول / خطوط العرض) ، وإسقاطات وطرق مختلفة لإجراء العمليات الحسابية على سطح الأرض. تم وصف هذه التطبيقات المختلفة بمزيد من التفصيل في القسم الخاص بأنظمة التنسيق والإسقاطات.

يتم تمثيل كل تنفيذ ملموس في RGeo بواسطة مصنع. المصنع هو كائن يمثل النظام الإحداثي والإعدادات الأخرى لهذا التنفيذ. كما يوفر طرقًا لإنشاء كائنات هندسية فعلية لهذا التطبيق ، على النحو المحدد في واجهة RGeo :: Feature :: Factory. فمثلا:

المصنع الأكثر شيوعًا الذي تستخدمه RGeo هو المصنع "الديكارتي المفضل". يستخدم هذا المصنع نظام إحداثيات مسطح (ديكارتي) ، ويتم تنفيذه بواسطة GEOS (إن وجد) أو باستخدام بديل Ruby الخالص إذا لم يكن كذلك. يمكن استرجاعها بالاتصال على:

مصنع شائع آخر قد ترغب في استخدامه هو مصنع "مركاتور البسيط". هذا مصنع جغرافي مخصص للتطبيقات البسيطة القائمة على الموقع والتي تستخدم خرائط Google أو Bing كأداة تصور. نظام الإحداثيات الخاص بها هو خطوط الطول والعرض ، ولكن لديها أيضًا وسيلة مضمنة لتحويل تلك الإحداثيات إلى نظام إحداثيات "تبليط" مسطح تستخدمه الخريطة. يمكنك استرجاعها بالاتصال على:

في كثير من الحالات ، تأخذ طرق إنشاء المصنع هذه وسيطات اختيارية إضافية تتيح ميزات متنوعة. على سبيل المثال ، يستخدم المصنع الديكارتي المفضل ، افتراضيًا ، إحداثيات X و Y فقط. يمكنك تفعيل إحداثيات Z و / أو M بتمرير وسيطة مناسبة ، على سبيل المثال:

لاحظ أنه في كثير من الحالات ، تكون فئة المصنع نفسها بالإضافة إلى فئات التنفيذ الفعلية للكائنات الهندسية غير شفافة في RGeo. يجب عليك الرجوع إلى الواجهات المناسبة في مساحة الاسم RGeo :: Feature للطرق التي يمكنك الاتصال بها.

بالإضافة إلى تمثيل البيانات الهندسية ، تحدد واجهات SFS مجموعة من العمليات الأساسية على هذه البيانات. تتوفر هذه العمليات في أشكال عديدة ، اعتمادًا على نوع نظام البرنامج. تحدد قواعد البيانات المكانية مثل PostGIS هذه وظائف SQL التي يمكن استخدامها لكتابة الاستعلامات. هدف RGeo هو إتاحة كائنات هندسية لبرامج Ruby ، ​​وبالتالي يتم عرض هذه العمليات كطرق على كائنات Ruby الهندسية.

تغطي هذه العمليات مجموعة واسعة من الوظائف ، وبعضها يتضمن مشاكل صعبة في الهندسة الحسابية ، خاصة على نظام إحداثيات غير مسطح مثل الإحداثيات الجغرافية. يوفر RGeo تنفيذًا كاملاً للإحداثيات الديكارتية المسطحة التي تستخدم مكتبة GEOS داخليًا. ومع ذلك ، فإن بعض تطبيقات RGeo الأخرى توفر فقط مجموعة فرعية من هذه العمليات. إذا كنت تستخدم قاعدة بيانات PostGIS ، فستجد موقفًا مشابهًا. تستخدم أنواع بيانات "الهندسة" في الواقع نظام GEOS داخليًا لإجراء عمليات حسابية هندسية ، وتتوفر جميع الوظائف تقريبًا. ومع ذلك ، فإن نوع البيانات "الجغرافية" ، الذي يعمل على نظام إحداثيات منحني ، لا ينفذ سوى عدد قليل من الوظائف المحددة.

معظم أنواع الهندسة لها شكل "منحط" لا يمثل أي هندسة. على سبيل المثال ، قد لا تحتوي مجموعة GeometryCollection على عناصر ، أو قد لا تحتوي سلسلة LineString على نقاط. يتم الإشارة إلى هذه الحالة بواسطة Geometry # is_empty؟ طريقة. في RGeo ، قد يكون أي نوع هندسي فارغًا باستثناء Point.

الخاصية المشتركة الثانية للكائنات الهندسية هي "البساطة" ، والتي تعني أساسًا أن الهندسة لا تتقاطع أو تكرر نفسها. على سبيل المثال ، سلسلة LineString التي تتقاطع مع نفسها ليست بسيطة ، كما أنها ليست MultiPoint التي تحتوي على نفس النقطة أكثر من مرة. في بعض الأحيان ، سيكون لخوارزمية التحليل الهندسي البساطة كشرط مسبق. يشار إلى هذه الخاصية بواسطة الهندسة # is_simple؟ طريقة.

تحتوي جميع كائنات الهندسة أيضًا على "معرف مرجعي مكاني" ، يتم إرجاعه بواسطة طريقة Geometry # srid. هذا مرجع معرف خارجي يشير إلى "نظام الإسناد المكاني" ، أو نظام الإحداثيات المستخدم بواسطة الهندسة. راجع قسم تنسيق الأنظمة والإسقاطات لمزيد من المناقشة.

يحدد SFS مجموعة من عمليات المقارنة التي تختبر الكائنات الهندسية لمثل هذه المسندات العلائقية مثل المساواة والتداخل والاحتواء وما إلى ذلك. في RGeo ، يتم تنفيذ هذه العمليات من خلال طرق تُرجع القيم المنطقية. على سبيل المثال

ليس لدي مساحة هنا لوصف عمليات المقارنة المختلفة بالتفصيل. راجع SFS للحصول على تعريفات دقيقة. ومع ذلك ، أريد أن أشير إلى ميزة واحدة معينة لـ RGeo تتعلق بفحص المساواة. لغة روبي لديها عدد من الطرق المختلفة لاختبار "أشكال" مختلفة من المساواة. فمثلا:

بشكل عام ، لدى Ruby ثلاثة أشكال من المساواة: المساواة في القيمة (تم اختبارها بواسطة عامل التشغيل ==) ، ومساواة الكائن (تم اختبارها بواسطة طريقة eql؟) ، وهوية الكائن (تم اختبارها بواسطة طريقة "المساواة").

وبالمثل ، يأتي فحص المساواة في RGeo في عدة أشكال: المساواة الهندسية ، والمساواة التمثيلية ، وهوية الكائن. يتم اختبار المساواة الهندسية بواسطة طريقة SFS تساوي؟ ، بالإضافة إلى عامل التشغيل ==. يشير هذا النوع من المساواة إلى كائنين قد يكونان تمثيلات مختلفة لنفس الشكل الهندسي ، على سبيل المثال ، LineString وعكسها ، أو Point و MultiPoint التي تحتوي على نفس النقطة فقط. المساواة التمثيلية ، اختبارها من قبل eql؟ ، يعني نفس التمثيل ولكن ربما كائنات مميزة. هوية الكائن ، اختبارها على قدم المساواة؟ ، يمثل نفس الكائن ، كما هو الحال مع أنواع Ruby الأخرى.

3.3 العمليات المكانية الثنائية

يوفر SFS أيضًا العديد من العمليات التي تأخذ شكلين هندسيين وتنتج ثلثًا. على سبيل المثال ، يمكنك حساب التقاطع أو الاتحاد أو الاختلاف بين شكلين هندسيين. بالإضافة إلى الطرق المحددة بواسطة واجهات SFS ، يوفر RGeo عوامل تشغيل لبعض هذه الحسابات.

3.4. العمليات المكانية الأحادية

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

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

يحدد SFS مخططين للتسلسل للكائنات الهندسية ، والمعروفين باسم WKT (نص معروف) وتنسيقات WKB (ثنائي معروف). غالبًا ما يتم استخدام WKT لعرض نصي ونقل كائن هندسي ، بينما يتم استخدام WKB أحيانًا كتنسيق بيانات داخلي بواسطة قواعد البيانات المكانية. تحدد الكائنات الهندسية في RGeo طريقتين as_text و as_binary لتسلسل الكائن في سلسلة بيانات ، بينما توفر مصانع RGeo أساليب parse_wkt و parse_wkb لإعادة بناء الكائنات الهندسية من شكلها المتسلسل.

لاحظ أن هناك العديد من أوجه القصور الرئيسية في تنسيقات WKT و WKB على النحو المحدد بدقة بواسطة SFS. على وجه الخصوص ، لا يحتوي أي من التنسيقين على دعم رسمي لإحداثيات Z أو M ، ولا يوفر أي منهما طريقة لتحديد نظام الإحداثيات (أي معرف المرجع المكاني) الذي يتم تمثيل الكائن فيه. لهذا السبب ، تم تطوير متغيرات من هذه التنسيقات. أهم ما يجب معرفته هو EWKT و EWKB (أو التنسيقات المعروفة "الموسعة") المستخدمة بواسطة قاعدة بيانات PostGIS ، والتي تدعم Z و M بالإضافة إلى SRID. تحتوي الإصدارات الأحدث من SFS أيضًا على امتدادات محددة للتعامل مع إحداثيات Z و M ، ولكن لا تقم بتضمين SRID. يدعم RGeo التحليل وإنشاء هذه المتغيرات من خلال وحدة RGeo :: WKRep.

4. أنظمة التنسيق والإسقاطات

حتى الآن ، ناقشنا البيانات والعمليات الهندسية في الغالب دون الرجوع إلى نظام الإحداثيات. ومع ذلك ، يعد نظام الإحداثيات مكونًا مهمًا لتفسير ما تعنيه قطعة البيانات. إذا كانت لديك نقطة (1 ، 2) ، فهل يتم قياس 1 و 2 بالأمتار؟ اميال؟ درجات؟ ومن أين يقاسون؟ ما هو الأصل (0 ، 0) ، وما الاتجاهات التي يمثلها كل من X و Y؟

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

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

لنأخذ مثال بسيط. لنفترض أن لدينا سلسلة خطوط بسيطة بنقطتين: تبدأ من فانكوفر ، كندا ، وتنتهي في فرانكفورت ، ألمانيا ، وكلاهما يقع عند خط عرض 50 درجة شمالًا تقريبًا. تتكون السلسلة الخطية من خط مستقيم بين هاتين النقطتين. ولكن ما هو المقصود بكلمة "مستقيم"؟ هل الشكل يتبع خط عرض 50 درجة شمالا ، ويمر عبر نيوفاوندلاند؟ أم أنها تتبع أقصر طريق فعليًا على الكرة الأرضية ، والذي يمر شمالًا بالقرب من ريكيافيك ، أيسلندا؟ (للحصول على شرح مفصل ، راجع منشور مورتن نيلسن ["خطوط مستقيمة على جسم كروي"] (http://www.sharpgis.net/post/2008/01/12/Straight-lines-on-a-sphere.aspx) ، والتي تتضمن أيضًا بعض الرسوم البيانية المفيدة.) إذا كنت تريد استدعاء وظيفة "مسافة" SFS لقياس المسافة بين سلسلة الخط هذه ونقطة تقع في ريكيافيك ، فما الذي ستحصل عليه؟

الجواب هو أنه يعتمد على نظام الإحداثيات الذي تستخدمه.

4.2 الإحداثيات والإسقاطات الجغرافية

تمثل أنظمة GIS عادةً مواقع في واحد من ثلاثة أنواع مختلفة من أنظمة الإحداثيات: إحداثيات مركزية الأرض والإحداثيات الجغرافية والإحداثيات المتوقعة. عادةً ما تحدد أنظمة إحداثيات مركزية الأرض أصل نظام إحداثيات ديكارت ثلاثي الأبعاد في مركز الأرض. لا يتم استخدامها بشكل شائع في واجهة على مستوى التطبيق ، ولكنها غالبًا ما تكون نظام إحداثيات مناسبًا لتشغيل خوارزميات الهندسة الحسابية. تستخدم الإحداثيات الجغرافية قياسات خطوط الطول والعرض المألوفة ، وفي بعض الأحيان تتضمن أيضًا الارتفاع. تستخدم هذه الإحداثيات سطحًا منحنيًا ، سواء أكان كرويًا أم بيضاويًا ، كمجال ، وتقوم بإجراء حسابات هندسية على هذا المجال غير المسطح. تتضمن الإحداثيات المسقطة تحويل المجال المنحني لسطح الأرض إلى مجال مسطح مثل عرض الخريطة. الإحداثيات المسقطة ، إذن ، هي في الواقع إحداثيات X-Y على الخريطة نفسها: على سبيل المثال ، إحداثيات البكسل.

في مثالنا من فانكوفر إلى فرانكفورت ، يتم تحديد مسار الخط "المستقيم" حسب نوع نظام الإحداثيات المستخدم. يعمل نظام إحداثيات مركزية الأرض في فضاء ثلاثي الأبعاد ، وبالتالي سيمر الخط المستقيم فعليًا عبر باطن الأرض. يُعرَّف الخط المستقيم في نظام الإحداثيات الجغرافي (خطوط العرض وخطوط الطول) عادةً على أنه الخط الجيوديسي ، وهو أقصر مسار بين نقطتين على طول سطح الأرض. سيأخذ هذا المسار الخط بالقرب من ريكيافيك. في نظام الإحداثيات المسقط ، يتم تعريف الخط المستقيم على أنه خط مستقيم على الإسقاط - أي ، خط مستقيم مرسوم على الخريطة المسطحة. تستخدم خرائط Google و Bing إسقاط Mercator ، حيث تكون خطوط العرض عبارة عن خطوط أفقية مستقيمة ، لذلك ستتبع LineString خط عرض 50 درجة ، مروراً بنيوفاوندلاند.

من المهم أن نلاحظ أن الفعلي شكل تختلف الهندسة باختلاف نظام الإحداثيات. إذا "عرضت" الخط الجيوديسي (الخط المستقيم في الإحداثيات الجغرافية) في خريطة Google التي يعرضها Mercator ، فسيكون الخط منحنيًا. لذلك ، يعد نظام الإحداثيات جزءًا لا يتجزأ من الكائن الهندسي. إذا اختلطت أنظمة الإحداثيات الخاصة بك ، فقد تحصل على نتائج غير صحيحة عند تشغيل استعلام قاعدة بيانات أو عملية هندسية.يعطي مورتن نيلسن مثالاً في [هذا المنشور] (http://www.sharpgis.net/post/2009/02/06/Why-EPSG4326-is-usually-the-wrong-e2809cprojecte2809d.aspx).

توفر RGeo الوصول إلى أنظمة إحداثيات مختلفة عبر مصانعها ، كما رأينا سابقًا. إذا كنت تقوم بتنفيذ تحديد الموقع الجغرافي ، فستستخدم عادةً أحد المصانع الجغرافية التي تمثل الإحداثيات على أنها خطوط الطول والعرض. لاحظ ، مع ذلك ، أن RGeo يوفر كلاً من المصانع الجغرافية المتوقعة وغير المتوقعة. ترتبط المصانع المتوقعة بإسقاط معين ، يمثل الإحداثيات على أنها خطوط الطول والعرض ، ولكنها تجري العمليات الحسابية في الإسقاط. إذا كنت تستخدم مصنع mercator البسيط ، وهو مصنع متوقع ، فإن الخط الفاصل بين فانكوفر وفرانكفورت سيتبع خط عرض 50 درجة ، وبالتالي سيتقاطع مع مضلع يمثل نيوفاوندلاند. تجري المصانع غير المتوقعة عمليات حسابية على أرض منحنية. باستخدام المصنع الكروي ، وهو مصنع غير متوقع يفترض أن الأرض هي كرة ، سيتقاطع الخط بين فانكوفر وفرانكفورت مع مضلع يمثل جرينلاند. (في المستقبل ، يجب أن توفر RGeo أيضًا مصنعًا بيضاويًا يؤدي العمليات الحسابية الأكثر تعقيدًا اللازمة لنمذجة الأرض على أنها المسطح جسم كروى. هذه الميزة غير متوفرة بعد.)

تتصرف بعض أنظمة قواعد البيانات بشكل مشابه. يوفر PostGIS ، على سبيل المثال ، نوعين منفصلين من "الهندسة" و "الجغرافيا". يفترض الأول مجالًا مسطحًا: سيتصرف بشكل مشابه لمصنع مركاتور RGeo البسيط لخط أفقي (على الرغم من أنه بالنسبة للخط المائل ، سيتصرف بشكل مختلف نظرًا لأن المحور الرأسي غير منتظم في إسقاط Mercator.) نوع "الجغرافيا" PostGIS ، ومع ذلك ، تعمل على أرض منحنية ، على غرار مصنع RGeo الكروي.

هل هذا مهم في التطبيق الخاص بك؟ الجواب ، يعتمد: على نوع البيانات التي لديك ، وكيف سيتم تحليلها أو عرضها ، ومدى الدقة التي تحتاجها. بالنسبة إلى تطبيق بسيط يعرض مواقع النقاط أو المسارات الصغيرة الحجم والمناطق على خريطة Google ، ربما يمكنك تجاهل المشكلة بأمان. ربما يكون من الأسهل ببساطة استخدام مصنع RGeo الكروي غير المسقط ، ونوع "الجغرافيا" إذا كنت تستخدم PostGIS. يقوم نظام خرائط Google تلقائيًا بتحويل إحداثيات خطوط الطول والعرض إلى إحداثيات خريطة مسقطة عندما يعرض العلامات والمضلعات. تذكر مشكلة فانكوفر إلى فرانكفورت ، مع ذلك: إذا عرضت خطًا أو مضلعًا كبيرًا جدًا ، فقد لا تكون الجوانب المستقيمة كما هو معروض على خريطة Google مستقيمة على الأرض المنحنية الفعلية ، ويتم تمثيل LineString على أنها جغرافية غير متوقعة يجب ألا يظهر الكائن مباشرة على الخريطة. إذا كانت الكائنات الخاصة بك تغطي مساحات كبيرة من الكرة الأرضية ، أو للحصول على دقة أفضل أو تطبيقات أكثر تعقيدًا ، فستحتاج إلى الانتباه بشكل واضح إلى الإسقاطات.

4.3 المعلمات الجيوديسية والإسقاط

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

ببساطة ، هناك نظام إحداثيات أكثر من مجرد النوع: مركزية الأرض ، أو جغرافيًا ، أو متوقّعًا. بالنسبة لنظام إحداثيات مركزية الأرض ، نعلم أنه يتمركز في مركز الأرض ، ولكن أين يكون مركز الارض؟ إلى أي اتجاه تشير المحاور؟ وهل نقيس الوحدات بالأمتار ، أو بالأميال ، أو بالسنوات الضوئية؟ بالنسبة لنظام إحداثيات جغرافي ، نحتاج مرة أخرى إلى مركز واتجاه (أي أين يقع خط "خط الطول صفر"؟) ، لكننا نحتاج أيضًا إلى تحديد أي "خط العرض". خط العرض الشائع الاستخدام هو "خط العرض الجيوديسي" ، وهو الزاوية بين خط الاستواء وما هو طبيعي (أي عمودي) على سطح الأرض. هذا يعني أنه يعتمد على نموذج المرء لسطح الأرض ، سواء كنت تستخدم كرة أو شكل إهليلجي مسطح ، ومقدار التسطيح الذي تختاره. قد يكون للموقع نفسه على سطح الأرض خطوط عرض مختلفة اعتمادًا على النظام الذي تستخدمه! بالنسبة للأنظمة المسقطة ، لا نحتاج فقط إلى تحديد الإسقاط الذي يجب استخدامه (وهناك المئات معرّف) ، ولكننا نحتاج أيضًا إلى معرفة أي نظام جغرافي (خطوط الطول والعرض) نبدأ منه. وهذا يعني ، نظرًا لأن إسقاط الخريطة هو وظيفة تعيين خطوط الطول / العرض إلى الإحداثيات المسطحة ، فنحن بحاجة إلى التحديد أي خطوط العرض والطول.

لتحديد نظام إحداثيات بشكل كامل ، إذن ، يتم تضمين عدد من المعلمات. فيما يلي أصف بإيجاز المعايير الرئيسية وما تعنيه:

بيضاوي: (يسمى أيضًا ملف كروي) المجسم الإهليلجي هو تقريب لشكل الأرض ، محددًا بطول نصف المحور الرئيسي، أو نصف القطر عند خط الاستواء (يقاس بالأمتار) و التسطيح العكسي النسبة ، المُعرَّفة على أنها النسبة بين المحور شبه الرئيسي ، والفرق بين المحاور شبه الرئيسية وشبه الصغيرة. لاحظ أن الأرض ليست بيضاويًا حقيقيًا ، وذلك لأن الانتفاخ الناتج عن الجاذبية والطرد المركزي لا يتم حلهما تمامًا بواسطة شكل بيضاوي ، وبسبب التغيرات المحلية في الجاذبية بسبب سلاسل الجبال الكبيرة ، على سبيل المثال. ومع ذلك ، يشيع استخدام الشكل الإهليلجي لتطبيقات رسم الخرائط. إن الشكل الإهليلجي مهم لأنه يحدد كيفية قياس خط العرض والمسار الذي سيتبعه خط "مستقيم" عبر سطح الأرض.

المسند: هذا موقع مرجعي يتم إجراء القياسات على أساسه. يوجد بشكل عام نوعان من البيانات: البيانات الأفقية ، التي تحدد أنظمة الإحداثيات الأفقية (مثل خطوط الطول والعرض) ، والمراجع الرأسية ، والتي تحدد نقطة "الارتفاع الصفري" التي يتم إجراء قياسات الارتفاع على أساسها.

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

المسند الرأسي WGS84 عبارة عن شكل بيضاوي وعر يمثل مستوى سطح البحر الاسمي لجميع أجزاء الأرض. يُعرف هذا الشكل أيضًا باسم الجيود.

يُعرَّف نظام الإحداثيات الجغرافي عمومًا بمرجع وخط طول رئيسي. يبدأ نظام الإحداثي المسقط من نظام إحداثيات جغرافي ويتضمن معلمات إضافية خاصة بالإسقاط.

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

ماذا عن خرائط Google و Bing؟ يستخدمون مزيجًا من نظامي إحداثيات مع إسقاط. تأخذ مدخلات API خطوط الطول والعرض في نظام إحداثيات WGS84. ومع ذلك ، فإن الخرائط نفسها هي إسقاطات Mercator (مع تعديل طفيف لتسهيل العمليات الحسابية) ، وبالتالي فإن تطبيقات الخريطة تحول الإحداثيات داخليًا. مرة أخرى ، يوفر Morten Nielsen المزيد من [وصف تفصيلي] (http://www.sharpgis.net/post/2007/07/27/The-Microsoft-Live-Maps-and-Google-Maps-project.aspx).

في معظم الظروف ، عندما تعمل مع البيانات الجغرافية في RGeo ، يمكنك على الأرجح استخدام إما المصنع الكروي (إذا كنت ترغب فقط في التعامل مع النقاط على الكرة) أو مصنع mercator البسيط (إذا كنت تريد التعامل مع الكائنات مثل ستظهر على خرائط Google أو Bing). ومع ذلك ، إذا كنت بحاجة إلى العمل مع الإسقاطات العشوائية ، فيمكنك استخدام Proj ، مكتبة C التي تفهم أنظمة الإحداثيات وتعالج العمليات الحسابية المعنية. يعرّف Proj صيغة لتحديد أنظمة الإحداثيات بناءً على المعلمات المذكورة أعلاه ، ويوفر تنفيذًا لتحويل الإحداثيات من نظام إحداثي إلى آخر. أصبح تركيبها أ بحكم الواقع اساسي.

يوفر RGeo غلافًا روبيًا حول واجهة Proj ، ويدمج المشروع في تمثيله للكائنات الهندسية. يمكنك استخدام صيغة Proj لتحديد النظام الإحداثي لبيانات الإدخال ، وإخبار RGeo بترجمته إلى نظام إحداثي مختلف للتحليل أو الإخراج. يمكن أيضًا تكوين مصانع RGeo الجغرافية بإسقاط معين باستخدام صيغة Proj ، والتحويل تلقائيًا بين خطوط الطول والعرض ونظام إحداثيات هذا الإسقاط. فمثلا:

4.5 أنظمة الإسناد المكاني ومجموعة بيانات EPSG

يحدد OGC أيضًا بناء جملة لتحديد أنظمة الإحداثيات ، مواصفات خدمات تحويل الإحداثيات. تحدد هذه المواصفات كلاً من نموذج كائن وتمثيل نصي معروف لأنظمة الإحداثيات والتحويلات. يوفر RGeo أيضًا دعمًا أساسيًا لهذه المواصفات ، حيث يمكنك إرفاق مواصفات نظام إحداثيات OGC بمصنع للإشارة إلى نظام الإحداثيات. ومع ذلك ، إذا كنت تريد أن يقوم RGeo بتحويل البيانات المكانية بين أنظمة الإحداثيات ، فيجب عليك استخدام بناء جملة Proj4.

أخيرًا ، يوجد أيضًا ملف بحكم الواقع قاعدة البيانات القياسية لأنظمة الإحداثيات والمعلمات ذات الصلة ، التي نشرتها EPSG (الآن لجنة الجيوماتكس OGP). هذه مجموعة من أنظمة الإحداثيات ، يتم تمييز كل منها برقم معرف معروف جيدًا ، بما في ذلك الأنظمة الجغرافية والمتوقعة. يمكنك تصفح قاعدة البيانات هذه ، بما في ذلك تمثيلات OGC و Proj4 ، على http://www.spatialreference.org/. يتم تضمين قاعدة البيانات هذه أيضًا كجدول في العديد من قواعد البيانات المكانية الشائعة بما في ذلك PostGIS و SpatiaLite. عادةً ما يتم استخدام رقم EPSG كمعرف SRID لتحديد نظام الإحداثيات للكائنات الهندسية المخزنة في قاعدة البيانات.

رقم EPSG الأكثر شيوعًا في الاستخدام هو 4326 ، والذي يحدد نظام إحداثيات WGS84 الجغرافي (خطوط الطول والعرض) على WGS84 الإهليلجي. في الواقع ، تعمل الإصدارات الحالية من PostGIS على تقييد الكائنات الجغرافية على SRID هذا. كن على علم ، مرة أخرى ، أن هذا نظام إحداثيات بيضاوي غير متوقع. إذا قمت بتحميل بيانات EPSG 4326 مباشرة ، على سبيل المثال ، تطبيق ديكارتى في RGeo ، فستعمل حقول البيانات الأساسية بشكل جيد ، لكن وظائف الحجم والمسافة ، بالإضافة إلى عمليات التحليل المكاني مثل التقاطعات ، قد تؤدي إلى نتائج مفاجئة أو غير صحيحة لأن لا يتطابق نظام إحداثيات البيانات مع كيفية تعامل RGeo معها.

قاعدة بيانات EPSG منتشرة في كل مكان بحيث يتم توزيعها بشكل شائع مع أنظمة قواعد البيانات المكانية مثل PostGIS و SpatiaLite ، كما هو موضح في القسم التالي. يستفيد RGeo من هذا من خلال توفير البحث التلقائي لنظام الإحداثيات من رقم EPSG. إذا كنت تستخدم إحدى قواعد البيانات المكانية هذه ، فلن تحتاج إلى معرفة التعريف الدقيق لنظام الإحداثيات فقط قم بتوفير رقم EPSG في حقل SRID ، وسيعرف مصنع RGeo كيفية إنشاء بناء جملة Proj4 الصحيح لإجراء تحويلات إحداثيات. يمكنك أيضًا إنشاء قواعد بيانات مخصصة لنظام الإسناد المكاني إذا كنت لا تريد استخدام قواعد البيانات القياسية المتوفرة.

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

كما رأينا ، توجد مجموعة متنوعة من الطرق لتسلسل العناصر الهندسية ، ولا سيما "نص معروف" وتنسيقات "ثنائية معروفة" OGC. إن أبسط طريقة لتخزين مثل هذه الكائنات في قاعدة بيانات ، إذن ، هي ببساطة إجراء تسلسل للكائن في blob. ومع ذلك ، لن يسمح لنا هذا بإجراء استعلامات بشروط تتعلق بالكائن نفسه. قد تحتاج التطبيقات النموذجية المستندة إلى الموقع إلى تشغيل استعلامات مثل "أعطني جميع المواقع في نطاق ميل واحد من موقع معين". هذا النوع من القدرة هو مجال قواعد البيانات المكانية.

5.1 الاستعلامات المكانية والفهارس المكانية

يحدد OGC المواصفات المتعلقة بـ SFS ، التي تصف امتدادات SQL لقاعدة البيانات المكانية. تتضمن هذه المواصفات جدولًا لأنظمة الإسناد المكاني (أي أنظمة الإحداثيات) التي يمكن أن تحتوي على تمثيلات OGC و Proj4 وجدول بيانات التعريف لأعمدة الهندسة التي تخزن معلومات مثل قيود النوع والأبعاد و srid. كما تحدد مجموعة من وظائف SQL التي يمكنك استدعاءها في استعلام. على سبيل المثال ، في قاعدة بيانات متوافقة ، للعثور على جميع الصفوف في "mytable" حيث يحتوي عمود القيمة الهندسية "geom" على بيانات ضمن 5 وحدات من الإحداثيات (10 ، 20) ، قد تتمكن من تشغيل استعلام مشابه لـ:

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

الفهارس المكانية أكثر تعقيدًا إلى حد ما من فهارس قاعدة البيانات النموذجية. يعتمد فهرس B-tree النموذجي على الترتيب العالمي للبيانات: حقيقة أنه يمكنك فرز القيم العددية في شجرة ثنائية وبالتالي إجراء عمليات بحث لوغاريتمية في الوقت. ومع ذلك ، لا يوجد ترتيب عالمي واضح للبيانات المكانية. هل يجب أن تأتي POINT (0 1) قبل POINT (1 0) أو بعدها؟ وكيف يقارن كل من هؤلاء مع LINESTRING (0 1 ، 1 0)؟ تتواجد البيانات المكانية في بعدين بدلاً من بعد واحد ، ويمكن أن تمتد نطاقات محدودة بالإضافة إلى نقاط متناهية الصغر ، وتصبح فكرة الترتيب العالمي غير محددة ، ولا تنطبق فهارس قاعدة البيانات العادية كما نرغب.

تتعامل قواعد البيانات المكانية مع مشكلة فهرسة البيانات المكانية بطرق مختلفة ، ولكن معظم التقنيات هي متغيرات في خوارزمية الفهرسة المعروفة باسم R-tree. لن أخوض في تفاصيل كيفية عمل شجرة آر هنا. للمهتمين ، أوصي بنص "قواعد البيانات المكانية مع التطبيق على نظم المعلومات الجغرافية" ، الذي يغطي مجموعة واسعة من القضايا المتعلقة بتنفيذ قاعدة البيانات المكانية الأساسية. لأغراضنا ، لاحظ فقط أنه بالنسبة لمجموعات البيانات الكبيرة ، من الضروري فهرسة أعمدة الهندسة ، وأن عملية إنشاء الفهرس قد تختلف عن تلك الخاصة بالأعمدة القياسية العادية. توفر الأقسام التالية بعض المعلومات الخاصة ببعض قواعد البيانات المكانية المشتركة.

تحتفظ MySQL بسمعتها المزدوجة باعتبارها على الأرجح أسهل قواعد البيانات العلائقية مفتوحة المصدر للإدارة ، ولكنها تميل إلى فقدان بعض الميزات والامتثال للمعايير. تحتوي الإصدارات الحديثة من MySQL على دعم العمود المكاني ، وهي سهلة الاستخدام للغاية: ما عليك سوى إنشاء عمود من النوع GEOMETRY أو POINT أو LINESTRING أو أي من أنواع OGC. يمكنك أيضًا إنشاء فهارس مكانية ببساطة عن طريق إضافة المُعدِّل SPATIAL إلى CREATE INDEX. لاحظ ، مع ذلك ، أنه اعتبارًا من MySQL 5.1 ، تدعم جداول MyISAM فقط الفهارس المكانية. إذا كنت تستخدم Innodb ، فيمكنك إضافة أعمدة مكانية ولكن لا يمكنك فهرستها.

تمثل MySQL البيانات داخليًا باستخدام متغير من WKB والذي تم تعديله قليلاً عن طريق إضافة 4 بايتات إضافية لتخزين SRID للكائن. يمكنك تفسير هذه البيانات مباشرة ، أو استخدام الوظائف المتوفرة للتحويل من وإلى WKB و WKT.

ما تفتقر إليه MySQL هو دعم معظم وظائف الهندسة المكانية المتقدمة مثل العوامل العلائقية (مثل ST_Intersects () و ST_Contains () وما إلى ذلك) ، لذلك لن تتمكن من إجراء حسابات هندسية معقدة باستخدام محرك قاعدة البيانات. سيتعين عليك فقط تحميل البيانات في تطبيقك واستخدام RGeo لإجراء هذه الحسابات. كما أنه لا يوفر أعمدة هندسة OGC المحددة أو جداول نظام الإسناد المكاني. نظرًا لعدم وجود الجدول السابق ، لن تتمكن من تحديد قيود على الأشكال الهندسية الخاصة بك بخلاف النوع: لن تتمكن من تقييد SRID لعمود ، ولن تتمكن الأعمدة من دعم إحداثيات Z و M. نظرًا لعدم وجود الجدول الأخير ، لا تستطيع MySQL إجراء تحويلات النظام الإحداثي بنفسها ، ولا تزودك بمجموعة بيانات EPSG القياسية لاستخدامك الخاص.

بشكل عام ، إذا كنت تستخدم MySQL لبقية تطبيقك ، وتحتاج فقط إلى إمكانات بيانات جغرافية مكانية بسيطة ، فمن السهل جدًا استخدام MySQL المكاني. فقط تأكد من أن الجدول الخاص بك يستخدم محرك MyISAM إذا كنت بحاجة إلى فهرسة الهندسة.

SpatiaLite هي مكتبة إضافية لقاعدة البيانات الشهيرة Sqlite. إنه قريب من تطبيق متوافق تمامًا مع مواصفات OGC SQL ، ولكن نتيجة لذلك ، يكون إدارته أكثر صعوبة من MySQL.

لتثبيت SpatiaLite ، يجب عليك تجميعها كمكتبة مشتركة ، ثم تحميل تلك المكتبة كملحق باستخدام واجهة برمجة تطبيقات sqlite المناسبة. يمنحك هذا الوصول إلى المجموعة الكاملة من وظائف SQL المكانية المحددة بواسطة OGC ، جنبًا إلى جنب مع مجموعة من وظائف الأداة لإدارة الأعمدة والفهارس المكانية بالإضافة إلى أعمدة الهندسة وجداول أنظمة الإسناد المكاني. تقوم وظائف الأداة المساعدة هذه تلقائيًا بإنشاء وإدارة الإدخالات المناسبة في جدول أعمدة الهندسة والمشغلات التي تفرض قيود النوع و SRID وتحافظ على الفهارس المكانية.

يتم تنفيذ الفهارس المكانية نفسها باستخدام امتداد Rtree الخاص بـ SpatiaLite ، وبالتالي فإن الاستعلامات التي تستخدم الفهرس المكاني تكون أكثر تعقيدًا في الكتابة. يجب عليك الانضمام إلى جدول Rtree ، أو استخدام استعلام متداخل:

تنسيق SpatiaLite الداخلي هو تنسيق ثنائي يعتمد بشكل فضفاض على WKB ، ولكنه يمتد ليشمل SRID ، بالإضافة إلى بعض بيانات مستطيل المحيط الداخلي لتسريع العمليات الحسابية. مثل MySQL ، يوفر SpatiaLite وظائف لتحويل هذه البيانات من وإلى WKB و WKT. لست واضحًا تمامًا بشأن هذا الأمر ، لكن لا يبدو أن SpatiaLite يدعم إحداثيات Z و M في هذا الوقت.

نظرًا لأن PostgreSQL هي قاعدة البيانات العلائقية مفتوحة المصدر الأكثر اكتمالًا (وتعقيدًا) ، لذا فإن مكتبة الوظائف الإضافية PostGIS هي أيضًا أكثر قواعد البيانات المكانية اكتمالًا وتعقيدًا التي أناقشها هنا. إنه تطبيق متوافق للغاية لمواصفات OGC SQL ، بما في ذلك جميع الوظائف والجداول المطلوبة. كما أنه يدعم الفهارس المكانية باستخدام تطبيق فهرس GiST (شجرة البحث المعمم) الخاص بـ PostgreSQL.

مثل SpatiaLite ، يتم تجميع PostGIS وتثبيته كمكتبة إضافية لقاعدة البيانات. كما هو الحال مع SpatiaLite ، يوفر PostGIS مجموعة من الوظائف المساعدة لإدارة الأعمدة المكانية وتحديث جدول أعمدة الهندسة. ومع ذلك ، فإن فهارس PostGIS مدمجة ، وبالتالي تستخدم صيغة إنشاء الفهرس الأكثر تقليدية. مثل SpatiaLite ، يوفر PostGIS جدول أنظمة مرجعية مكانية يمكنك من خلاله البحث عن أكواد EPSG والحصول على تمثيلات Proj4 و OGC لأنظمة الإحداثيات.

يوفر PostGIS نوعين من الأعمدة المكانية: الهندسة والجغرافيا. يفترض الأول نظام إحداثيات مسطح ويقوم بإجراء حسابات هندسية إقليدية / ديكارتية باستخدام أي نظام إحداثيات EPSG تختاره.تم تصميم الأخير خصيصًا لأنظمة الإحداثيات الجغرافية (خطوط الطول والعرض). يقوم بإجراء حسابات على شكل كروي ويعمل فقط مع EPSG 4326 ومع ذلك ، لا يتم تنفيذ بعض الوظائف الأكثر تقدمًا لأن الحسابات المعنية ستكون معقدة بشكل كبير. عند إنشاء عمود مكاني في PostGIS ، ستحتاج إلى تحديد ما إذا كنت تريد استخدام نوع الهندسة أو نوع الجغرافيا.

تستخدم PostGIS كتنسيق داخلي لها متغيرًا من WKB يُعرف باسم EWKB. يوفر هذا المتغير دعمًا لإحداثيات Z و M بالإضافة إلى قيم SRID المضمنة. تحدد PostGIS أيضًا تنسيق EWKT المقابل مضيفًا دعم Z و M و SRIDs إلى WKT ، وتوفر وظائف التحويل. يتم استخدام متغيرات EWKB و EWKT بشكل شائع ولذا فهي مدعومة من قبل محللي WKB و WKT في RGeo.

5.5 تكامل RGeo ActiveRecord

يوفر RGeo دعمًا إضافيًا لتطبيقات الويب المبنية على Ruby On Rails أو الأطر المماثلة التي تستخدم مكتبة ActiveRecord ، في شكل مجموعة من محولات اتصال ActiveRecord لقواعد البيانات المكانية المتنوعة التي قمنا بتغطيتها. تصنف محولات الاتصال هذه محولات اتصال قاعدة بيانات المخزون ، وتضيف دعمًا لأنواع البيانات الهندسية RGeo. يمكنك إنشاء أعمدة وفهارس مكانية باستخدام امتدادات لوظائف تعريف مخطط ActiveRecord ، وستظهر الحقول المناسبة في كائنات ActiveRecord ككائنات بيانات مكانية RGeo. تقوم بعض هذه المحولات أيضًا بتعديل مهام rake الخاصة بـ ActiveRecord للمساعدة في أتمتة عملية إنشاء قواعد البيانات المكانية والحفاظ عليها. ربما يكون استخدام أحد محولات الاتصال هو أسهل طريقة لدمج تطبيق ريلز الخاص بك مع قاعدة بيانات مكانية.

يتم توفير محولات ActiveRecord المكانية الخاصة بـ RGeo في أحجار كريمة منفصلة ، تم تسميتها وفقًا للاتفاقية الموصى بها. هذه هي أسماء محولات الاتصال هذه:

  • mysqlspatial: تصنيفات فرعية لمحول mysql وإضافة دعم لأنواع MySQL المكانية. متاح كملف Activerecord-mysqlspatial- محول جوهرة.
  • mysql2spatial: تصنيفات فرعية لمحول mysql2 وإضافة دعم لأنواع MySQL المكانية. متاح كملف Activerecord-mysql2spatial- محول جوهرة.
  • مكاني: تصنيفات فرعية لمحول sqlite3 وإضافة دعم لتمديد SpatiaLite. متاح كملف Activerecord-spatialite- محول جوهرة.
  • postgis: فئات فرعية لمحول postgresql ويضيف دعمًا لتمديد PostGIS. متاح كملف Activerecord-postgis- محول جوهرة.

5.6 قواعد بيانات SQL التجارية وقواعد البيانات غير SQL

تتضمن قواعد البيانات العلائقية التجارية الرئيسية أيضًا مستويات مختلفة من الدعم لمواصفات OGC SQL. تتضمن الإصدارات الأخيرة من قاعدة بيانات Oracle الموقرة Oracle Spatial ، كما يشتمل أحدث خادم SQL من Microsoft على أدوات البيانات المكانية. لم تتح لي الفرصة لتقييم الأدوات المكانية في قواعد البيانات التجارية هذه ، على الرغم من أنني سمعت عنها وصفها بأنها "قوية ، لكنها متقلبة المزاج". لا يتوفر لدى RGeo حتى الآن دعم ActiveRecord مباشر لـ Oracle أو SQL Server المكاني.

توفر العديد من قواعد بيانات "NoSQL" درجات مختلفة من الدعم المحدود للبيانات الجغرافية المكانية. نظرًا لأن قواعد البيانات هذه تتجنب عمدًا معيار SQL ، فلا توجد واجهة قياسية محددة من OGC لقواعد البيانات هذه ، وبالتالي ستحتاج إلى دراسة وثائق قاعدة البيانات الفردية للحصول على فكرة عن القدرات وواجهة برمجة التطبيقات. لا توفر RGeo حتى الآن دعمًا مباشرًا للتكامل لقواعد البيانات غير العلائقية ، ولكن في معظم الحالات ، لا ينبغي أن يكون من الصعب جدًا كتابة الكود اللاصق بنفسك.

يوفر MongoDB دعمًا محدودًا لتخزين بيانات النقاط وفهرستها. في سلسلة الإصدارات الثابتة الحالية (1.8.x) ، يمكنك تخزين حقل نقطة كزوج من خطوط الطول والعرض ، وإجراء عمليات البحث الأساسية عن التقارب والحدود. لا يدعم بيانات LineString أو Polygon. بقدر ما يمكنني تحديده ، يستخدم MongoDB نظام فهرسة بسيطًا يعتمد على التجزئة الجغرافية ، مما يحد أيضًا من قدرته على دعم البيانات غير النقطية.

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

6. تكامل خدمة الموقع

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

6.1 ملفات الأشكال ومجموعات البيانات المكانية

ESRI هي واحدة من أقدم وأشهر شركات نظم المعلومات الجغرافية ، حيث تقوم بتطوير مجموعة من التطبيقات بما في ذلك ArcGIS الموقر. أنشأ ESRI أيضًا ملف Shapefile ، وهو تنسيق ملف بيانات جغرافي مكاني أصبح ملف بحكم الواقع قياسي على الرغم من إرثه وخصائصه المحرجة إلى حد ما. اليوم ، يتم توزيع العديد من مجموعات البيانات الجغرافية المكانية المتاحة على نطاق واسع كملفات أشكال.

يتم تحديد تنسيق ملف الشكل في ورقة بيضاء ESRI. يتكون عادةً من ثلاثة ملفات: الملف الرئيسي ".shp "يحتوي على البيانات الهندسية الفعلية ، ملف فهرس مطابق".shx "يوفر إزاحات في ملف .shp لدعم الوصول العشوائي ، وملف مناظر" * .dbf "بتنسيق dBASE يخزن سمات عشوائية لسجلات الأشكال. يمكن للعديد من أنظمة GIS قراءة و / أو كتابة ملفات الأشكال. يمكن لـ SpatiaLite معالجة شكل مثل "جدول افتراضي" خارجي. وحدة RGeo اختيارية ، RGeo :: Shapefile (يتم توزيعها على أنها جوهرة rgeo-shapefile) قراءة ملفات الأشكال وفضح محتوياتها كأنواع بيانات هندسية لـ RGeo.

6.2 GeoJSON والخدمات المستندة إلى الموقع

أصبح الموقع سمة مشتركة لخدمات الويب أيضًا. معيار ناشئ في ترميز البيانات الجغرافية في خدمة الويب هو GeoJSON ، وهو تنسيق بيانات جغرافية مكانية يعتمد على JSON. يمكن لـ GeoJSON ترميز أي من أنواع هندسة OGR ، جنبًا إلى جنب مع السمات ، والمربعات المحيطة ، ومواصفات نظام الإحداثيات. SimpleGeo هي واحدة من العديد من واجهات برمجة التطبيقات عالية المستوى القائمة على الموقع والتي تستخدم الآن GeoJSON. توفر RGeo أيضًا وحدة نمطية اختيارية RGeo :: GeoJSON (يتم توزيعها على أنها جوهرة رجو جيوجسون) يمكنه قراءة وكتابة هذا التنسيق.

تشمل التنسيقات الشائعة الأخرى التي يمكن استخدامها بواسطة خدمات الويب GeoRSS ، وهو امتداد لـ RSS و Atom لوضع علامات جغرافية على إدخالات موجز RSS ، و KML ، وهي لغة ترميز قائمة على XML للمعلومات الجغرافية تم تطويرها في الأصل بواسطة Google وتم اعتمادها مؤخرًا كمعيار OGC. توفر مكتبة GeoRuby دعمًا أوليًا لهذه التنسيقات. RGeo لم تفعل ذلك بعد ، ولكن الوحدات الاختيارية المناسبة موجودة في قائمة المهام.

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

في وقت كتابة هذا التقرير ، بدأ عدد من المكتبات والأدوات الجغرافية المكانية مفتوحة المصدر في النضج. بالنسبة لمطوري Ruby and Rails ، تعد مكتبة RGeo واحدة من هذه الأدوات الناشئة ، وتمثل خطوة مهمة نحو دعم الجيل التالي من التطبيقات الجغرافية المكانية.


تطبيق .NET في C #

في وقت كتابة هذا التقرير ، كانت هناك بعض الخطوات اليدوية التي كان علي القيام بها للحصول على مثال عملي. الأول كان تنفيذ ملف init_spatialite-2.3.sql الذي يأتي مع SpatiaLite لإنشاء قاعدة بيانات بجداول النظام الضرورية وبيانات SRID لدعم المعالجة المكانية.

نحتاج بعد ذلك إلى تهيئة ملحق libspatialite (المضمن في تنزيل SpatiaLite) عن طريق استدعاء SELECT load_extension (& # 8216libspatialite-2.dll & # 8217). لقد وجدت أنه كان علي أن أحصل على dll على نظام windows class PATH. في C # يمكننا القيام بذلك على سبيل المثال مثل هذا:


بيانات اختبار موقع العمل

أنا أعمل من خلال كتاب يتعامل مع تطبيقات MEAN. وفي الكتاب يتعامل مع البيانات الجغرافية المكانية وينشئ مراجعة للشركات (فكر في: Yelp. ابحث عن الشركات القريبة من موقع ما ثم حدد ، شاهد المراجعات وأضف المراجعات الخاصة بك. مثير جدًا.).

المشكلة التي أواجهها هي أن الكتاب لا يوفر حقًا مجموعة بيانات جيدة. أو بيانات فعلية على الإطلاق - مجرد أمثلة قليلة جدًا وكيفية إنشاء المزيد.

إعطاء موقع - قل ولاية: ديلاوير ، كاليفورنيا ، أستراليا. أو نقطة مركزية على الخريطة. أو "BBOX". ما هو أفضل مكان للحصول على مجموعة بيانات من:

الاسم التجاري
تبوك
ساعات العملية
طويل
لات

يمكنني التلاعب بالأجزاء المفقودة تمامًا (ساعات العمل والأشياء الأخرى غير المدرجة هنا والتي يعرضها التطبيق حول "الأعمال") ويمكنني تدليك البيانات في تدفق إدخال لقاعدة البيانات - لذلك أنا قلق أكثر بشأن البيانات الأولية على عكس التنسيق / الإخراج: أرغب في الحصول على مجموعة بيانات واقعية حتى لو كانت قديمة - وهذه هي الأجزاء "الأساسية" لما هو مطلوب للأمثلة في الكتاب.

قد يكون لدى OpenStreetMaps ما أريده ، لكن الخيارات شاقة ولا يبدو أنني أتخلص من الضوضاء. هل ما أريده هناك ولا أراه؟ أو هل هناك أي مجموعات بيانات أخرى أفضل - واقعية إن لم تكن "حقيقية" أو "حالية".

(ملاحظة: أنا في العمل حاليًا. لدي مجموعة بيانات في المنزل لا يمكنني العثور عليها هنا على ما يبدو تحتوي على أنشطة تجارية من نوع "العطلات" - الفنادق ، والفنادق الصغيرة ، وما إلى ذلك ، وهي "قريبة" ولكنها ليست واسعة النطاق شامل كما أريد. سأضيف رابطًا إليه إذا كان بإمكاني العثور عليه أو عندما أصل إلى المنزل)

ملاحظة: رابط إلى فصل من الكتاب ، وهو مثال لصورة "صفحة المراجعة" التي أحاول جمع بيانات لها وعنصر بيانات واحد:

(السؤال الأول هنا ، لذا يرجى إعادة وضع العلامات واقتراح التعديلات وطلب التوضيحات)


شاهد الفيديو: spatialite gui