2013-03-25 1 views
1

크기가 동일한 두 개의 래스터 (값은 소수점 이하 5 자리수)입니다. 아래 코드는 두 개의 래스터 r과 r1에서 하나의 파일을 만듭니다. r이 더 큰 경우 파란색을 넣고 그렇지 않으면 빨간색을 넣으십시오.계산에서 십진수를 사용하여 조건을 입력하는 방법은 무엇입니까?

이 코드는 잘 작동했지만 다른 조건을 추가 할 것을 요청 받았습니다. 이 코드의 작동 방식 :

r이 0.229이고 r1이 0.228이면 r이 더 큽니다 (세 번째 10 진수로 표시).

conne <- file("C:\\cor06.bin","rb") 
    over<-readBin(conne, numeric(), size=4, n=1440*720, signed=TRUE) 
:

 r= 0.228 r1=0.224 put yellow colour(they are rather similar) 
    r= 0.238 r1=0.224 put blue colour(r is bigger) 
    r= 0.128 r1=0.224 put red colour(r is lower) 

1이 제 2 파일 (R1)을 읽어 제 파일 R

 conn <- file("C:\\corr.bin","rb") 
    corr<- readBin(conn, numeric(), size=4, n=1440*720, signed=TRUE) 

2- 읽기 : 제가 필요한 것은, 예를 들어 처음 두 소수를 지정하는 것

계산 :

r <-raster(t(matrix((data=corr), ncol=720, nrow=1440))) 
r1 <- raster(t(matrix((data=over), ncol=720, nrow=1440))) 
m <- r > r1 #Compare the two rasters 
image(m , col = c("blue" , "red")) 
+0

r이 0.232이고 r1이 0.229이면 어떨까요? 당신은 노란색을 넣을까요, 아니면 파란색을 넣을까요? 차이가 0.01보다 작은 경우 어때요? –

+0

그게 합리적이라고 확신합니까? 데이터가 범주에 포함되지 않습니다. –

답변

2

하나가 다른 것보다 큰 경우 또는 두 값의 차이가 0.01보다 작은 경우이를 기반으로 색상을 만들려고합니다. 당신은 다음과 같이 간단하게이 작업을 수행 할 수 있습니다

# Example data 
r <- raster(system.file("external/test.grd", package="raster")) 
r1 <- r * rnorm(ncell(r)) 

# Make new raster 
m <- raster(r) 

# 3 = Yellow , 2 = "Red" , 1 = "Blue" 
values(m) <- ifelse(abs(r[] - r1[]) <= 0.01 , 3 , ifelse(r[] > r1[] , 1 , 2)) 
image(m , col = c(1 = "Blue" , 2 = "Red" , 3 = "Yellow")) 

는 당신이 바로 그 수준에 할당 col 보장 색상으로 인수의 value = "colour" 스타일을 사용할 수 있습니다. enter image description here

+0

나는 단지 'values'가 특정 패키지의 함수인지 궁금하다. ...? – joran

+0

예 ('래스터'의 일부)입니다. 값을 변경할 때 래스터 객체의 둘 이상의 부분이 변경 될 수 있기 때문입니다. 값 슬롯에 직접 액세스하는 것은 권장되지 않으며 값은 그 목적을 위해 편리한 안전한 래퍼를 제공합니다. –

+0

@joran'raster ::: setValues'을보세요 - 값은 그냥 메서드의 단축형입니다. –