R에서 주어진 래스터의 범위와 경계의 다각형을 만듭니다.


13

두 개의 다각형을 만들고 싶습니다.

  1. 하나는 내 래스터의 직사각형 범위입니다. 사용하여 래스터의 범위를 얻을 수 있다는 것을 알고 있습니다 r <- raster("band5.tif") e <- extent(r) plot(e). 여기에 이미지 설명을 입력하십시오

  2. 아래 그림과 같이 래스터 경계의 다각형 하나를 어떻게 만들 수 있습니까?

이것이 내 래스터 모양입니다.래스터 ( "band5.tif")

답변:


23

다음은 예입니다.

library(raster)
# example data
x <- raster(system.file("external/test.grd", package="raster"))

직사각형 범위를 얻으려면

e <- extent(x)
# coerce to a SpatialPolygons object
p <- as(e, 'SpatialPolygons')  

NA가 아닌 셀을 둘러싸는 다각형을 얻으려면

# make all values the same. Either do
r <- x > -Inf
# or alternatively
# r <- reclassify(x, cbind(-Inf, Inf, 1))

# convert to polygons (you need to have package 'rgeos' installed for this to work)
pp <- rasterToPolygons(r, dissolve=TRUE)

# look at the results
plot(x)
plot(p, lwd=5, border='red', add=TRUE)
plot(pp, lwd=3, border='blue', add=TRUE)

r <- r > -Inf부품 에 대한 설명서를 찾을 수없는 것 같습니다 . 정확히 뭐하는거야? 그리고 values(r)[!is.na(values(r))] <- 1(r에서 NA가 아닌 모든 위치를 1로 설정) 와 다른 점은 무엇 입니까?
csheth

3
r > -Inf기본 R입니다. 수행 c(1,NA,3,NA) > -Inf어떻게 작동하는지 볼 수 있습니다. 대안 ( reclassify) 을 추가했습니다 . 당신의 대안은 효과가 있지만 큰 물체에는 좋지 않습니다.
Robert Hijmans

컴퓨터에서 rasterToPolygons()부품 을 처리하기를 기다리는 중이므로 귀하의 답변을 평가하겠습니다. -Inf비트가 매우 유용 할 것입니다 감사 합니다!
csheth

매우 큰 래스터의 경우 시간이 걸리거나 실패 할 수 있습니다. 이 경우 aggregate어쨌든 차이를 볼 수 없으므로 먼저 사용 하는 것이 좋습니다.
Robert Hijmans

aggregate()r 을 실행 한 후 100 개의 셀만 있어도 처리되지 않습니다 (16GB RAM이 장착 된 컴퓨터). 문제는 결과 다각형에서 DEM을 추출해야하므로 경계를 가능한 한 기본으로 유지해야한다는 것입니다. 래스터를 더 다운 샘플링하면 해당 경계를 잃게됩니다. 해결 방법이 있습니까?
csheth
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.