gdal2tiles ile üst bindirmeler oluşturma

Mano Marks, Google Coğrafi API'ler Ekibi
Eylül 2009

Hedef

Bu eğitim, açık kaynaklı Geospatial Data Abstraction Library yardımcı programlarını kullanan bölge tabanlı Ağ Bağlantılarının yer aldığı bir yer paylaşımlı yer paylaşımı grubu oluşturmayla ilgili temel bilgileri adım adım gösterir.

Giriş

Google Earth ve Google Haritalar gibi coğrafi tarayıcılar, uydu görüntülerini ve harita bloklarını size sunar. Ancak bazen kendi segmentlerinizi kullanmak isteyebilirsiniz. Görüntüler veya kafes verileri çeşitli şekillerde sunulur ve birçok amaçla kullanılır.

  • Bir coğrafi tarayıcıya kendi uydu veya havadan görüntülerinizi yerleştirme
  • Google Haritalar'daki Rumsey Maps katmanı gibi mevcut görüntülerin üzerine geçmiş haritalar yerleştirme
  • GIS verilerini kafes formunda içe aktarma
  • Coğrafi tarayıcıya LIDAR veya kızılötesi görüntü yerleştirme

Bununla birlikte, yüksek çözünürlüklü kafes verileriyle ilgili sorunlardan biri, verilerin görüntülenmesi için çok fazla bellek bulunmasıdır. Uygulamayı internete aktarırken bant genişliğiyle ilgili endişeleriniz de vardır. Bu sorunu çözmek için kartlar oluşturmanız gerekir.

Döşeme işlemi, resim dosyanızı, çok sayıda resim gösterilir ve bu dosyalar görüntülendiklerinde yüklenir. Kullanıcı uzaklaştırılırken görüntü için düşük çözünürlüklü bir resim oluşturursunuz. Aynı alanda, daha yakından bakmak için dört adet daha yüksek çözünürlüklü resim oluşturursunuz. Bir resmin içine yerleştirilen her bir alan için, yakınlaştırmak amacıyla vb. daha yüksek çözünürlüklü dört resim daha oluşturursunuz. Bu, quadtree yöntemi olarak bilinir ve Google Earth ile Google Haritalar'da görüntülerin nasıl parçalara ayrıldığını gösterir. Süreç, Bölgeler ile ilgili KML Geliştirici Kılavuzu makalesinde daha ayrıntılı olarak açıklanmıştır.

Bu işlemi Adobe'un PhotoShop veya GIMP gibi grafik düzenleme uygulamalarıyla manuel olarak yapmak mümkündür, ancak bu karmaşık, yorucu ve hataya açıktır. Ayrıca, başta Windows için CrunchUp2KML ile birlikte kullanılan SuperOverlay, Arc2Earth ve MapCruncher gibi birçok iyi uygulama da vardır.

İşlemi otomatikleştirmek veya kendi uygulamanıza işlevler eklemek istiyorsanız GDAL, kafes ve vektör verileriyle çalışmak için zengin bir araç grubu sağlar. Bu makalede, komut satırı seçenekleri ele alınmaktadır. Ancak kitaplıklar da kendi uygulamalarınıza kolayca dahil edilebilir. Bu eğiticide gdalinfo, gdal_translate, gdalwarp ve gdal2tiles yardımcı programlarını kullanacaksınız. Nihai sonuç, yer paylaşımlı bir görüntüdür.

Komut Satırı Adımları

Komut satırında GDAL'i kullanmanın altı adımı vardır.

  1. GDAL'ı indirme ve yükleme
  2. Resim indirme
  3. Resimle ilgili bilgileri belirlemek için gdalinfo özelliğini kullanın
  4. Resmi coğrafi olarak referans göstermek için gdal_translate kullanın
  5. Görselin projeksiyonunu değiştirmek için gdalwarp kullanın
  6. Resmi parçalara ayırmak ve ilişkili KML kodunu oluşturmak için gdal2tiles kullanın

1. Adım: GDAL'i indirin ve yükleyin

Burada ayrıntılı olarak açıklandığı şekilde GDAL'yi indirip yükleyerek başlayın.

2. Adım: Bir resim indirin

Herhangi bir resmi kullanabilirsiniz. Web'de çeşitli coğrafi veri kaynakları bulunur. Bunlardan herhangi birini kullanabilirsiniz ancak resmin sınırlarını bilmeniz gerekir. Bu bilgiler, resmin her köşesinin enlemi ve boylamını içerir. Bu eğitim, NASA'nın web sitesinden indirilebilen NASA Blue Marble görseli kullanır. Bu görüntüler 2004'te çekilmiş ve uzaydan Dünya'nın güzel bir resmini göstermektedir. Sağ gezinme çubuğunun sağ alt kısmındaki dosyalardan birini seçin.

Kendi resminizi kullanıyorsanız ve resmin coğrafi olarak yeniden düzeltildiğini biliyorsanız 5. Adım'a geçebilirsiniz. Aksi takdirde 3. Adım'a geçin.

3. Adım: Resim hakkında bilgi edinin

GDAL kitaplıklarını yükleyip resmi seçtikten sonra, coğrafi referans verebilmeniz için resimle ilgili bazı bilgileri almanız gerekir. Özellikle, resmin her bir köşesinin piksel ve satır konumlarının belirtilmesi gerekir. Resmi, sütunlar ve satırlar içeren bir tablo olarak hayal ederseniz pikseller sütunlar, satırlar ise satırdır.

GDAL, bu bilgilerin yakalanması için kullanışlı bir yardımcı program (gdalinfo) sağlamaktadır. Komut satırına gdalinfo filename yazıp dosya yolunu filename ile değiştirmeniz yeterlidir. Çıkış şöyle görünmelidir:

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

Bu eğitimle ilgili önemli bilgiler sol üst, sol alt, sağ üst, sağ alt çizgilerdir. Bunlar, her bir köşenin piksel ve satır değerlerini belirtir. Bu örnekte, sol üst üstte 0,0, sağ altta 21600.10800 olarak belirlenmiştir.

4. Adım: Resmin coğrafi referansı

Bu durumda coğrafi başvuru, resmin her köşesinin coğrafi konumunu açıklayan meta veriler oluşturmak anlamına gelir. 3. ve gdal_translate. adımlarda kazandığınız bilgileri kullanarak dosyaya coğrafi referans bilgisi atayabilirsiniz. Bu, bluemarble1.vrt world_200401.jpg görüntüsünden bir VRT dosyası oluşturur. VRT dosyaları, belirli bir dönüşümle (bu örnekte gdal_translate adımı) ilgili bilgileri içeren XML dosyalarıdır. Son karo grubunuzu oluşturmak için bir sonraki adımda tekrar kullanırsınız. gdal_translate, başlıca resim dosyası biçimleri dahil olmak üzere birden çok dosya çıkışı türü yapmanıza olanak tanır. VRT çıkışlarını kullanarak son adıma kadar çıkış dosyaları oluşturmayı devre dışı bırakabilirsiniz. Bu, komut satırını yapıyorsanız her bir adım için verimliliği artırır ve bekleme sürenizi azaltır. Çalıştıracağınız komut şu şekildedir:

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

Bu satırda çok fazla bilgi olduğu için özet şu şekildedir:

  • Çıkış biçimi -of (bu örnekte VRT).
  • -a_srs, dosyaya uzamsal bir referans sistemi atar. Bu, hangi koordinat sistemini kullanan tüm uygulamaları belirtir. Bu durumda, Google Earth'ün kullandığı koordinat sistemi WGS84 ile aynı olan EPSG:4326'yı kullanır.
  • -gcp veya zemin kontrol noktası, koordinatları dosyadaki konumlara atar. Bu durumda, resim bir dikdörtgen olduğundan ve dördüncü nokta kolayca ayırt edilebildiğinden aslında yalnızca üç noktaya ihtiyacınız olur. -gcp için, piksel ve daha sonra, çizgi numarasını, boylamı ve enlemi ayarlayarak gcp'yi tanımlayın. Bunların her biri boşlukla ayrılır.
  • Son iki parametre, kaynak dosya ve hedef dosyadır.

5. Adım: Görüntüyü Eğin

Orijinal resim yuvarlak bir dünya için değil, düz bir yerde görünecek şekilde oluşturuldu. Coğrafi Bilgi Sistemi şartlarında, tahmin edilir. Yani üç boyutlu bir nesnenin iki boyutlu bir temsilidir. Projeksiyon, resmin düz bir şekilde görünmesini bekleyecek şekilde resmin bozulmasını gerektirir.

Görüntünün doğru görünmesi için yerküreye sığması için resmi eğmeniz gerekir. Neyse ki GDAL bunun için de harika bir araç sağlıyor. gdalwarp -of VRT -t_srs EPSG:4326 bluemarble1.vrt bluemarble2.vrt yazmanız yeterlidir. Bu işlem, hazırlama işlemiyle ilgili meta verileri sağlayan yeni bir dosya (bluemarble2.vrt) oluşturur.

6. Adım: Kart oluşturma

Neredeyse bitti, ancak bu bölüm daha uzun sürecek. Blok oluşturmak için gdal2tiles.py -p geodetic -k bluemarble2.vrt yazın. -k, bir KML çıkışını zorunlu kılar. Bu, yer paylaşımı içeren bir dizin yapısı oluşturur. Bu resim dosyalarının her birinin ayrı ayrı oluşturulması gerektiğinden bu dosyaların çalıştırılması biraz zaman alır. Büyük resimler için artık bir fincan kahve veya şekerleme alabilir, hafif bir yemek deneyebilirsiniz. Bu işlemi tamamladığınızda doc.kml uygulamasını açıp sonuçları inceleyin.

Sonuç

Bu eğitim yalnızca GDAL'ın neler yapabildiğini gösterir ancak karo oluşturmak için kullanışlı bir mekanizma sunar. Temel GDAL kitaplıkları C++ ile yazılır. Ancak Perl, Python, VB6, R, Wild, Java ve C#/.NET için bağlayıcılar sunar. Bu sayede GDAL'yi kendi uygulamalarınıza kolayca ekleyebilirsiniz. Ayrıca, gdal2tiles dahil olmak üzere pek çok yardımcı program Python'da yazılır ve bu da Python uygulamalarına dahil edilmesini kolaylaştırır. gdal2tiles ayrıca Google Maps API ve OpenLayers sayfaları da oluşturabilir.