如何使用 Terra 包从坐标数据中获取地形特征?

问题描述 投票:0回答:1

我有一组坐标数据,我想获取其地形特征数据(特别是 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 值?谢谢!

r terrain terra
1个回答
0
投票

您应该从带有高程数据的栅格文件开始

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=".")
© www.soinside.com 2019 - 2024. All rights reserved.