Convertendo um polígono em uma varredura usando R


15

Estou tentando converter um shapefile em uma varredura dentro de R. Minha abordagem é ler na varredura da seguinte maneira:

library(rgdal) # Loads SP package by default
demo <- readOGR('F:/data/', 'shapefile') # Creates a SpatialPolygonsDataFrame class (sp)

Isso funciona bem, e eu posso traçar isso. No entanto, é um grande shapefile e quero convertê-lo em uma varredura. Eu tentei o seguinte:

r <- raster(ncol=180, nrow=180)
Demo_ras = rasterize(r, demo, 'pop')  # pop is an integer here

Mensagem de erro:

Error in function (classes, fdef, mtable)  : 
  unable to find an inherited method for function "rasterize", for signature "RasterLayer", "SpatialPolygonsDataFrame"

Estou um pouco confuso, qual é a ordem correta dos argumentos. Eu também tentei isso:

Demo_ras = rasterize(demo, r, 'pop')

O que resulta no seguinte erro:

Error in .polygonsToRaster(x, y, ...) : 
  polygon and raster have no overlapping areas

Embora faça sentido que uma varredura não possa ser gerada para uma área que não cubra a SpatialPolygonsDataFrame, não tenho certeza de quais informações eu preciso especificar para que a varredura contenha a SpatialPolygonsDataFrameárea.

Respostas:


23

A função rasterize () quer ter a forma (polígono) primeiro e depois a raster por padrão, daí o seu primeiro erro. O segundo comando que você mostrou Demo_ras = rasterize(demo, r, 'pop')é o caminho certo, mas como você descobriu, ele precisa das extensões correspondentes!

Você pode atribuir as extensões da varredura para cobrir as mesmas extensões do polígono:

extent(r) <- extent(demo)

... isso deve funcionar para o exemplo que você forneceu, desde que 'pop' seja o nome correto de uma variável em 'demo'. O seguinte funcionou agora (R 2.14 / OSX), em que AREA é uma coluna de número real no boundary.shp:

poly <- readOGR("/workingdirectory", "boundary") # does not work  with final slash '/' 
r <- raster(ncol=180, nrow=180)
extent(r) <- extent(poly)
rp <- rasterize(poly, r, 'AREA')

Vi sua edição e verificamos novamente - a barra final é aparentemente opcional no OSX, não é com o Windows? Vale a pena saber!
Simbamangu

hmmm, tive um problema com a barra no OSX e no Windows .. não tenho certeza se estamos usando a mesma versão ou não.
djq 12/12

OSX 10.7.2 / R 2.14 na mina; definitivamente funciona de qualquer maneira. O que você está usando?
Simbamangu

Para automatizar a conversão, escrevi o seguinte: github.com/brry/misc/blob/master/shp2raster.R
Berry
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.