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.