我正在尝试将位图对象转换为NITF 2.1(国家图像传输格式)文件,并且需要包括TRE(带标签的记录扩展名),特别是SENSRB块。 如何以简单的方式将gdal中的NITF文件的TRE添加到数据集中?
我正在使用NuGet软件包GDAL.NET/GDAL.NET.Core v2.3.1,并且成功编写了NITF文件。我还可以读取包含任何TRE块的NITF文件。
阅读很好:
Dataset dsIn = Gdal.Open(infilepath, Access.GA_ReadOnly);
metadata = dsIn.GetMetadata("xml:TRE");
变量元数据接收包含TRE的xml文本块。 但是用相同的方式写不起作用:
DataSet dsOut = driver.CreateCopy(outfilePath, dsIn, 0, options, null, null);
dsOut.SetMetadata(metadata , "xml:TRE");
xml块最终位于外部.aux.xml文件中,而不是在NITF文件中。
通过在options参数中指定显式记录,我设法创建了一个小的TRE:
metadataStrings = new[] {"FILE_TRE=CCINFA=0012AS 17ge:GENC:3:3-5:AUS00000"};
var dsOut = _drvOut.CreateCopy(outfilePath, ds, 0, metadataStrings, null, null);
在NITF文件中创建CCINFA记录。但是然后我必须创建整个SENSRB记录,这非常复杂。
我错过了什么吗?