接收到“if((is.null(locs)中的错误|is.na(locs))& is.null(prj)){:尝试获取高程数据时出现“零长度参数”错误

hgqdbh6s  于 2023-09-27  发布在  其他
关注(0)|答案(1)|浏览(84)

我最近正在尝试制作瑞士的地形图,为此,我需要使用R中的elevatr包获取该特定国家的高程数据。然而,当我运行下面的代码块时,这与我在网上看到的类似Map类似,

library(elevatr)
library(rgeoboundaries)
library(rgdal)

swiss_bound <- rgeoboundaries::geoboundaries("Switzerland")
elevation_data <- get_elev_raster(locations = swiss_bound, z = 10)

我得到以下错误

Error in if ((is.null(locs) | is.na(locs)) & is.null(prj)) { :  zero length argument

这是没有意义的,我在网上找不到任何解决这个问题的方法,也找不到它为什么会发生,解决方法是什么。因此,我非常感谢您的帮助,并感谢您的关注。

qzwqbdag

qzwqbdag1#

我不能重新创建你的确切错误,但我看到的rgeoboundaries是它返回一个sf对象,但不包括CRS,这不是很好...它看起来像是在EPSG:4326中。假设这样,下面的代码应该对你有用。但是要小心,因为没有从rgeoboundaries指定CRS会留下很大的问题空间。

library(elevatr)
library(rgeoboundaries)
library(rgdal)
library(sf)

swiss_bound <- rgeoboundaries::geoboundaries("Switzerland")
st_crs(swiss_bound) <- 4326
elevation_data <- get_elev_raster(locations = swiss_bound, z = 10)

相关问题