Mengubah poligon menjadi raster menggunakan R

15

Saya mencoba mengubah shapefile menjadi raster di dalam R. Pendekatan saya adalah membaca di raster sebagai berikut:

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

Ini berfungsi dengan baik, dan saya bisa merencanakannya. Namun itu adalah shapefile besar dan saya ingin mengubahnya menjadi raster. Saya sudah mencoba yang berikut ini:

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

Pesan eror:

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

Saya sedikit bingung mana urutan argumen yang benar. Saya juga sudah mencoba ini:

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

Yang menghasilkan kesalahan ikuti:

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

Meskipun masuk akal bahwa raster tidak dapat dihasilkan untuk area yang tidak mencakup SpatialPolygonsDataFrame, saya tidak yakin informasi apa yang perlu saya tentukan sehingga raster harus berisi SpatialPolygonsDataFramearea tersebut.

djq
sumber

Jawaban:

23

Fungsi rasterize () ingin memiliki bentuk (poligon) terlebih dahulu kemudian raster secara default, karenanya kesalahan pertama Anda. Perintah kedua yang Anda tunjukkan Demo_ras = rasterize(demo, r, 'pop')adalah jalan yang benar, tetapi ketika Anda menemukannya perlu luasan yang sesuai!

Anda dapat menetapkan luasan raster untuk mencakup luasan poligon yang sama:

extent(r) <- extent(demo)

... ini seharusnya berfungsi untuk contoh yang Anda berikan, selama 'pop' adalah nama variabel yang benar dalam 'demo'. Berikut ini berfungsi sekarang (R 2.14 / OSX), di mana AREA adalah kolom bilangan real di 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')
Simbamangu
sumber
Melihat hasil edit Anda dan memeriksa lagi - garis miring terakhir tampaknya opsional pada OSX, saya bawa bukan dengan Windows? Perlu diketahui!
Simbamangu
hmmm, saya punya masalah dengan slash pada OSX dan Windows .. tidak yakin apakah kita menggunakan versi yang sama atau tidak.
djq
OSX 10.7.2 / R 2.14 pada milikku; pasti bekerja di kedua sisi. Apa yang kamu gunakan?
Simbamangu
Untuk mengotomatiskan konversi, saya menulis ini: github.com/brry/misc/blob/master/shp2raster.R
Berry