Ubuntu Online, Fedora Online, Windows 온라인 에뮬레이터 또는 MAC OS 온라인 에뮬레이터와 같은 여러 무료 온라인 워크스테이션 중 하나를 사용하여 OnWorks 무료 호스팅 제공업체에서 실행할 수 있는 r.mapcalcgrass 명령입니다.
프로그램:
이름
r.mapcalc - 래스터 맵 계산기.
키워드
래스터, 대수학
개요
r.mapcalc
r.mapcalc --도움
r.mapcalc [-s] [표현=현] [파일=name] [씨=정수] [--덮어 쓰기]
[--도움] [--말 수가 많은] [--조용한] [--ui]
플래그 :
-s
무작위 시드 생성(결과는 비결정적임)
--덮어쓰기
출력 파일이 기존 파일을 덮어쓰도록 허용
--도움
사용 요약 인쇄
--말 수가 많은
자세한 모듈 출력
--조용한
조용한 모듈 출력
--UI
강제 실행 GUI 대화 상자
매개 변수 :
표현=현
평가할 표현식
파일=name
평가할 표현식이 포함된 파일
씨=정수
rand() 함수의 시드
기술
r.mapcalc 래스터 맵 레이어에서 연산을 수행합니다. 새로운 래스터 맵 레이어를 생성할 수 있습니다.
이는 기존 래스터 맵 레이어, 정수 또는 부동과 관련된 산술 표현식입니다.
포인트 상수 및 함수.
프로그램 사용
r.mapcalc 표현의 형식은 다음과 같습니다.
결과 = 표현
어디에 결과 계산 결과를 포함하는 래스터 맵 레이어의 이름입니다.
and 표현 기존 래스터 맵 레이어와 관련된 모든 법적 산술 표현식입니다.
(외 결과 자체), 정수 또는 부동 소수점 상수 및 알려진 함수
계산자. 표현식에는 괄호가 허용되며 어떤 깊이에도 중첩될 수 있습니다.
결과 사용자의 현재 지도 세트에 생성됩니다.
As 표현= 첫 번째 옵션이며 기본값입니다. 이는 다음을 통과한다는 것을 의미합니다.
표현식이 인용되고 공백이 있으면 명령줄에서 표현식이 가능합니다.
첫 번째 이전에 포함됩니다. = 징후. 예('foo'는 결과 맵입니다):
r.mapcalc "foo = 1"
또는 :
r.mapcalc 'foo = 1'
따옴표가 없는 표현식(예: 여러 인수로 분할)은 작동하지 않으며 생략하지도 않습니다.
= 기호 앞의 공백:
r.mapcalc 'foo=1'
죄송합니다, 유효한 매개변수가 아닙니다.
파일에서 명령을 읽으려면 file=을 명시적으로 사용하십시오. 예:
r.mapcalc 파일=파일
또는 :
r.mapcalc 파일=- < 파일
또는 :
r.mapcalc 파일=- <
푸 = 1
EOF
에 입력된 수식 r.mapcalc 사용자에 의해 두 가지 모두에 기록됩니다. 결과 지도 제목
(이는 카테고리 파일에 나타납니다. 결과) 및 기록 파일에 결과.
일부 문자는 명령 셸에서 특별한 의미를 갖습니다. 사용자가 입력을 입력하는 경우
에 r.mapcalc 명령줄에서 표현식은 작은따옴표로 묶어야 합니다.
아래 참고 사항을 참조하세요.
연산자 and 주문 of 상위
다음 연산자가 지원됩니다.
연산자 의미 유형 우선순위
-------------------------------------------------- ------------
- 부정 연산 12
~ 보수 Bitwise 12
! 비논리적 12
^ 지수 산술 11
% 모듈러스 산술 10
/나눗셈 연산 10
* 곱셈 산술 10
+ 덧셈 산술 9
- 뺄셈 산술 9
<< 왼쪽 시프트 비트 단위 8
>> 오른쪽 시프트 비트별 8
>>> 오른쪽 시프트(부호 없음) 비트 단위 8
> 논리 7보다 큼
>= 논리 7보다 크거나 같음
< 논리 7 미만
<= 논리 7보다 작거나 같음
== 논리 6과 같음
!= 논리 6과 같지 않음
& 비트 및 비트 5
| 비트 단위 또는 비트 단위 4
&& 논리 및 논리 3
&&& 논리 및[1] 논리 3
|| 논리적 또는 논리적 2
||| 논리적 또는[1] 논리적 2
?: 조건부 논리 1
(모듈러스는 나눈 나머지입니다)
[1] &&& 및 ||| 연산자는 다른 연산자와 다르게 Null 값을 처리합니다. 참조
섹션 제목 NULL SUPPORT 자세한 내용은 아래를 참조하세요.
연산자는 왼쪽에서 오른쪽으로 적용되며 우선 순위가 높은 연산자가 적용됩니다.
우선 순위가 낮은 것보다 먼저. 0으로 나누기와 0으로 모듈러스를 허용합니다.
NULL 결과를 제공합니다. 논리 연산자는 비교가 참이면 1의 결과를 제공하고, 0을 제공합니다.
그렇지 않으면.
래스터 지도 층 이름
숫자, 연산자 또는 함수 이름이 아닌 표현식의 모든 항목은
래스터 맵 레이어 이름이어야 합니다. 예:
상승
x3
3d.그의
대부분의 GRASS 래스터 맵 레이어는 이 명명 규칙을 따릅니다. 그러나 래스터 맵 레이어의 경우
위의 규칙과 충돌하는 이름이 있으면 인용해야 합니다. 예를 들어,
표현
x = ab
다음과 같이 해석됩니다: x는 a 빼기 b와 같지만,
x = "ab"
다음과 같이 해석됩니다: x는 명명된 래스터 맵 레이어와 같습니다. ab
또한
X = 3107
만들 것이다 x 숫자 3107로 채워져 있고,
x = "3107"
래스터 맵 레이어를 복사합니다. 3107 래스터 맵 레이어로 x.
래스터 맵 레이어 이름이 숫자처럼 보이거나 다음을 포함하지 않는 한 따옴표는 필요하지 않습니다.
연산자, 또는 프로그램이 비대화식으로 실행되지 않는 한. 여기에 주어진 예는
프로그램은 대화형으로 실행됩니다. 아래 참고 사항을 참조하세요.
r.mapcalc 사용자의 현재 지도 세트에 따라 래스터 지도 레이어를 찾습니다.
검색 경로. 검색 경로를 무시하고 검색 경로를 지정하는 맵 세트를 지정할 수 있습니다.
래스터 맵 레이어를 선택합니다. 이는 래스터 맵 레이어 이름을 지정하여 수행됩니다.
양식 :
이름@맵셋
예를 들어, 다음은 올바른 표현입니다.
결과 = x@PERMANENT / y@SOILS
지정된 맵세트가 맵세트 검색 경로에 있을 필요는 없습니다. (이 방법은
맵셋 검색 경로를 재정의하는 것은 모든 GRASS 명령에 공통적입니다. r.mapcalc.)
이 어플리케이션에는 XNUMXµm 및 XNUMXµm 파장에서 최대 XNUMXW의 평균 출력을 제공하는 neighborhood 변화
지도와 이미지는 래스터 형식, 즉 XNUMX차원 형식으로 저장된 데이터베이스 파일입니다.
정수 값의 행렬. ~ 안에 r.mapcalc, 지도 뒤에는 neighborhood 변화
평가 중인 현재 셀의 상대 오프셋을 지정합니다. 형식은
지도[r,c]어디로 r 행 오프셋이고 c 열 오프셋입니다. 예를 들어, 지도[1,2]
현재 셀의 한 행 아래, 오른쪽 두 열의 셀을 나타냅니다.
지도[-2,-1] 현재 셀에서 두 행 위, 한 열 왼쪽에 있는 셀을 나타냅니다.
세포, 그리고 지도[0,1] 현재 셀에서 한 열 오른쪽에 있는 셀을 나타냅니다. 이것
구문을 사용하면 단일 지도 내에서 또는 전체 지도에 걸쳐 이웃 유형 필터를 개발할 수 있습니다.
여러 지도.
래스터 지도 층 값 에 전에, 범주 파일
때로는 카테고리와 연관된 값을 사용하는 것이 바람직할 때도 있습니다. 상표 대신에
카테고리 값 자체. 래스터 맵 레이어 이름 앞에 @ 연산자, 그 다음에는
래스터 지도 레이어에 대한 범주 파일의 레이블은 대신 표현식에 사용됩니다.
카테고리 값.
예를 들어 래스터 지도 레이어가 있다고 가정해 보겠습니다. soil.ph (토양 pH 값을 나타냄)에는
다음과 같은 라벨이 있는 카테고리 파일:
고양이 라벨
------------------
0 데이터 없음
1 1.4
2 2.4
3 3.5
4 5.8
5 7.2
6 8.8
7 9.4
그런 다음 표현식은 다음과 같습니다.
결과 = @soils.ph
범주 값이 0, 1.4, 2.4, 3.5, 5.8, 7.2, 8.8 및 9.4인 결과를 생성합니다.
이 연산자는 래스터 맵 레이어에만 적용할 수 있으며 플로팅 맵을 생성합니다.
표현식의 포인트 값입니다. 따라서 카테고리 라벨은 유효한 문자로 시작해야 합니다.
숫자. 카테고리 라벨이 정수인 경우 부동 소수점으로 표시됩니다.
숫자. 카테고리 라벨이 숫자로 시작하지 않거나 누락되었습니다.
결과 래스터 맵에서 NULL(데이터 없음)로 표시됩니다.
회색 규모 등가물 and 색 분리하다
지도 카테고리에 할당된 색상을 조작하는 것이 도움이 되는 경우가 많습니다. 이것은
세포의 스펙트럼 특성이 의미를 가질 때 특히 유용합니다(이미지의 경우).
데이터) 또는 지도 범주 값이 실제 수량을 나타내는 경우(예: 범주 값
실제 고도 값을 반영합니다). 지도 색상 조작은 시각적 인식에도 도움이 될 수 있습니다.
그리고 지도 인쇄.
# 연산자를 사용하여 지도 범주 값을 회색조로 변환할 수 있습니다.
등가물 또는 래스터 맵 레이어의 빨간색, 녹색 또는 파란색 구성 요소를
별도의 래스터 맵 레이어.
결과 = #지도
각 범주 값을 다음으로 변환합니다. 지도 이를 나타내는 0-255 범위의 값으로
범주의 색상이 암시하는 회색조 수준입니다. 지도에 회색조 색상이 있는 경우
테이블이면 회색 레벨은 #map이 평가하는 것입니다. 그렇지 않으면 다음과 같이 계산됩니다.
0.10 * 빨간색 + 0.81 * 녹색 + 0.01 * 파란색
또는 다음을 사용할 수 있습니다.
결과 = y#map
NTSC 가중치를 사용하려면:
0.30 * 빨간색 + 0.59 * 녹색 + 0.11 * 파란색
또는 다음을 사용할 수 있습니다.
결과 = i#map
동일한 가중치를 사용하려면:
0.33 * 빨간색 + 0.33 * 녹색 + 0.33 * 파란색
# 연산자에는 r#map, g#map, b#map의 세 가지 다른 형식이 있습니다. 이들은 빨간색, 녹색,
또는 명명된 래스터 맵의 파란색 구성 요소입니다. GRASS 쉘 스크립트 r.블렌드
두 개의 래스터 맵 레이어에서 이러한 각 구성 요소를 추출하고 이를 결합합니다.
사용자가 지정한 백분율. 이러한 형태를 사용하면 색상 분리가 가능합니다. 예를 들어,
빨간색 성분을 추출합니다. 지도 새로운 0-255 지도 레이어에 저장하세요. 빨간, 사용자
다음을 입력할 수 있습니다:
빨간색 = r#map
이 지도에 회색 색상을 지정하려면 다음을 입력하세요.
r.colors 맵=빨간색 색상=규칙
검은
화이트
이 맵에 빨간색 색상을 지정하려면 다음을 입력하세요.
r.colors 맵=빨간색 색상=규칙
검은
빨간
기능
현재 지원되는 기능은 아래 표와 같습니다. 결과 유형
마지막 열에 표시되어 있습니다. F 이는 함수가 항상 부동 소수점 결과를 가져온다는 것을 의미합니다.
포인트 가치, I 이는 함수가 정수 결과를 제공한다는 것을 의미합니다. * 나타냅니다
함수에 대한 인수 중 하나라도 부동 소수점 값이고
모든 인수가 정수인 경우 정수입니다.
기능 설명 유형
-------------------------------------------------- -------------------------
abs(x)는 x의 절대값을 반환합니다 *
acos(x) x의 역코사인(결과는 도 단위) F
asin(x) x의 역사인(결과는 도 단위) F
atan(x) x의 역탄젠트(결과는 도 단위) F
atan(x,y) y/x의 역탄젠트(결과는 도 단위) F
cos(x) x의 코사인(x는 도 단위) F
double(x) x를 배정밀도 부동 소수점 F로 변환합니다.
eval([x,y,...,]z) 나열된 expr의 값을 평가하고 결과를 z에 전달합니다.
exp(x) x F의 지수 함수
exp(x,y) x의 y F 거듭제곱
float(x) x를 단정밀도 부동 소수점 F로 변환합니다.
graph(x,x1,y1[x2,y2..]) 그래프 F의 점을 기준으로 x를 y로 변환합니다.
graph2(x,x1[,x2,..],y1[,y2..])
graph() F의 대체 형태
if 결정 옵션: *
if(x) x가 1이 아니면 0, 그렇지 않으면 XNUMX
if(x,a) a x가 0이 아니면 XNUMX, 그렇지 않으면 XNUMX
if(x,a,b) x가 XNUMX이 아니면 a, 그렇지 않으면 b
if(x,a,b,c) x > 0이면 a, x가 0이면 b, x < XNUMX이면 c
int(x) x를 정수로 변환 [ 잘림 ] I
isnull(x) x = NULL인지 확인
log(x) x F의 자연 로그
log(x,b) x 밑수 b F의 로그
max(x,y[,z...]) 나열된 값 중 가장 큰 값 *
median(x,y[,z...]) 나열된 항목의 중앙값 *
min(x,y[,z...]) 나열된 값 중 가장 작은 값 *
mode(x,y[,z...]) 나열된 모드 값 *
nmax(x,y[,z...]) NULL을 제외하고 나열된 값 중 가장 큰 값 *
nmedian(x,y[,z...]) NULL을 제외하고 나열된 항목의 중앙값 *
nmin(x,y[,z...]) NULL을 제외하고 나열된 값 중 가장 작은 값 *
nmode(x,y[,z...]) 나열된 항목의 모드 값(NULL 제외) *
not(x) x가 1이면 0, 그렇지 않으면 XNUMX
pow(x,y) x의 y*
rand(a,b) 임의의 값 x : a <= x < b *
round(x) x를 가장 가까운 정수 I로 반올림합니다.
round(x,y) x를 가장 가까운 y의 배수로 반올림합니다.
round(x,y,z) 어떤 정수 i에 대해 x를 가장 가까운 y*i+z로 반올림합니다.
sin(x) x의 사인(x는 도 단위) F
sqrt(x) x F의 제곱근
tan(x) x의 탄젠트(x는 도 단위) F
xor(x,y) x와 y의 배타적 논리합(XOR) I
내부 변수:
row() 이동 창의 현재 행
col() 이동 창의 현재 열
x() 이동 창의 현재 x 좌표
y() 이동 창의 현재 y 좌표
ewres() 현재 동서 해상도
nsres() 현재 남북 해상도
null() NULL 값
row() 및 col() 인덱싱은 1부터 시작합니다.
부유 포인트 값 in 전에, 표현
표현식에는 부동 소수점 숫자가 허용됩니다. 부동 소수점 숫자는 숫자입니다.
소수점이 포함되어 있습니다.
2.3 12.0 12. .81
표현식의 부동 소수점 값은 특별한 방법으로 처리됩니다. 산수와
논리 연산자, 피연산자 중 하나가 부동이면 다른 피연산자는 부동으로 변환되고
작업 결과는 float입니다. 이는 특히 정수의 나눗셈을 의미합니다.
(잘린) 정수가 생성되는 반면 부동 소수점을 나누면 정확한 부동 소수점이 생성됩니다.
포인트 값. * 유형의 함수(위 표 참조)를 사용하면 결과는 부동 소수점입니다.
인수는 부동 소수점이고 그렇지 않으면 정수입니다.
참고: 정수로 계산하면 결과 맵은 정수가 됩니다. 만약 너라면
부동 소수점 결과를 얻으려면 정수에 소수점을 추가하세요.
부동 소수점 나누기를 원할 경우 인수 중 적어도 하나는 부동 소수점이어야 합니다.
포인트 값. 그 중 하나에 1.0을 곱하면 부동 소수점 결과가 생성됩니다.
float() 사용:
r.mapcalc "ndvi = float(lsat.4 - lsat.3) / (lsat.4 + lsat.3)"
NULL SUPPORT
· XNUMX으로 나누면 NULL이 나와야 합니다.
· XNUMX에 의한 모듈러스는 NULL이 되어야 합니다.
· 산술 또는 논리 연산의 NULL 값은 NULL이 되어야 합니다.
(단, &&& 및 |||는 아래 설명과 같이 특별히 취급됩니다.)
· &&& 및 ||| 연산자는 x가 NULL인 경우에도 다음 공리를 준수합니다.
x &&& 거짓 == 거짓
거짓 &&& x == 거짓
x ||| 사실 == 사실
사실 ||| x == 참
· 함수 인수의 NULL 값은 NULL이 되어야 합니다(그러나 if(), eval() 및
isnull()은 아래 설명과 같이 특별히 처리됩니다.
· eval() 함수는 항상 마지막 인수를 반환합니다.
· if()의 상황은 다음과 같습니다.
if(엑스)
x가 NULL이면 NULL입니다. x가 0이면 1이고; 그 외 XNUMX개
만약(x,a)
x가 NULL이면 NULL입니다. a x가 0이 아닌 경우; 그 외 XNUMX
만약(x,a,b)
x가 NULL이면 NULL입니다. a x가 XNUMX이 아닌 경우; b 그렇지 않으면
if(x,n,z,p)
x가 NULL이면 NULL입니다. n x가 음수이면;
x가 XNUMX이면 z; p x가 양수인 경우
· (새로운) 함수 isnull(x)는 다음을 반환합니다: x가 NULL이면 1; 그렇지 않으면 0입니다. (신규)
함수 null()(인수 없음)은 정수 NULL을 반환합니다.
· NULL은 아니지만 유효하지 않은 함수에 대한 인수는 NULL이 되어야 합니다.
예 :
로그(-2)
제곱(-2)
pow(a,b) 여기서 a는 음수이고 b는 정수가 아닙니다.
NULL 지원: NULL 셀로 수행된 모든 계산은 항상 NULL이 된다는 점에 유의하세요.
이 셀의 값입니다. NULL 셀을 즉시 교체하려면 isnull() 메서드를 사용하세요.
if 문에서 함수를 테스트합니다.
예: 사용자는 NULL 값 셀이 XNUMX처럼 처리되기를 원합니다. 지도 A와
B(B에 NULL이 포함됨)를 사용하여 맵 C를 얻으려면 사용자가 다음과 같은 구성을 사용할 수 있습니다.
C = A + if(isnull(B),0,B)
NULL and 정황:
단일 인수 형식의 경우:
if(x) = NULL x가 NULL인 경우
if(x) = 0 x = 0이면
if(x) = 1 그렇지 않으면 (즉, x는 NULL도 0도 아닙니다).
두 가지 인수 형식의 경우:
if(x,a) = NULL x가 NULL인 경우
if(x,a) = 0 x = 0인 경우
if(x,a) = a 그렇지 않은 경우(즉, x는 NULL도 0도 아닙니다).
세 가지 인수 형식의 경우:
if(x,a,b) = NULL x가 NULL인 경우
if(x,a,b) = b x = 0인 경우
if(x,a,b) = a 그렇지 않은 경우(즉, x는 NULL도 0도 아닙니다).
XNUMX개의 인수 형식의 경우:
if(x,a,b,c) = NULL x가 NULL인 경우
if(x,a,b,c) = a x > 0인 경우
if(x,a,b,c) = b x = 0인 경우
if(x,a,b,c) = c x < 0인 경우
보다 일반적으로 모든 연산자와 대부분의 함수는 해당 인수가 *하나라도* 있으면 NULL을 반환합니다.
NULL입니다.
if(), isnull() 및 eval() 함수는 예외입니다.
isnull() 함수는 인수가 NULL이면 1을 반환하고 그렇지 않으면 0을 반환합니다. 사용자가
그 반대를 원해요! 연산자(예: "!isnull(x)"를 사용해야 합니다.
첫 번째 인수가 NULL이면 모든 형태의 if()는 NULL을 반환합니다. 2, 3, 4 인수 형식
if()는 "선택된" 인수가 NULL인 경우 NULL을 반환합니다. 예:
if(0,a,b) = b a가 NULL인지 여부에 관계 없음
if(1,a,b) = b가 NULL인지 여부에 관계없이 a
eval()은 항상 마지막 인수를 반환하므로 마지막 인수가 다음인 경우에만 NULL을 반환합니다.
없는.
주의 사항: 사용자는 == 연산자를 사용하여 NULL을 테스트할 수 없습니다.
또는 두 인수 모두 NULL입니다. 즉, x와 y가 모두 NULL이면 "x == y" 및 "x != y"는 다음과 같습니다.
각각 1과 0이 아닌 NULL입니다.
사용자가 NULL을 알 수 없는 수량을 나타내는 것으로 간주하는 경우 동작이 의미가 있습니다.
예를 들어 x와 y가 모두 알려지지 않은 경우 "x == y" 및 "x != y"의 값도 다음과 같습니다.
알려지지 않은; 둘 다 알 수 없는 값이 있으면 사용자는 둘 다인지 아닌지 알 수 없습니다.
동일한 값을 갖습니다.
노트
용법 에 명령 선
명령줄에 표현식이 제공되면 특별한 주의가 필요합니다. 일부 캐릭터
UNIX 쉘에는 특별한 의미가 있습니다. 여기에는 다음이 포함됩니다.
* ( ) > & |
표현식 주위에 작은따옴표를 두는 것이 좋습니다. 예:
'결과 = 고도 * 2'
따옴표가 없으면 UNIX 셸에서 특별한 의미를 갖는 *가 변경됩니다.
and r.mapcalc *가 아닌 다른 것을 볼 수 있습니다.
배수 계산
일반적으로 각 r.mapcalc 명령에서 가능한 많은 작업을 수행하는 것이 좋습니다. 예:
보다는 :
r.mapcalc "$GIS_OPT_OUTPUT.r = r#$GIS_OPT_FIRST * .$GIS_OPT_PERCENT + (1.0 - .$GIS_OPT_PERCENT) * r#$GIS_OPT_SECOND"
r.mapcalc "$GIS_OPT_OUTPUT.g = g#$GIS_OPT_FIRST * .$GIS_OPT_PERCENT + (1.0 - .$GIS_OPT_PERCENT) * g#$GIS_OPT_SECOND"
r.mapcalc "$GIS_OPT_OUTPUT.b = b#$GIS_OPT_FIRST * .$GIS_OPT_PERCENT + (1.0 - .$GIS_OPT_PERCENT) * b#$GIS_OPT_SECOND"
용도:
r.mapcalc <
$GIS_OPT_OUTPUT.r = r#$GIS_OPT_FIRST * .$GIS_OPT_PERCENT + (1.0 - .$GIS_OPT_PERCENT) * r#$GIS_OPT_SECOND
$GIS_OPT_OUTPUT.g = g#$GIS_OPT_FIRST * .$GIS_OPT_PERCENT + (1.0 - .$GIS_OPT_PERCENT) * g#$GIS_OPT_SECOND
$GIS_OPT_OUTPUT.b = b#$GIS_OPT_FIRST * .$GIS_OPT_PERCENT + (1.0 - .$GIS_OPT_PERCENT) * b#$GIS_OPT_SECOND
EOF
후자는 각 입력 맵을 한 번만 읽습니다.
뒤로 호환성
GRASS 6과의 하위 호환성을 위해 옵션이 지정되지 않으면
file=- (stdin에서 읽음), 예를 들어 계속 사용할 수 있습니다.
r.mapcalc < 파일
또는 :
r.mapcalc <
푸 = 1
EOF
그러나 이전 GRASS GIS 버전과의 호환성이 필요하지 않은 경우 file=을 명시적으로 사용하십시오.
상술 한 바와 같이.
지도 이름에 들어갈 수 없는 대문자나 점이 포함된 경우
모듈 옵션 이름, r.mapcalc 명령은 따옴표 없이도 유효합니다.
r.mapcalc 고도_A=1
r.mapcalc 고도.1=1
그러나 이 구문은 위에서 언급한 것처럼 더 안전한 인용부호로 권장되지 않습니다. 따옴표 사용
이전 버전과 호환되며 앞으로도 유효합니다.
대화 형 입력 in 명령 선
사용자가 명령줄이 아닌 표준 입력을 통해 입력하는 수식의 경우
이제 줄 연속 기능이 존재합니다. 사용자가 문자열 끝에 백슬래시를 추가하는 경우
입력 라인, r.mapcalc 사용자가 입력한 공식이 계속해서 적용된다고 가정합니다.
다음 입력 라인. 가능한 입력 라인 수나 라인 수에는 제한이 없습니다.
수식의 길이.
경우 r.mapcalc 사용자가 입력한 공식이 너무 길어서 지도 제목에는 다음 항목만 포함됩니다.
일부는 아니지만 대부분(전부는 아니더라도) 수식은 기록 파일에 저장됩니다.
전에, 결과 지도.
사용자가 입력을 입력하면 r.mapcalc 명령줄에서 비대화식으로 프로그램
기존 지도 레이어를 덮어쓰지 말라고 사용자에게 경고하지 않습니다. 따라서 사용자는 다음을 수행해야 합니다.
현재 프로그램에 아직 존재하지 않는 프로그램 출력 래스터 맵 이름을 할당하는 데 주의를 기울이십시오.
맵셋.
래스터 MASK 취급
r.mapcalc 래스터 MASK 처리의 일반적인 GRASS 동작을 따르므로 MASK는
기존 GRASS 래스터 맵을 읽을 때 적용됩니다. 이는 예를 들어 다음을 의미합니다.
명령:
r.mapcalc "elevation_exaggerated = 고도 * 3"
MASK가 활성화된 경우 마스크된 픽셀을 고려하는 맵을 만듭니다.
그러나 지도를 기반으로 하지 않는 지도(예: 상수의 지도)를 생성하는 경우:
r.mapcalc "base_height = 200.0"
생성된 래스터 맵은 계산 영역에 의해서만 제한되지만 영향을 받지 않습니다.
액티브 마스크. 이는 위에서 언급한 것처럼 MASK가 다음과 같은 경우에만 적용되기 때문에 예상되는 현상입니다.
래스터 지도를 작성할 때는 읽기가 아닙니다.
이 경우에도 MASK를 적용해야 하는 경우 MASK를 포함하는 if() 문
다음과 같이 사용해야 합니다.
r.mapcalc "base_height = if(MASK, 200.0, null())"
MASK 관련 표현식을 테스트할 때 MASK가 활성화되면
NULL이 아니더라도 마스크된 영역의 데이터입니다. 보다 r.마스크 를 참조하세요
평가 기능
계산 결과가 하나의 맵이어야 하는데 표현식이 너무 복잡한 경우
여러 표현식으로 분할하는 것이 더 낫다면 eval 함수를 사용할 수 있습니다.
r.mapcalc << EOF
eval(elev_200 = 고도 - 200,
elev_5 = 5 * 고도,
elev_p = pow(elev_5, 2))
고도_결과 = (0.5 * elev_200) + 0.8 * elev_p
EOF
이 예에서는 유닉스 계열 << EOF 구문을 사용하여 입력을 제공합니다. r.mapcalc.
임시 변수(맵)는 생성되지 않으므로 중요하지 않습니다.
존재하든 존재하지 않든. 위의 예에서 맵 elev_200이 존재하면 그렇지 않습니다.
덮어쓰면 오류가 발생하지 않습니다. 그 이유는 이제 이름이 elev_200이기 때문입니다.
기존 맵이 아닌 임시 변수(맵)를 나타냅니다. 다음 부분은
표현식은 임시 elev_200을 사용하고 기존 elev_200은 그대로 유지됩니다.
그리고 사용되지 않습니다. 사용자가 기존 지도를 사용하려는 경우 임시 지도의 이름은
변수(맵)을 변경해야 합니다.
랜덤 무작위 번호 발전기 초기화
rand() 함수에서 사용되는 의사 난수 생성기는 다음과 같이 초기화될 수 있습니다.
특정 값을 사용하여 씨 옵션. 이는 이전을 복제하는 데 사용될 수 있습니다.
계산.
또는 다음을 사용하여 시스템 시간과 PID에서 초기화할 수 있습니다. -r 깃발.
이렇게 하면 매번 다른 시드가 사용됩니다.
두 경우 모두 시드는 지도 기록에 기록되며 다음을 사용하여 볼 수 있습니다.
정보.
다른 사람이 결과를 확인할 수 있도록 하려면 다음을 사용하는 것이 좋습니다.
씨 스크립트에 지정되거나 생성된 시드를 제공하는 옵션
명시적 시드가 제공된 의사 난수 생성기와 같은 결정론적 프로세스.
rand() 함수는 다음과 같은 경우에 치명적인 오류를 생성합니다. 씨 옵션도
전에, -s 플래그가 부여됩니다.
사용 예
두 래스터 지도 레이어의 평균을 계산하려면 a and b:
평균 = (a + b)/2
가중 평균을 구성하려면 다음을 수행합니다.
평균 = (5*a + 3*b)/8.0
래스터 지도 레이어의 이진 표현을 생성하려면 a 카테고리 0은 0으로 유지됩니다.
다른 모든 범주는 1이 됩니다.
마스크 = a != 0
이는 다음을 통해 수행할 수도 있습니다.
마스크 = if(a)
래스터 맵 레이어를 마스크하려면 b 래스터 맵 레이어별 a:
결과 = if(a,b)
5 미만의 모든 값을 NULL로 변경하려면:
뉴맵 = if(map<5, null(), 5)
graph() 함수를 사용하면 사용자는 x,y 쌍을 사용하여 xy 변환을 지정할 수 있습니다.
좌표. 어떤 상황에서는 한 값에서 다른 값으로의 변환이 쉽지 않습니다.
수학적으로 확립되었지만 2차원 그래프로 표현된 다음 선형으로 표현될 수 있습니다.
보간. graph() 함수는 이를 수행할 수 있는 기회를 제공합니다. x축
값은 다음과 같이 표시되는 관련 그래프와 함께 그래프 함수에 제공됩니다.
일련의 x, y 쌍. x 값은 단조 증가해야 합니다(각각은 다음보다 크거나
이전과 동일). 그래프 기능은 쌍 사이를 선형으로 보간합니다. 모든 x
값이 낮을수록 가장 낮은 x 값(즉, 첫 번째)은 관련 y 값을 반환합니다.
마지막 값보다 높은 x 값은 마찬가지로 관련 y 값을 반환합니다.
요청을 고려하십시오.
뉴맵 = 그래프(맵, 1,10, 2,25, 3,50)
X(맵) 값이 제공되고 y(새 맵) 값이 반환됩니다.
0, 10
1, 10
1.5, 17.5
2.9, 47.5
4, 50
100, 50
KNOWN 문제점
연속 줄은 \로 끝나야 하며 아니 후행 공백(공백 또는 탭). 만약에
사용자가 연속 줄 끝에 공백을 남겨두면 오류 메시지가 나타납니다.
제작한 r.mapcalc 의미가 없으며 방정식은 사용자로서 작동하지 않습니다.
예정된. 이는 eval() 함수에 특히 중요합니다.
현재 댓글 메커니즘이 없습니다. r.mapcalc. 아마도 다음과 같은 기능을 추가할 수도 있습니다.
사용자가 시작 부분에 #을 삽입하면 전체 줄이 무시됩니다.
라인이 존재하지 않는 것처럼 처리하면 됩니다.
이 함수는 사용자가 단순히 공백 대신 "end" 또는 "exit"를 입력하도록 요구해야 합니다.
선. 이렇게 하면 여러 스크립트를 공백으로 구분할 수 있습니다.
r.mapcalc NULL 셀에 대한 작업의 경우 경고를 인쇄하지 않습니다. 그것은 에게 맡겨진다
사용자는 isnull() 함수를 활용합니다.
onworks.net 서비스를 사용하여 온라인으로 r.mapcalcgrass를 사용하세요.