0

私が探しているのは、特定の範囲の各タイル内のジオメトリを段階的にラスタライズ (または高速化) し、ラスタライズされたジオメトリの一部をラスタ オブジェクト全体に結合する方法です。

## 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) と同じです...次のステップで結果のポリゴン (の一部) をラスタライズするために、このステップが必要になるのではないかと考えました。ポリゴンが結合されるとは思っていませんでした。中間結果に基づいてループを構築しようとしていたため、次の行を追加します。

# 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)

ただし、(中間) 結果をラスタライズするのに苦労しています。

4

1 に答える 1