我有一组坐标数据,我想获取其地形特征数据(特别是 TRI)。我知道
terrain()
函数可以提供此信息,但此函数需要一个 spatraster 对象作为高程数据的输入,而我正在努力弄清楚如何创建正确的 spatraster 对象。
地形函数的 spatraster 需要将高程作为其图层,所以我想我应该首先使用 elevatR 包获取坐标的高程值,但是现在我不确定这是否是正确的方法。
library(ctmm)
library(dplyr)
library(elevatR)
library(terra)
#Creating example data from built in tracking data from the ctmm package
data<-data("buffalo")
Cilla<-buffalo$Cilla
Cilla<-data.frame(Cilla)
class(Cilla)
lonlat<-Cilla %>% dplyr::select(2,3)
#definining the lonlat projection
prj_dd <- "+proj=longlat +datum=NAD83"
#Pull each points elevation using the ElevatR package
coords_E <- as.data.frame(elevatr::get_elev_point(lonlat, prj = prj_dd, src = "aws"))
#Add an elevation column to our main data frame (elevation in meters)
lonlat$elev <- coords_E$elevation
我认为下一步是使用
rast()
函数创建一个 spatraster 对象,但它似乎不接受数据帧输入
raster<-rast(lonlat,type="xyz")
有谁知道我哪里出错了以及如何使用地形函数获取坐标数据的 TRI 值?谢谢!
您应该从带有高程数据的栅格文件开始
library(terra)
f <- system.file("ex/elev.tif", package="terra")
r <- rast(f)
tri <- terrain(r, "TRI")
pts <- cbind(c(6,6.1), c(49.6, 49.8))
extract(tri, pts)
# TRI
#1 14.125
#2 18.750
您可以从不同的网站下载栅格高程数据。您还可以使用 R 下载栅格数据。例如
belev <- geodata::elevation_30s(country="Belgium", path=".")