JerryN
JerryN

Reputation: 2506

r raster read .vrt in a zip file

I have a large zip file with a bunch of geotiff files in it and a .vrt file with the needed info for each. Rather than unzip all the files, I'd like to work directly with the zip file.

This command, with the .vrt and some of the geotiff files works, in the sense that temp raster is created as a rasterLayer but since not all the geotiff files are unzipped, plot(rasterLayer) fails with a missing data error.

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

This command fails, presumably because I has specified the path incorrectly

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

The error message is

Error in .rasterObjectFromFile(x, band = band, objecttype = "RasterLayer",: Cannot create a RasterLayer object from this file. (file does not exist)

Presumably, this means raster thinks the zip part of the path is just another folder. I need it to look inside the zip.

I'm running on a Mac, OS is Catalina.

Upvotes: 2

Views: 2015

Answers (1)

JerryN
JerryN

Reputation: 2506

Some text from gdal.org

To point to a file inside a zip file, the filename must be of the form /vsizip/path/to/the/file.zip/path/inside/the/zip/file, where path/to/the/file.zip is relative or absolute and path/inside/the/zip/file is the relative path to the file inside the archive.

So for my dataset I use

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

test has the following characteristics

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 

As I work with this and learn more, I'll update the answer.

Upvotes: 4

Related Questions