Я пытаюсь преобразовать объект Bitmap в файл NITF 2.1 (Национальный формат передачи изображений), и мне нужно включить TRE (расширение теговой записи), в частности, блок SENSRB.Как добавить TRE в набор данных для файла NITF в gdal простым способом?
Я использую пакеты NuGet GDAL.NET/GDAL.NET.Core v2.3.1 и преуспел в написаниифайл NITF.Я также могу прочитать файл NITF, включая любые блоки TRE.
Чтение работает нормально:
Dataset dsIn = Gdal.Open(infilepath, Access.GA_ReadOnly);
metadata = dsIn.GetMetadata("xml:TRE");
Переменная метаданные получает текстовый XML-блок, содержащий TRE.Но запись таким же образом не работает:
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);
, которая создает запись CCINFA внутри NITF-файла.Но тогда я должен был бы создать всю запись SENSRB, что довольно сложно.
Я что-то пропустил?