如何下载 .gz 格式的 CHIRPS 降水数据?
How can I download CHIRPS precipitation data in .gz format?
我正在尝试从 ftp://ftp.chg.ucsb.edu/pub/org/chg/products/CHIRPS-2.0/africa_daily/tifs/p25/2010/. The heavyRain package is outdated and the earthEngineGrabR package (to pull data from Google's Earth Engine, https://developers.google.com/earth-engine 下载 CHIRPS 数据)似乎有一些错误。这是我的一些尝试。
lst.files <- list(
list(
url2 = "ftp://chg-ftpout.geog.ucsb.edu/pub/org/chg/products/CHIRPS -2.0/africa_daily/tifs/p25/2010/chirps-v2.0.2010.01.01.tif.gz"
, target = "chirps-v2.0.2010.01.01.tif.gz"))
#download gzipped files (only if file does not exist)
lapply(lst.files, function(x)
if(!file.exists(x$target)) download.file(x$url2, x$target))
#open files
lst <- lapply(lst.files, function(x) {
df <- readr::read_table2(x$target)
})
错误信息如下:
guess_header_(数据源、分词器、语言环境)中的错误:
字符串中嵌入 nul:'II*'
这是另一个尝试:
library(RCurl)
library(foreign)
library(plyr)
library(dplyr)
setwd <- "C://Desktop"
url <- "ftp://chg-ftpout.geog.ucsb.edu"
years = c("2010", "2011", "2012", "2013", "2014", "2015", "2016", "2017", "2018", "2019")
lapply(years, function (x){
url <- paste(url, "/pub/org/chg/products/CHIRPS-2.0/africa_daily/tifs/p25/", x, ".gz", sep = "")
filename <- paste("CHIRPS", x, ".gz", sep = "")
foldername <- paste("CHIRPS", x, sep = "")
filename
if (file.exists(filename)==FALSE){
download.file(url, filename)
}
if (file.exists(foldername)==FALSE){
dir.create(foldername)
}
if(length(list.files(path = foldername, pattern="*.gz")) == 0){
unzip(filename)
}
for (fl in (list.files(pattern=".gz"))){
file.copy(fl, foldername)
file.remove(fl)
}})
错误信息如下:
尝试 URL 'ftp://chg-ftpout.geog.ucsb.edu/pub/org/chg/products/CHIRPS-2.0/africa_daily/tifs/p25/2010.gz'
download.file(url, 文件名) 中的错误:
无法打开 URL 'ftp://chg-ftpout.geog.ucsb.edu/pub/org/chg/products/CHIRPS-2.0/africa_daily/tifs/p25/2010.gz'
另外: 警告信息:
在 download.file(url, 文件名) 中:
download.file(url, 文件名) 中的错误:
无法打开 URL 'ftp://chg-ftpout.geog.ucsb.edu/pub/org/chg/products/CHIRPS-2.0/africa_daily/tifs/p25/2010.gz'
下面是使用 github earthEngineGrabR 自述文件中提供的示例所发生的情况,https://github.com/JesJehle/earthEngineGrabR:
> library(earthEngineGrabR)
> library(tidyverse)
> library(sf)
> Chirps_data <- ee_grab(data = ee_data_collection(datasetID = 'UCSB-CHG/CHIRPS/DAILY'
+ , spatialReducer = 'mean'
+ , temporalReducer = 'sum'
+ , timeStart = "2016-01-01"
+ , timeEnd = "2016-12-31"
+ , resolution = 200)
+ , targetArea = system.file('data/territories.shp', package = 'earthEngineGrabR'))
这是代码开始时的输出,但后来卡住了:
自动刷新过时的 OAuth 令牌。
上传:地区已上传
文件是否应该删除并重新上传? [Y/N]:是
删除的文件:
* 领土:1AOc2yzIV1DGDgfUULNA6Co1M37xcWTFLRbdKOegs
创建融合 Table:领土
错误:使用给定的产品参数无法请求有效数据。
此外: 警告信息:
1: In (function (text) : 截断超长输出的打印
2:数据产品的 Earth Engine 服务器错误:UCSB-CHG-CHIRPS-DAILY_s-mean_t-sum_2016-01-01to2016-12-31
py_call_impl(callable, dots$args, dots$keywords) 中的错误:EEException: 意外的 HTTP 错误: [SSL: CERTIFICATE_VERIFY_FAILED] 证书验证失败 (_ssl.c:727)
任何人都可以帮助我访问这些数据源吗?
我找到了一种通过改编此视频中的代码来实现此目的的方法,https://www.youtube.com/watch?v=EBfx1L16qlM。使用下面的代码,我可以下载给定年份的所有文件,然后我只需通过调整 url 手动重复下一年的代码。这不是一个优雅的解决方案,但它确实有效。
library(RCurl)
setwd("working directory file name")
url <- "ftp://chg-ftpout.geog.ucsb.edu/pub/org/chg/products/CHIRPS-2.0/africa_daily/tifs/p25/2010/"
filenames <- getURL(url, ftp.use.epsv = FALSE, dirlistonly = TRUE)
filenames <- strsplit(filenames, "\r\n")
filenames = unlist(filenames)
filenames
for (filename in filenames) {
download.file(paste(url, filename, sep = ""), paste(getwd(), "/", filename, sep = ""))
}
这会将所有 .gz 文件下载到我的工作目录。欢迎更快的解决方案,但这确实有效。
我正在尝试从 ftp://ftp.chg.ucsb.edu/pub/org/chg/products/CHIRPS-2.0/africa_daily/tifs/p25/2010/. The heavyRain package is outdated and the earthEngineGrabR package (to pull data from Google's Earth Engine, https://developers.google.com/earth-engine 下载 CHIRPS 数据)似乎有一些错误。这是我的一些尝试。
lst.files <- list(
list(
url2 = "ftp://chg-ftpout.geog.ucsb.edu/pub/org/chg/products/CHIRPS -2.0/africa_daily/tifs/p25/2010/chirps-v2.0.2010.01.01.tif.gz"
, target = "chirps-v2.0.2010.01.01.tif.gz"))
#download gzipped files (only if file does not exist)
lapply(lst.files, function(x)
if(!file.exists(x$target)) download.file(x$url2, x$target))
#open files
lst <- lapply(lst.files, function(x) {
df <- readr::read_table2(x$target)
})
错误信息如下: guess_header_(数据源、分词器、语言环境)中的错误: 字符串中嵌入 nul:'II*'
这是另一个尝试:
library(RCurl)
library(foreign)
library(plyr)
library(dplyr)
setwd <- "C://Desktop"
url <- "ftp://chg-ftpout.geog.ucsb.edu"
years = c("2010", "2011", "2012", "2013", "2014", "2015", "2016", "2017", "2018", "2019")
lapply(years, function (x){
url <- paste(url, "/pub/org/chg/products/CHIRPS-2.0/africa_daily/tifs/p25/", x, ".gz", sep = "")
filename <- paste("CHIRPS", x, ".gz", sep = "")
foldername <- paste("CHIRPS", x, sep = "")
filename
if (file.exists(filename)==FALSE){
download.file(url, filename)
}
if (file.exists(foldername)==FALSE){
dir.create(foldername)
}
if(length(list.files(path = foldername, pattern="*.gz")) == 0){
unzip(filename)
}
for (fl in (list.files(pattern=".gz"))){
file.copy(fl, foldername)
file.remove(fl)
}})
错误信息如下: 尝试 URL 'ftp://chg-ftpout.geog.ucsb.edu/pub/org/chg/products/CHIRPS-2.0/africa_daily/tifs/p25/2010.gz' download.file(url, 文件名) 中的错误: 无法打开 URL 'ftp://chg-ftpout.geog.ucsb.edu/pub/org/chg/products/CHIRPS-2.0/africa_daily/tifs/p25/2010.gz' 另外: 警告信息: 在 download.file(url, 文件名) 中: download.file(url, 文件名) 中的错误: 无法打开 URL 'ftp://chg-ftpout.geog.ucsb.edu/pub/org/chg/products/CHIRPS-2.0/africa_daily/tifs/p25/2010.gz'
下面是使用 github earthEngineGrabR 自述文件中提供的示例所发生的情况,https://github.com/JesJehle/earthEngineGrabR:
> library(earthEngineGrabR)
> library(tidyverse)
> library(sf)
> Chirps_data <- ee_grab(data = ee_data_collection(datasetID = 'UCSB-CHG/CHIRPS/DAILY'
+ , spatialReducer = 'mean'
+ , temporalReducer = 'sum'
+ , timeStart = "2016-01-01"
+ , timeEnd = "2016-12-31"
+ , resolution = 200)
+ , targetArea = system.file('data/territories.shp', package = 'earthEngineGrabR'))
这是代码开始时的输出,但后来卡住了:
自动刷新过时的 OAuth 令牌。
上传:地区已上传 文件是否应该删除并重新上传? [Y/N]:是 删除的文件: * 领土:1AOc2yzIV1DGDgfUULNA6Co1M37xcWTFLRbdKOegs 创建融合 Table:领土
错误:使用给定的产品参数无法请求有效数据。 此外: 警告信息: 1: In (function (text) : 截断超长输出的打印 2:数据产品的 Earth Engine 服务器错误:UCSB-CHG-CHIRPS-DAILY_s-mean_t-sum_2016-01-01to2016-12-31 py_call_impl(callable, dots$args, dots$keywords) 中的错误:EEException: 意外的 HTTP 错误: [SSL: CERTIFICATE_VERIFY_FAILED] 证书验证失败 (_ssl.c:727)
任何人都可以帮助我访问这些数据源吗?
我找到了一种通过改编此视频中的代码来实现此目的的方法,https://www.youtube.com/watch?v=EBfx1L16qlM。使用下面的代码,我可以下载给定年份的所有文件,然后我只需通过调整 url 手动重复下一年的代码。这不是一个优雅的解决方案,但它确实有效。
library(RCurl)
setwd("working directory file name")
url <- "ftp://chg-ftpout.geog.ucsb.edu/pub/org/chg/products/CHIRPS-2.0/africa_daily/tifs/p25/2010/"
filenames <- getURL(url, ftp.use.epsv = FALSE, dirlistonly = TRUE)
filenames <- strsplit(filenames, "\r\n")
filenames = unlist(filenames)
filenames
for (filename in filenames) {
download.file(paste(url, filename, sep = ""), paste(getwd(), "/", filename, sep = ""))
}
这会将所有 .gz 文件下载到我的工作目录。欢迎更快的解决方案,但这确实有效。