Başarısız olan büyük mozaik süreci nasıl çözülür?


11

Ben yaklaşık 550 Gb tif görüntüleri birlikte mozaik gerekir ve denedim yazılım başarısız olmaya devam ediyor. Alan bölgelere ayrılmıştır, böylece en küçüğü yaklaşık 200 karoya sahiptir.

3.30 gigahertz Intel Xeon E31245, DELL, 16 GB RAM, 64 bit Win 7 Professional'da ERDAS (Imagine and Mapper), ArcINFO ve Global Mapper'ın en son sürümlerini kullandım. Mullti çekirdekli (toplam 4), Hiper dişli (toplam 8) makine. C cihazım 700GB boş alan ve D 1.5 TB'a sahip

Ben Çim (daha önce hiç var) kullanarak bakıyorum ama i.image.mosaic sadece 4 dosyaları işlemek gibi görünüyor ... bazılarının 600 kiremit var. Başka seçenekler veya açık kaynaklı yazılım denemek için?

Maalesef, herhangi bir GIS yazılımında açılabilmesi ve daha düşük çözünürlük / daha eski ile birleştirilebilmesi için ecw olarak tanımlanmış veri alanı olmayan bölgeler oluşturmamız gerektiğinden mozaik veri kümesini (veya başka bir yazılımda eşdeğer) kullanamayacağımızı da eklemeliyiz. yeni veriler sorunsuz bir şekilde mevcut olmadığında veriler.

resim açıklamasını buraya girinBazı mozaikli dosyaların farklı yazılımlarda nasıl göründüğüne bir örnek. Global Mapper / ERDAS iyi ancak arcgis'te doğru değil.

--- ESKİ BİLGİ ---

resim açıklamasını buraya girin

Kaba çizim için üzgünüm. Böylece renkli alanların 5 bölge olması daha büyük AOI'deki veri alanlarını en aza indirecektir.

Arcgis kodu aşağıdaki gibidir (tifList girişi almak için alamadım gibi bu bir model olarak çalışır ve python değil).

arcpy.MosaicToNewRaster_management(tifList+";" +mask,RootOutput,"Tile1.tif","PROJCS['GDA_1994_MGA_Zone_55',GEOGCS['GCS_GDA_1994',DATUM['D_GDA_1994',SPHEROID['GRS_1980',6378137.0,298.257222101]],PRIMEM['Greenwich',0.0],UNIT['Degree',0.0174532925199433]],PROJECTION['Transverse_Mercator'],PARAMETER['False_Easting',500000.0],PARAMETER['False_Northing',10000000.0],PARAMETER['Central_Meridian',147.0],PARAMETER['Scale_Factor',0.9996],PARAMETER['Latitude_Of_Origin',0.0],UNIT['Meter',1.0]]","16_BIT_UNSIGNED","0.5","3","MAXIMUM","#")

# Replace a layer/table view name with a path to a dataset (which can be a layer file) or create the layer/table view within the script
# The following inputs are layers or table views: "test2"

arcpy.CopyRaster_management(OutputFile,RootOutput+"Tile1b.tif","#","256","256","NONE","NONE","16_BIT_UNSIGNED")

nerede tifList bir csv dosyasından okunmalıdır ama bu yerine bir modelde yukarıdaki çalıştırıyorum python işe yaramadı ...

Sürücümde 1.5 TB + boş alan var, ancak işlem 9999 hatasıyla çöküyor.

100 fayans bile işleyebilir mi? Bölgeleri daha fazla parçalamaya bakalım mı?


3
Bu itici bir miktar veri. Onu devasa bir TIF dosyasıyla birleştirmeye çalışmıyorsunuz, değil mi? Bir mozaik veri kümesi veya önbelleğe alınmış bir harita hizmeti oluşturmanızı öneririm .
blah238

evet ... hayır ideal 7 bireysel ecw veya tif (arcgis kullanıyorsanız) olacak. Boyut / bölgelerin bir görselini ekleyebilirim, ancak bunun yararlı olup olmadığından emin değilim.
GeorgeC

MapInfo ve diğer yazılımları kullanan kuruluşunuzla ilgili yorumlarınıza dayanarak ArcGIS yerine, cevabımı kaldırıyorum, çünkü gerçekten ihtiyaçlarınızı hiç çözmüyor. Bununla birlikte, Esri yolunda daha fazla seyahat etmeyi önlemek için sorunuza yazılım gereksinimleriniz hakkında bazı ayrıntılar eklemenizi öneririm.
Mekansal alın

@GetSpatial - detaylı cevap için teşekkürler. Kısa vadede tek bir çözümdür ve muhtemelen kullanacağız ama sorumda belirttiğim gibi gerçekten yazılımdan bağımsızız ve büyüklerimiz var (ESRI / ERDAS / MAPINFO ve Global Mapper). Bizim için anahtar sonuç - ~ 5 Diğer görüntülerin kullanılabilmesi için veri içermeyen alanlar tanımlanmış. ECW'ler tüm yazılımlarda tanımlanmış veri içermemelidir - bazı mozaiklerin farklı yazılımlarda veri içermeyen özelliklerini tutmadığını tespit ettik. Bir örnek göndereceğim. Tekrar teşekkürler. Sizden cevabınızı burada tutmanızı rica ediyorum, oy vereceğim.
GeorgeC

Yanıtlar:


9

2nd @ blah238'in tek bir mozaikli görüntü oluşturmaktan başka veri erişim yöntemlerini kullanma önerilerini yerine getirmem gerekecek. Basit bir tahmin, tüm bu karoları mozaiklemek için işlemeniz gereken veri miktarını işleyebilecek bir masaüstü olmadığını söyleyebilir.
Onu parçalamak için, muhtemelen boş alanınız bittiğinde iki yer vardır.

  1. Birincisi RAM ara belleğinizde olacak. Verileri mozaiklemek için her şeyi tek bir dosyada birleştiriyorsunuz, yani ideal olarak tüm dosya bellekte tutulacak. 550GB RAM'iniz yok, yani sanal bellekten okuma / yazma olacak. Buradaki süreci çökertmek için yeterlidir.
  2. Diğer sorunun sabit disk alanı olması muhtemeldir. Tarama işlemlerinin çoğu, "çalışma alanı" dizininizde oldukça büyük olan geçici dosyalar oluşturur. Son veri kümesi yazılmadan önce bunlardan 2 veya 3 veya daha fazlası olabilir, bu nedenle işlem sırasında tüm disk alanınızı tüketmek düşünülebilir.

Şimdi, diğer çözümler için. Yukarıdaki yorumlarda belirtildiği gibi, bir Mozaik Veri Kümesi oluşturma seçeneği vardır . Bu veri seti, yalnızca tüm döşemeleri tek bir kesintisiz görüntü olarak ele almanıza izin vermez, aynı zamanda içerdiği ayrı döşemeler hakkında meta verileri korur. Ayrıca Hillshade gibi raster işlemlerini gerçekleştirmenizi sağlar .

Bölgelerin ayrılmasını istemek hakkındaki yorumunuza dayanarak önereceğim diğer seçenek bir Raster Kataloğu oluşturmak olacaktır . Raster Kataloğu aslında bir grup katmanıdır. Birden fazla raster veri kümesi ekleyebilirsiniz. Bir coğrafi veritabanında yönetilebilir ve rasterleri içe aktarabilir veya Raster Kataloğu'nun orijinal tarama veri kümelerine giden yolları koruduğu, yönetilmeyen bir veri kümesi oluşturabilirler. Bu katmanı ArcMap'e yüklediğinizde, görüntüleme özelliklerini yalnızca belirli sayıda raster döşemesine aynı anda yüklenecek şekilde ayarlayabilir veya görüntü ölçeğini ve çözünürlüğünü ayarlayabilirsiniz.
Şu anda 100 + GB hava fotoğraflarını döşemek için bir raster kataloğu kullanıyorum. Performansı çok iyi. Sadece çok sayıda döşemeyi yönetmek için farklı bir veri depolama türü arıyorsanız, o zaman gerçekten tavsiye ederim.

Bir Raster Kataloğu oluşturmak ve daha sonra bir karo çalışma alanını içeri aktarmak için kullanabileceğiniz kod :

import arcpy
import os

newdir = r"c:\data"
dbname = "Aerialphotos.gdb"
gdbdir = os.path.join(newdir, dbname)
rcat = "AerialCatalog"

arcpy.CreateRasterCatalog_management(gdbdir, rcat,
                                     "NAD 1983 StatePlane California VI FIPS 0406 (US Feet).prj", 
                                     "NAD 1983 StatePlane California VI FIPS 0406 (US Feet).prj",
                                     "MAX_FILE_SIZE_4GB", "1000", "3000", "9000",
                                     "UNMANAGED", "")

#Load all raster datasets in workspace to Raster Catalog
rcatdir = os.path.join(gdbdir, rcat)
rastertiledir = os.path.join(newdir, "tiles")

arcpy.WorkspaceToRasterCatalog_management(rastertiledir, rcatdir,
                                          "INCLUDE_SUBDIRECTORIES",
                                          "PROJECT_ONFLY")

Bu yardımcı olur umarım!

------------- Düzenle

Raster kataloğum tarafından işlenen karoların bir grafiği. Tel çerçevelerin gösterilmesini veya raster verilerinin seçilebileceğini unutmayın. Tarama kataloğunda, örneğin grafiğinizde olduğu gibi bölge atamaları eklemek istiyorsanız, alan ekleyebileceğiniz bir öznitelik tablosu vardır. Ardından, yalnızca belirli bir bölgedeki rasterleri göstermeyi seçebilirsiniz.
Mizanpaj görünümünden bir grafikte yazdırırken rasterlerin tam çözünürlüğü kullanılır, bu nedenle baskıda kalite kaybı olmaz.

resim açıklamasını buraya girin

İşte aynı grafik, ancak bazı tel kafeslerle birlikte raster verilerinin bir kısmını gösteriyor.

resim açıklamasını buraya girin


Bu konudaki zamanınız için teşekkürler. İyi bir kısa vadeli çözümdür, ancak kuruluş Mapinfo ve diğer yazılımları kullandığından, konsey alanı yaklaşık 5 bölgeye ayrılmış olarak ecw'ler oluşturabilmemiz gerekir. Mapinfo'nun kesintisiz katmanları vardır (Raster Kataloğu'na benzer). Ancak, veri içermeyen alanların tanımlanması önemlidir, böylece yeni görüntüleri daha geniş bir kapsama sahip eski görüntülerle alt üst edebilir ve açılacak dosya sayısını azaltabiliriz.
GeorgeC

1
Gelecekte, ilk sorunuzda bu tür bilgileri sağlarsanız muhtemelen daha alakalı bir cevap alacaksınız.
Mekansal alın

1
MapInfo'nun hangi web haritası hizmetlerini kullanabileceğini incelediniz mi? Tüm bu verilerin önbelleğe alınmış sürümlerini ham verileri değil, kuruluşunuz tarafından tüketilmek üzere bir sunucuya koymak isteyeceğinizden şüpheleniyorum. Ben veri olmayan şey harita hizmetleri ile bir tartışma noktası olduğunu düşünüyorum çünkü sen sadece veri olmayan fayans oluşturmak olmaz, ve altında ne olursa olsun aracılığıyla gösterir.
blah238

7

Partiye geç kaldığımı biliyorum. Ama işte benim önerim.

1) görüntü boyutu
550 GB'lık orijinalleriniz sıkıştırılmamışsa, bunları jpeg sıkıştırılmış tiff dosyalarına dönüştürmelisiniz. Onları ayrı ayrı tutun (birleştirilmemiş). Arcgis, gdal, ne istersen sıkıştırabilirsin. Sıkıştırma sizi 23GB'a çıkarır. Henüz piramit / genel bakış oluşturmayın. Sıkıştırmak için istediğiniz herhangi bir gis programını kullanabilirsiniz, ancak komut temelde şu şekilde gdal kullanmayı seviyorum:

gdalwarp -multi -wm 512 --config  GDAL_CACHEMAX 512 -co compress=jpeg -co tiled=yes -co jpeg_quality=70 -co PHOTOMETRIC=YCBCR -co INTERLEAVE=PIXEL uncompressed.tif compressed.tif

Sıkıştırılmamış tüm tiff'lerinizden geçen bir yarasa dosyasını kolayca yapabilirsiniz. Görüntülerimi her zamanki gdal_translate yerine sıkıştırmak için gdalwarp kullanmayı seviyorum, çünkü daha hızlı (çok çekirdekli çoklu seçenek ve bol bellek için -wm kullanarak).

2) tek bir görüntü olarak işleme
gdal vrt formatını kullanarak "sanal" bir mozaik oluşturabilirsiniz. Bu arcgis, qgis, mapserver, vb ile uyumludur. Global mapper ve mapinfo'dan emin değilim. .Vrt biçimi, görüntülerinizi listeleyen tek bir xml dosyasıdır. Bu tek bir komut oluşturmak için:

gdalbuildvrt nameofmosaic.vrt compressed_tif_folder\*.tif

Bu dosya birkaç kb boyutunda.

3) hızlandırma görselleştirme
Piramitler / genel bakışlar oluşturmanız gerekir. Bunun için tercih ettiğiniz yazılımı kullanmanız yeterlidir. Gdal araçlarıyla şunları yapabilirsiniz:

gdaladdo -ro -r average --config COMPRESS_OVERVIEW JPEG --config JPEG_QUALITY_OVERVIEW 70 nameofmosaic.vrt 2 4 8 16 32 64 128

Bu uzun bir zaman alacaktır. 2 ila 3 gün kesintisiz işleme için beklemeye hazır olun.

4) mozaiği kullanma
Sanal mozaiği gis programınıza yükleyin. Hızlı olacak, çünkü bir ecw gibi sadece 1 dosyadaki genel bakışları okuyor. Görüntülerinizin gerçek çözünürlüğüne yakınlaştırdığınızda, sıkıştırılmış görüntülerden yalnızca birkaç görünür görüntü okunur ve bu da gerçekten hızlıdır.

5) siyah gösteren veri alanlarınızı kullanma
Bunun için 3 çözümünüz vardır: i) karmaşık olacak olan veriyi işleyen bir dosya biçimi kullanın; veya ii) bir alfa bandı veya iii) bir maske dosyası kullanın. GDAL'a nodata alanlarının alfa bandında olmasını istediğinizi söyleyerek 2. adımda otomatik olarak bir alfa bandı oluşturabilirsiniz - sadece -addalpha seçeneğini eklersiniz:

gdalbuildvrt -addalpha nameofmosaic.vrt compressed_tif_folder\*.tif

Alfa bantları ile ilgili sorun kötü bir şekilde sıkıştırmalarıdır. Yani genel bakışlarınız daha büyük olacak. Eğer senin için uygunsa, işin bitti demektir.

Bir maske dosyası oluşturmak istiyorsanız, biraz daha karmaşıktır. Ve bunun mevcut soruya uymadığını düşünüyorum.

Umarım bu yardımcı olur. Godal araçlarıyla ilgili bilgileri gdal araçlarıyla bulabilirsiniz. Bir sürü ilginç şeyler.


1
Güzel mesaj. Aslında çözgü yaparken (örneğin yeniden enjeksiyon, yeniden örnekleme vb.) Gdalwarp'in sıkıştırma kullanıldığında gerekenden çok daha büyük çıktı oluşturma konusunda uzun süredir devam eden bir sorunu olduğunu lütfen unutmayın . Bu durumlarda, gdalwarp aşamasında sıkıştırmayı atlamak ve gdal_translate -co compress=xxxdaha sonra izlemek daha iyidir . Sadece çevirmen olarak kullanılıyorsa (burada önerildiği gibi) bu bir sorun değildir.
matt wilkie

1
Teşekkürler. Son zamanlarda aynı anda projelendirip sıkıştırdığım ve iyi oranlara sahip olduğum için bu sorunun çözüldüğünü düşünüyorum.
Duarte Carreira

5

550 GB giriş TIF verisi tek bir ECW dosyası ile kolayca işlenir. Bundan çok daha büyük veri kümelerini sıkıştıran birçok müşterimiz var, bu nedenle formatın bu alanda yeterli olmadığını lütfen unutmayın.

Boş alanı en aza indirmek için projeyi küçük fayanslara bölme stratejiniz, sıkıştırma süresini azaltacağından geçerli biçim sürümü ile birlikte almak için iyi bir yaklaşımdır.

Örneğin, imzasız 16 bit giriş verilerine referans içerir. Mümkünse 8 bit'e yeniden ölçeklendirmenizi öneririm (gereksinimlerinize bağlı olarak)

Lütfen bu bilgileri olmadan size yardımcı olamadığım için projenizi neden IMAGINE veya ERMapper kullanarak işleyemediğinizi açıklayın. Ya da daha iyisi, yerel destek ekibiyle iletişime geçin

ESRI Mozaik Veri Kümesi biçimini kullanarak, yukarıdaki cevapların bahsetmediği şeyin, piramit / genel bakış katmanını oluşturma gereksinimi olduğu unutulmamalıdır. Bu olmadan performans önemli ölçüde düşecektir. Muhtemelen aynı zamanda ECW eşdeğeri dosyaları oluşturabilir, ancak görüntü kalitesini iyileştirmiş ve daha küçük çıktı depolama gereksinimlerine sahip olabilirsiniz.


1
Sağlanan yeni bilgilere dayanarak, ECW Null alanları ESRI'da doğru görünmüyor çünkü hala donukluk kanalı desteğine sahip olmayan çok eski v3 SDK'yı paketliyorlar (sadece yok sayılıyor). Bunu düzeltmek için erdas.com adresini ziyaret edin ve v4 SDK'yı opaklık desteğiyle yükleyecek ArcGIS ECW Eklentisini indirin ve ECW'ler Globalmapper ve ERDAS yazılımındakiyle aynı şekilde görüntülenecektir
Chris Tweedie

Sadece bu eklentinin ArcGIS'teki "sorunu" düzelttiğini, ancak Mapinfo ecw görüntülemesini bozduğunu ve böylece her ikisine de sahip herhangi bir makinede kaldırılması gerektiğini unutmayın.
GeorgeC

4

Bahsedilen diğer seçeneklerden birini kullanmak daha iyi olsa da, aşağıdakileri deneyebilirsiniz:

gdalbuildvrt index.vrt *.tif
gdal_translate -of "GTiff" -co "COMPRESS=LZW" -co "TILED=YES" -co "BIGTIFF=YES" index.vrt out.tif

Bu bir GDAL sanal formatı oluşturur ve daha sonra tek bir GeoTiff'e dönüştürür.


3

Bu bana oldukça tanıdık geliyor, ayrıca 500 TB'lık 1 TB TIF Dosyasından büyük tek ECW Dosyaları da üretiyoruz. Ancak bu miktarı güvenilir bir şekilde mozaikleyemediği için ArcGIS (ArcObjects ve Geoprocessing Engine) üzerinde devam etmem. ESRI Dünyasında kalmak istiyorsanız, bir dosya Geodatabase'de depolanan Raster Veri Kümesine aynı anda yaklaşık 50 GB veya daha küçük parçaları mozaiklemenizi tavsiye ederim. Mozaik Aracı bir süre sonra çökme eğilimi gösterir, bu nedenle bazı GigaBytes'ten sonra ArcGIS'in hafızasını serbest bırakmak iyi bir fikirdir.

Başka bir olasılık da Enterprise veya Workgroup SDE Geodatabase kullanmaktır. SDE ile, güvenilmez ArcObjects şeyler dışında sağlam bir C ++ mimarisi üzerine inşa edilmiş eski moda SDE Komut Satırı Araçları'nı edinebilirsiniz. "Sderaster -o mosaic ..." komutuyla, Veritabanı deponuz dolana kadar bir RasterDataset için mozaik oluşturabilirsiniz. Ayrıca RasterDataset için bir istatistik oluşturmak için komutlar da vardır, aksi takdirde çok yararlı değildir, çünkü çoğu İstemci, yukarıda bahsedildiği gibi, görüntüleri okurken hafızada tutamaz. Ancak Piramitler (aslında mekansal indeksleme) bu sorunu çözmelidir.

Ancak bu çözümler MapInfo ile size kesinlikle yardımcı olmaz. ERDAS Mapper'ı zaten denediğinizi söylemiştiniz. Bu da tercih ettiğim araç. Her biri 50 MB boyutunda olan ve 800 GB olan 16000 TIF dosyasını zaten oluşturduk. Daha sonra 30 GB'lık bir ECW Dosyası ile sonuçlanan 1:20 sıkıştırma oranıyla tek bir ECW'ye sıkıştırdık. Bunun sizin için işe yaramadığını merak ediyorum ...

En azından tüm süreç 2 GB RAM ile tek çekirdekli Pentium 4 1,6 GHz'de çalışıyordu, bu yüzden donanım sorun olmamalı. Windows Server 2003'ü (veya başka bir sunucu İşletim Sistemini) kullanıyoruz çünkü harware ressource'larını daha iyi kullanıyor. Tüm sıkıştırma işleminin çok zamana ihtiyacı olduğunu unutmayın. Makinemiz bu tek dosyada yaklaşık 5 hafta çalışıyordu ve bazen çöktüğü için bunu birkaç kez yapmak zorunda kaldık, ama sonunda ECW Dosyamızı aldık.

Büyük miktarlarda rasterleri çoğunlukla satıcı tarafsız bir şekilde saklamak için başka bir sistem veya mekanizma bilmiyorum. Yukarıda belirtilen yolların tümü ESRI'ye özgüdür. En azından Oracle RASTER ve PostGIS'te oldukça benzer bir uygulama ile, aynı zamanda satıcı tarafından nötr olmayan ancak SQL / MM Arayüzü yoluyla açılan iki veritabanlı Varyant vardır.

Umarım bu biraz yardımcı olur.


Teşvikiniz için teşekkürler - daha büyük veri kümelerinde de işe yaradı. ERDAS ile -sadece bir çökmeye neden olan veri kümesi boyutu değil, aynı zamanda hiçbir veri alanı düzgün tanımlanmadı. Güncellenmiş soruya bakın. ERDAS'ta kullandığınız süreci belgelediniz ve paylaşabiliyor musunuz?
GeorgeC
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.