【发布时间】:2019-07-31 02:05:26
【问题描述】:
我在一个 shapefile 中有 7 条单独的横断线。有没有办法从中提取数据以从文件中选择单个样带线并提取并将其用作从栅格文件中提取数据的一种方式
我目前在R中使用过这个功能
extract(raster, transect line.shp )
但这会同时从所有 7 个样带中提取数据。
【问题讨论】:
我在一个 shapefile 中有 7 条单独的横断线。有没有办法从中提取数据以从文件中选择单个样带线并提取并将其用作从栅格文件中提取数据的一种方式
我目前在R中使用过这个功能
extract(raster, transect line.shp )
但这会同时从所有 7 个样带中提取数据。
【问题讨论】:
这是我从 ?raster::extract 复制的最小可重现示例。
示例数据
library(raster)
r <- raster(ncol=36, nrow=18, vals=1:(18*36))
cds1 <- rbind(c(-50,0), c(0,60), c(40,5), c(15,-45), c(-10,-25))
cds2 <- rbind(c(80,20), c(140,60), c(160,0), c(140,-55))
lines <- spLines(cds1, cds2)
提取所有行
extract(r, lines)
[[1]]
[1] 126 127 161 162 163 164 196 197 200 201 231 232 237 266 267 273 274 302 310
[20] 311 338 346 381 382 414 417 450 451 452 453 487 488
[[2]]
[1] 139 140 141 174 175 177 208 209 210 213 243 244 249 250 279 286 322 358 359
[20] 394 429 430 465 501 537
要提取单行,请对 SpatialLines 对象进行子集化。例如,获取第一行:
extract(r, lines[1,])
[[1]]
[1] 126 127 161 162 163 164 196 197 200 201 231 232 237 266 267 273 274 302 310
[20] 311 338 346 381 382 414 417 450 451 452 453 487 488
【讨论】: