إنشاء تراكبات مميزة باستخدام gdal2tiles

Mano Marks، فريق واجهات برمجة تطبيقات Google الجغرافية
أيلول (سبتمبر) 2009

الغرض

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

المقدمة

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

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

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

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

من الممكن إجراء ذلك يدويًا باستخدام تطبيق لتعديل الرسومات مثل برنامج Adobe Photoshop أو GIMP، ولكن يمكن أن يكون هذا معقدًا ومملًا كما أنه عرضة للأخطاء. هناك أيضًا عدد من التطبيقات الجيدة المتوفرة في المقام الأول لنظام التشغيل Windows، مثل SuperOverlay وArc2Earth وMapCruncher بالإضافة إلى CrunchUp2KML.

إذا كنت تريد تشغيل العملية تلقائيًا، أو إضافة وظائف إلى تطبيقك، فسيوفر لك GDAL مجموعة غنية من الأدوات للعمل باستخدام خطوط نقطية وبيانات المتجه. تتناول هذه المقالة خيارات سطر الأوامر. ومع ذلك، يمكن أيضًا دمج المكتبات بسهولة في تطبيقاتك. بالنسبة إلى هذا البرنامج التعليمي، ستستخدم الأدوات gdalinfo وgdal_translate وgdalwarp وgdal2tiles. الناتج النهائي هو تركيب فائق.

خطوات سطر الأوامر

هناك ست خطوات لاستخدام GDAL في سطر الأوامر.

  1. تنزيل GDAL وتثبيته
  2. تنزيل صورة
  3. استخدام gdalinfo لتحديد معلومات حول الصورة
  4. استخدام gdal_translate للإشارة إلى الصورة جغرافيًا
  5. استخدام gdalwarp لتغيير طريقة إسقاط الصورة
  6. استخدام gdal2tiles لتقسيم الصورة إلى أجزاء وإنشاء رمز KML المرتبط

الخطوة 1: تنزيل GDAL وتثبيته

ابدأ بتنزيل GDAL وتثبيته كما هو مفصَّل هنا.

الخطوة 2: تنزيل صورة

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

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

الخطوة 3: الحصول على معلومات حول الصورة

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

توفر GDAL أداة مفيدة، gdalinfo، لالتقاط هذه المعلومات. في سطر الأوامر، اكتب gdalinfo filename، مع استبدال filename بالمسار إلى الملف. من المفترض أن تظهر لك نتيجة بالشكل التالي:

Driver: JPEG/JPEG JFIF
Files: world_200401.jpg
Size is 21600, 10800
Coordinate System is `'
Image Structure Metadata:
  SOURCE_COLOR_SPACE=YCbCr
  INTERLEAVE=PIXEL
  COMPRESSION=JPEG
Corner Coordinates:
Upper Left  (    0.0,    0.0)
Lower Left  (    0.0,10800.0)
Upper Right (21600.0,    0.0)
Lower Right (21600.0,10800.0)
Center      (10800.0, 5400.0)
Band 1 Block=21600x1 Type=Byte, ColorInterp=Red
  Image Structure Metadata:
    COMPRESSION=JPEG
Band 2 Block=21600x1 Type=Byte, ColorInterp=Green
  Image Structure Metadata:
    COMPRESSION=JPEG
Band 3 Block=21600x1 Type=Byte, ColorInterp=Blue
  Image Structure Metadata:
    COMPRESSION=JPEG

المعلومات المهمة في هذا البرنامج التعليمي هي الخطوط في أعلى اليسار وأسفل اليسار وأعلى اليمين وأسفل اليمين. يوضح لك هذا قيم وحدات البكسل والخطوط لكل زاوية. في هذه الحالة يكون الجزء العلوي الأيسر 0,0، في حين يكون أسفل اليمين 21600,10800.

الخطوة 4: الإشارة الجغرافية إلى الصورة

تعني الإشارة الجغرافية في هذه الحالة إنشاء بيانات وصفية تصف الموضع الجغرافي لكل جانب من جوانب الصورة. باستخدام المعلومات التي تم الحصول عليها في الخطوتين 3 وgdal_translate، يمكنك تحديد معلومات الإحالة الجغرافية للملف. يؤدي هذا إلى إنشاء ملف VRT من صورة world_200401.jpg، bluemarble1.vrt. ملفات VRT هي ملفات XML تحتوي على معلومات عن تحويل معين، وهي الخطوة gdal_translate في هذه الحالة. ستستخدمه مرة أخرى في الخطوة التالية لإنشاء مجموعتك النهائية من المربّعات. يتيح لك gdal_translate إنشاء أنواع متعددة من الملفات بما في ذلك تنسيقات ملفات الصور الرئيسية. يتيح لك استخدام مخرجات VRT إيقاف إنشاء ملفات الإخراج بشكل أساسي حتى الخطوة الأخيرة. ويؤدي ذلك إلى زيادة الكفاءة وتقليل وقت الانتظار للخطوات الفردية إذا كنت تستخدم سطر الأوامر. في ما يلي الأمر الذي ستنفّذه:

gdal_translate -of VRT -a_srs EPSG:4326 -gcp 0 0 -180 90 -gcp 21600 0 180 90 -gcp 21600 10800 180 -90 world_200401.jpg bluemarble1.vrt

هناك الكثير من المعلومات حول هذا السطر، لذلك تم تقسيمه هنا:

  • -of هو تنسيق الناتج، في هذه الحالة VRT.
  • يحدِّد -a_srs نظامًا مرجعيًا مكانيًا للملف. وهذا يخبر أي تطبيق يستهلكه بنظام الإحداثيات المستخدم. في هذه الحالة، يستخدم هذا النظام الموقع الإلكتروني EPSG:4326 الذي يستخدم نظام WGS84 نفسه، وهو نظام الإحداثي المستخدم في Google Earth.
  • -gcp، أو نقطة التحكم الأرضية، تعين إحداثيات لمواضع في الملف. في هذه الحالة، تحتاج إلى ثلاث نقاط فقط، نظرًا لأن الصورة مستطيلة وبالتالي يمكن تحديد النقطة الرابعة بسهولة. بالنسبة إلى -gcp، حدِّد gcp من خلال ضبط البكسل ثم رقم السطر، ثم خط الطول وخط العرض. ويتم فصل كل منها بمسافة.
  • آخر معلّمتَين هما الملف الأصلي والملف المستهدَف.

الخطوة 5: تشويه الصورة

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

وحتى تبدو الصورة صحيحة، يجب أن تشوهها لتتلاءم مع الكرة الأرضية. ولحسن الحظ توفر GDAL أداة رائعة لذلك أيضًا. ما عليك سوى كتابة gdalwarp -of VRT -t_srs EPSG:4326 bluemarble1.vrt bluemarble2.vrt. سيؤدي هذا إلى إنشاء ملف جديد، bluemarble2.vrt، يقدم بيانات وصفية حول إجراء الالتفاف.

الخطوة 6: إنشاء المربّعات

لقد أوشكت على الانتهاء، ولكن هذا الجزء سيستغرق وقتًا أطول. لإنشاء المربعات، اكتب gdal2tiles.py -p geodetic -k bluemarble2.vrt. تفرض -k نتيجة KML. سيؤدي هذا إلى إنشاء بنية دليل باستخدام تراكب فائق. ونظرًا لأنه يجب إنشاء كل ملف من ملفات الصور هذه على حدة، سيستغرق الأمر بعض الوقت لتشغيله. يمكنك الآن التقاط صور كبيرة والحصول على فنجان من القهوة أو أخذ قيلولة. عند الانتهاء، افتح doc.kml ولاحظ النتائج!

الخاتمة

يقدم هذا البرنامج التعليمي فقط شرحًا عما يمكن أن يفعله GDAL، ولكنه يوفر آلية ملائمة لإنشاء المربعات. تكون مكتبات GDAL الأساسية مكتوبة بلغة ++C، ولكنها توفر روابط للغة Perl وPython وVB6 وR وRuava وجافا وC#/NET. مما يعني أنه بإمكانك دمج GDAL بسهولة في تطبيقاتك. تمت أيضًا كتابة العديد من الأدوات، بما في ذلك gdal2tiles، بلغة Python، مما يسهل دمجها في تطبيقات Python. تتمتع gdal2tiles أيضًا بإمكانية إنشاء واجهة برمجة تطبيقات خرائط Google وصفحات Openالطبقات.