r语言 - 我如何添加shapefile列提取数据框架与terra?



我已经通过terra:::extract从一个tif文件中提取数据,在shapefile中使用多边形。

library(terra)
tif = rast('data/snow.tif')
shape = vect('data/canada_provinces.shp')
x = extract(tif, shape, na.rm = T)
head(x)
ID       values
1        100
1        100
1        100
1        101
1        101
2        150
2        150
2        150
...
90       101
90       101
90       101

我想添加shapefile列state,所以我得到以下内容:

x = extract(tif, shape, na.rm = T, layer = 'states')
ID       values     states
1        100        AK
1        100        AK
1        100        AK
1        101        AK
1        101        AK
2        150        NT
2        150        NT
2        150        NT
...
90       101        BC
90       101        BC
90       101        BC

但是在terra:::extract中使用layer特性是行不通的。

我如何将实际状态添加到从提取函数创建的数据帧?

也许你忽略了需要总结每个多边形的值。

示例数据

library(terra)
v <- vect(system.file("ex/lux.shp", package="terra"))[,c("ID_2", "NAME_2")]
r <- rast(system.file("ex/elev.tif", package="terra"))

方法1

vv <- extract(r, v, fun=mean, na.rm=TRUE, bind=TRUE)

方法2

vv$elev <- extract(r, v, fun=mean, na.rm=TRUE, ID=FALSE)[,1]
vv
# class       : SpatVector 
# geometry    : polygons 
# dimensions  : 12, 4  (geometries, attributes)
# extent      : 5.74414, 6.528252, 49.44781, 50.18162  (xmin, xmax, ymin, ymax)
# source      : lux.shp
# coord. ref. : lon/lat WGS 84 (EPSG:4326) 
# names       :  ID_2   NAME_2 elevation  elev
# type        : <num>    <chr>     <num> <num>
# values      :     1 Clervaux     467.1 467.1
#                   2 Diekirch     333.9 333.9
#                   3  Redange     377.4 377.4

方法3

e <- extract(r, v, fun=mean, na.rm=TRUE)
ve <- cbind(v, e)
#Or 
values(v) <- e

相关内容

  • 没有找到相关文章

最新更新