Ich muss ungefähr 550 GB TIF-Bilder zusammen mosaikieren, und die Software, die ich ausprobiert habe, schlägt immer wieder fehl. Das Gebiet wurde in Zonen aufgeteilt, so dass das kleinste ca. 200 Kacheln hat.
Ich habe die neuesten Versionen von ERDAS (Imagine and Mapper), ArcINFO und Global Mapper auf einem Intel Xeon E31245 mit 3,30 Gigahertz, DELL, 16 GB RAM und 64-Bit Win 7 Professional verwendet. Mullti-Core (4 insgesamt), Hyper-Threaded (8 insgesamt) Maschine. Mein C hat 700 GB frei und D hat 1,5 TB.
Ich möchte Grass verwenden (noch nie zuvor), aber i.image.mosaic scheint nur 4 Dateien zu verarbeiten ... einige von mir haben 600 Kacheln. Gibt es noch andere Optionen oder OpenSource-Software zum Ausprobieren?
Es tut uns leid, dass wir kein Mosaik-Dataset (oder ein Äquivalent in einer anderen Software) verwenden können, da wir Zonen mit definierten Bereichen ohne Daten als ecw erstellen müssen, damit sie in jeder GIS-Software geöffnet und mit einer niedrigeren Auflösung / älter kombiniert werden können Daten, wenn neue Daten nicht nahtlos existieren.
Ein Beispiel dafür, wie einige Mosaikdateien in verschiedenen Softwareprogrammen aussehen. Global Mapper / ERDAS sind in Ordnung, aber in Arcgis nicht korrekt.
--- ÄLTERE INFO ---
Entschuldigung für die grobe Zeichnung. Wenn Sie also die farbigen Bereiche als 5 Zonen haben, werden die Bereiche ohne Daten in der größeren AOI minimiert.
In arcgis lautet der Code wie folgt (dieser wird als Modell und nicht in Python ausgeführt, da ich ihn nicht dazu bringen kann, die tifList-Eingabe zu übernehmen).
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")
wo tifList aus einer CSV-Datei eingelesen werden sollte, aber dies funktionierte nicht in Python, so dass ich die oben genannten in einem Modell stattdessen ausführen ...
Ich habe mehr als 1,5 TB freien Speicherplatz auf meinem Laufwerk, aber der Prozess stürzt mit einem 9999-Fehler ab.
Würden sogar 100 Fliesen verarbeiten? -ie sollten wir versuchen, die Zonen weiter aufzubrechen?
Antworten:
Ich muss den Vorschlägen von 2nd @ blah238 folgen, eine andere Methode des Datenzugriffs als die Erstellung eines einzelnen Mosaikbildes zu verwenden. Eine einfache Vermutung würde sagen, dass es keinen Desktop gibt, der die Datenmenge verarbeiten könnte, die Sie verarbeiten müssten, um alle diese Kacheln zu mosaikieren.
Um es aufzuschlüsseln, gibt es wahrscheinlich zwei Stellen, an denen Ihnen der Platz ausgeht.
Nun zu anderen Lösungen. Wie in den obigen Kommentaren erwähnt, besteht die Möglichkeit, einen Mosaik-Datensatz zu erstellen . Mit diesem Datensatz können Sie nicht nur alle einzelnen Kacheln als ein einziges nahtloses Bild behandeln, sondern auch Metadaten zu den einzelnen darin enthaltenen Kacheln verwalten. Außerdem können Sie Rasteroperationen wie Hillshade ausführen .
Die andere Option, die ich aufgrund Ihres Kommentars zum Trennen der Zonen empfehlen würde, wäre das Erstellen eines Rasterkatalogs . Ein Rasterkatalog ist im Wesentlichen eine Gruppenebene. Sie können mehrere Raster-Datasets hinzufügen. Sie können in einer Geodatabase verwaltet und die Raster importiert oder einfach ein nicht verwaltetes Dataset erstellt werden, in dem der Raster-Katalog Pfade zu den ursprünglichen Raster-Datasets verwaltet. Wenn Sie diese Ebene in ArcMap laden, können Sie die Anzeigeeigenschaften so einstellen, dass nur eine bestimmte Anzahl von Rasterkacheln gleichzeitig geladen wird, oder die Anzeigeskala und -auflösung festlegen.
Ich verwende derzeit einen Raster-Katalog, um Luftbilder mit mehr als 100 GB zu kacheln. Die Leistung ist sehr gut. Wenn Sie nach einer anderen Art der Datenspeicherung suchen, um eine große Anzahl von Kacheln zu verwalten, würde ich sie wirklich empfehlen.
Hier ist Code, mit dem Sie einen Rasterkatalog erstellen und anschließend einen Arbeitsbereich mit Kacheln importieren können:
Hoffe das hilft!
------------- Bearbeiten
Hier ist eine Grafik der Kacheln, die von meinem Raster-Katalog verarbeitet werden. Beachten Sie, dass Sie wählen können, ob Drahtmodelle oder die Rasterdaten angezeigt werden sollen. Der Rasterkatalog verfügt über eine Attributtabelle, zu der Sie Felder hinzufügen können, beispielsweise wenn Sie Zonenbezeichnungen wie in Ihrer Grafik hinzufügen möchten. Dann können Sie festlegen, dass nur diese Raster in einer bestimmten Zone angezeigt werden.
Beim Drucken in einer Grafik aus der Layoutansicht wird die volle Auflösung der Raster verwendet, sodass beim Drucken keine Qualitätsverluste auftreten.
Hier ist dieselbe Grafik, die jedoch einige der Rasterdaten sowie einige Drahtmodelle zeigt.
quelle
Ich weiß, dass ich zu spät zur Party komme. Aber hier ist mein Vorschlag.
1) Bildgröße
Wenn Ihre 550-GB-Originale nicht komprimiert sind, sollten Sie sie in JPEG-komprimierte TIFF-Dateien konvertieren. Bewahren Sie sie einzeln auf (nicht zusammengeführt). Sie können mit arcgis, gdal, was auch immer Sie möchten komprimieren. Durch die Komprimierung erhalten Sie ungefähr 23 GB. Erstellen Sie noch keine Pyramiden / Übersichten. Zum Komprimieren können Sie jedes beliebige gis-Programm verwenden, aber ich verwende gerne gdal, daher lautet der Befehl im Grunde wie folgt:
Sie können ganz einfach eine Fledermausdatei erstellen, die alle Ihre unkomprimierten Tiffs durchläuft. Ich verwende gdalwarp gerne zum Komprimieren meiner Bilder anstelle des üblichen gdal_translate, da es schneller ist (mit Multi-Option für Multi-Core und -wm für viel Speicher).
2) Behandlung als einzelnes Bild
Sie können ein "virtuelles" Mosaik im Format gdal vrt erstellen. Dies ist kompatibel mit Arcgis, QGIS, Mapserver usw. Nicht sicher über Global Mapper und Mapinfo. Das .vrt-Format ist nur eine einzelne XML-Datei, in der Ihre Bilder aufgelistet sind. Das ist ein einziger Befehl zum Erstellen:
Diese Datei ist einige KB groß.
3) Beschleunigung der Visualisierung
Sie müssen Pyramiden / Übersichten erstellen. Verwenden Sie dazu einfach Ihre bevorzugte Software. Mit gdal tools können Sie:
Dies wird lange dauern. Warten Sie 2 bis 3 Tage ohne Unterbrechung.
4) Verwenden des Mosaiks
Laden Sie das virtuelle Mosaik in Ihr GIS-Programm. Es wird schnell gehen, weil es die Übersichten liest, die sich nur in einer Datei befinden, wie ein ecw. Wenn Sie auf die tatsächliche Auflösung Ihrer Bilder zoomen, werden nur die wenigen sichtbaren Bilder aus den komprimierten Bildern gelesen, und das geht auch sehr schnell.
5)
Behandeln von Bereichen ohne Daten, die schwarz angezeigt werden Sie haben 3 Lösungen dafür: i) Verwenden Sie ein Dateiformat, das Knoten verarbeitet, was kompliziert sein wird. oder ii) ein Alpha-Band verwenden oder iii) eine Maskendatei. Sie können in Schritt 2 automatisch ein Alpha-Band erstellen, indem Sie GDAL mitteilen, dass sich Knotenbereiche im Alpha-Band befinden sollen. Fügen Sie einfach die Option -addalpha hinzu:
Das Problem mit Alpha-Bändern ist, dass sie schlecht komprimiert werden. Ihre Übersichten werden also größer. Wenn das für dich in Ordnung ist, bist du fertig.
Wenn Sie eine Maskendatei erstellen möchten, ist dies etwas komplizierter. Und ich finde, das passt nicht in die vorliegende Frage.
Hoffe das hilft. Sie können Informationen zu GDAL-Tools finden, indem Sie googeln. Viele interessante Sachen.
quelle
gdal_translate -co compress=xxx
. Dies ist kein Problem, wenn Sie nur als Übersetzer verwendet werden (wie hier vorgeschlagen).550 GB eingegebene TIF-Daten können problemlos von einer einzelnen ECW-Datei verarbeitet werden. Wir haben viele Kunden, die viel größere Datensätze komprimieren. Denken Sie also bitte nicht, dass das Format in diesem Bereich nicht geeignet ist.
Ihre Strategie, das Projekt in kleine Kacheln aufzuteilen, um den Nullbereich zu minimieren, ist auch ein guter Ansatz für die aktuelle Formatversion, da dadurch die Komprimierungszeit verkürzt wird
Ihr Beispiel enthält Verweise auf vorzeichenlose 16-Bit-Eingabedaten. Ich würde empfehlen, wenn möglich auf 8 Bit neu zu skalieren (abhängig von Ihren Anforderungen).
Bitte erläutern Sie, warum Sie Ihr Projekt nicht mit IMAGINE oder ERMapper bearbeiten konnten, da ich Ihnen ohne diese Informationen nicht helfen kann. Oder wenden Sie sich noch besser an das lokale Support-Team
Beachten Sie, dass bei Verwendung des ESRI Mosaic Dataset-Formats in den obigen Antworten die Anforderung zum Generieren der Pyramiden- / Übersichtsebene nicht erwähnt wird. Ohne sie wird die Leistung erheblich leiden. Es ist wahrscheinlich, dass Sie die ECW-äquivalenten Dateien in der gleichen Zeit erstellen können, jedoch eine verbesserte Bildqualität und erheblich geringere Anforderungen an den Ausgabespeicher haben.
quelle
Obwohl es eindeutig besser ist, eine der anderen genannten Optionen zu verwenden, können Sie Folgendes versuchen:
Dadurch wird ein virtuelles GDAL-Format erstellt und anschließend in ein einzelnes GeoTiff konvertiert.
quelle
Das kommt mir ziemlich bekannt vor, wir produzieren auch große einzelne ECW-Dateien aus 500 zu 1 TB TIF-Dateien. Aber ich würde nicht mit ArcGIS (ArcObjects und die Geoverarbeitungs-Engine) arbeiten, da es nicht in der Lage ist, diesen Betrag zuverlässig zu mosaikieren. Wenn Sie in der ESRI-Welt bleiben möchten, würde ich empfehlen, Mosaikblöcke von etwa 50 GB oder noch kleiner auf einmal in einem Raster-Datensatz zu speichern, der in einer Datei-Geodatabase gespeichert ist. Das Mosaik-Tool stürzt nach einer Weile ab. Daher ist es eine gute Idee, ArcGIS nach einigen GigaBytes Speicher freizugeben.
Eine andere Möglichkeit ist die Verwendung einer SDE-Geodatabase für Unternehmen oder Arbeitsgruppen. Mit SDE erhalten Sie die altmodischen SDE-Befehlszeilentools, die auf einer robusten C ++ - Architektur basieren, die sich von den unzuverlässigen ArcObjects unterscheidet. Mit dem Befehl "sderaster -o mosaic ..." können Sie ein RasterDataset mosaikieren, bis Ihr Datenbankspeicher voll ist. Es gibt auch Befehle zum Erstellen von Pyramiden und Statistiken für das RasterDataset. Andernfalls ist dies nicht sehr nützlich, da die meisten Clients die Bilder beim Lesen nicht im Speicher behalten können, wie oben erwähnt. Pyramiden (in der Tat räumliche Indizierung) sollten dieses Problem lösen.
Diese Lösungen helfen Ihnen jedoch nicht mit MapInfo. Sie haben erwähnt, dass Sie ERDAS Mapper bereits ausprobiert haben. Das ist auch das Tool, das ich bevorzugen würde. Wir haben bereits 16000 TIF-Dateien mit einer Größe von jeweils 50 MB zusammen mosaikiert, die 800 GB groß sind. Anschließend haben wir sie auf eine einzelne ECW mit einem Komprimierungsverhältnis von 1:20 komprimiert, was zu einer 30 GB ECW-Datei führte. Ich frage mich, dass das bei Ihnen nicht funktioniert ...
Zumindest lief der gesamte Prozess auf einem Single-Core-Pentium 4 mit 1,6 GHz und 2 GB RAM, sodass die Hardware nicht das Problem sein sollte. Wir verwenden Windows Server 2003 (oder ein anderes Server-Betriebssystem), da die Harware-Ressourcen besser verwendet werden. Beachten Sie, dass der gesamte Komprimierungsprozess viel Zeit benötigt. Unsere Maschine arbeitete ungefähr 5 Wochen an dieser einzelnen Datei, und weil sie manchmal auch abstürzte, mussten wir dies mehrmals tun, aber am Ende bekamen wir unsere ECW-Datei.
Ich kenne kein anderes System oder keinen anderen Mechanismus, um große Mengen von Rastern weitgehend herstellerneutral zu speichern. Alle oben genannten Methoden sind sehr ESRI-spezifisch. Zumindest mit Oracle RASTER und einer ziemlich ähnlichen Implementierung in PostGIS gibt es zwei datenbankbasierte Varianten, die ebenfalls nicht herstellerneutral sind, sondern über die SQL / MM-Schnittstelle geöffnet werden.
Hoffe das hilft ein bisschen.
quelle