Convertire un poligono in un raster usando R


15

Sto cercando di convertire un file di forma in un raster all'interno di R. Il mio approccio è leggere nel raster come segue:

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

Funziona bene e posso tracciarlo. Tuttavia è un file di forma di grandi dimensioni e voglio convertirlo in un raster. Ho provato quanto segue:

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

Messaggio di errore:

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

Sono un po 'confuso quale sia l'ordine corretto degli argomenti. Ho anche provato questo:

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

Che si traduce nel seguente errore:

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

Sebbene abbia senso che un raster non può essere generato per un'area che non copre l'area SpatialPolygonsDataFrame, non sono sicuro di quali informazioni devo specificare in modo che il raster debba contenere l' SpatialPolygonsDataFramearea.

Risposte:


23

La funzione rasterize () vuole avere prima la forma (poligono) e poi il raster per impostazione predefinita, quindi il tuo primo errore. Il secondo comando che hai mostrato Demo_ras = rasterize(demo, r, 'pop')è il modo corretto, ma come hai scoperto ha bisogno che le estensioni corrispondano!

Puoi assegnare le estensioni del raster per coprire le stesse estensioni del poligono:

extent(r) <- extent(demo)

... dovrebbe funzionare nell'esempio che hai fornito, purché "pop" sia il nome corretto di una variabile in "demo". Di seguito ha funzionato proprio ora (R 2.14 / OSX), dove AREA è una colonna di numeri reali in 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')

Ho visto la tua modifica e ricontrollato - la barra finale è apparentemente facoltativa su OSX, non la prendo con Windows? Vale la pena saperlo!
Simbamangu,

hmmm, ho avuto un problema con la barra sia su OSX che su Windows .. non sono sicuro se stiamo usando la stessa versione o no.
djq

OSX 10.7.2 / R 2.14 sul mio; sicuramente funziona in entrambi i modi. Che cosa stai usando?
Simbamangu,

Per automatizzare la conversione, ho scritto questo: github.com/brry/misc/blob/master/shp2raster.R
Berry
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.