ایجاد ابر همپوشانی با gdal2tiles

Mano Marks، تیم Google Geo APIs
سپتامبر 2009

هدف، واقعگرایانه

این آموزش شما را با اصول اولیه ایجاد یک ابرپوشش ، مجموعه‌ای از همپوشانی‌های زمینی که از NetworkLinks مبتنی بر منطقه استفاده می‌کنند، با استفاده از ابزارهای منبع باز Geospatial Data Abstraction Library راهنمایی می‌کند.

معرفی

مرورگرهای جغرافیایی مانند Google Earth و Google Maps تصاویر ماهواره ای و کاشی های نقشه را در اختیار شما قرار می دهند. با این حال، گاهی اوقات ممکن است بخواهید از خود استفاده کنید. داده های تصویری یا شطرنجی به اشکال مختلف وجود دارد و کاربردهای زیادی دارد.

  • قرار دادن تصاویر ماهواره ای یا هوایی خود در یک geobrowser
  • قرار دادن نقشه های تاریخی در بالای تصاویر موجود، مانند لایه نقشه های رامزی در Google Earth
  • وارد کردن داده های GIS به صورت شطرنجی
  • قرار دادن تصاویر LIDAR یا مادون قرمز در geobrowser

یکی از مشکلات داده‌های شطرنجی با وضوح بالا، این است که برای نمایش آن‌ها به حافظه زیادی نیاز است. و اگر آن را از طریق شبکه بیرون می آورید، نگرانی های پهنای باند نیز دارید. برای رفع این مشکل، باید کاشی ایجاد کنید.

کاشی کاری فایل تصویر شما را به بسیاری از تصاویر مختلف تبدیل می کند که با مشاهده بارگیری می شوند. شما یک تصویر با وضوح پایین برای نمایش ایجاد می کنید در حالی که کاربر به سمت بیرون زوم شده است. در همان منطقه، چهار تصویر با وضوح بالاتر برای مشاهده نزدیکتر ایجاد می کنید. برای هر ناحیه ای که با یک تصویر پوشانده شده است، چهار تصویر با وضوح بالاتر برای بزرگنمایی نزدیکتر و غیره ایجاد می کنید. این روش به روش چهار درختی معروف است و نحوه کاشی شدن تصاویر برای Google Earth و Google Maps است. این فرآیند با جزئیات بیشتری در مقاله راهنمای توسعه‌دهنده KML در مورد مناطق توضیح داده شده است.

انجام این کار به صورت دستی با یک برنامه ویرایش گرافیکی مانند Adobe's PhotoShop یا GIMP امکان پذیر است، اما این می تواند پیچیده، خسته کننده و مستعد خطا باشد. همچنین تعدادی برنامه خوب در دسترس هستند، عمدتاً برای ویندوز، مانند 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 گرفته شده اند و تصویر زیبایی از زمین را از فضا ارائه می دهند. یکی از فایل های سمت راست پایین نوار ناوبری سمت راست را انتخاب کنید.

اگر از تصویر خود استفاده می‌کنید و می‌دانید که از قبل georectified شده است، می‌توانید به مرحله 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

اطلاعات مهم برای این آموزش خطوط Upper Left، Lower Left، Upper Right، Lower Right است. اینها مقادیر پیکسل و خط هر گوشه را به شما می گویند. سمت چپ بالا، در این مورد، در 0.0، و پایین سمت راست در 21600،10800 است.

مرحله 4: ارجاع جغرافیایی تصویر

ارجاع جغرافیایی در این مورد به معنای ایجاد ابرداده است که موقعیت جغرافیایی هر یک از گوشه های تصویر را توصیف می کند. با استفاده از اطلاعات به دست آمده در مرحله 3 و gdal_translate ، می توانید اطلاعات georeference را به فایل اختصاص دهید. این یک فایل 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، سیستم مختصات مورد استفاده گوگل ارث است.
  • -gcp یا نقطه کنترل زمین، مختصات را به موقعیت های فایل اختصاص می دهد. در این مورد، شما در واقع فقط به سه نقطه نیاز دارید، زیرا تصویر یک مستطیل است و بنابراین نقطه چهارم به راحتی قابل شناسایی است. برای -gcp ، gcp را با تنظیم پیکسل و سپس شماره خط، و سپس طول و عرض جغرافیایی تعریف کنید. هر یک از آنها با یک فضای جدا شده است.
  • دو پارامتر آخر فایل مبدا و فایل هدف هستند.

مرحله 5: تصویر را تار کنید

تصویر اصلی برای یک کره گرد ایجاد نشده است، بلکه به گونه ای ساخته شده است که صاف به نظر برسد. در اصطلاح GIS، طرح ریزی می شود، به این معنی که نمایشی دو بعدی از یک شی سه بعدی است. فرافکنی مستلزم تحریف تصویر است تا به نظر برسد که انتظار دارید یک تصویر صاف از زمین چگونه به نظر برسد.

برای اینکه آن را درست به نظر برسانید، باید تصویر را طوری تغییر دهید که با کره زمین مطابقت داشته باشد. خوشبختانه 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، Ruby، Java و C#/.NET ارائه می‌کنند، به این معنی که می‌توانید به راحتی GDAL را در برنامه‌های خود قرار دهید. همچنین، بسیاری از ابزارها، از جمله gdal2tiles ، به زبان پایتون نوشته شده‌اند و به راحتی می‌توان آن‌ها را در برنامه‌های پایتون گنجاند. gdal2tiles همچنین توانایی تولید صفحات Google Maps API و OpenLayers را دارد.