R을 사용하여 다각형을 래스터로 변환


15

모양 파일을 R 내에서 래스터로 변환하려고합니다. 내 방법은 래스터에서 다음과 같이 읽는 것입니다.

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

이것은 잘 작동하며 플롯 할 수 있습니다. 그러나 그것은 큰 shapefile이며 래스터로 변환하고 싶습니다. 나는 다음을 시도했다.

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

에러 메시지:

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

나는 논쟁의 올바른 순서 인 약간 혼란 스럽다. 나는 또한 이것을 시도했다 :

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

다음과 같은 오류가 발생합니다.

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

를 포함하지 않는 영역에 대해 래스터를 생성 할 수 없다는 것이 합리적이지만 래스터가 영역을 포함하도록 SpatialPolygonsDataFrame어떤 정보를 지정해야하는지 잘 모르겠습니다 SpatialPolygonsDataFrame.

답변:


23

rasterize () 함수는 기본적으로 모양 (폴리곤)을 먼저 설정 한 다음 래스터를 원하므로 첫 번째 오류가 발생합니다. 두 번째로 보여준 명령 Demo_ras = rasterize(demo, r, 'pop')은 올바른 방법이지만, 발견 한대로 일치하는 범위가 필요합니다!

동일한 다각형 범위를 포함하도록 래스터의 범위를 지정할 수 있습니다.

extent(r) <- extent(demo)

... 이것은 'pop'이 'demo'에있는 변수의 올바른 이름 인 한 제공 한 예제에서 작동합니다. 다음은 바로 지금 (R 2.14 / OSX) 작동했으며 AREA는 경계의 실수 열입니다.

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')

편집 내용을 확인하고 다시 확인하십시오. OSX에서는 최종 슬래시가 선택 사항입니다. Windows에서는 사용하지 않습니까? 알만한 가치가 있습니다!
— Simbamangu

흠, OSX와 Windows에서 슬래시에 문제가 있습니다. 같은 버전을 사용하고 있는지 확실하지 않습니다.
— djq

광산의 OSX 10.7.2 / R 2.14; 확실히 어느 쪽이든 '어떻게 든 작동합니다. 무엇을 사용하고 있습니까?
— Simbamangu

변환을 자동화하기 위해 다음과 같이 썼습니다 : github.com/brry/misc/blob/master/shp2raster.R
— Berry
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.