Google harita döşemesi oluşturma işlemlerinin performansı


11

Bu sorunun oldukça belirsiz olduğunu biliyorum ama lütfen benimle birlikte olun. İnsanların google / bing harita döşemeleri oluşturmak için kullandıkları çeşitli yöntemler için ne tür bir ürün performansı - özellikle zamanlama - gördükleri hakkında bir fikir edinmeye çalışıyorum. Bunun nasıl yapılacağı konusunda çok sayıda yöntem vardır (örn. Gdal2tiles, FME, maptiler, vb.). Basitçe büyük bir PNG alıp imagemagick kullanarak fayans oluşturmaya yönelik ilk girişim, oldukça iyi bir linux sunucusunda, oldukça uzun işlem süreleri sağladı ve bu yüzden diğer insanların üretimde ne kullandığını görmek istedim. Yeni karoların en az günlük olarak üretilmesi gerekir ve bu nedenle bu işlemdeki geri dönüş süresi oldukça kritiktir.

Tek gerçek gereksinim bir linux sunucusunda çalışabilmesidir. Açıkçası, özgür olmak daha iyidir ama kendimi bununla sınırlamak istemiyorum. Giriş ham ızgaralı / raster veri veya büyük bir görüntü olabilir. Çıktının google veya bing haritalarında olduğu gibi kullanılabilecek resim döşemeleri olması gerekir.

Sadece karşılaştırma uğruna, zamanlamanın google haritanın zum seviyesi 7 için olması gerektiğini söyleyeceğim.

Herkesin yardımını takdir ediyorum ve yine bu sorunun muhtemelen ne kadar belirsiz göründüğü için özür dilemek istiyorum.

GÜNCELLEME: Girişlere gelince, şu anda çeşitli formatlarda birden fazla (ham) veri kaynağım var: netCDF, GRIB, GRIB2. Ham verilerin kendisine ek olarak, daha sonra dilimlenebilen / döşenebilecek bu verilerin gerçekten büyük görüntülerini üretme yeteneğine de sahibim.

İdeal olarak, sadece görüntüyü keserdim ama bana en hızlı sonuçları elde edecek her şeyi denemeye hazırım.


Kullandığınız son görüntüleri son derece optimize etmek için Adobe havai fişek kullanmanızı öneririz - adobe.com/products/fireworks - hatta Photoshop'tan dışa
aktarılır

@ Mapperz- "Fireworks'te optimize edildi" mi?
Derek Swingley

Girdilerinizi genişletmeniz ve daha fazla işlem yapılması gerekiyorsa veya bunları kesiyorsanız düşünüyorum.
Ian Turton

4
@Mapperz: Ücretsiz eşdeğer nicemleme için pngcrush ve pngnq'dir. - Şu anda benzer bir görev üzerinde çalışıyorum ve sisteme beslenen her dosya için imagemagick kullanarak otomatik zincir gdal2tiles> pngnq> pngcrush> önceden oluşturulmuş küçük resimler var - Hızlı olduğunu iddia edemiyorum, ancak otomasyon çok fazla yük alıyor . Ve benim durumumda güncelleme yok, ateş ve unut.
işgal edildi muhtemelen

1
@relet - Geçebileceğin herhangi bir zamanlama var mı? Bunun için donanım kurulumunuz nedir? Thanks
malonso

Yanıtlar:


3

Aşağıdaki raster dosyası için bazı sonuçlarım:

JPEG 14456x14490 14456x14490+0+0 DirectClass 62mb

$ time gdal2tiles [...]

Generating Base Tiles:
0...10...20...30...40...50...60...70...80...90...100 - done.
Generating Overview Tiles:
0...10...20...30...40...50...60...70...80...90...100 - done.

real    5m7.675s
user    5m5.070s
sys  0m2.060s

$ time [her karo için pngnq && pngcrush, toplam 4500]

real    9m32.827s
user    18m34.190s
sys  0m27.230s

Evet, dakikalar içinde - hız için değil çıktı boyutu için optimize ettim. Makine sanal bir Intel Xeon 2x3GHz, 4G bellektir. (Ve açıkça, gdal2tiles bazı paralelleştirmelerden yararlanabilir.)


Örnek dosya indirilebilir mi? Performansı maptiler.com
Klokan Technologies GmbH

Üzgünüm, bu arada iş değiştirdim. Döşemelerin nerede yayınlandığını muhtemelen bulabilirim, ancak orijinal dosyayı bulamadım.
relet

6

gdal2tiles0-12 zum aralıkları için Google çinileri içine oldukça büyük (380MB, 39K x 10K piksel) bir tiff'i işlemek için biraz zaman ayırmayla ilgili sorunlar yaşıyordum. Ubuntu 12.04 64bit üzerinde çoklu işlem yapmadan, tiff'i 3,3GB @ 1,99 milyon karoya işlemek neredeyse tüm gün (8 saat) sürdü. @Stephan Talpalaru'nun yukarıda belirttiği gibi, gdal2tiles paralel koşmak anahtardır. Orijinal belgenizin bir yedeğini alın gdal2tiles.py, ardından yamayı evdeki dizinin içinden yükleyin gdal2tiles.py(benimki /usr/local/bin):

$ sudo patch -p0 -i gdal2tiles_parallelize_base_and_overview_tiles.patch

Şimdi gdal2tilesnormalde yaptığınız gibi koşun . Çekirdeklerimin 4'ünün (Intel Core i7 3.4GHz) sabitlenmesiyle performansta inanılmaz bir artış elde ettim:

$ time gdal2tiles.py -p raster -z 0-12 -w none ds1105-2235df023_23_b.tif gdal-tiles12
Generating Base Tiles:
0...10...20...30...40...50...60...70...80...90...100 - done.
Generating Overview Tiles:
0...10...20...30...40...50...60...70...80...90...100 - done.

real    39m8.242s
user    104m6.808s
sys 9m16.036s

Yani ~ 8 saat ila 39 DAKİKA . Oyun değiştirici.



2

FME'den bahsettiniz ve FMEpedia'da harita döşemeleri oluşturma konusunda bazı rakamlar var

Uzun bir makale, bu yüzden ilgili parçaları çıkardım:

Level             Tiles           Minutes (hours)
    8            24,500           18 (0.3)
   10           245,000          105 (1.75)
   11         1,000,000          384 (6.4)

Bu, FME Sunucusu ile çok makineli bir işlem kullanıyor. Bu gönderiyi WeoGeo blogunda Paul Bissett tarafından da kontrol edebilirsiniz: http://www.weogeo.com/blog/Scaling_FME_Engines_on_WeoGeo.html

Bulutta böyle verilerin nasıl işleneceğini gösteren harika bir filmi var - temel olarak işlem yükünü yaymak ve çok hızlı bir şekilde yapmak için bir grup Amazon sanal makinesini ateşliyor.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.