Оболочка GDAL C # для VRT не записывает файл VRT - PullRequest
0 голосов
/ 28 марта 2019

Я использую библиотеки GDAL для .NET (версия библиотеки 2.3.3) и оболочку OSGeo4W.

То, что я делаю, - это объединение двух (или более) растровых файлов в VRT для дальнейшего использования.обработка.Это происходит в коде.

В качестве теста в оболочке я могу выполнить следующую команду GDAL:

gdalbuildvrt C:\Temp\GdalTests\z7_x43_y43.vrt F:\gdal\Aero\gnc\1\0000a013.gn1 F:\gdal\Aero\gnc\1\0000b013.gn1

Как и ожидалось, он создает файл VRT с именем "z7_x43_y43.vrt"в указанной папке.

Однако соответствующая библиотека GDAL C # не может воспроизвести это правильное поведение;файл VRT не записывается в vrtFile.

Я могу использовать другие библиотеки GDAL C #, такие как wrapper_GDALTranslate(...) без проблем (имеется в виду, что при указании пути назначения туда записывается файл), только кажется, что BuildVRT имеет проблему.

Вот код, который я использую, упрощенный для этого вопроса:

GdalConfiguration.ConfigureGdal();
var vrtFile = @"C:\Temp\GdalTests\z7_x43_y43.vrt";
var aeroFiles = new List<string>();
aeroFiles.Add(@"F:\gdal\Aero\gnc\1\0000a013.gn1");
aeroFiles.Add(@"F:\gdal\Aero\gnc\1\0000b013.gn1");
var vrtOptions = new GDALBuildVRTOptions(new [] { "-overwrite" });
Gdal.wrapper_GDALBuildVRT_names(vrtFile, aeroFiles.ToArray(), vrtOptions, null, null);

Исходные файлы (* .gn1) используютдрайвер NITF и базовые данные WGS84 отлично работают в других задачах кода, связанных с библиотекой GDAL C # (например, я могу загружать их как растры, применять к ним gdal_translate и т. д.).

Кто-нибудь имеет опыт работы сVRT сторона библиотек GDAL C #?Предложения о том, что я могу делать неправильно, или, возможно, есть проблема с самой библиотекой?

РЕДАКТИРОВАТЬ: Дело не в том, что вызов wrapper_GDALBuildVRT_names вообще ничего не делает ...у него есть Dataset возвращаемый объект, который правильно представляет данные VRT, и может быть передан в функцию перевода и т. д.

var vrtDataset = Gdal.wrapper_GDALBuildVRT_names(vrtFile, aeroFiles.ToArray(), vrtOptions, null, null);
Gdal.wrapper_GDALTranslate(outPath, vrtDataset, new GDALTranslateOptions(translateOptions.ToArray()),
                    null, null);

Это приведет к правильному выводу файла на outPath (например,, PNG, GeoTIFF и т. Д., В зависимости от параметров).Мне просто интересно, почему никогда не создается физический файл VRT, хотя мы передаем имя получателя (vrtFile).

...