如何在R语言中从URL获取并解压.gz格式的ASCII网格文件
解决方法
方法1:先下载到本地再处理
这是最稳妥的方式,避免内存处理的问题:
- 用
download.file()把.gz文件下载到本地:url <- "你的目标.gz文件URL" download.file(url, destfile = "summer_days.asc.gz", mode = "wb") - 用
gunzip()解压(需要先安装R.utils包:install.packages("R.utils")):library(R.utils) gunzip("summer_days.asc.gz", remove = TRUE) # remove=TRUE会删除原压缩包 - 最后用
raster()读取ASC文件:library(raster) r <- raster("summer_days.asc")
方法2:内存中直接处理(不存本地)
如果不想在本地保存文件,可以直接在内存中完成解压和读取:
- 读取压缩文件的原始字节,再通过
gzcon解压并转为文本内容:library(raster) url <- "你的目标.gz文件URL" # 读取压缩文件的原始二进制数据 raw_data <- readBin(url, what = "raw", n = 1e6) # n值可适当调大,确保覆盖文件大小 # 创建解压连接并读取文本 con <- gzcon(rawConnection(raw_data)) asc_text <- readLines(con) close(con) # 将文本写入临时文件,用raster读取后删除临时文件 temp_file <- tempfile(fileext = ".asc") writeLines(asc_text, temp_file) r <- raster(temp_file) file.remove(temp_file)
方法3:直接用raster读取压缩文件
raster包支持直接读取.gz压缩的ASC文件,无需手动解压,这是最简便的方法:
library(raster) url <- "你的目标.gz文件URL" r <- raster(url)
内容的提问来源于stack exchange,提问作者Ezra
相关产品推荐
相关产品推荐

