Как добавить TRE в файлы изображений NITF в GDAL? - PullRequest
0 голосов
/ 03 мая 2019

Я пытаюсь преобразовать объект 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, что довольно сложно.

Я что-то пропустил?

...