Hoje, preciso usar o python para obter o método de síntese máxima de dados rasterizados.Depois de muito tempo, encontrei o CellStatistics por acidente. Haha, primeiro use o arcpy para alcançá-lo, e então eu tenho tempo livre para escrevê-lo (estimado o ano do macaco).
Calcule as estatísticas de cada célula com base em vários dados de varredura. As estatísticas disponíveis são: modo, máximo, média, mediana, mínimo, minoria, intervalo, desvio padrão, soma e variabilidade.
Neste exemplo, o desvio padrão é calculado para cada célula em vários rasters de Grade de entrada e o resultado é gerado como uma varredura de Grade.
CellStatistics (script independente)
# Name: CellStatistics_Ex_02.py
# Description: Calculates a per-cell statistic from multiple rasters
# Requirements: Spatial Analyst Extension
# Import system modules
import arcpy
from arcpy import env
from arcpy.sa import *
# Set environment settings
env.workspace = "C:/sapyexamples/data"
# Set local variables
inRaster01 = "degs"
inRaster02 = "negs"
inRaster03 = "cost"
# Execute CellStatistics
outCellStatistics = CellStatistics([inRaster01, inRaster02, inRaster03], "RANGE", "NODATA")
# Save the output
outCellStatistics.save("C:/sapyexamples/output/cellstats")
Evolução:
#! /usr/bin/env python
# -*- coding: utf-8 -*-
# Import system modules
import os
import arcpy
from arcpy import env
from arcpy.sa import *
import string
cpy.CheckOutExtension("spatial") # 检查模块许可
arcpy.gp.overwriteOutput = 1
inputFilePath= "D:\\aaa"
npp_m= "D:\\aaa\\npp_m.tif"
threefile = [ ]
key = "2017"
for file in os.listdir(inputFilePath):
if os.path.splitext(file)[1] == '.tif': # 查找.tif文件
if string.find(file, key) != -1: # 满足条件往下进行
sourcefile = os.path.join(inputFilePath, file) # 拼路径
threefile.append(sourcefile)
outCellStatistics = CellStatistics(threefile, "MAXIMUM", "DATA")
# Save the output
outCellStatistics.save(npp_m)