Ich bin neu bei GIS.
Ich habe einen Code, der Infrarotbilder des Mars in thermische Trägheitskarten umwandelt, die dann als 2D-Numpy-Arrays gespeichert werden. Ich habe diese Karten als hdf5-Dateien gespeichert, möchte sie aber wirklich als Rasterbilder speichern, damit ich sie in QGIS verarbeiten kann. Ich habe mehrere Suchanfragen durchgeführt, um herauszufinden, wie das geht, aber ohne Glück. Ich habe versucht, den Anweisungen im Tutorial unter http://www.gis.usu.edu/~chrisg/python/ zu folgen, aber die Dateien, die ich mit seinem Beispielcode erzeuge, werden beim Importieren in QGIS als graue Kästchen geöffnet. Ich habe das Gefühl, wenn jemand einem vereinfachten Beispiel für das, was ich tun möchte, die einfachste Vorgehensweise vorschlagen könnte, könnte ich vielleicht Fortschritte erzielen. Ich habe QGIS und GDAL, ich würde mich sehr freuen, andere Frameworks zu installieren, die jeder empfehlen kann. Ich benutze Mac OS 10.7.
Wenn ich zum Beispiel eine Reihe von thermischen Trägheiten habe, die wie folgt aussehen:
TI = ( (0.1, 0.2, 0.3, 0.4),
(0.2, 0.3, 0.4, 0.5),
(0.3, 0.4, 0.5, 0.6),
(0.4, 0.5, 0.6, 0.7) )
Und für jedes Pixel habe ich den Breiten- und Längengrad:
lat = ( (10.0, 10.0, 10.0, 10.0),
( 9.5, 9.5, 9.5, 9.5),
( 9.0, 9.0, 9.0, 9.0),
( 8.5, 8.5, 8.5, 8.5) )
lon = ( (20.0, 20.5, 21.0, 21.5),
(20.0, 20.5, 21.0, 21.5),
(20.0, 20.5, 21.0, 21.5),
(20.0, 20.5, 21.0, 21.5) )
Welches Verfahren wird empfohlen, um diese Daten in eine Rasterdatei zu konvertieren, die ich in QGIS öffnen kann?
Antworten:
Eine mögliche Lösung für Ihr Problem: Konvertieren Sie es in ein ASCII-Raster, dessen Dokumentation Sie hier finden . Dies sollte mit Python relativ einfach zu bewerkstelligen sein.
Wenn Sie die obigen Beispieldaten verwenden, erhalten Sie in einer .asc-Datei Folgendes:
Dies fügt QGIS und ArcGIS erfolgreich hinzu und sieht in ArcGIS folgendermaßen aus:
Nachtrag: Während Sie es wie beschrieben zu QGIS hinzufügen können, bleibt QGIS 1.8.0 hängen, wenn Sie versuchen, die Eigenschaften dafür aufzurufen (um es zu stilisieren). Ich werde das als Fehler melden. Wenn Ihnen das auch passiert, gibt es viele andere kostenlose GIS.
quelle
Unten ist ein Beispiel, das ich für einen Workshop geschrieben habe, in dem die Python-Module numpy und gdal verwendet werden. Es liest Daten aus einer .tif-Datei in ein Numpy-Array, führt eine Neuklassifizierung der Werte im Array durch und schreibt sie dann wieder in ein .tif-Array.
Nach Ihrer Erklärung klingt es so, als ob es Ihnen gelungen ist, eine gültige Datei zu erstellen, Sie müssen sie jedoch nur in QGIS symbolisieren. Wenn ich mich richtig erinnere, werden beim erstmaligen Hinzufügen eines Rasters häufig alle Farben angezeigt, wenn Sie keine bereits vorhandene Farbzuordnung haben.
quelle
outDs = None
, um es zu rettenIch bin endlich auf diese Lösung gestoßen, die ich aus dieser Diskussion gewonnen habe ( http://osgeo-org.1560.n6.nabble.com/gdal-dev-numpy-array-to-raster-td4354924.html ). Ich mag es, weil ich direkt von einem Numpy-Array zu einer TIF-Rasterdatei wechseln kann. Ich wäre sehr dankbar für Kommentare, die die Lösung verbessern könnten. Ich werde es hier posten, falls jemand nach einer ähnlichen Antwort sucht.
quelle
Es gibt auch eine schöne Lösung im offiziellen GDAL / OGR-Kochbuch für Python.
quelle
Eine Alternative zu dem in den anderen Antworten vorgeschlagenen Ansatz ist die Verwendung des
rasterio
Pakets. Ich hatte Probleme beim Generieren dieser mitgdal
und fand diese Site nützlich.Angenommen, Sie haben eine andere tif-Datei (
other_file.tif
) und ein numpy-Array (numpy_array
) mit der gleichen Auflösung und Ausdehnung wie diese Datei. Dies ist der Ansatz, der für mich funktioniert hat:quelle