首页 > 解决方案 > r 光栅在 zip 文件中读取 .vrt

问题描述

我有一个大的 zip 文件,里面有一堆 geotiff 文件,还有一个 .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 对象。(文件不存在)

据推测,这意味着 raster 认为路径的 zip 部分只是另一个文件夹。我需要它来查看拉链内部。

我在 Mac 上运行,操作系统是 Catalina。

标签: rrasterrgdalgeotiff

解决方案


来自gdal.org的一些文字

要指向 zip 文件中的文件,文件名的格式必须为 /vsizip/path/to/the/file.zip/path/inside/the/zip/file,其中 path/to/the/file.zip是相对的或绝对的,path/inside/the/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 

当我使用它并了解更多信息时,我会更新答案。


推荐阅读