Crie polígonos da extensão e do limite de uma determinada varredura em R

13

Eu quero criar dois polígonos.

  1. Um deles é da extensão retangular da minha varredura. Eu sei que posso obter a extensão da varredura usando r <- raster("band5.tif") e <- extent(r) plot(e)me dá o seguinte: insira a descrição da imagem aqui

  2. Como posso criar UM polígono do limite da varredura, como mostrado abaixo?

É assim que minha varredura se parece:raster ("band5.tif")

csheth
fonte

Respostas:

22

Aqui está um exemplo.

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

Para obter a extensão retangular

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

Para obter um polígono que envolve células que não são 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)
Robert Hijmans
fonte
Não consigo encontrar documentação da r <- r > -Infpeça. O que exatamente está fazendo? E quão diferente é values(r)[!is.na(values(r))] <- 1(que define todos os locais que não são NA em r para 1).
Csheth #
3
r > -Infé básico R. Faça c(1,NA,3,NA) > -Infpara ver como funciona. Eu adicionei uma alternativa ( reclassify). Sua alternativa funciona, mas não é boa para objetos grandes.
Robert Hijmans
Estou apenas esperando meu computador processar a rasterToPolygons()peça e, depois, avaliarei sua resposta. Obrigado pela parte que -Infvai ser muito útil!
precisa saber é o seguinte
Para uma varredura muito grande, isso levará um tempo ou poderá até falhar. Nesse caso, você pode considerar o primeiro uso, aggregatepois não veria a diferença de qualquer maneira.
Robert Hijmans
Mesmo com apenas 100 células após executar o aggregate()on r, ele não foi processado (computador equipado com 16 GB de RAM). O problema é que preciso manter o limite o mais nativo possível, pois um DEM precisa ser extraído do polígono resultante. Se eu fizer uma amostragem mais baixa da minha varredura, perderei esse limite. Alguma solução?
csheth