问题描述
我编写了一个 python 脚本,它从 .aux.xml 文件中读取元数据标记值,并使用 gdalinfo 将它们添加到相应的 tiff 文件中。然后使用 gdalinfo 我可以在元数据中找到它们。
现在我需要将此 tif 文件转换为 .vrt 格式。使用 gdalbuidlvrt 我意识到我缺少这些自定义字段。
有没有办法在转换为 .vrt 文件时保留它们?
在下面,您可以找到我的代码的简化版本
import os
import gdal
from lxml import etree
dataset = gdal.Open('source_file.tif',gdal.GA_Update)
filename='C:\\Users\\' \
'\\source_file.tif.aux.xml'
doc = etree.parse(filename)
CLASS_0_NO_DATA_xml = doc.xpath('.//MDI[@key="CLASS_0_NO_DATA[%]"]//text()')
CLASS_1_RAIN_xml = doc.xpath('.//MDI[@key="CLASS_1_RAIN[%]"]//text()')
band2_categories_xml = doc.xpath('.//PAMRasterBand[@band="2"]/CategoryNames/Category//text()')
band2_nodata_xml = band2_categories_xml[0]
band2_quality_index_xml = band2_categories_xml[1]
##### Note GetRasterBand() takes band number starting from 1 not 0
band = dataset.GetRasterBand(1)
CLASS_0_NO_DATA = 'CLASS_0_NO_DATA'
CLASS_0_NO_DATA_value = CLASS_0_NO_DATA_xml[0] # str(dataset.GetMetadataItem('CLASS_0_NO_DATA[%]'))
CLASS_1_RAIN = 'CLASS_1_RAIN'
CLASS_1_RAIN_value = str(CLASS_1_SNow_xml[0]) #str(dataset.GetMetadataItem('CLASS_1_RAIN[%]'))
band.SetMetadata( {CLASS_0_NO_DATA: CLASS_0_NO_DATA_value,CLASS_1_RAIN: CLASS_1_RAIN_value
} )
###### All values must be strings
dataset.SetMetadata( {'Band_1': 'MAP','Band_2': 'QUALITY_FLAG'} )
Metadata = os.popen('gdalinfo Output_file.tif').read()
print(Metadata)
Driver: GTiff/GeoTIFF
Files: source_file.tif
Size is 4901,2867
Coordinate System is:
LOCAL_CS["ETRS89 / ETRS-LAEA",GEOGCS["ETRS89",DATUM["European_Terrestrial_Reference_System_1989",SPHEROID["GRS 1980",6378137,298.2572221010002,AUTHORITY["epsg","7019"]],"6258"]],PRIMEM["Greenwich",0],UNIT["degree",0.0174532925199433],"4258"]],"3035"],UNIT["metre",1]]
Origin = (3847097.795985520351678,2872447.744972674641758)
Pixel Size = (231.656358262999987,-231.656358262999987)
Metadata:
AREA_OR_POINT=Area
Band_1=MAP
Image Structure Metadata:
INTERLEAVE=PIXEL
Corner Coordinates:
Upper Left ( 3847097.796,2872447.745)
Lower Left ( 3847097.796,2208288.966)
Upper Right ( 4982445.608,2872447.745)
Lower Right ( 4982445.608,2208288.966)
Center ( 4414771.702,2540368.355)
Band 1 Block=4901x1 Type=Byte,ColorInterp=Palette
Metadata:
CLASS_0_NO_DATA=12.388736109961544
CLASS_1_RAIN=3.151026530394237
如您所见,我添加了两个类:CLASS_0_NO_DATA 和 CLASS_1_RAIN 及其百分比
当我使用
gdabuildvrt -resolution highest -srcnodata 0 -vrtnodata 0 Output_file.vrt Output_file.tif
我明白
Driver: VRT/Virtual Raster
Files: Output_file.vrt
Output_file.tif
Size is 4901,-231.656358262999987)
Corner Coordinates:
Upper Left ( 3847097.796,2540368.355)
Band 1 Block=128x128 Type=Byte,ColorInterp=Palette
NoData Value=0
关于这两个类的信息丢失的地方。
有什么想法吗?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)