首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何逐块栅格化sf几何图形?

如何逐块栅格化sf几何图形?
EN

Stack Overflow用户
提问于 2020-05-13 01:14:47
回答 1查看 65关注 0票数 0

我正在寻找的是一种方法,以光栅化(或快速)的几何图形在每个瓦片的一定程度上一步一步,并加入部分光栅化的几何图形到整个栅格对象。

代码语言:javascript
复制
## create sample data

# create a frame
library(sf)
ob = st_sf(st_sfc(st_polygon(list(rbind(c(0,0), c(0,9), c(6,9), c(6,0), c(0,0)))))
# create tiles
library(GSIF)
tl <- getSpatialTiles(as(ob, 'Spatial'), block.x=3, overlap.percent=2)
plot(tl)
# create sample polygons
g <- st_sfc(st_point(c(1,2)), st_point(c(5,6)), st_point(c(2,4)), st_point(c(3,3)), st_point(c(3,4)), st_point(c(4,5)))
g.b <- st_buffer(g,0.6)
p <- st_sf(value = ceiling(10*runif(6)),
           geometry = st_sfc(g.b))
plot(p, add=TRUE)

我想,裁剪每个瓦片中的多边形(或多边形的一部分)可以很好地工作。我的实际目标是逐块处理数据块。看起来下面的循环可以做到这一点,还可以将多边形的各个部分连接到整个多边形。好吧,输出(cr)和输入(P)是一样的…我认为这一步可能是必要的,以便在下一步栅格化生成的(部分)多边形。我没想到多边形会被连接起来。我试图根据中间结果构建一个循环,因此添加了以下几行:

代码语言:javascript
复制
# crop polygons (or parts) for each tile
result <- p
for(i in 1:length(tl)) {cr <- rbind(result, st_crop(p, tl[i]))}
cr <- cr[-7,]
library(scales)
plot(st_geometry(cr), col=alpha("white", 0.5), add=TRUE)

但是,我很难对(中间)结果进行栅格化。

EN

回答 1

Stack Overflow用户

发布于 2020-06-06 10:53:23

试试这个:

代码语言:javascript
复制
myF <- function(i){return(st_crop(p, tl[i]))}
cr <- do.call(rbind, lapply(1:length(tl), myF))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61757846

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档