Crea poligoni dell'estensione e del limite di un dato Raster in R


13

Voglio creare due poligoni.

  1. Uno è delle dimensioni rettangolari del mio quadro televisivo. So che posso ottenere l'estensione del raster usando r <- raster("band5.tif") e <- extent(r) plot(e)mi dà questo: inserisci qui la descrizione dell'immagine

  2. Come posso creare UN poligono del limite del raster come mostrato di seguito?

Ecco come appare il mio raster:raster ( "band5.tif")

Risposte:


22

Ecco un esempio

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

Per ottenere l'estensione rettangolare

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

Per ottenere un poligono che circonda le celle che non sono 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)

Non riesco a trovare documentazione sulla r <- r > -Infparte. Cosa sta facendo esattamente? E quanto è diverso da values(r)[!is.na(values(r))] <- 1(che imposta tutte le posizioni che non sono NA in r su 1).
— csheth,

3
r > -Infè di base R. Fai c(1,NA,3,NA) > -Infper vedere come funziona. Ho aggiunto un'alternativa ( reclassify). La tua alternativa funziona ma non è buona per oggetti di grandi dimensioni.
— Robert Hijmans,

Sto solo aspettando che il mio computer elabori la rasterToPolygons()parte e quindi valuterò la tua risposta. Grazie per il -Infbit sarà molto utile!
— csheth,

Per un raster molto grande ciò richiederà un po 'di tempo o potrebbe persino fallire. In tal caso, potresti prendere in considerazione il primo utilizzo aggregatepoiché non vedresti comunque la differenza.
— Robert Hijmans,

Anche con solo 100 celle dopo aver eseguito l' aggregate()on, non è stato elaborato (computer dotato di 16 GB di RAM). Il problema è che devo mantenere il confine il più nativo possibile, poiché un DEM deve essere estratto dal poligono risultante. Se campiono ulteriormente il mio raster perderò quel limite. Qualche soluzione?
— csheth,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.