arcpy를 사용하여 가장 큰 NDVI 래스터 데이터를 월에서 연도별로 NDVI로 일괄 처리하고 래스터를 정수로 저장해야 합니다.

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 확장 라이선스를 해제하면 코드가 안전하게 실행됩니다.

Guess you like

Origin blog.csdn.net/weixin_58851039/article/details/131180641