Rで指定されたラスターの範囲と境界のポリゴンを作成します


13

2つのポリゴンを作成します。

  1. 1つは、ラスターの長方形の範囲です。r <- raster("band5.tif") e <- extent(r) plot(e)私はこれを使用してラスターの範囲を取得できることを知っ ています: ここに画像の説明を入力してください

  2. 以下に示すように、ラスターの境界のポリゴンを1つ作成するにはどうすればよいですか?

これは私のラスターのようです:raster( "band5.tif")

回答:


21

以下に例を示します。

library(raster)
# example data
x <- raster(system.file("external/test.grd", package="raster"))

長方形の範囲を取得するには

e <- extent(x)
# coerce to a SpatialPolygons object
p <- as(e, 'SpatialPolygons')  

NAではないセルを囲むポリゴンを取得するには

# make all values the same. Either do
r <- x > -Inf
# or alternatively
# r <- reclassify(x, cbind(-Inf, Inf, 1))

# convert to polygons (you need to have package 'rgeos' installed for this to work)
pp <- rasterToPolygons(r, dissolve=TRUE)

# look at the results
plot(x)
plot(p, lwd=5, border='red', add=TRUE)
plot(pp, lwd=3, border='blue', add=TRUE)

私はそのr <- r > -Inf部分に関するドキュメントを見つけることができないようです。正確に何をしていますか?そして、それはvalues(r)[!is.na(values(r))] <- 1(rのNA以外のすべての場所を1に設定する)とどのくらい違いますか。
-csheth

3
r > -Inf基本Rです。c(1,NA,3,NA) > -Inf仕組みを確認してください。代替(reclassify)を追加しました。代替手段は機能しますが、大きなオブジェクトには適していません。
ロバートハイマンズ16

私は自分のコンピューターがrasterToPolygons()部品を処理するのを待っているだけで、すぐにあなたの答えを評価します。-Inf非常に便利になるビットをありがとう!
-csheth

非常に大きなラスターの場合、これには時間がかかるか、失敗することさえあります。その場合aggregate、違いはとにかく見えないので、最初に使用することを検討できます。
ロバートハイマンズ16

aggregate()on rを実行した後のセルが100個だけであっても、処理されていません(16 GB RAMを搭載したコンピューター)。問題は、結果のポリゴンからDEMを抽出する必要があるため、境界をできるだけネイティブに保つ必要があることです。ラスターをさらにダウンサンプリングすると、その境界が失われます。回避策はありますか?
-csheth
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.