Python 루프와 결합된 ArcGIS의 셀 통계 도구를 사용하여 연도별 NDVI 데이터를 일괄 합성하고 정수 형식으로 저장할 수 있습니다. 코드는 다음과 같습니다.
가져오기 arcpy
가져오기 os
# 입력 및 출력 경로 및 파일 이름 설정
input_folder = r"C:\data\monthly_ndvi"
output_folder = r"C:\data\yearly_ndvi"
# 모든 입력 래스터 파일의 이름과 연도 정보 가져오기
input_files = os.listdir(input_folder)
file_years = set([int(i.split("_")[1]) for i in input_files])
#
os.path.exists(output_folder)가 아니면 출력 폴더 생성:
os.makedirs(output_folder)
# 매년 가장 큰 NDVI 그리드를 하나의 그리드로 합성하고 정수 TIFF 파일로 저장합니다.
for year in file_years:
# 병합을 위해 현재 연도의 여러 월별 NDVI 파일을 필터링합니다.
month_files = [i for i in input_files if int(i .split("_")[1])==연도]
# 셀 통계 도구를 실행하여 연도의 NDVI를 래스터로 합성
output_raster = os.path.join(output_folder, "NDVI_{}.tif".format(year))
arcpy.CheckOutExtension("Spatial")
max_ndvi = arcpy .sa.CellStatistics(month_files, "MAXIMUM", "DATA")
max_ndvi_int = arcpy.sa.Int(max_ndvi) # 정수 데이터로 변환
max_ndvi_int.save(output_raster)
del max_ndvi_int, max_ndvi
# Spatial Analyst 확장 라이센스 해제
arcpy.CheckInExtension("Spatial")
먼저 코드는 입력 래스터 폴더에 있는 모든 파일의 이름을 가져오고 파일 이름을 기반으로 각 파일의 연도 정보를 가져옵니다. 연도를 중복 제거한 후 `set()` 메서드를 사용하여 연도 배열을 가져옵니다.
연도 배열을 반복하고 현재 반복되는 연도에서 여러 달의 NDVI 파일을 필터링한 다음 셀 통계 도구를 사용하여 이러한 파일을 래스터로 결합합니다.
셀 통계 도구의 세 번째 매개변수 'ignore_nodata'의 기본값은 "DATA" 모드로, 정수 데이터를 출력할 때 부동 소수점 숫자 대신 정수 값으로 전송되도록 할 수 있습니다(즉, 소수 반올림 오류). 따라서 이 코드는 추가적으로 `cell_statistics_type` 파라미터를 설정할 필요가 없습니다.
마지막으로 Spatial Analyst 확장 라이선스를 해제하면 코드가 안전하게 실행됩니다.