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

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)

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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.