Membuat super-overlay dengan gdal2tiles

Mano Marks, Tim Google Geo API
September 2009

Tujuan

Tutorial ini membahas dasar-dasar pembuatan overlay super, sekumpulan overlay bumi yang menggunakan NetworkLinks berbasis region, menggunakan utilitas Library Abstraksi Data Geospasial open source.

Pengantar

Browser geografis seperti Google Earth dan Google Maps memberikan citra satelit dan ubin peta kepada Anda. Namun, terkadang Anda mungkin ingin menggunakannya sendiri. Data citra atau data raster tersedia dalam berbagai bentuk dan memiliki banyak kegunaan.

  • Menempatkan citra satelit atau udara sendiri ke dalam browser geografis
  • Menempatkan peta historis di atas citra yang ada, seperti lapisan Rumsey Maps di Google Earth
  • Mengimpor data GIS dalam bentuk raster
  • Menempatkan LIDAR atau citra inframerah di geobrowser

Salah satu masalah dengan data raster resolusi tinggi, adalah diperlukan banyak memori untuk menampilkannya. Dan jika Anda mendorongnya melalui net, Anda juga memiliki masalah bandwidth. Untuk mengatasi masalah tersebut, Anda harus membuat kartu.

Susun file membagi file gambar Anda menjadi berbagai gambar yang dimuat saat dimuat. Anda membuat satu gambar beresolusi rendah untuk ditampilkan saat pengguna diperkecil. Pada area yang sama, Anda membuat empat gambar beresolusi lebih tinggi untuk tampilan yang lebih dekat. Untuk setiap area yang diapit gambar, Anda dapat membuat empat gambar beresolusi lebih tinggi untuk zoom yang lebih dekat, dll. Ini dikenal sebagai metode quadtree, dan merupakan cara kartu ditampilkan untuk Google Earth dan Google Maps. Prosesnya dijelaskan secara lebih detail dalam artikel Panduan Developer KML tentang Wilayah.

Hal ini dapat dilakukan secara manual dengan aplikasi pengeditan grafis seperti Adobe Shopfoto atau GIMP, tetapi hal ini dapat menjadi rumit, membosankan, dan rentan terhadap error. Ada juga sejumlah aplikasi bagus yang tersedia, terutama untuk Windows, seperti SuperOverlay, Arc2Earth, dan MapCruncher yang dikombinasikan dengan CrunchUp2KML.

Jika Anda ingin mengotomatiskan proses atau menambahkan fungsi ke aplikasi Anda sendiri, GDAL, akan memberi Anda serangkaian alat yang lengkap untuk menggunakan data raster dan vektor. Artikel ini membahas opsi command line. Namun, library juga dapat dengan mudah dimasukkan ke dalam aplikasi Anda sendiri. Untuk tutorial ini, Anda akan menggunakan utilitas gdalinfo, gdal_translate, gdalwarp, dan gdal2tiles. Output utamanya adalah overlay super.

Langkah Command Line

Ada enam langkah untuk menggunakan GDAL di command line.

  1. Mendownload dan menginstal GDAL
  2. Mendownload gambar
  3. Menggunakan gdalinfo untuk menentukan informasi tentang gambar
  4. Menggunakan gdal_translate untuk melakukan georeferensi gambar
  5. Menggunakan gdalwarp untuk mengubah proyeksi gambar
  6. Gunakan gdal2tiles untuk membagi gambar menjadi ubin dan membuat kode KML terkait

Langkah 1: Download dan instal GDAL

Mulai dengan mendownload dan menginstal GDAL seperti yang dijelaskan di sini.

Langkah 2: Download gambar

Anda dapat menggunakan gambar apa pun. Ada sejumlah sumber data geografis di web. Anda dapat menggunakan salah satunya, tetapi Anda harus mengetahui batas gambar—lintang dan bujur setiap sudut gambar. Tutorial ini menggunakan gambar NASA Blue Marble, yang dapat didownload dari situs NASA. Gambar ini diambil pada tahun 2004 dan menyajikan gambar Bumi yang indah dari luar angkasa. Pilih salah satu file di kanan bawah menu navigasi kanan.

Jika Anda menggunakan gambar sendiri dan mengetahui bahwa gambar tersebut telah dikoreksi, maka Anda dapat langsung ke Langkah 5. Jika belum, lanjutkan ke Langkah 3.

Langkah 3: Dapatkan informasi tentang gambar

Setelah menginstal library GDAL dan memilih image, Anda perlu mendapatkan beberapa informasi tentang image tersebut agar dapat melakukan georeferensi. Secara khusus, Anda memerlukan posisi piksel dan garis dari setiap sudut gambar. Jika Anda membayangkan gambar sebagai tabel, dengan kolom dan baris, piksel adalah kolom, dan garis adalah baris.

GDAL menyediakan utilitas praktis, gdalinfo, untuk mengambil informasi ini. Di command line, cukup ketik gdalinfo filename, ganti filename dengan jalur ke file. Anda akan mendapatkan output yang terlihat seperti ini:

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

Informasi penting untuk tutorial ini adalah baris-baris Kiri Atas, Kiri Bawah, Kanan Atas, Kanan Bawah. Ini memberi tahu Anda nilai piksel dan garis dari setiap sudut. Kiri Atas, dalam hal ini, berada di 0,0, dan Kanan Bawah berada di 21600,10800.

Langkah 4: Georeferensi Gambar

Mereferensikan dalam kasus ini berarti membuat metadata yang menjelaskan posisi geografis dari setiap sudut gambar. Dengan menggunakan informasi yang diperoleh di Langkah 3 dan gdal_translate, Anda dapat menetapkan informasi georeferensi ke file. Tindakan ini akan membuat file VRT dari gambar world_200401.jpg, bluemarble1.vrt. File VRT adalah file XML yang berisi informasi tentang transformasi tertentu, dalam hal ini langkah gdal_translate. Anda akan menggunakannya lagi di langkah berikutnya untuk membuat kumpulan ubin akhir. gdal_translate memungkinkan Anda melakukan beberapa jenis output file, termasuk format file gambar utama. Menggunakan output VRT pada dasarnya memungkinkan Anda menunda pembuatan file output hingga langkah terakhir. Hal ini meningkatkan efisiensi dan mengurangi waktu tunggu untuk setiap langkah jika Anda melakukan command line. Berikut perintah yang akan Anda jalankan:

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

Ada banyak informasi di baris tersebut, jadi di sini sudah diperinci:

  • -of adalah format output, dalam hal ini VRT.
  • -a_srs menetapkan sistem referensi spasial ke file. Ini memberi tahu aplikasi apa pun yang menggunakannya, sistem koordinat yang sedang digunakan. Dalam hal ini, menggunakan EPSG:4326, yang sama dengan WGS84, sistem koordinat yang digunakan oleh Google Earth.
  • -gcp, atau titik kontrol tanah, menetapkan koordinat ke posisi dalam file. Dalam hal ini, Anda sebenarnya hanya memerlukan tiga titik, karena gambar berbentuk persegi panjang dan titik keempat dapat diidentifikasi dengan mudah. Untuk -gcp, tentukan gcp dengan menetapkan piksel, nomor baris, lalu bujur dan lintang. Setiap peristiwa dipisahkan oleh spasi.
  • Dua parameter terakhir adalah file asal dan file target.

Langkah 5: Warp Gambar

Gambar asli tidak dibuat untuk globe bulat, gambar tersebut dibuat agar tampak rata. Dalam istilah GIS, ini diproyeksikan, yang berarti bahwa itu adalah representasi dua dimensi dari objek tiga dimensi. Proyeksi memerlukan distorsi gambar sehingga tampak seperti yang Anda harapkan untuk gambar datar Bumi yang terlihat.

Agar terlihat bagus, Anda harus melengkungkan gambar agar sesuai dengan globe. Untungnya, GDAL juga menyediakan alat yang bagus untuk itu. Cukup ketik gdalwarp -of VRT -t_srs EPSG:4326 bluemarble1.vrt bluemarble2.vrt. Tindakan ini akan membuat file baru, bluemarble2.vrt, yang menyediakan metadata tentang prosedur pelengkungan.

Langkah 6: Buat Kartu

Anda hampir selesai, tetapi bagian ini akan membutuhkan waktu terlama. Untuk membuat kartu, ketik gdal2tiles.py -p geodetic -k bluemarble2.vrt. -k memaksakan output KML. Tindakan ini akan membuat struktur direktori dengan overlay super. Karena setiap file gambar tersebut harus dibuat secara terpisah, perlu waktu beberapa saat untuk dijalankan. Untuk gambar yang besar, sekarang Anda dapat menikmati secangkir kopi, tidur siang, atau makan ringan. Setelah selesai, buka doc.kml dan amati hasilnya.

Kesimpulan

Tutorial ini baru saja menjelaskan apa yang dapat dilakukan GDAL, tetapi menyediakan mekanisme yang mudah untuk membuat kartu. Library GDAL inti ditulis dalam C++, tetapi menyediakan binding untuk Perl, Python, VB6, R, Ruby, Java, dan C#/.NET, yang berarti Anda dapat dengan mudah menggabungkan GDAL ke dalam aplikasi Anda sendiri. Selain itu, banyak utilitas, termasuk gdal2tiles, ditulis dalam Python, sehingga mudah untuk digabungkan ke dalam aplikasi Python. gdal2tiles juga memiliki kemampuan untuk membuat halaman Google Maps API dan OpenLayers.