Importieren und Exportieren von GeoTiff-Bildern mit Python

Organisieren Sie Ihre Notizen. Der Code setzt eine interaktive Shell voraus.

Lesen Sie als numpy Array von Pixel Array Daten des Bildes

read_tif.py


import numpy as np
from osgeo import gdal, gdalconst, gdal_array

src = gdal.Open('inputfilepath', gdalconst.GA_ReadOnly) #Lesen Sie tif(read only)
type(src) # "osgeo.gdal.Dataset"

src.RasterXSize #Anzahl der horizontalen Pixel
src.RasterYSize #Anzahl der vertikalen Pixel
src.RasterCount #Anzahl der Bänder

b1 = src.GetRasterBand(1).ReadAsArray() #1. Band numpy Array
b2 = src.GetRasterBand(2).ReadAsArray() #2. Band numpy Array
b3 = src.GetRasterBand(3).ReadAsArray() #3. Band Numpy Array

dtid = src.GetRasterBand(1).DataType #Modellnummer(ex: 6 -> numpy.float32)
gdal_array.GDALTypeCodeToNumericTypeCode(dtid) #Modellnummer->Typnamenkonvertierung

# others...

src.GetRasterBand(1).GetNoDataValue()
src.GetRasterBand(1).GetMinimum()
src.GetRasterBand(1).GetMaximum()
src.GetRasterBand(1).GetScale()
src.GetRasterBand(1).GetUnitType()

Für die letzten 5 Elemente wurde nichts aus der Datei zurückgegeben, die ich hatte. Es kann sich auf den in der Adresse gespeicherten Wert in Form von Metadaten im Voraus beziehen. Natürlich gibt es viele Fälle, in denen die Numpy-Verarbeitung nach ReadAsArray () verwaltet werden kann.

Erwerb grundlegender Informationen

read_info.py


src.GetDescription() #Dateiname

src.GetGeoTransform() #6 Zahlen in Bezug auf Koordinaten(Siehe unten)
src.GetProjection() #Systeminformationen koordinieren

Die Bedeutung der von GetGeoTransform () ausgegebenen Zahlenfolge ist [Startpunkt Endlänge, West-Ost-Auflösung, Drehung (0 nach Nord-Süd), Startpunkt End Breitengrad, Drehung (0 nach Nord-Süd), Nord-Süd-Auflösung (negativ in Nord-Süd-Richtung)].

Holen Sie sich Bildmetadaten

Informationen zum Suchen nach Metadatenkonzepten und -elementen in Tiff finden Sie beispielsweise unten. Rufen Sie für die Hauptmetadaten die Metadaten mit dem hier angegebenen Tag-Namen ab. TIFF-Format (1) | JProgramer Übersicht über die CG-Datei, Kapitel 5, Abschnitt 1 GTiff -- GeoTIFF File Format

read_meta.py



src.GetMetadata() #Metadaten-Array vom Typ Wörterbuch
src.GetMetadataItem('itemname') #Artikelspezifikation(ex: 'TIFFTAG_XRESOLUTION', 'TIFFTAG_DATETIME', ..)

GeoTiff-Bildausgabe

Folgen Sie dem GTiff --GeoTIFF-Dateiformat. Beachten Sie insbesondere, dass die korrekte Operation möglicherweise nicht ausgeführt wird, wenn Sie das Bild später verwenden, es sei denn, die Einstellungen wurden ordnungsgemäß vorgenommen, einschließlich der als Optionen angegebenen. Wenn Sie beispielsweise das Ausgabebild mit einer Software verarbeiten, verweist diese Software möglicherweise auf einige der Metadaten (Tags) als Basisinformationen. Wenn die Informationen fehlen, funktionieren sie möglicherweise nicht wie erwartet, und die Ursache muss jedes Mal identifiziert werden, es sei denn, Sie haben die Software im Voraus gründlich verstanden. (Der Grund, warum RGB im folgenden Code in das Tag "Photometric Interpretation" eingegeben wird, ist, dass ich erwartet habe, dass es in der verwendeten Software als Farbbild gezeichnet wird, aber es gibt ein Problem, dass es unter Verwendung des Bandwerts der ersten Schicht zu einer monochromen Anzeige wird. Weil es gab.)

write_data.py


from osgeo import osr #Raumbezugsmodul

dtype = gdal.GDT_Float32 #others: gdal.GDT_Byte, ...
band = 3 #Anzahl der Bänder
output = gdal.GetDriverByName('GTiff').Create('outputfilepath', xsize, ysize, band, dtype, options = ['PHOTOMETRIC=RGB']) #Leere Ausgabedatei

output.SetGeoTransform((ul_x, h_res, 0, ul_y, 0, -v_res)) #Systemspezifikation koordinieren
srs = osr.SpatialReference() #Räumliche Referenzinformationen
srs.ImportFromEPSG(32648) # WGS84 UTM_Geben Sie das Koordinatensystem für 48n an
output.SetProjection(srs.ExportToWkt()) #Kombinieren Sie räumliche Informationen

output.GetRasterBand(1).WriteArray(b1)   #Rotes Band exportieren (b1 ist ein numpy 2D-Array)
output.GetRasterBand(2).WriteArray(b2)   #Grünes Band
output.GetRasterBand(3).WriteArray(b3)   #Blaues Band
output.FlushCache()                     #Schreiben auf die Festplatte
output = None                           

Recommended Posts

Importieren und Exportieren von GeoTiff-Bildern mit Python
Bilder mit Pupil, Python und OpenCV aufnehmen
Programmieren mit Python und Tkinter
Ver- und Entschlüsselung mit Python
Angrenzende Bilder mit Python Teil 1
Mit Python + Tweepy können Sie Bilder und Videos der Medienzeitleiste abrufen
Python und Hardware-Verwenden von RS232C mit Python-
Python mit Pyenv und Venv
Funktioniert mit Python und R.
Kommunizieren Sie mit FX-5204PS mit Python und PyUSB
Zahlenerkennung in Bildern mit Python
Leuchtendes Leben mit Python und OpenCV
Roboter läuft mit Arduino und Python
Installieren Sie Python 2.7.9 und Python 3.4.x mit pip.
Neuronales Netzwerk mit OpenCV 3 und Python 3
AM-Modulation und Demodulation mit Python
Scraping mit Node, Ruby und Python
Scraping mit Python, Selen und Chromedriver
Kratzen mit Python und schöner Suppe
JSON-Codierung und -Decodierung mit Python
[GUI in Python] PyQt5-Drag & Drop-
Veröffentlichen Sie mehrere Twitter-Bilder mit Python
Lesen und Schreiben von NetCDF mit Python
Animieren Sie mehrere Standbilder mit Python
Ich habe mit PyQt5 und Python3 gespielt
Laden Sie das GIF-Bild mit Python + OpenCV
Lesen und Schreiben von CSV mit Python
Mehrfachintegration mit Python und Sympy
Koexistenz von Python2 und 3 mit CircleCI (1.0)
Sugoroku-Spiel und Zusatzspiel mit Python
Arbeiten mit DICOM-Bildern in Python
Laden Sie Bilder mit Falcon hoch und laden Sie sie herunter
FM-Modulation und Demodulation mit Python
[Python] Versuchen Sie, Zeichen aus Bildern mit OpenCV und pyocr zu erkennen
Kommunizieren Sie mit gRPC zwischen Elixir und Python
Datenpipeline-Aufbau mit Python und Luigi
Berechnen Sie das Standardgewicht und zeigen Sie es mit Python an
Überwachen Sie Mojo-Ausfälle mit Python und Skype
[Python] Kombiniert zugeschnittene Bilder automatisch und nahtlos
Verstärken Sie Bilder für maschinelles Lernen mit Python
[Automatisierung] Bearbeiten Sie Maus und Tastatur mit Python
Passwortlose Authentifizierung mit RDS und IAM (Python)
Python-Installation und Paketverwaltung mit pip
POST verschieden mit Python und empfange mit Flask
Fraktal zum Erstellen und Spielen mit Python
Ein Memo mit Python2.7 und Python3 in CentOS
Verwenden Sie PIL oder Pillow mit Cygwin Python
Erstellen und entschlüsseln Sie Caesar-Code mit Python
CentOS 6.4, Python 2.7.3, Apache, mod_wsgi, Django
Lesen und Schreiben von JSON-Dateien mit Python
Umgang mit "Jahren und Monaten" in Python
[python, openCV] base64 Gesichtserkennung in Bildern
Ich habe Numba mit Python3.5 installiert und verwendet
Tweet-Analyse mit Python, Mecab und CaboCha
Verknüpfung von Python und JavaScript mit dem Jupiter-Notizbuch
Verkehrsüberwachung mit Kibana, ElasticSearch und Python
FM-Modulation und Demodulation mit Python Part 2