R: как записать растр на диск без вспомогательного файла?

Я пишу набор данных в файл в формате ERMapper (.ers), используя пакет Raster в R, но у меня возникают проблемы с полученным вспомогательным файлом .aux.xml (который меня на самом деле не интересует).

Простой пример:

rst <- raster(ncols=15000,nrows=10000)
rst[] <- 1.234
writeRaster(rst, filename='_test.ers', overwrite=TRUE)

Строка writeRaster() выполняется некоторое время, файл данных довольно большой, около 1,2 ГБ на диске.

При проверке того, что происходит во время выполнения writeRaster(), я обнаружил, что файл .ers (файл заголовка + связанный файл данных) обычно создается примерно за 20 секунд. Затем требуется writeRaster() еще 20–25 секунд для создания файла .aux.xml, который содержит только такие статистические данные, как минимальное, максимальное, среднее и среднее значение. разв. (что, вероятно, объясняет, почему вычисления занимают так много времени).

Поскольку меня не волнует файл .aux.xml, я бы хотел, чтобы writeRaster() вообще не возился с ним и сэкономил мне 20-25 секунд времени выполнения (я пишу много этих наборов данных на диск, поэтому 50 % ускорения в моем коде весьма существенно).

Кто-нибудь знает, как указать writeRaster() не создавать файл .aux.xml? Я подозреваю, что это проблема, связанная с GDAL, но после долгих исследований я не смог найти ответ...

Любая помощь приветствуется!


person dsp542    schedule 23.05.2017    source источник
comment
Используя ваш код, моя установка (win7) занимает 10 секунд, и я получаю 3 файла: _test.ers 606B, _test 1,11 ГБ и _test.ers.aux 288B.   -  person HubertL    schedule 23.05.2017
comment
Круто, спасибо @HubertL. На самом деле я пишу файл(ы) в удаленный каталог, поэтому много времени уходит на отправку данных по сети. На самом деле это хорошо, так как показало мне, что writeRaster() сначала передает данные в файл данных, а затем повторно считывает данные по сети из этого сохраненного набора данных, чтобы вычислить статистику во вспомогательном файле (!!). В любом случае для меня важно, сколько времени требуется функции для расчета файла .aux.xml по сравнению со временем, которое требуется для записи фактических данных. В вашем случае это также примерно в половине случаев?   -  person dsp542    schedule 23.05.2017
comment
если вы укажете аргумент format="raster", файл .aux не будет записан   -  person HubertL    schedule 23.05.2017
comment
Правда, при этом данные сохраняются в формате пакета растровых изображений «Собственный» (.grd) вместо формата ERMapper .ers. Затем мне пришлось бы переименовать файл данных (при условии, что необработанные данные сохраняются таким же образом) и заново создать заголовок .ers из файла .grd... что может быть работоспособным (хотя и не идеальным) вариантом I угадать.   -  person dsp542    schedule 23.05.2017


Ответы (1)


Параметры, относящиеся к драйверам формата файла GDAL, можно установить с помощью (не так просто найти) функции rgdal::setCPLConfigOption.

В твоем случае,

rgdal::setCPLConfigOption("GDAL_PAM_ENABLED", "FALSE")

следует отключить создание файла xml.

ХТН

person lbusett    schedule 23.05.2017
comment
Это действительно так!... Спасибо @LoBu, я бы, наверное, никогда этого не нашел! - person dsp542; 24.05.2017