r растр читать .vrt в zip-файле - PullRequest
0 голосов
/ 09 ноября 2019

У меня есть большой zip-файл с кучей геотифовых файлов и файл .vrt с необходимой информацией для каждого. Вместо того, чтобы разархивировать все файлы, я бы хотел работать непосредственно с zip-файлом.

Эта команда с файлами .vrt и некоторыми файлами geotiff работает в том смысле, что временный растр создается какrasterLayer, но поскольку не все файлы geotiff разархивированы, plot (rasterLayer) завершается ошибкой с ошибкой отсутствующих данных.

tempraster <- raster("data-raw/CoastalDEMv1.1/tiles.vrt")

Эта команда не выполняется, предположительно потому, что я указал неверный путь

tempraster <- raster("data-raw/Global_90.zip/CoastalDEMv1.1/tiles.vrt")

Сообщение об ошибке:

Ошибка в .rasterObjectFromFile (x, band = band, objecttype = "RasterLayer" ,: Невозможно создать объект RasterLayer из этого файла. (Файл не существует)

Предположительно, это означает, что растр думает, что zip-часть пути - это просто другая папка. Мне нужно, чтобы он заглянул внутрь zip-файла.

Я работаю на Mac, ОС - это Catalina.

1 Ответ

0 голосов
/ 16 ноября 2019

Некоторый текст из gdal.org

Чтобы указать на файл внутри zip-файла, имя файла должно иметь форму / vsizip / path / to / the /file.zip/path/inside/the/zip/file, где path / to / the / file.zip является относительным или абсолютным, а path / inside / / zip / file является относительным путем к файлу внутри архива.

Итак, для своего набора данных я использую

link <- "/vsizip/data-raw/Global_90.zip/CoastalDEMv1.1/tiles.vrt"
test <- raster(link)

тест, имеющий следующие характеристики

class      : RasterLayer 
dimensions : 139316, 432360, 60234665760  (nrow, ncol, ncell)
resolution : 0.0008326395, 0.0008326395  (x, y)
extent     : -180, 180, -56, 60  (xmin, xmax, ymin, ymax)
crs        : +proj=longlat +datum=WGS84 +no_defs +ellps=WGS84 +towgs84=0,0,0 
source     : /vsizip/data-raw/Global_90.zip/CoastalDEMv1.1/tiles.vrt 
names      : tiles 

По мере работы с этим и получения дополнительной информации я буду обновлятьответ.

...