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.