ईमानदारी से यह उपयोग करके ऐसा करना आसान है gdalbuildvrt एक में subprocess
या os.system
।
क्या आप इसे पाइथन के माध्यम से करना चाहते हैं तो यह किया जा सकता है। GDAL पायथन के भीतर मानक डेटासेट निर्माण विधियों का उपयोग करके हम आसानी से आधार डेटासेट VRT बना सकते हैं ।
from osgeo import gdal
drv = gdal.GetDriverByName("VRT")
vrt = drv.Create("test.vrt", x_size, y_size, 0)
ध्यान दें कि हम शुरुआत में बिना बैंड वाले डेटासेट बना रहे हैं। वीआरटी पर प्रलेखन से कि वीआरटी डेटासेट कुछ डेटासेट प्रकारों में से एक है जो AddBand
तर्कों को स्वीकार कर सकते हैं।
vrt.AddBand(gdal.GDT_Float32)
band = vrt.GetRasterBand(1)
अब प्रत्येक बैंड के लिए हमें मेटाडेटा आइटम मैन्युअल रूप से सेट करने होंगे:
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
दो तर्क लेता है, पहला मेटाडेटा आइटम का स्ट्रिंग, दूसरा आइटम स्वयं। इसका मतलब यह है कि आप मेटाडेटा आइटम को कम नहीं कर सकते हैं, इसलिए डेटा स्रोतों के लिए आपको पूरी सामग्री को एक स्ट्रिंग के रूप में सेट करना होगा।
ध्यान दें कि हम इस विधि का उपयोग जटिल स्रोत ( ComplexSource
) बनाने के लिए कर सकते हैं जिसमें मानों के लुक-अप-टेबल होते हैं, KernelFilteredSource
मनमाने आकार और आकार के कर्नेल फिल्टर स्रोत ( और मास्क बैंड MaskBand
) ( )।