경계 상자의 래스터 값 계산 (공간 범위)


11

경계 상자가 주어지면 value == 11) arcpy 또는 2) R의 래스터 패키지에서 래스터 의 특정 값 수 (예 : 수에 관심이 있음 )를 어떻게 계산할 수 있습니까?

답변:


10

에서 R사용 crop가치와 (추출 등을 ) table을 계산.


예를 들어 지구를 덮는 1도 격자를 만들어 봅시다.

library(raster)
x.raster <- raster(outer(179:0, 0:359, `+`), xmn=-180, xmx=180, ymn=-90, ymx=90)

경계 상자는 다음 extent을 사용하기 위해 객체 로 변환됩니다 crop.

y.extent <- extent(cbind(c(-125,20), c(-60,50)))
y.raster <- crop(x.raster, y.extent)

그렇게 한 후, 표는 간단합니다.

table(getValues(y.raster))

이 출력에서 ​​첫 번째 행은 값을 나열하고 두 번째 행은 해당 카운트를 나열합니다.

165 166 167 ... 257 258
  1   2   3 ...   2   1

점검으로 래스터와 범위를 그릴 수 있습니다.

plot(x.raster)
plot(y.extent, add=T)

지도


3

사소한 추가 : (메모리 안전) 기능 "freq"를 사용할 수도 있습니다.

whuber의 답변에 따라 :

library(raster)
x.raster <- raster(outer(179:0, 0:359, '+'), xmn=-180, xmx=180, ymn=-90, ymx=90)
y.extent <- extent(cbind(c(-125,20), c(-60,50)))
y.raster <- crop(x.raster, y.extent)

그러나 지금하십시오 :

freq(y.raster)

매우 큰 객체 (파일의 래스터)에만 중요합니다. 'freq'는 2 열 행렬 (값 / 카운트)을 반환하고 'table'은 테이블을 반환합니다.


어쨌든 이미지를 자르기보다는 공간 쿼리를 수행합니까? 자르기가 처리 속도가 매우 느릴 수 있습니다.

1
자르기는 매우 빨라야합니다. 테스트로, 나는 crop지구를 덮고있는 1 분짜리 그리드에 대한 작업 시간을 정했습니다 . 10800 개의 행과 21600 개의 열 (233,280,000 개의 셀)이 있습니다. 자르기는 총 경과 시간 1.36 초로 실행되었습니다.
whuber

나는 또한 빨리해야한다고 생각하지만,이 공간 쿼리 위를 비교할 수 : v <- extract(x.raster, y.extent) 다음 table(v)
로버트 히즈 만 (Robert Hijmans)

1
로버트, 어떤 도서관 extract에서 왔어요? 그것은의 일부가 아니다 rasterR도움말 시스템 ( ??) 중 하나,이 이름을 가진 함수를 찾지 않습니다.
whuber

래스터 패키지의 기능입니다. ? extract는 (적어도 나를 위해)
Robert Hijmans
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.