Ehrlich gesagt ist es einfacher, dies zu tun, indem Sie gdalbuildvrt in einem subprocess
oder verwenden os.system
.
Wenn Sie dies über Python tun möchten, können Sie dies tun. Mit den Standardmethoden zur Erstellung von Datensätzen in GDAL Python können wir die Basis-Dataset- VRT einfach erstellen .
from osgeo import gdal
drv = gdal.GetDriverByName("VRT")
vrt = drv.Create("test.vrt", x_size, y_size, 0)
Beachten Sie, dass wir den Datensatz zunächst ohne Bänder erstellen. Aus der Dokumentation zu VRTs geht hervor, dass VRT-Datasets einer der wenigen Dataset-Typen sind, die AddBand
Argumente akzeptieren können .
vrt.AddBand(gdal.GDT_Float32)
band = vrt.GetRasterBand(1)
Jetzt müssen wir für jedes Band die Metadatenelemente manuell einstellen:
simple_source = '<SourceFilename relativeToVRT="1">%s</SourceFilename>' % source_path + \
'<SourceBand>%i</SourceBand>' % source_band + \
'<SourceProperties RasterXSize="%i" RasterYSize="%i" DataType="Real" BlockXSize="%i" BlockYSize="%i"/>' % (x_size, y_size, x_block, y_block) + \
'<SrcRect xOff="%i" yOff="%i" xSize="%i" ySize="%i"/>' % (x_offset, y_offset, x_source_size, y_source_size) + \
'<DstRect xOff="%i" yOff="%i" xSize="%i" ySize="%i"/>' % (dest_x_offset, dest_y_offset, x_dest_size, y_dest_size)
band.SetMetadataItem("SimpleSource", simple_source)
band.SetMetadataItem("NoDataValue", -9999)
SetMetadatItem
Es werden zwei Argumente verwendet, das erste eine Zeichenfolge des Metadatenelements und das zweite das Element selbst. Dies bedeutet, dass Sie ein Metadatenelement nicht unterteilen können. Für Datenquellen müssen Sie daher den gesamten Inhalt als Zeichenfolge festlegen.
Beachten Sie, dass wir diese Methode verwenden können, um komplexe Quellen ( ComplexSource
) zu erstellen , die Nachschlagetabellen mit Werten, Kernelfilterquellen ( KernelFilteredSource
) mit beliebigen Größen und Formen und Maskenbänder ( MaskBand
) enthalten.
overviews
Element, aber gdalbuildvrt verwendet es nicht. Vielen Dank, dass Sie einen Stub bereitgestellt haben, wie dies in Python hinzugefügt werden kann.Seit GDAL 2.1 sind die CLI-Tools als Bibliotheksfunktionen verfügbar, und genau das rufen die CLI-Tools jetzt intern auf.
Beispielsweise:
Ist das Äquivalent von:
Die verfügbaren CLI-Optionen werden direkt den Parametern von BuildVRTOptions zugeordnet. Außerdem sind einige Extras wie Fortschrittsrückrufe verfügbar.
quelle
Die Antwort von @rcoup hat nur bei mir funktioniert, wenn Sie sie wie folgt ändern:
Andernfalls wird die Datei nicht auf die Festplatte geschrieben.
quelle
closing
für Python keine gibt , müssen Sie Ihrevrt
außerhalb des Gültigkeitsbereichs bringen, indem Sie sie zuweisenNone
.