我正在尝试使用rasterR中的“ ”包获取SRTM数据,但是一旦我SRTM在getData命令中选择,就会出现以下错误:
library(raster)
srtm <- getData('SRTM', lon=16, lat=48)
trying URL 'ftp://xftp.jrc.it/pub/srtmV4/tiff/srtm_40_03.zip'
trying URL 'http://hypersphere.telascience.org/elevation/cgiar_srtm_v4/tiff/zip/srtm_40_03.ZIP'
downloaded 572 bytes
Error in .SRTM(..., download = download, path = path) : file not found
In addition: Warning messages:
1: In utils::download.file(url = aurl, destfile = fn, method = "auto", :
URL 'ftp://xftp.jrc.it/pub/srtmV4/tiff/srtm_40_03.zip': status was 'Couldn't resolve host name'
2: In utils::unzip(zipfilename, exdir = dirname(zipfilename)) :
error 1 in extracting from zip file
Run Code Online (Sandbox Code Playgroud)
任何想法,这是什么错误?
我也有同样的问题,看来是个bug。getData包中的函数检查raster三个不同 URL 中光栅文件的可用性。
1. ftp://xftp.jrc.it/pub/srtmV4/tiff/FILENAME
2. http://hypersphere.telascience.org/elevation/cgiar_srtm_v4/tiff/zip/FILENAME
3. http://srtm.csi.cgiar.org/SRT-ZIP/SRTM_V41/SRTM_Data_GeoTiff/FILENAME
Run Code Online (Sandbox Code Playgroud)
其中前两个(截至今天)无法正常工作或无法访问。然而,由于某种原因,一小部分数据正在通过服务器传输,因此该包假定它是一个可用文件,只是为了达到一个错误utils。然而,第三个网址是这三个网址中最值得信赖的一个。
raster我做了一些挖掘,并在稍微修改包本身以使其使用第三个 url 后提出了以下函数。您可以在此处输入Longitude和Latitude值。请注意,这仅在您想下载基于纬度和经度的文件时才有用。
SRTM<-function(lon, lat) {
stopifnot(lon >= -180 & lon <= 180)
stopifnot(lat >= -60 & lat <= 60)
rs <- raster(nrows=24, ncols=72, xmn=-180, xmx=180, ymn=-60, ymx=60 )
rowTile <- rowFromY(rs, lat)
colTile <- colFromX(rs, lon)
if (rowTile < 10) { rowTile <- paste('0', rowTile, sep='') }
if (colTile < 10) { colTile <- paste('0', colTile, sep='') }
f <- paste('srtm_', colTile, '_', rowTile, sep="")
theurl <- paste("http://srtm.csi.cgiar.org/wp-content/uploads/files/srtm_5x5/TIFF/", f, ".ZIP", sep="")
utils::download.file(url=theurl, destfile='srtm_40_0.zip', method="auto", quiet = FALSE, mode = "wb", cacheOK = TRUE)
}
Run Code Online (Sandbox Code Playgroud)
例子:
SRTM(lon=16, lat=48)
Run Code Online (Sandbox Code Playgroud)
这将在您的文件夹中生成一个名为的文件srtm_40_03.zip,该文件通常包含 a tif、 ahdr和 atfw同名文件。像往常一样使用它们进行进一步处理。
编辑日期 2019 年 1 月 22 日: srtm 链接已更改(也),上述代码已进行调整以反映这一点。