c# - 如何将 TRE 添加到 gdal 中的 NITF 图像文件?
问题描述
我正在尝试将位图对象转换为 NITF 2.1(国家图像传输格式)文件,并且需要包含 TRE(标记记录扩展名),特别是 SENSRB 块。如何以简单的方式将 TRE 添加到 gdal 中的 NITF 文件的数据集?
我正在使用 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");
变量 metadata 接收包含 TRE 的 xml-text 块。但是用同样的方式写是行不通的:
DataSet dsOut = driver.CreateCopy(outfilePath, dsIn, 0, options, null, null);
dsOut.SetMetadata(metadata , "xml:TRE");
xml 块最终位于外部 .aux.xml 文件中,而不是位于 NITF 文件中。
通过在选项参数中指定显式记录,我设法创建了一个小型 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 记录,这相当复杂。
我错过了什么吗?
解决方案
推荐阅读
- amazon-web-services - 用于加快 ECS 扩展的 AWS 高分辨率指标
- node.js - couchbase community 6.5 和 SDK 3 填充内存
- wordpress - get_posts 不返回所有帖子,具有多种自定义帖子类型
- r - R:计算预定义词典中单词的频率
- angular - 如何从谷歌地图 latLng 对象获取纬度和经度
- ios - swift中的静态全局常量内存分配
- jquery - CKEditor 在第一次请求时返回空数据并适用于所有其他请求
- javascript - 如何从 PNG 创建 SDF-Icon(在 Mapbox 中使用)?
- linux - 由于特殊字符,环境变量字符串被截断
- python - Python:用于多处理的 Joblib