微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用折线提取栅格 - 去除角

如何解决使用折线提取栅格 - 去除角

我有以下栅格

r <- raster(nrows=6,ncols=7,xmn=0,xmx=7,ymn=0,ymx=6,crs="+proj=utm +units=m")

r[] <- c(2,2,1,5,8,7,3,9,9)

我想沿着以下折线提取单元格值

pts <- data.frame(x= c(2.5,4.5),y=c(3.5,5.5))
coordinates(pts) <- c("x","y")
proj4string(pts) <- crs(r)
lns <- spLines(pts,crs=crs(r))

绘制一切

plot(r)
points(pts)
lines(lns)

enter image description here

提取单元格值

extract(r,lns,cellnumbers=T)
[[1]]
     cell layer
[1,]    5     5
[2,]   11     8
[3,]   12     5
[4,]   17     1
[5,]   18     8

问题:尽管该线仅通过 3 个单元格,但仍有 5 个值。我知道这是因为提取函数提取线穿过的 2 个角处的值。但是,我不想包括角点。我该怎么做?

我失败的尝试描述如下。提前致谢。

尝试 1:使用坐标提取

extract(r,coordinates(lns)[[1]][[1]],cellnumbers=T)
    cells layer
[1,]    17     1
[2,]     5     5

它只提取用于创建 lns 的点,因此它缺少创建线时未包含的单元格,因此它不起作用。

尝试 2:使用掩码

我想我可以创建一个蒙版栅格,然后从该蒙版提取值。然而,掩码也会提取与角对应的单元格,如下所示

lns.m <- mask(r,lns)
plot(lns.m)

enter image description here

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。