بيانات الموقع الجغرافي المكاني و GeoJSON في Azure Cosmos DB ل NoSQL

ينطبق على: NoSQL

يحتوي Azure Cosmos DB for NoSQL على وظائف جغرافية مكانية مضمنة لتمثيل الأشكال الهندسية أو المواقع/المضلعات الفعلية على الخريطة.

غالبا ما تتضمن البيانات الجغرافية المكانية استعلامات التقارب. على سبيل المثال، يتم الرد على السؤال "البحث عن جميع مواقع البيع بالتجزئة بالقرب من موقعي الحالي" باستخدام استعلام تقارب عبر كائن بيانات جغرافي مكاني متعدد.

تتضمن حالات الاستخدام الجغرافية المكانية الشائعة، على سبيل المثال لا الحصر:

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

مقدمة في البيانات المكانية

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

يدعم Azure Cosmos DB ل NoSQL نوعين من البيانات المكانية: نوع البيانات الهندسية ونوع البيانات الجغرافية .

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

أنواع البيانات المدعومة

يدعم Azure Cosmos DB ل NoSQL فهرسة بيانات النقطة الجغرافية المكانية التي يتم تمثيلها باستخدام مواصفات GeoJSON والاستعلام منها. تُعد هياكل بيانات GeoJSON دائماً كائنات JSON صالحة، لذا يمكن تخزينها والاستعلام عنها باستخدام Azure Cosmos DB بدون أي أدوات أو مكتبات متخصصة.

يدعم Azure Cosmos DB أنواع البيانات المكانية التالية:

  • Point
  • سلسلة الأسطر
  • مضلع
  • متعدد الأضلاع

النقاط

تشير النقطة إلى موضع واحد في الفضاء. في البيانات الجغرافية المكانية تمثل النقطة الموقع الدقيق، والذي يمكن أن يكون عنوان شارع لمتجر بقالة أو كشك أو سيارة أو مدينة. يتم تمثيل نقطة في GeoJSON (وAzure Cosmos DB ل NOSQL) باستخدام زوج الإحداثيات (خط الطول وخط العرض).

ضع في اعتبارك هذا المثال نقطة GeoJSON. خط الطول هو -122.12826822304672 وخط العرض هو 47.63980239335718.

{
  "type": "Point",
  "coordinates": [
    -122.12826822304672,
    47.63980239335718
  ]
}

تلميح

بالنسبة إلى نوع بيانات الجغرافيا، تحدد مواصفات GeoJSON خط الطول أولاً وخط العرض ثانياً. كما هو الحال في تطبيقات رسم الخرائط الأخرى، يعتبر خط الطول وخط العرض زاويتين ويتم تمثيلهما من حيث الدرجات. يتم قياس قيم خط الطول من Prime Meridian وهي بين -180 الدرجات والدرجات 180.0 ، ويتم قياس قيم خط العرض من خط الاستواء وهي بين -90.0 الدرجات والدرجات 90.0 .

بالنسبة لنوع بيانات الهندسة، تحدد مواصفات GeoJSON المحور الأفقي أولاً والمحور العمودي ثانياً.

يمكن تضمين أنواع البيانات المكانية في عنصر كما هو موضح في هذا المثال لعنصر مرفق يتضمن بيانات GeoJSON.

{
  "name": "Headquarters",
  "location": {
    "type": "Point",
    "coordinates": [
      -122.12826822304672,
      47.63980239335718
    ]
  },
  "category": "business-offices"
}

يفسر Azure Cosmos DB ل NoSQL الإحداثيات على أنها ممثلة وفقا للنظام المرجعي WGS-84. لمزيد من المعلومات، راجع تنسيق الأنظمة المرجعية.

LineStrings

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

في هذا المثال، يتم استخدام سلسلة خط لتمثيل خط مرسوم بين نقطتين.

{
  "type": "LineString",
  "coordinates": [
    [ 31.8, -5 ],
    [ 31.8, -4.7 ]
  ]
}

مضلعات

المضلع هو حدود النقاط المتصلة التي تشكل سلسلة خط مغلقة. تستخدم المضلعات بشكل شائع لتمثيل التكوينات الطبيعية مثل البحيرات أو السلطات السياسية مثل المدن والولايات.

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

في هذا المثال، يتم إنشاء مضلع عن طريق توصيل نقاط متعددة.

{
    "type":"Polygon",
    "coordinates":[ [
        [ 31.8, -5 ],
        [ 32, -5 ],
        [ 32, -4.7 ],
        [ 31.8, -4.7 ],
        [ 31.8, -5 ]
    ] ]
}

تلميح

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

متعدد المضلعات

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

فيما يلي مثال على MultiPolygon.

{
    "type":"MultiPolygon",
    "coordinates":[[[
            [52.0, 12.0],
            [53.0, 12.0],
            [53.0, 13.0],
            [52.0, 13.0],
            [52.0, 12.0]
        ]],
        [[
            [50.0, 0.0],
            [51.0, 0.0],
            [51.0, 5.0],
            [50.0, 5.0],
            [50.0, 0.0]
        ]]]
}

تنسيق النظم المرجعية

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

أكثر أنظمة CRS شيوعاً والمستخدمة اليوم هو النظام الجيوديسي العالمي WGS-84. تستخدم أجهزة GPS والعديد من خدمات الخرائط، بما في ذلك خرائط Google وواجهات برمجة تطبيقات خرائط Bing WGS-84. يدعم Azure Cosmos DB ل NoSQL فهرسة البيانات الجغرافية المكانية والاستعلام منها باستخدام WGS-84 CRS فقط.

إنشاء عناصر باستخدام البيانات المكانية

عند إنشاء عناصر تحتوي على قيم GeoJSON، تتم فهرستها تلقائيا باستخدام فهرس مكاني. تحدث هذه الفهرسة الافتراضية وفقا لنهج الفهرسة للحاوية. سيؤدي نهج الفهرسة الافتراضي، إذا لم يتم تحديده، إلى فهرسة بيانات GeoJSON بدقة. إذا كنت تعمل مع SDK بلغة مكتوبة ديناميكيا مثل Python أو Node.js، فيجب عليك إنشاء GeoJSON صالح.

var userProfileitem = {
    "id":"cosmosdb",
    "location":{
        "type":"Point",
        "coordinates":[ -122.12, 47.66 ]
    }
};

client.createitem(`dbs/${databaseName}/colls/${collectionName}`, userProfileitem, (err, created) => {
    // additional code within the callback
});

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