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.