قراءة وكتابة البيانات المكانية

يسرد الجدول التالي تنسيقات الملفات المكانية المعتمدة لعمليات القراءة والكتابة باستخدام الوحدة النمطية Spatial IO.

تنسيق البيانات قراءة الكتابة
GeoJSON
GeoRSS
GML
GPX
KML
KMZ
CSV المكاني
نص معروف

توضح تلك الأقسام التالية جميع الأدوات المختلفة لقراءة وكتابة البيانات المكانية باستخدام وحدة الإدخال/الإخراج المكانية.

قراءة البيانات المكانية

atlas.io.read الدالة هي الدالة الرئيسية المستخدمة لقراءة تنسيقات البيانات المكانية الشائعة مثل ملفات KML وGPX و GeoRSS و GeoJSON و CSV ذات البيانات المكانية. يمكن لهذه الدالة أيضا قراءة الإصدارات المضغوطة من هذه التنسيقات، كملف zip أو ملف KMZ. تنسيق ملف KMZ هو إصدار مضغوط من KML يمكن أن يتضمن أيضًا أصولًا مثل الصور. بدلًا من ذلك، يمكن أن تأخذ وظيفة القراءة عنوان URL الذي يشير إلى ملف بأي من هذه التنسيقات. يجب استضافة عناوين URL على نقطة نهاية CORS ممكنة، أو يجب توفير خدمة وكيل في خيارات القراءة. يتم استخدام خدمة الوكيل لتحميل الموارد على المجالات التي لم يتم تمكين CORS فيها. ترجع دالة القراءة وعدًا بإضافة أيقونات الصور إلى الخريطة، وتعالج البيانات بشكل غير متزامن لتقليل التأثير على مؤشر ترابط واجهة المستخدم.

عند قراءة ملف مضغوط، إما كضغطة مضغوطة أو KMZ، بمجرد فك ضغطه، فإنه يبحث عن أول ملف صالح. على سبيل المثال، doc.kml، أو ملف بامتداد صالح آخر، مثل: .kml أو .xml أو geojson أو .json أو .csv أو .tsv أو .txt. بعد ذلك، يتم تحميل الصور المشار إليها في ملفات KML و GeoRSS في الخلفية لضمان إمكانية الوصول إليها. يمكن لبيانات الصور التي يتعذر الوصول إليها تحميل صورة احتياطية بديلة أو إزالتها من الأنماط. يتم تحويل الصور المستخرجة من ملفات KMZ إلى معرفات URI للبيانات.

النتيجة من دالة القراءة هي كائن SpatialDataSet. يوسع هذا الكائن فئة GeoJSON FeatureCollection. يمكن تمريره بسهولة إلى DataSource كما هو لعرض معالمه على الخريطة. SpatialDataSet لا يحتوي فقط على معلومات الميزات، ولكن يمكن أن يتضمن أيضا تراكبات KML الأرضية ومقاييس المعالجة والتفاصيل الأخرى كما هو موضح في الجدول التالي.

اسم الخاصية كتابة ‏‏الوصف
bbox BoundingBox مربع إحاطة لكافة البيانات في مجموعة البيانات.
features Feature[] معالم GeoJSON داخل مجموعة البيانات.
groundOverlays (atlas.layer.ImageLayer | atlas.layers.OgcMapLayer)[] صفيف KML GroundOverlays.
icons Record<string, string> مجموعة عناوين URL للأيقونات. المفتاح = اسم الأيقونة، القيمة = عنوان URL.
الخصائص أي معلومات الخصائص المقدمة على مستوى المستند لمجموعة بيانات مكانية.
stats SpatialDataSetStats إحصائيات حول المحتوى ووقت المعالجة لمجموعة بيانات مكانية.
type 'FeatureCollection' قيمة نوع GeoJSON للقراءة فقط.

أمثلة على قراءة البيانات المكانية

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

لقطة شاشة تعرض شبكة الانطباق على الخريطة.لقطة شاشة تعرض وصفا مفصلا لشبكة الانطباق على عينة الخريطة.

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

يوضح نموذج تحميل KML على الخريطة كيفية تحميل ملفات KML أو KMZ على الخريطة. للحصول على التعليمات البرمجية المصدر لهذه العينة، راجع تحميل KML على التعليمات البرمجية المصدر للخريطة.

لقطة شاشة تعرض خريطة مع تراكب أرضي KML.

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

//Read a file from a URL or pass in a raw data as a string.
atlas.io.read('https://nonCorsDomain.example.com/mySuperCoolData.xml', {
    //Provide a proxy service
    proxyService: window.location.origin + '/YourCorsEnabledProxyService.ashx?url='
}).then(async r => {
    if (r) {
        // Some code goes here . . .
    }
});

توضح القصاصة البرمجية التالية كيفية قراءة ملف محدد وعرضه على الخريطة. في هذه الحالة، تستخدم التعليمات البرمجية ملف CSV يحتوي على أعمدة بيانات مكانية. يجب إضافة مرجع إلى الوحدة النمطية خرائط Azure Spatial IO.


<!-- Add reference to the Azure Maps Spatial IO module. -->
<script src="https://atlas.microsoft.com/sdk/javascript/spatial/0/atlas-spatial.min.js"></script>

<script type="text/javascript">
var map, datasource, layer;

//a URL pointing to the CSV file
var delimitedFileUrl = "https://s3-us-west-2.amazonaws.com/s.cdpn.io/1717245/earthquakes_gt7_alltime.csv";

function InitMap()
{
  map = new atlas.Map('myMap', {
    center: [-73.985708, 40.75773],
    zoom: 12,
    view: "Auto",

    //Add authentication details for connecting to Azure Maps.
    authOptions: {
      // Get an Azure Maps key at https://azuremaps.com/.
      authType: 'subscriptionKey',
      subscriptionKey: '{Your-Azure-Maps-Subscription-key}'
    },
  });    

  //Wait until the map resources are ready.
  map.events.add('ready', function () {
    //Create a data source and add it to the map.
    datasource = new atlas.source.DataSource();
    map.sources.add(datasource);

    //Add a simple data layer for rendering the data.
    layer = new atlas.layer.SimpleDataLayer(datasource);
    map.layers.add(layer);

    //Read a CSV file from a URL or pass in a raw string.
    atlas.io.read(delimitedFileUrl).then(r => {
      if (r) {
      //Add the feature data to the data source.
      datasource.add(r);

      //If bounding box information is known for data, set the map view to it.
      if (r.bbox) {
        map.setCamera({
        bounds: r.bbox,
        padding: 50
        });
      }
      }
    });
  });
}
</script>

لقطة شاشة تعرض خريطة تم إنشاؤها من ملف CSV.

كتابة البيانات المكانية

هناك دالتان رئيسيتان للكتابة في وحدة الإدخال/الإخراج المكانية. تنشئ دالة atlas.io.write سلسلة، بينما تقوم دالة atlas.io.writeCompressed بإنشاء ملف zip. سيحتوي الملف zip المضغوط على ملف نصي يحتوي على البيانات المكانية فيه. ترجع كلتا الدالتين وعدًا بإضافة البيانات إلى الملف. ويمكن لكلتيهما كتابة أي من البيانات التالية: SpatialDataSetأو DataSourceأو ImageLayerأو OgcMapLayerأو مجموعة المعالم أو المعالم أو الهندسة أو صفيف من أي مجموعة من أنواع البيانات هذه. عند الكتابة باستخدام أي من الدالتين، يمكنك تحديد تنسيق الملف المطلوب. إذا لم يتم تحديد تنسيق الملف، فستكتب البيانات ك KML.

نموذج خيارات كتابة البيانات المكانية هو أداة توضح معظم خيارات الكتابة التي يمكن استخدامها مع الدالةatlas.io.write. للحصول على التعليمات البرمجية المصدر لهذه العينة، راجع التعليمات البرمجية المصدر لخيارات كتابة البيانات المكانية.

لقطة شاشة تعرض عينة خيارات كتابة البيانات المكانية التي توضح معظم خيارات الكتابة المستخدمة مع وظيفة atlas.io.write.

مثال على كتابة البيانات المكانية

يتيح لك سحب الملفات المكانية وإفلاتها على عينة الخريطة سحب ملف KML أو KMZ أو GeoRSS أو GPX أو GML أو GeoJSON أو CSV وإسقاطه على الخريطة. للحصول على التعليمات البرمجية المصدر لهذه العينة، راجع سحب الملفات المكانية وإفلاتها في التعليمات البرمجية لمصدر الخريطة.

لقطة شاشة تعرض خريطة مع لوحة إلى يسار الخريطة تمكنك من سحب وإفلات ملف KML أو KMZ أو GeoRSS أو GPX أو GML أو GeoJSON أو CSV على الخريطة.

يمكنك اختياريا توفير خدمة وكيل للوصول إلى الأصول عبر المجالات التي لم يتم تمكين CORS لها. توضح هذه القصاصة البرمجية من التعليمات البرمجية أنه يمكنك دمج خدمة وكيل:

atlas.io.read(data, {
    //Provide a proxy service
    proxyService: window.location.origin + '/YourCorsEnabledProxyService.ashx?url='
}).then(
    //Success
    function(r) {
        //some code goes here ...
    }
);

قراءة نص معروف (WKT) وكتابته

نص معروف (WKT) هو معيار Open Geospatial Consortium (OGC) لتمثيل الهندسة المكانية كنص. تدعم العديد من الأنظمة الجغرافية المكانية WKT، مثل Azure SQL وAzure PostgreSQL باستخدام المكون الإضافي PostGIS. مثل معظم معايير OGC، يتم تنسيق الإحداثيات على أنها "خطوط الطول والعرض" لتتماشى مع اصطلاح "x y". على سبيل المثال، يمكن كتابة نقطة عند خط الطول -110 وخط العرض 45 كـ POINT(-110 45)باستخدام تنسيق WKT.

يمكن قراءة النص المعروف باستخدام الدالة atlas.io.ogc.WKT.read، وكتابته باستخدام الدالة atlas.io.ogc.WKT.write.

أمثلة على قراءة نص معروف (WKT) وكتابته

يوضح نموذج Read Well Known Text كيفية قراءة السلسلة POINT(-122.34009 47.60995) النصية المعروفة وعرضها على الخريطة باستخدام طبقة فقاعة. للحصول على التعليمات البرمجية المصدر لهذه العينة، راجع قراءة التعليمات البرمجية لمصدر النص المعروف جيدا.

لقطة شاشة توضح كيفية قراءة النص المعروف جيدا (WKT) ك GeoJSON وعرضه على خريطة باستخدام طبقة فقاعة.

يوضح نموذج النص المعروف جيدا للقراءة والكتابة كيفية قراءة وكتابة سلاسل النص المعروف جيدا (WKT) ك GeoJSON. للحصول على التعليمات البرمجية المصدر لهذه العينة، راجع قراءة وكتابة التعليمات البرمجية لمصدر النص المعروف جيدا.

لقطة شاشة تعرض العينة التي توضح كيفية قراءة وكتابة سلاسل النص المعروف جيدا (WKT) ك GeoJSON.

قراءة GML وكتابته

GML هو مواصفات ملف XML مكانية غالبا ما تستخدم كملحق لمواصفات XML الأخرى. يمكن كتابة بيانات GeoJSON كـ XML باستخدام علامات GML باستخدام الدالة atlas.io.core.GmlWriter.write. يمكن قراءة XML الذي يحتوي على GML باستخدام الدالة atlas.io.core.GmlReader.read. تحتوي دالة القراءة على خيارين:

  • خيار isAxisOrderLonLat- يمكن أن يختلف ترتيب محور الإحداثيات "خط العرض، خط الطول" أو "خط الطول، خط العرض" بين مجموعات البيانات، ولا يتم تعريفه جيدًا دائمًا. بشكل افتراضي، يقرأ قارئ GML بيانات الإحداثيات على أنها "خط عرض، خط الطول"، ولكن تعيين هذا الخيار لقراءته true ك "خط الطول، خط العرض".
  • خيار propertyTypes - هذا الخيار هو جدول بحث عن قيمة المفتاح حيث يكون المفتاح هو اسم خاصية في مجموعة البيانات. القيمة هي نوع العنصر الذي سيتم تحويل القيمة إليه عند التحليل. قيم النوع المدعومة هي: stringو number وboolean وdate. إذا لم تكن الخاصية في جدول البحث أو لم يتم تعريف النوع، يتم تحليل الخاصية كسلسلة.

atlas.io.read يتم تعيين الدالة افتراضيا إلى الدالة atlas.io.core.GmlReader.read عندما تكتشف أن بيانات الإدخال هي XML، ولكن البيانات ليست واحدة من تنسيقات XML المكانية المعتمدة الأخرى.

GmlReader إحداثيات التحليلات التي تحتوي على أحد سريDs التالية:

  • EPSG:4326 (المفضل)
  • EPSG:4269، EPSG:4283، EPSG:4258، EPSG:4308، EPSG:4230، EPSG:4272، EPSG:4271، EPSG:4267، EPSG:4608، EPSG:4674 ربما بهامش خطأ صغير.
  • EPSG:3857، EPSG:102100، EPSG:3785، EPSG:900913، EPSG:102113، EPSG:41001، EPSG:54004

المزيد من الموارد

تعرّف على المزيد حول الفئات والأساليب المُستخدمة في هذه المقالة:

الدالات الثابتة atlas.io

SpatialDataSet

SpatialDataSetStats

GmlReader

GmlWriter

دالات atlas.io.ogc.WKT

الاتصال بخدمة WFS

الاستفادة من العمليات الأساسية

تفاصيل تنسيق البيانات المدعومة

الخطوات التالية

راجع المقالات التالية للحصول على المزيد من نماذج التعليمات البرمجية لإضافتها إلى الخرائط الخاصة بك:

إضافة طبقة خريطة OGC