Organisieren Sie Ihre Notizen. Der Code setzt eine interaktive Shell voraus.
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.
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)].
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', ..)
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