R kullanarak bir çokgeni raster haline dönüştürme


15

Bir şekil dosyasını R içinde bir raster haline getirmeye çalışıyorum. Benim yaklaşımım rasterde aşağıdaki gibi okumaktır:

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

Bu iyi çalışıyor ve onu çizebilirim. Ancak büyük bir şekil dosyası ve onu bir raster haline getirmek istiyorum. Aşağıdakileri denedim:

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

Hata mesajı:

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

Biraz kafam karıştı, bu da argümanların doğru sırası. Ben de denedim:

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

Aşağıdaki hatayla sonuçlanır:

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

Kapsamayan bir alan için bir tarama oluşturulamıyor olsa da SpatialPolygonsDataFrame, tarama SpatialPolygonsDataFramealanını içermesi için hangi bilgileri belirtmem gerektiğinden emin değilim .

Yanıtlar:


23

Rasterize () işlevi önce şeklin (çokgen) sonra varsayılan olarak raster olmasını ve dolayısıyla ilk hatanızın olmasını ister. Gösterdiğiniz ikinci komut Demo_ras = rasterize(demo, r, 'pop')doğru yoldur, ancak keşfettiğiniz gibi eşleşmesi gereken uzantılara ihtiyacı vardır!

Raster uzantılarını, çokgenin aynı uzantılarını kapsayacak şekilde atayabilirsiniz:

extent(r) <- extent(demo)

... "pop", "demo" daki bir değişkenin doğru adı olduğu sürece, sağladığınız örnek için bu geçerli olmalıdır. Aşağıdakiler şimdi çalıştı (R 2.14 / OSX), burada AREA sınırda gerçek bir sayı sütunudur. 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')

Düzenlemenizi gördüm ve tekrar kontrol edin - son eğik çizgi OSX'de isteğe bağlı görünüyor, Windows ile değil mi? Bilmeye değer!
— Simbamangu

hmmm, hem OSX hem de Windows üzerinde eğik çizgi ile ilgili bir sorun yaşadım .. aynı sürümü kullanıp kullanmadığımızdan emin değilim.
— djq

Madende OSX 10.7.2 / R 2.14; kesinlikle her iki şekilde de çalışır. Ne kullanıyorsun?
— Simbamangu

Dönüşümü otomatikleştirmek için şunu yazdım: github.com/brry/misc/blob/master/shp2raster.R
— Berry
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.