gdal_calc.py
넘파이(NumPy) 문법을 사용하는 명령줄 래스터 계산기입니다.
개요
gdal_calc.py --calc=expression --outfile=out_filename [-A filename]
[--A_band=n] [-B...-Z filename] [other_options]
설명
# .. rubric:: DESCRIPTION # :name: description
넘파이(NumPy) 문법을 사용하는 명령줄 래스터 계산기입니다. 넘파이 배열이 지원하는 >
같은 논리 연산자와 함께 +
, -
, *
, 그리고 \
같은 기본 산술을 사용합니다. 모든 파일이 (extent 옵션을 사용하는 경우를 제외하면) 동일한 차원을 가지고 있어야만 하지만, (projectionCheck 옵션을 사용하는 경우를 제외하면) 투영법을 확인하지는 않는다는 사실을 기억하십시오.
- --help
도움말 메시지를 표시하고 엑시트합니다.
- --calc=expression
+
,-
,/
,*
, 또는 (log10()
같은) 모든 넘파이 배열 함수를 사용하는 넘파이 문법으로 계산합니다. 다중 밴드 파일을 생산하려면--calc
옵션 여러 개의 목록을 사용하면 됩니다. (GDAL 3.2버전 이상)
- -A <filename>
입력 GDAL 래스터 파일로, 어떤 문자든 (a-z, A-Z) 사용할 수 있습니다. (GDAL 3.3버전부터 소문자를 지원합니다.)
한 문자가 반복될 수도 있고, 또는 (공백으로 구분된) 값 몇 개를 지정할 수도 있습니다. (GDAL 3.3버전 이상) GDAL 3.5버전부터, 모든 셸/플랫폼에서 (?, *를 사용하는) 와일드카드 예외를 지원합니다. 이로써 3차원 넘파이 배열을 생성할 수 있습니다. 이런 경우, 계산 공식이 3차원 배열을 입력받아 2차원 배열을 반환해야만 합니다. (예시를 참조하십시오.) 계산 결과 2차원 배열을 반환하지 않는 경우 오류를 선언할 것입니다.
- --A_band=<n>
파일 A의 래스터 밴드 개수. (기본값은 1)
- --outfile=<filename>
생성하거나 채울 산출 파일.
- --NoDataValue=<value>
산출 NODATA 값입니다. (기본 데이터 유형 특화 값) NODATA 값을 설정하지 않으려면 –NoDataValue=none 을 이용하십시오. (GDAL 3.3버전 이상)
Note
파이썬 API를 사용하는 경우:
None
값이 기본 데이터 유형 특화 값을 나타내고,'none'
값은 NODATA 값을 설정하지 않는다는 것을 나타낼 것입니다.
- --hideNoData
New in version 3.3.
입력 밴드의 NODATA 값을 무시합니다. 기본적으로, 입력 밴드의 NODATA 값은 계산에 들어가지 않습니다. 이 옵션을 설정하면 입력 NODATA 값에 어떤 특별한 처리도 하지 않을 것입니다. 또한 다른 모든 값과 마찬가지로 계산에 들어가게 될 것입니다. 사용자가 –NoDataValue=<value>를 설정해서 NODATA 값을 특정한 값으로 명확하게 지정하지 않는 이상, 산출물은 설정된 NODATA 값을 가지지 않을 것입니다.
- --type=<datatype>
산출물의 데이터 유형입니다. [
Int32
,Int16
,Float64
,UInt16
,Byte
,UInt32
,Float32
] 가운데 하나여야만 합니다.Note
--type
을 사용해서 데이터 유형을 설정한다고 해도, 동일한 유형의 피연산자를 사용하는 중간(intermediate) 산술 연산을 하는 경우 연산 결과는 원본 데이터 유형을 따를 것입니다. 따라서 예기치 못 한 최종 결과물이 나올 수도 있습니다.
- --format=<gdal_format>
산출 파일 용 GDAL 포맷입니다.
- --color-table=<filename>
산출 래스터에 사용될 (색상표 색인 해석을 가진) 색상표(또는 ColorTable 객체)의 파일명을 지정할 수 있게 해줍니다. 지원 포맷: (예를 들어 gdaldem에서와 비슷하지만 색상 이름을 지원하지 않는) txt, qlr, (예를 들면 QGIS로부터 내보낸) qml
- --extent=<option>
New in version 3.3.
이 옵션은 서로 다른 범위를 가진 래스터들을 처리하는 방법을 결정합니다. 이 옵션은 사용자 지정 범위를 지정하기 위해 쓰이는 projwin 옵션과 함께 사용할 수 없습니다. 다음에 나오는 모든 옵션에 대해 모든 입력 래스터의 픽셀 크기(해상도)와 공간 좌표계가 동일해야만 합니다.
ignore
(기본값) - 래스터의 차원만 비교합니다. 차원이 일치하지 않는 경우 연산이 실패할 것입니다.fail
- 래스터의 차원 및 범위(경계)가 일치해야만 합니다. 그렇지 않는 경우 연산이 실패할 것입니다.union
- 산출물의 범위(경계)가 모든 입력물의 범위를 담고 있는 최소 직사각형이 될 것입니다.intersect
- 산출물의 범위(경계)가 모든 입력물의 범위 안에 포함되는 최대 직사각형이 될 것입니다.
- --projwin <ulx> <uly> <lrx> <lry>
New in version 3.3.
이 옵션은 산출물을 위한 사용자 지정 범위를 설정합니다. 이 옵션은 extent 옵션과 함께 사용할 수 없습니다.
- --projectionCheck
New in version 3.3.
기본적으로 어떤 투영법 확인도 하지 않지만, 이 옵션을 설정하면 모든 밴드의 투영법이 동일하지 않은 경우 연산이 실패할 것입니다.
- --creation-option=<option>
산출 포맷 드라이버에 생성 옵션을 전송(pass)합니다.
-co
옵션 여러 개를 목록화할 수도 있습니다. 각 포맷을 위한 정당한 생성 옵션을 알고 싶다면 래스터 드라이버 포맷 사양 문서를 읽어보십시오.
- --co=<option>
creation-option 과 동일합니다.
- --allBands=[a-z, A-Z]
입력 래스터(a-z, A-Z)의 모든 밴드를 처리합니다. 모든 밴드에 대해 –calc 옵션이 하나씩 필요합니다.
- --overwrite
산출물 파일이 이미 존재하는 경우 덮어씁니다. 이때 덮어쓰기란 파일을 삭제한 다음 처음부터 다시 생성한다는 의미라는 것을 이해해야만 합니다. 이 옵션을 지정하지 않았는데 산출물 파일이 이미 존재한다면, 제자리(in place) 업데이트될 것입니다.
- --debug
디버그 정보를 출력합니다.
- --quiet
진행 상황 메시지를 출력하지 않습니다.
파이썬 옵션
New in version 3.3.
gdal_calc 계산기의 파이썬 인터페이스 기능을 사용하면 다음 옵션을 사용할 수 있습니다. 명령 프롬프트에서는 사용할 수 없습니다.
- user_namespace
Calc 표현식에서 사용하기 위해 쓸 수 있는 사용자 지정 함수 또는 기타 이름들의 목록(dictionary)입니다.
- return_ds
이 옵션을 활성화하면, 함수로부터 산출 데이터셋을 반환받은 다음에도 인터페이스가 종료되지 않을 것입니다.
- color_table
산출 래스터에 사용될 (색상표 색인 해석을 가진) ColorTable 객체를 지정할 수 있게 해줍니다.
예시
파일 2개를 함께 추가합니다:
gdal_calc.py -A input1.tif -B input2.tif --outfile=result.tif --calc="A+B"
레이어 2개의 평균을 계산합니다:
gdal_calc.py -A input1.tif -B input2.tif --outfile=result.tif --calc="(A+B)/2"
Note
이전 예시에서 A 및 B 입력물이 동일한, 예를 들어 정수 데이터 유형인 경우, 나누기 연산을 하기 전에 피연산자 가운데 하나를 강제로 변환해야 할 수도 있습니다.
gdal_calc.py -A input.tif -B input2.tif --outfile=result.tif --calc="(A.astype(numpy.float64) + B) / 2"
파일 3개를 함께 추가합니다(옵션 2개로 동일한 결과물):
gdal_calc.py -A input1.tif -B input2.tif -C input3.tif --outfile=result.tif --calc="A+B+C"
New in version 3.3.
gdal_calc.py -A input1.tif -A input2.tif -A input3.tif --outfile=result.tif --calc="numpy.sum(A,axis=0)".
레이어 3개의 평균을 계산합니다(옵션 2개로 동일한 결과물):
gdal_calc.py -A input1.tif -B input2.tif -C input3.tif --outfile=result.tif --calc="(A+B+C)/3"
New in version 3.3.
gdal_calc.py -A input1.tif input2.tif input3.tif --outfile=result.tif --calc="numpy.average(a,axis=0)".
레이어 3개의 최대값을 구합니다(옵션 2개로 동일한 결과물):
gdal_calc.py -A input1.tif -B input2.tif -C input3.tif --outfile=result.tif --calc="numpy.max((A,B,C),axis=0)"
New in version 3.3.
gdal_calc.py -A input1.tif input2.tif input3.tif --outfile=result.tif --calc="numpy.max(A,axis=0)"
0 이하의 값을 NULL로 설정합니다:
gdal_calc.py -A input.tif --outfile=result.tif --calc="A*(A>0)" --NoDataValue=0
논리 연산자를 사용해서 입력물에서 나온 값들의 범위를 유지합니다:
gdal_calc.py -A input.tif --outfile=result.tif --calc="A*logical_and(A>100,A<150)"
다중 밴드를 작업합니다:
gdal_calc.py -A input.tif --A_band=1 -B input.tif --B_band=2 --outfile=result.tif --calc="(A+B)/2" --calc="B*logical_and(A>100,A<150)"