遥感数据处理系列

一些项目及科研中遇到的小需求,一方面记录自己的学习历程,另一方面帮助大家学习。本系列文章的开发环境为:ArcGIS 10.2.2 + Python 2.7、ENVI 5.3 + IDL 8.5

ArcPy批量计算栅格数据平均值
GLDAS数据下载及处理(NC转TIF)
ArcGIS批量裁剪栅格数据
ArcPy批量栅格重采样
ArcPy批量裁剪栅格数据

IDL多进程批处理遥感数据
ArcPy批量拼接栅格数据


文章目录

  • 遥感数据处理系列
  • 前言
  • 一、栅格数据平均值
    • 1. 原理简介
      • 1.1 RasterToNumPyArray函数
      • 1.2 NumPyArrayToRaster函数
    • 2. 代码
  • 二、多文件夹场景
    • 2.1 二级目录
    • 2.2 三级目录
  • 总结
    • 后记

前言

使用ArcGIS的开发包函数进行栅格数据平均值计算会导致结果影像异常值增多?IDL可以,那万能的Python + ArcPy可不可以呢?祭出ArcPy~

在文章IDL批量计算栅格数据平均值中提到:使用ArcPy的GetRasterProperties_management函数进行栅格数据平均值计算会导致结果像元异常值增加。这是因为时序数据中只要有一景影像的像元为NoData,则该输出像元即为NoData。本文将使用ArcPy的RasterToNumPyArray和NumPyArrayToRaster来实现求解有效像元平均值的平均栅格计算方法。


一、栅格数据平均值

1. 原理简介

使用ArcGIS的GetRasterProperties_management进行栅格数据平均值计算时,出现异常值的原因如下图所示:

解决的思路为求解有效像元的平均值,尝试使用逐像元计算,定义一个sum存储每个像元的累加值,定义一个count存储每个像元的累加次数,二者除一下,就是Average了。

计算栅格数据平均值主要使用ArcPy的RasterToNumPyArray和NumPyArrayToRaster函数。

1.1 RasterToNumPyArray函数

函数使用:

RasterToNumPyArray (in_raster, {lower_left_corner}, {ncols}, {nrows}, {nodata_to_value})

常用参数简介:

 in_raster:要转换为 NumPy 数组的输入栅格lower_left_corner:可从 in_raster 中的左下角提取处理块以转换为数组。x 值和 y 值采用地图单位。若未指定值,则将使用输入栅格的原点。ncols: in_raster 中要转换为 NumPy 数组的 lower_left_corner 中的列数。若未指定值,则将使用输入栅格的列数。nrows:in_raster 中要转换为 NumPy 数组的 lower_left_corner 中的行数。若未指定值,则将使用输入栅格的行数。nodata_to_value:在生成的 NumPy 数组中分配 in_raster NoData 值的值。若未指定值,则将使用 in_raster 的 NoData 值。

RasterToNumPyArray 函数直接用就可,其余皆为可选参数:

array = arcpy.RasterToNumPyArray( in_raster )

1.2 NumPyArrayToRaster函数

计算结束后的数组可通过NumPyArrayToRaster函数存储为栅格数据。

函数使用:

NumPyArrayToRaster (in_array, {lower_left_corner}, {x_cell_size}, {y_cell_size}, {value_to_nodata})

常用参数简介:

 in_array:-> 要转换为栅格的 NumPy 数组。需要二维或三维 NumPy 数组。lower_left_corner:-> 定义地图单位中输出栅格左下角的点对象。默认情况下,左下角的坐标将设置为 (0.0, 0.0)。x_cell_size: -> x 方向的像元大小用地图单位指定。输入可为指定的像元大小(类型:双精度)值或栅格-> 指定数据集后,该数据集的 x 像元大小将用在输出栅格的 x 像元大小中-> 如果只确定了 x_cell_size 而没有确定 y_cell_size,则将会产生具有指定大小的方形像元-> 如果 x_cell_size 和 y_cell_size 都未指定,则 x 和 y 像元大小的默认值均为 1.0y_cell_size:-> 同x_cell_size的用法value_to_nodata:-> 在输出栅格中分配到 NoData 的 NumPy 数组值。如果没有为 value_to_nodata 指定任何值,则在生成的栅格中不会有任何 NoData 值。

注意:函数中未包括投影信息的选择,需要在代码中设置一下,一般与输入影像相同。代码为:

arcpy.env.outputCoordinateSystem = in_raster

2. 代码

文件组织架构:

#mermaid-svg-OohFgh3m5u1n6FLQ .label{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);fill:#333;color:#333}#mermaid-svg-OohFgh3m5u1n6FLQ .label text{fill:#333}#mermaid-svg-OohFgh3m5u1n6FLQ .node rect,#mermaid-svg-OohFgh3m5u1n6FLQ .node circle,#mermaid-svg-OohFgh3m5u1n6FLQ .node ellipse,#mermaid-svg-OohFgh3m5u1n6FLQ .node polygon,#mermaid-svg-OohFgh3m5u1n6FLQ .node path{fill:#ECECFF;stroke:#9370db;stroke-width:1px}#mermaid-svg-OohFgh3m5u1n6FLQ .node .label{text-align:center;fill:#333}#mermaid-svg-OohFgh3m5u1n6FLQ .node.clickable{cursor:pointer}#mermaid-svg-OohFgh3m5u1n6FLQ .arrowheadPath{fill:#333}#mermaid-svg-OohFgh3m5u1n6FLQ .edgePath .path{stroke:#333;stroke-width:1.5px}#mermaid-svg-OohFgh3m5u1n6FLQ .flowchart-link{stroke:#333;fill:none}#mermaid-svg-OohFgh3m5u1n6FLQ .edgeLabel{background-color:#e8e8e8;text-align:center}#mermaid-svg-OohFgh3m5u1n6FLQ .edgeLabel rect{opacity:0.9}#mermaid-svg-OohFgh3m5u1n6FLQ .edgeLabel span{color:#333}#mermaid-svg-OohFgh3m5u1n6FLQ .cluster rect{fill:#ffffde;stroke:#aa3;stroke-width:1px}#mermaid-svg-OohFgh3m5u1n6FLQ .cluster text{fill:#333}#mermaid-svg-OohFgh3m5u1n6FLQ div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:12px;background:#ffffde;border:1px solid #aa3;border-radius:2px;pointer-events:none;z-index:100}#mermaid-svg-OohFgh3m5u1n6FLQ .actor{stroke:#ccf;fill:#ECECFF}#mermaid-svg-OohFgh3m5u1n6FLQ text.actor>tspan{fill:#000;stroke:none}#mermaid-svg-OohFgh3m5u1n6FLQ .actor-line{stroke:grey}#mermaid-svg-OohFgh3m5u1n6FLQ .messageLine0{stroke-width:1.5;stroke-dasharray:none;stroke:#333}#mermaid-svg-OohFgh3m5u1n6FLQ .messageLine1{stroke-width:1.5;stroke-dasharray:2, 2;stroke:#333}#mermaid-svg-OohFgh3m5u1n6FLQ #arrowhead path{fill:#333;stroke:#333}#mermaid-svg-OohFgh3m5u1n6FLQ .sequenceNumber{fill:#fff}#mermaid-svg-OohFgh3m5u1n6FLQ #sequencenumber{fill:#333}#mermaid-svg-OohFgh3m5u1n6FLQ #crosshead path{fill:#333;stroke:#333}#mermaid-svg-OohFgh3m5u1n6FLQ .messageText{fill:#333;stroke:#333}#mermaid-svg-OohFgh3m5u1n6FLQ .labelBox{stroke:#ccf;fill:#ECECFF}#mermaid-svg-OohFgh3m5u1n6FLQ .labelText,#mermaid-svg-OohFgh3m5u1n6FLQ .labelText>tspan{fill:#000;stroke:none}#mermaid-svg-OohFgh3m5u1n6FLQ .loopText,#mermaid-svg-OohFgh3m5u1n6FLQ .loopText>tspan{fill:#000;stroke:none}#mermaid-svg-OohFgh3m5u1n6FLQ .loopLine{stroke-width:2px;stroke-dasharray:2, 2;stroke:#ccf;fill:#ccf}#mermaid-svg-OohFgh3m5u1n6FLQ .note{stroke:#aa3;fill:#fff5ad}#mermaid-svg-OohFgh3m5u1n6FLQ .noteText,#mermaid-svg-OohFgh3m5u1n6FLQ .noteText>tspan{fill:#000;stroke:none}#mermaid-svg-OohFgh3m5u1n6FLQ .activation0{fill:#f4f4f4;stroke:#666}#mermaid-svg-OohFgh3m5u1n6FLQ .activation1{fill:#f4f4f4;stroke:#666}#mermaid-svg-OohFgh3m5u1n6FLQ .activation2{fill:#f4f4f4;stroke:#666}#mermaid-svg-OohFgh3m5u1n6FLQ .mermaid-main-font{font-family:"trebuchet ms", verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-OohFgh3m5u1n6FLQ .section{stroke:none;opacity:0.2}#mermaid-svg-OohFgh3m5u1n6FLQ .section0{fill:rgba(102,102,255,0.49)}#mermaid-svg-OohFgh3m5u1n6FLQ .section2{fill:#fff400}#mermaid-svg-OohFgh3m5u1n6FLQ .section1,#mermaid-svg-OohFgh3m5u1n6FLQ .section3{fill:#fff;opacity:0.2}#mermaid-svg-OohFgh3m5u1n6FLQ .sectionTitle0{fill:#333}#mermaid-svg-OohFgh3m5u1n6FLQ .sectionTitle1{fill:#333}#mermaid-svg-OohFgh3m5u1n6FLQ .sectionTitle2{fill:#333}#mermaid-svg-OohFgh3m5u1n6FLQ .sectionTitle3{fill:#333}#mermaid-svg-OohFgh3m5u1n6FLQ .sectionTitle{text-anchor:start;font-size:11px;text-height:14px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-OohFgh3m5u1n6FLQ .grid .tick{stroke:#d3d3d3;opacity:0.8;shape-rendering:crispEdges}#mermaid-svg-OohFgh3m5u1n6FLQ .grid .tick text{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-OohFgh3m5u1n6FLQ .grid path{stroke-width:0}#mermaid-svg-OohFgh3m5u1n6FLQ .today{fill:none;stroke:red;stroke-width:2px}#mermaid-svg-OohFgh3m5u1n6FLQ .task{stroke-width:2}#mermaid-svg-OohFgh3m5u1n6FLQ .taskText{text-anchor:middle;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-OohFgh3m5u1n6FLQ .taskText:not([font-size]){font-size:11px}#mermaid-svg-OohFgh3m5u1n6FLQ .taskTextOutsideRight{fill:#000;text-anchor:start;font-size:11px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-OohFgh3m5u1n6FLQ .taskTextOutsideLeft{fill:#000;text-anchor:end;font-size:11px}#mermaid-svg-OohFgh3m5u1n6FLQ .task.clickable{cursor:pointer}#mermaid-svg-OohFgh3m5u1n6FLQ .taskText.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-OohFgh3m5u1n6FLQ .taskTextOutsideLeft.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-OohFgh3m5u1n6FLQ .taskTextOutsideRight.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-OohFgh3m5u1n6FLQ .taskText0,#mermaid-svg-OohFgh3m5u1n6FLQ .taskText1,#mermaid-svg-OohFgh3m5u1n6FLQ .taskText2,#mermaid-svg-OohFgh3m5u1n6FLQ .taskText3{fill:#fff}#mermaid-svg-OohFgh3m5u1n6FLQ .task0,#mermaid-svg-OohFgh3m5u1n6FLQ .task1,#mermaid-svg-OohFgh3m5u1n6FLQ .task2,#mermaid-svg-OohFgh3m5u1n6FLQ .task3{fill:#8a90dd;stroke:#534fbc}#mermaid-svg-OohFgh3m5u1n6FLQ .taskTextOutside0,#mermaid-svg-OohFgh3m5u1n6FLQ .taskTextOutside2{fill:#000}#mermaid-svg-OohFgh3m5u1n6FLQ .taskTextOutside1,#mermaid-svg-OohFgh3m5u1n6FLQ .taskTextOutside3{fill:#000}#mermaid-svg-OohFgh3m5u1n6FLQ .active0,#mermaid-svg-OohFgh3m5u1n6FLQ .active1,#mermaid-svg-OohFgh3m5u1n6FLQ .active2,#mermaid-svg-OohFgh3m5u1n6FLQ .active3{fill:#bfc7ff;stroke:#534fbc}#mermaid-svg-OohFgh3m5u1n6FLQ .activeText0,#mermaid-svg-OohFgh3m5u1n6FLQ .activeText1,#mermaid-svg-OohFgh3m5u1n6FLQ .activeText2,#mermaid-svg-OohFgh3m5u1n6FLQ .activeText3{fill:#000 !important}#mermaid-svg-OohFgh3m5u1n6FLQ .done0,#mermaid-svg-OohFgh3m5u1n6FLQ .done1,#mermaid-svg-OohFgh3m5u1n6FLQ .done2,#mermaid-svg-OohFgh3m5u1n6FLQ .done3{stroke:grey;fill:#d3d3d3;stroke-width:2}#mermaid-svg-OohFgh3m5u1n6FLQ .doneText0,#mermaid-svg-OohFgh3m5u1n6FLQ .doneText1,#mermaid-svg-OohFgh3m5u1n6FLQ .doneText2,#mermaid-svg-OohFgh3m5u1n6FLQ .doneText3{fill:#000 !important}#mermaid-svg-OohFgh3m5u1n6FLQ .crit0,#mermaid-svg-OohFgh3m5u1n6FLQ .crit1,#mermaid-svg-OohFgh3m5u1n6FLQ .crit2,#mermaid-svg-OohFgh3m5u1n6FLQ .crit3{stroke:#f88;fill:red;stroke-width:2}#mermaid-svg-OohFgh3m5u1n6FLQ .activeCrit0,#mermaid-svg-OohFgh3m5u1n6FLQ .activeCrit1,#mermaid-svg-OohFgh3m5u1n6FLQ .activeCrit2,#mermaid-svg-OohFgh3m5u1n6FLQ .activeCrit3{stroke:#f88;fill:#bfc7ff;stroke-width:2}#mermaid-svg-OohFgh3m5u1n6FLQ .doneCrit0,#mermaid-svg-OohFgh3m5u1n6FLQ .doneCrit1,#mermaid-svg-OohFgh3m5u1n6FLQ .doneCrit2,#mermaid-svg-OohFgh3m5u1n6FLQ .doneCrit3{stroke:#f88;fill:#d3d3d3;stroke-width:2;cursor:pointer;shape-rendering:crispEdges}#mermaid-svg-OohFgh3m5u1n6FLQ .milestone{transform:rotate(45deg) scale(0.8, 0.8)}#mermaid-svg-OohFgh3m5u1n6FLQ .milestoneText{font-style:italic}#mermaid-svg-OohFgh3m5u1n6FLQ .doneCritText0,#mermaid-svg-OohFgh3m5u1n6FLQ .doneCritText1,#mermaid-svg-OohFgh3m5u1n6FLQ .doneCritText2,#mermaid-svg-OohFgh3m5u1n6FLQ .doneCritText3{fill:#000 !important}#mermaid-svg-OohFgh3m5u1n6FLQ .activeCritText0,#mermaid-svg-OohFgh3m5u1n6FLQ .activeCritText1,#mermaid-svg-OohFgh3m5u1n6FLQ .activeCritText2,#mermaid-svg-OohFgh3m5u1n6FLQ .activeCritText3{fill:#000 !important}#mermaid-svg-OohFgh3m5u1n6FLQ .titleText{text-anchor:middle;font-size:18px;fill:#000;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-OohFgh3m5u1n6FLQ g.classGroup text{fill:#9370db;stroke:none;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:10px}#mermaid-svg-OohFgh3m5u1n6FLQ g.classGroup text .title{font-weight:bolder}#mermaid-svg-OohFgh3m5u1n6FLQ g.clickable{cursor:pointer}#mermaid-svg-OohFgh3m5u1n6FLQ g.classGroup rect{fill:#ECECFF;stroke:#9370db}#mermaid-svg-OohFgh3m5u1n6FLQ g.classGroup line{stroke:#9370db;stroke-width:1}#mermaid-svg-OohFgh3m5u1n6FLQ .classLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.5}#mermaid-svg-OohFgh3m5u1n6FLQ .classLabel .label{fill:#9370db;font-size:10px}#mermaid-svg-OohFgh3m5u1n6FLQ .relation{stroke:#9370db;stroke-width:1;fill:none}#mermaid-svg-OohFgh3m5u1n6FLQ .dashed-line{stroke-dasharray:3}#mermaid-svg-OohFgh3m5u1n6FLQ #compositionStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-OohFgh3m5u1n6FLQ #compositionEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-OohFgh3m5u1n6FLQ #aggregationStart{fill:#ECECFF;stroke:#9370db;stroke-width:1}#mermaid-svg-OohFgh3m5u1n6FLQ #aggregationEnd{fill:#ECECFF;stroke:#9370db;stroke-width:1}#mermaid-svg-OohFgh3m5u1n6FLQ #dependencyStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-OohFgh3m5u1n6FLQ #dependencyEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-OohFgh3m5u1n6FLQ #extensionStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-OohFgh3m5u1n6FLQ #extensionEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-OohFgh3m5u1n6FLQ .commit-id,#mermaid-svg-OohFgh3m5u1n6FLQ .commit-msg,#mermaid-svg-OohFgh3m5u1n6FLQ .branch-label{fill:lightgrey;color:lightgrey;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-OohFgh3m5u1n6FLQ .pieTitleText{text-anchor:middle;font-size:25px;fill:#000;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-OohFgh3m5u1n6FLQ .slice{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-OohFgh3m5u1n6FLQ g.stateGroup text{fill:#9370db;stroke:none;font-size:10px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-OohFgh3m5u1n6FLQ g.stateGroup text{fill:#9370db;fill:#333;stroke:none;font-size:10px}#mermaid-svg-OohFgh3m5u1n6FLQ g.statediagram-cluster .cluster-label text{fill:#333}#mermaid-svg-OohFgh3m5u1n6FLQ g.stateGroup .state-title{font-weight:bolder;fill:#000}#mermaid-svg-OohFgh3m5u1n6FLQ g.stateGroup rect{fill:#ECECFF;stroke:#9370db}#mermaid-svg-OohFgh3m5u1n6FLQ g.stateGroup line{stroke:#9370db;stroke-width:1}#mermaid-svg-OohFgh3m5u1n6FLQ .transition{stroke:#9370db;stroke-width:1;fill:none}#mermaid-svg-OohFgh3m5u1n6FLQ .stateGroup .composit{fill:white;border-bottom:1px}#mermaid-svg-OohFgh3m5u1n6FLQ .stateGroup .alt-composit{fill:#e0e0e0;border-bottom:1px}#mermaid-svg-OohFgh3m5u1n6FLQ .state-note{stroke:#aa3;fill:#fff5ad}#mermaid-svg-OohFgh3m5u1n6FLQ .state-note text{fill:black;stroke:none;font-size:10px}#mermaid-svg-OohFgh3m5u1n6FLQ .stateLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.7}#mermaid-svg-OohFgh3m5u1n6FLQ .edgeLabel text{fill:#333}#mermaid-svg-OohFgh3m5u1n6FLQ .stateLabel text{fill:#000;font-size:10px;font-weight:bold;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-OohFgh3m5u1n6FLQ .node circle.state-start{fill:black;stroke:black}#mermaid-svg-OohFgh3m5u1n6FLQ .node circle.state-end{fill:black;stroke:white;stroke-width:1.5}#mermaid-svg-OohFgh3m5u1n6FLQ #statediagram-barbEnd{fill:#9370db}#mermaid-svg-OohFgh3m5u1n6FLQ .statediagram-cluster rect{fill:#ECECFF;stroke:#9370db;stroke-width:1px}#mermaid-svg-OohFgh3m5u1n6FLQ .statediagram-cluster rect.outer{rx:5px;ry:5px}#mermaid-svg-OohFgh3m5u1n6FLQ .statediagram-state .divider{stroke:#9370db}#mermaid-svg-OohFgh3m5u1n6FLQ .statediagram-state .title-state{rx:5px;ry:5px}#mermaid-svg-OohFgh3m5u1n6FLQ .statediagram-cluster.statediagram-cluster .inner{fill:white}#mermaid-svg-OohFgh3m5u1n6FLQ .statediagram-cluster.statediagram-cluster-alt .inner{fill:#e0e0e0}#mermaid-svg-OohFgh3m5u1n6FLQ .statediagram-cluster .inner{rx:0;ry:0}#mermaid-svg-OohFgh3m5u1n6FLQ .statediagram-state rect.basic{rx:5px;ry:5px}#mermaid-svg-OohFgh3m5u1n6FLQ .statediagram-state rect.divider{stroke-dasharray:10,10;fill:#efefef}#mermaid-svg-OohFgh3m5u1n6FLQ .note-edge{stroke-dasharray:5}#mermaid-svg-OohFgh3m5u1n6FLQ .statediagram-note rect{fill:#fff5ad;stroke:#aa3;stroke-width:1px;rx:0;ry:0}:root{--mermaid-font-family: '"trebuchet ms", verdana, arial';--mermaid-font-family: "Comic Sans MS", "Comic Sans", cursive}#mermaid-svg-OohFgh3m5u1n6FLQ .error-icon{fill:#522}#mermaid-svg-OohFgh3m5u1n6FLQ .error-text{fill:#522;stroke:#522}#mermaid-svg-OohFgh3m5u1n6FLQ .edge-thickness-normal{stroke-width:2px}#mermaid-svg-OohFgh3m5u1n6FLQ .edge-thickness-thick{stroke-width:3.5px}#mermaid-svg-OohFgh3m5u1n6FLQ .edge-pattern-solid{stroke-dasharray:0}#mermaid-svg-OohFgh3m5u1n6FLQ .edge-pattern-dashed{stroke-dasharray:3}#mermaid-svg-OohFgh3m5u1n6FLQ .edge-pattern-dotted{stroke-dasharray:2}#mermaid-svg-OohFgh3m5u1n6FLQ .marker{fill:#333}#mermaid-svg-OohFgh3m5u1n6FLQ .marker.cross{stroke:#333}:root { --mermaid-font-family: "trebuchet ms", verdana, arial;}#mermaid-svg-OohFgh3m5u1n6FLQ {color: rgba(0, 0, 0, 0.75);font: ;}inwsMYD09.2011.001.tifMYD09.2011.002.tif...outs输出到

输入:
一个含有若干栅格数据的文件夹 inws(本例为“.tif”格式)

代码实例:

# -*- coding: UTF-8 -*-
import arcpy, sys, os, glob
from arcpy.sa import *
import numpy'''
批量计算平均栅格(一级目录):对输入文件夹下的数据 计算平均值,结果存放于输出文件夹需要修改:inws:输入路径(必选)outws:输出路径(必选)nameT:这里要进行下规范化,文件名的易读性(可选)
'''arcpy.CheckOutExtension('Spatial')# 输入路径  应该注意,中文路径,会导致读不出文件
inws = r"F:\LE-monthly\MonthGroup\2008\1"# 输出路径
outws = r"F:\LE-monthly\Monthly\2008"# 利用glob包,将inws下的所有tif文件读存放到rasters中
rasters = glob.glob(os.path.join(inws, "*.tif"))r = Raster(rasters[0])  # 打开栅格
array = arcpy.RasterToNumPyArray(r)  # 转成Numpy方便对每个像元进行处理
rowNum, colNum = array.shape  # 波段、行数、列数sum = numpy.zeros(shape=array.shape)    # 存储累加值
count = numpy.zeros(shape=array.shape)  # 存储 有效像元计数器
Average = numpy.zeros(shape=array.shape)    # 存储 平均值# 循环rasters中的所有影像,进行按掩模提取操作
for ras in rasters:rmm = Raster(ras)  # 打开栅格array = arcpy.RasterToNumPyArray(rmm)  # 转成Numpy方便对每个像元进行处理# 逐像元计算for i in range(0, rowNum):for j in range(0, colNum):if array[i][j] > 0 :  # 判断有效值sum[i][j] += array[i][j]  # 累加count[i][j] += 1    # 计数器continueAverage = sum / count   # 平均值计算# 保存栅格
lowerLeft = arcpy.Point(r.extent.XMin, r.extent.YMin)  # 左下角点坐标
cellWidth = r.meanCellWidth  # 栅格宽度
cellHeight = r.meanCellHeightnameT = os.path.basename(rasters[0])
outname = os.path.join(outws, nameT)  # 合并输出文件名+输出路径arcpy.env.overwriteOutput = True    # 覆盖输出文件夹已有内容
arcpy.env.outputCoordinateSystem = rasters[0]   # 输出坐标系与输入相同AvgRas = arcpy.NumPyArrayToRaster(Average, lowerLeft, cellWidth, cellHeight, r.noDataValue)  # 转换成栅格
AvgRas.save(outname)  # 保存print os.path.basename(rasters[0]) + " ---- 完成"

上例可实现对输入路径文件夹下的所有栅格数据的平均栅格计算。

二、多文件夹场景

2.1 二级目录

一年有十二个月,每月中的个数不一,先把相同月份的LE数据放到一个文件夹下,本例适用于年内的12个月的月均栅格计算。

文件组织架构:

#mermaid-svg-dHkMTSX6l5MyngAU .label{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);fill:#333;color:#333}#mermaid-svg-dHkMTSX6l5MyngAU .label text{fill:#333}#mermaid-svg-dHkMTSX6l5MyngAU .node rect,#mermaid-svg-dHkMTSX6l5MyngAU .node circle,#mermaid-svg-dHkMTSX6l5MyngAU .node ellipse,#mermaid-svg-dHkMTSX6l5MyngAU .node polygon,#mermaid-svg-dHkMTSX6l5MyngAU .node path{fill:#ECECFF;stroke:#9370db;stroke-width:1px}#mermaid-svg-dHkMTSX6l5MyngAU .node .label{text-align:center;fill:#333}#mermaid-svg-dHkMTSX6l5MyngAU .node.clickable{cursor:pointer}#mermaid-svg-dHkMTSX6l5MyngAU .arrowheadPath{fill:#333}#mermaid-svg-dHkMTSX6l5MyngAU .edgePath .path{stroke:#333;stroke-width:1.5px}#mermaid-svg-dHkMTSX6l5MyngAU .flowchart-link{stroke:#333;fill:none}#mermaid-svg-dHkMTSX6l5MyngAU .edgeLabel{background-color:#e8e8e8;text-align:center}#mermaid-svg-dHkMTSX6l5MyngAU .edgeLabel rect{opacity:0.9}#mermaid-svg-dHkMTSX6l5MyngAU .edgeLabel span{color:#333}#mermaid-svg-dHkMTSX6l5MyngAU .cluster rect{fill:#ffffde;stroke:#aa3;stroke-width:1px}#mermaid-svg-dHkMTSX6l5MyngAU .cluster text{fill:#333}#mermaid-svg-dHkMTSX6l5MyngAU div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:12px;background:#ffffde;border:1px solid #aa3;border-radius:2px;pointer-events:none;z-index:100}#mermaid-svg-dHkMTSX6l5MyngAU .actor{stroke:#ccf;fill:#ECECFF}#mermaid-svg-dHkMTSX6l5MyngAU text.actor>tspan{fill:#000;stroke:none}#mermaid-svg-dHkMTSX6l5MyngAU .actor-line{stroke:grey}#mermaid-svg-dHkMTSX6l5MyngAU .messageLine0{stroke-width:1.5;stroke-dasharray:none;stroke:#333}#mermaid-svg-dHkMTSX6l5MyngAU .messageLine1{stroke-width:1.5;stroke-dasharray:2, 2;stroke:#333}#mermaid-svg-dHkMTSX6l5MyngAU #arrowhead path{fill:#333;stroke:#333}#mermaid-svg-dHkMTSX6l5MyngAU .sequenceNumber{fill:#fff}#mermaid-svg-dHkMTSX6l5MyngAU #sequencenumber{fill:#333}#mermaid-svg-dHkMTSX6l5MyngAU #crosshead path{fill:#333;stroke:#333}#mermaid-svg-dHkMTSX6l5MyngAU .messageText{fill:#333;stroke:#333}#mermaid-svg-dHkMTSX6l5MyngAU .labelBox{stroke:#ccf;fill:#ECECFF}#mermaid-svg-dHkMTSX6l5MyngAU .labelText,#mermaid-svg-dHkMTSX6l5MyngAU .labelText>tspan{fill:#000;stroke:none}#mermaid-svg-dHkMTSX6l5MyngAU .loopText,#mermaid-svg-dHkMTSX6l5MyngAU .loopText>tspan{fill:#000;stroke:none}#mermaid-svg-dHkMTSX6l5MyngAU .loopLine{stroke-width:2px;stroke-dasharray:2, 2;stroke:#ccf;fill:#ccf}#mermaid-svg-dHkMTSX6l5MyngAU .note{stroke:#aa3;fill:#fff5ad}#mermaid-svg-dHkMTSX6l5MyngAU .noteText,#mermaid-svg-dHkMTSX6l5MyngAU .noteText>tspan{fill:#000;stroke:none}#mermaid-svg-dHkMTSX6l5MyngAU .activation0{fill:#f4f4f4;stroke:#666}#mermaid-svg-dHkMTSX6l5MyngAU .activation1{fill:#f4f4f4;stroke:#666}#mermaid-svg-dHkMTSX6l5MyngAU .activation2{fill:#f4f4f4;stroke:#666}#mermaid-svg-dHkMTSX6l5MyngAU .mermaid-main-font{font-family:"trebuchet ms", verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-dHkMTSX6l5MyngAU .section{stroke:none;opacity:0.2}#mermaid-svg-dHkMTSX6l5MyngAU .section0{fill:rgba(102,102,255,0.49)}#mermaid-svg-dHkMTSX6l5MyngAU .section2{fill:#fff400}#mermaid-svg-dHkMTSX6l5MyngAU .section1,#mermaid-svg-dHkMTSX6l5MyngAU .section3{fill:#fff;opacity:0.2}#mermaid-svg-dHkMTSX6l5MyngAU .sectionTitle0{fill:#333}#mermaid-svg-dHkMTSX6l5MyngAU .sectionTitle1{fill:#333}#mermaid-svg-dHkMTSX6l5MyngAU .sectionTitle2{fill:#333}#mermaid-svg-dHkMTSX6l5MyngAU .sectionTitle3{fill:#333}#mermaid-svg-dHkMTSX6l5MyngAU .sectionTitle{text-anchor:start;font-size:11px;text-height:14px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-dHkMTSX6l5MyngAU .grid .tick{stroke:#d3d3d3;opacity:0.8;shape-rendering:crispEdges}#mermaid-svg-dHkMTSX6l5MyngAU .grid .tick text{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-dHkMTSX6l5MyngAU .grid path{stroke-width:0}#mermaid-svg-dHkMTSX6l5MyngAU .today{fill:none;stroke:red;stroke-width:2px}#mermaid-svg-dHkMTSX6l5MyngAU .task{stroke-width:2}#mermaid-svg-dHkMTSX6l5MyngAU .taskText{text-anchor:middle;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-dHkMTSX6l5MyngAU .taskText:not([font-size]){font-size:11px}#mermaid-svg-dHkMTSX6l5MyngAU .taskTextOutsideRight{fill:#000;text-anchor:start;font-size:11px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-dHkMTSX6l5MyngAU .taskTextOutsideLeft{fill:#000;text-anchor:end;font-size:11px}#mermaid-svg-dHkMTSX6l5MyngAU .task.clickable{cursor:pointer}#mermaid-svg-dHkMTSX6l5MyngAU .taskText.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-dHkMTSX6l5MyngAU .taskTextOutsideLeft.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-dHkMTSX6l5MyngAU .taskTextOutsideRight.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-dHkMTSX6l5MyngAU .taskText0,#mermaid-svg-dHkMTSX6l5MyngAU .taskText1,#mermaid-svg-dHkMTSX6l5MyngAU .taskText2,#mermaid-svg-dHkMTSX6l5MyngAU .taskText3{fill:#fff}#mermaid-svg-dHkMTSX6l5MyngAU .task0,#mermaid-svg-dHkMTSX6l5MyngAU .task1,#mermaid-svg-dHkMTSX6l5MyngAU .task2,#mermaid-svg-dHkMTSX6l5MyngAU .task3{fill:#8a90dd;stroke:#534fbc}#mermaid-svg-dHkMTSX6l5MyngAU .taskTextOutside0,#mermaid-svg-dHkMTSX6l5MyngAU .taskTextOutside2{fill:#000}#mermaid-svg-dHkMTSX6l5MyngAU .taskTextOutside1,#mermaid-svg-dHkMTSX6l5MyngAU .taskTextOutside3{fill:#000}#mermaid-svg-dHkMTSX6l5MyngAU .active0,#mermaid-svg-dHkMTSX6l5MyngAU .active1,#mermaid-svg-dHkMTSX6l5MyngAU .active2,#mermaid-svg-dHkMTSX6l5MyngAU .active3{fill:#bfc7ff;stroke:#534fbc}#mermaid-svg-dHkMTSX6l5MyngAU .activeText0,#mermaid-svg-dHkMTSX6l5MyngAU .activeText1,#mermaid-svg-dHkMTSX6l5MyngAU .activeText2,#mermaid-svg-dHkMTSX6l5MyngAU .activeText3{fill:#000 !important}#mermaid-svg-dHkMTSX6l5MyngAU .done0,#mermaid-svg-dHkMTSX6l5MyngAU .done1,#mermaid-svg-dHkMTSX6l5MyngAU .done2,#mermaid-svg-dHkMTSX6l5MyngAU .done3{stroke:grey;fill:#d3d3d3;stroke-width:2}#mermaid-svg-dHkMTSX6l5MyngAU .doneText0,#mermaid-svg-dHkMTSX6l5MyngAU .doneText1,#mermaid-svg-dHkMTSX6l5MyngAU .doneText2,#mermaid-svg-dHkMTSX6l5MyngAU .doneText3{fill:#000 !important}#mermaid-svg-dHkMTSX6l5MyngAU .crit0,#mermaid-svg-dHkMTSX6l5MyngAU .crit1,#mermaid-svg-dHkMTSX6l5MyngAU .crit2,#mermaid-svg-dHkMTSX6l5MyngAU .crit3{stroke:#f88;fill:red;stroke-width:2}#mermaid-svg-dHkMTSX6l5MyngAU .activeCrit0,#mermaid-svg-dHkMTSX6l5MyngAU .activeCrit1,#mermaid-svg-dHkMTSX6l5MyngAU .activeCrit2,#mermaid-svg-dHkMTSX6l5MyngAU .activeCrit3{stroke:#f88;fill:#bfc7ff;stroke-width:2}#mermaid-svg-dHkMTSX6l5MyngAU .doneCrit0,#mermaid-svg-dHkMTSX6l5MyngAU .doneCrit1,#mermaid-svg-dHkMTSX6l5MyngAU .doneCrit2,#mermaid-svg-dHkMTSX6l5MyngAU .doneCrit3{stroke:#f88;fill:#d3d3d3;stroke-width:2;cursor:pointer;shape-rendering:crispEdges}#mermaid-svg-dHkMTSX6l5MyngAU .milestone{transform:rotate(45deg) scale(0.8, 0.8)}#mermaid-svg-dHkMTSX6l5MyngAU .milestoneText{font-style:italic}#mermaid-svg-dHkMTSX6l5MyngAU .doneCritText0,#mermaid-svg-dHkMTSX6l5MyngAU .doneCritText1,#mermaid-svg-dHkMTSX6l5MyngAU .doneCritText2,#mermaid-svg-dHkMTSX6l5MyngAU .doneCritText3{fill:#000 !important}#mermaid-svg-dHkMTSX6l5MyngAU .activeCritText0,#mermaid-svg-dHkMTSX6l5MyngAU .activeCritText1,#mermaid-svg-dHkMTSX6l5MyngAU .activeCritText2,#mermaid-svg-dHkMTSX6l5MyngAU .activeCritText3{fill:#000 !important}#mermaid-svg-dHkMTSX6l5MyngAU .titleText{text-anchor:middle;font-size:18px;fill:#000;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-dHkMTSX6l5MyngAU g.classGroup text{fill:#9370db;stroke:none;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:10px}#mermaid-svg-dHkMTSX6l5MyngAU g.classGroup text .title{font-weight:bolder}#mermaid-svg-dHkMTSX6l5MyngAU g.clickable{cursor:pointer}#mermaid-svg-dHkMTSX6l5MyngAU g.classGroup rect{fill:#ECECFF;stroke:#9370db}#mermaid-svg-dHkMTSX6l5MyngAU g.classGroup line{stroke:#9370db;stroke-width:1}#mermaid-svg-dHkMTSX6l5MyngAU .classLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.5}#mermaid-svg-dHkMTSX6l5MyngAU .classLabel .label{fill:#9370db;font-size:10px}#mermaid-svg-dHkMTSX6l5MyngAU .relation{stroke:#9370db;stroke-width:1;fill:none}#mermaid-svg-dHkMTSX6l5MyngAU .dashed-line{stroke-dasharray:3}#mermaid-svg-dHkMTSX6l5MyngAU #compositionStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-dHkMTSX6l5MyngAU #compositionEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-dHkMTSX6l5MyngAU #aggregationStart{fill:#ECECFF;stroke:#9370db;stroke-width:1}#mermaid-svg-dHkMTSX6l5MyngAU #aggregationEnd{fill:#ECECFF;stroke:#9370db;stroke-width:1}#mermaid-svg-dHkMTSX6l5MyngAU #dependencyStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-dHkMTSX6l5MyngAU #dependencyEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-dHkMTSX6l5MyngAU #extensionStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-dHkMTSX6l5MyngAU #extensionEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-dHkMTSX6l5MyngAU .commit-id,#mermaid-svg-dHkMTSX6l5MyngAU .commit-msg,#mermaid-svg-dHkMTSX6l5MyngAU .branch-label{fill:lightgrey;color:lightgrey;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-dHkMTSX6l5MyngAU .pieTitleText{text-anchor:middle;font-size:25px;fill:#000;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-dHkMTSX6l5MyngAU .slice{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-dHkMTSX6l5MyngAU g.stateGroup text{fill:#9370db;stroke:none;font-size:10px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-dHkMTSX6l5MyngAU g.stateGroup text{fill:#9370db;fill:#333;stroke:none;font-size:10px}#mermaid-svg-dHkMTSX6l5MyngAU g.statediagram-cluster .cluster-label text{fill:#333}#mermaid-svg-dHkMTSX6l5MyngAU g.stateGroup .state-title{font-weight:bolder;fill:#000}#mermaid-svg-dHkMTSX6l5MyngAU g.stateGroup rect{fill:#ECECFF;stroke:#9370db}#mermaid-svg-dHkMTSX6l5MyngAU g.stateGroup line{stroke:#9370db;stroke-width:1}#mermaid-svg-dHkMTSX6l5MyngAU .transition{stroke:#9370db;stroke-width:1;fill:none}#mermaid-svg-dHkMTSX6l5MyngAU .stateGroup .composit{fill:white;border-bottom:1px}#mermaid-svg-dHkMTSX6l5MyngAU .stateGroup .alt-composit{fill:#e0e0e0;border-bottom:1px}#mermaid-svg-dHkMTSX6l5MyngAU .state-note{stroke:#aa3;fill:#fff5ad}#mermaid-svg-dHkMTSX6l5MyngAU .state-note text{fill:black;stroke:none;font-size:10px}#mermaid-svg-dHkMTSX6l5MyngAU .stateLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.7}#mermaid-svg-dHkMTSX6l5MyngAU .edgeLabel text{fill:#333}#mermaid-svg-dHkMTSX6l5MyngAU .stateLabel text{fill:#000;font-size:10px;font-weight:bold;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-dHkMTSX6l5MyngAU .node circle.state-start{fill:black;stroke:black}#mermaid-svg-dHkMTSX6l5MyngAU .node circle.state-end{fill:black;stroke:white;stroke-width:1.5}#mermaid-svg-dHkMTSX6l5MyngAU #statediagram-barbEnd{fill:#9370db}#mermaid-svg-dHkMTSX6l5MyngAU .statediagram-cluster rect{fill:#ECECFF;stroke:#9370db;stroke-width:1px}#mermaid-svg-dHkMTSX6l5MyngAU .statediagram-cluster rect.outer{rx:5px;ry:5px}#mermaid-svg-dHkMTSX6l5MyngAU .statediagram-state .divider{stroke:#9370db}#mermaid-svg-dHkMTSX6l5MyngAU .statediagram-state .title-state{rx:5px;ry:5px}#mermaid-svg-dHkMTSX6l5MyngAU .statediagram-cluster.statediagram-cluster .inner{fill:white}#mermaid-svg-dHkMTSX6l5MyngAU .statediagram-cluster.statediagram-cluster-alt .inner{fill:#e0e0e0}#mermaid-svg-dHkMTSX6l5MyngAU .statediagram-cluster .inner{rx:0;ry:0}#mermaid-svg-dHkMTSX6l5MyngAU .statediagram-state rect.basic{rx:5px;ry:5px}#mermaid-svg-dHkMTSX6l5MyngAU .statediagram-state rect.divider{stroke-dasharray:10,10;fill:#efefef}#mermaid-svg-dHkMTSX6l5MyngAU .note-edge{stroke-dasharray:5}#mermaid-svg-dHkMTSX6l5MyngAU .statediagram-note rect{fill:#fff5ad;stroke:#aa3;stroke-width:1px;rx:0;ry:0}:root{--mermaid-font-family: '"trebuchet ms", verdana, arial';--mermaid-font-family: "Comic Sans MS", "Comic Sans", cursive}#mermaid-svg-dHkMTSX6l5MyngAU .error-icon{fill:#522}#mermaid-svg-dHkMTSX6l5MyngAU .error-text{fill:#522;stroke:#522}#mermaid-svg-dHkMTSX6l5MyngAU .edge-thickness-normal{stroke-width:2px}#mermaid-svg-dHkMTSX6l5MyngAU .edge-thickness-thick{stroke-width:3.5px}#mermaid-svg-dHkMTSX6l5MyngAU .edge-pattern-solid{stroke-dasharray:0}#mermaid-svg-dHkMTSX6l5MyngAU .edge-pattern-dashed{stroke-dasharray:3}#mermaid-svg-dHkMTSX6l5MyngAU .edge-pattern-dotted{stroke-dasharray:2}#mermaid-svg-dHkMTSX6l5MyngAU .marker{fill:#333}#mermaid-svg-dHkMTSX6l5MyngAU .marker.cross{stroke:#333}:root { --mermaid-font-family: "trebuchet ms", verdana, arial;}#mermaid-svg-dHkMTSX6l5MyngAU {color: rgba(0, 0, 0, 0.75);font: ;}inwsJanFebMarLE-daily.2011.001.tifLE-daily.2011.002.tif...Other包含文件夹

代码如下:

# -*- coding: UTF-8 -*-
import arcpy, sys, os, glob
import numpy
from arcpy.sa import *'''
批量计算平均栅格(二级目录):对输入文件夹下的数据 计算平均值,结果存放于输出文件夹需要修改:inws:输入路径(必选)outws:输出路径(必选)nameT:这里要进行下规范化,文件名的易读性(可选)
'''arcpy.CheckOutExtension('Spatial')
numpy.seterr(all='ignore')# 输入路径  应该注意,中文路径,会导致读不出文件
inws = r"F:\LE-monthly\MonthGroup\2010"# 输出路径
outws = r"F:\LE-monthly\Monthly\2010"path_list = os.listdir(inws)  # 一级目录中的 文件夹列表# 进入二级目录
for i in range(len(path_list)):path = inws + "\\" + path_list[i]  # 二级目录的路径# 利用glob包,将inws下的所有tif文件读存放到rasters中rasters = glob.glob(os.path.join(path, "*.tif"))r = Raster(rasters[0])  # 打开栅格array = arcpy.RasterToNumPyArray(r)  # 转成Numpy方便对每个像元进行处理rowNum, colNum = array.shape  # 行数、列数sum = numpy.zeros(shape=array.shape)  # 存储累加值count = numpy.zeros(shape=array.shape)  # 存储 有效像元计数器Average = numpy.zeros(shape=array.shape)  # 存储 平均值# 循环rasters中的所有影像,进行按掩模提取操作for ras in rasters:rmm = Raster(ras)  # 打开栅格array = arcpy.RasterToNumPyArray(rmm)  # 转成Numpy方便对每个像元进行处理# 逐像元计算for row in range(0, rowNum):for col in range(0, colNum):if array[row][col] > 0:  # 判断有效值sum[row][col] += array[row][col]  # 累加count[row][col] += 1  # 计数器continueAverage = sum / count  # 平均值计算# 保存栅格lowerLeft = arcpy.Point(r.extent.XMin, r.extent.YMin)  # 左下角点坐标cellWidth = r.meanCellWidth  # 栅格宽度cellHeight = r.meanCellHeightnameT = os.path.basename(rasters[0])outname = os.path.join(outws, nameT)  # 合并输出文件名+输出路径arcpy.env.overwriteOutput = True  # 覆盖输出文件夹已有内容arcpy.env.outputCoordinateSystem = rasters[0]  # 输出坐标系与输入相同AvgRas = arcpy.NumPyArrayToRaster(Average, lowerLeft, cellWidth, cellHeight, r.noDataValue)  # 转换成栅格AvgRas.save(outname)  # 保存print path_list[i] + " --- OK!"print("   ---   All project is OK!   ---   ")

注意:以上仅为进入二级目录的版本,三级目录有些麻烦,挨个改年份也行,哈哈哈哈(懒了,逃…

2.2 三级目录

一年有十二个月,每月中的个数不一,先把相同月份的LE数据放到一个文件夹下,然后有十年的数据,改下文件读取的逻辑,来适用于多年的计算。

文件组织架构:

#mermaid-svg-IhauDtNEyCXa6WKL .label{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);fill:#333;color:#333}#mermaid-svg-IhauDtNEyCXa6WKL .label text{fill:#333}#mermaid-svg-IhauDtNEyCXa6WKL .node rect,#mermaid-svg-IhauDtNEyCXa6WKL .node circle,#mermaid-svg-IhauDtNEyCXa6WKL .node ellipse,#mermaid-svg-IhauDtNEyCXa6WKL .node polygon,#mermaid-svg-IhauDtNEyCXa6WKL .node path{fill:#ECECFF;stroke:#9370db;stroke-width:1px}#mermaid-svg-IhauDtNEyCXa6WKL .node .label{text-align:center;fill:#333}#mermaid-svg-IhauDtNEyCXa6WKL .node.clickable{cursor:pointer}#mermaid-svg-IhauDtNEyCXa6WKL .arrowheadPath{fill:#333}#mermaid-svg-IhauDtNEyCXa6WKL .edgePath .path{stroke:#333;stroke-width:1.5px}#mermaid-svg-IhauDtNEyCXa6WKL .flowchart-link{stroke:#333;fill:none}#mermaid-svg-IhauDtNEyCXa6WKL .edgeLabel{background-color:#e8e8e8;text-align:center}#mermaid-svg-IhauDtNEyCXa6WKL .edgeLabel rect{opacity:0.9}#mermaid-svg-IhauDtNEyCXa6WKL .edgeLabel span{color:#333}#mermaid-svg-IhauDtNEyCXa6WKL .cluster rect{fill:#ffffde;stroke:#aa3;stroke-width:1px}#mermaid-svg-IhauDtNEyCXa6WKL .cluster text{fill:#333}#mermaid-svg-IhauDtNEyCXa6WKL div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:12px;background:#ffffde;border:1px solid #aa3;border-radius:2px;pointer-events:none;z-index:100}#mermaid-svg-IhauDtNEyCXa6WKL .actor{stroke:#ccf;fill:#ECECFF}#mermaid-svg-IhauDtNEyCXa6WKL text.actor>tspan{fill:#000;stroke:none}#mermaid-svg-IhauDtNEyCXa6WKL .actor-line{stroke:grey}#mermaid-svg-IhauDtNEyCXa6WKL .messageLine0{stroke-width:1.5;stroke-dasharray:none;stroke:#333}#mermaid-svg-IhauDtNEyCXa6WKL .messageLine1{stroke-width:1.5;stroke-dasharray:2, 2;stroke:#333}#mermaid-svg-IhauDtNEyCXa6WKL #arrowhead path{fill:#333;stroke:#333}#mermaid-svg-IhauDtNEyCXa6WKL .sequenceNumber{fill:#fff}#mermaid-svg-IhauDtNEyCXa6WKL #sequencenumber{fill:#333}#mermaid-svg-IhauDtNEyCXa6WKL #crosshead path{fill:#333;stroke:#333}#mermaid-svg-IhauDtNEyCXa6WKL .messageText{fill:#333;stroke:#333}#mermaid-svg-IhauDtNEyCXa6WKL .labelBox{stroke:#ccf;fill:#ECECFF}#mermaid-svg-IhauDtNEyCXa6WKL .labelText,#mermaid-svg-IhauDtNEyCXa6WKL .labelText>tspan{fill:#000;stroke:none}#mermaid-svg-IhauDtNEyCXa6WKL .loopText,#mermaid-svg-IhauDtNEyCXa6WKL .loopText>tspan{fill:#000;stroke:none}#mermaid-svg-IhauDtNEyCXa6WKL .loopLine{stroke-width:2px;stroke-dasharray:2, 2;stroke:#ccf;fill:#ccf}#mermaid-svg-IhauDtNEyCXa6WKL .note{stroke:#aa3;fill:#fff5ad}#mermaid-svg-IhauDtNEyCXa6WKL .noteText,#mermaid-svg-IhauDtNEyCXa6WKL .noteText>tspan{fill:#000;stroke:none}#mermaid-svg-IhauDtNEyCXa6WKL .activation0{fill:#f4f4f4;stroke:#666}#mermaid-svg-IhauDtNEyCXa6WKL .activation1{fill:#f4f4f4;stroke:#666}#mermaid-svg-IhauDtNEyCXa6WKL .activation2{fill:#f4f4f4;stroke:#666}#mermaid-svg-IhauDtNEyCXa6WKL .mermaid-main-font{font-family:"trebuchet ms", verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-IhauDtNEyCXa6WKL .section{stroke:none;opacity:0.2}#mermaid-svg-IhauDtNEyCXa6WKL .section0{fill:rgba(102,102,255,0.49)}#mermaid-svg-IhauDtNEyCXa6WKL .section2{fill:#fff400}#mermaid-svg-IhauDtNEyCXa6WKL .section1,#mermaid-svg-IhauDtNEyCXa6WKL .section3{fill:#fff;opacity:0.2}#mermaid-svg-IhauDtNEyCXa6WKL .sectionTitle0{fill:#333}#mermaid-svg-IhauDtNEyCXa6WKL .sectionTitle1{fill:#333}#mermaid-svg-IhauDtNEyCXa6WKL .sectionTitle2{fill:#333}#mermaid-svg-IhauDtNEyCXa6WKL .sectionTitle3{fill:#333}#mermaid-svg-IhauDtNEyCXa6WKL .sectionTitle{text-anchor:start;font-size:11px;text-height:14px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-IhauDtNEyCXa6WKL .grid .tick{stroke:#d3d3d3;opacity:0.8;shape-rendering:crispEdges}#mermaid-svg-IhauDtNEyCXa6WKL .grid .tick text{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-IhauDtNEyCXa6WKL .grid path{stroke-width:0}#mermaid-svg-IhauDtNEyCXa6WKL .today{fill:none;stroke:red;stroke-width:2px}#mermaid-svg-IhauDtNEyCXa6WKL .task{stroke-width:2}#mermaid-svg-IhauDtNEyCXa6WKL .taskText{text-anchor:middle;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-IhauDtNEyCXa6WKL .taskText:not([font-size]){font-size:11px}#mermaid-svg-IhauDtNEyCXa6WKL .taskTextOutsideRight{fill:#000;text-anchor:start;font-size:11px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-IhauDtNEyCXa6WKL .taskTextOutsideLeft{fill:#000;text-anchor:end;font-size:11px}#mermaid-svg-IhauDtNEyCXa6WKL .task.clickable{cursor:pointer}#mermaid-svg-IhauDtNEyCXa6WKL .taskText.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-IhauDtNEyCXa6WKL .taskTextOutsideLeft.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-IhauDtNEyCXa6WKL .taskTextOutsideRight.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-IhauDtNEyCXa6WKL .taskText0,#mermaid-svg-IhauDtNEyCXa6WKL .taskText1,#mermaid-svg-IhauDtNEyCXa6WKL .taskText2,#mermaid-svg-IhauDtNEyCXa6WKL .taskText3{fill:#fff}#mermaid-svg-IhauDtNEyCXa6WKL .task0,#mermaid-svg-IhauDtNEyCXa6WKL .task1,#mermaid-svg-IhauDtNEyCXa6WKL .task2,#mermaid-svg-IhauDtNEyCXa6WKL .task3{fill:#8a90dd;stroke:#534fbc}#mermaid-svg-IhauDtNEyCXa6WKL .taskTextOutside0,#mermaid-svg-IhauDtNEyCXa6WKL .taskTextOutside2{fill:#000}#mermaid-svg-IhauDtNEyCXa6WKL .taskTextOutside1,#mermaid-svg-IhauDtNEyCXa6WKL .taskTextOutside3{fill:#000}#mermaid-svg-IhauDtNEyCXa6WKL .active0,#mermaid-svg-IhauDtNEyCXa6WKL .active1,#mermaid-svg-IhauDtNEyCXa6WKL .active2,#mermaid-svg-IhauDtNEyCXa6WKL .active3{fill:#bfc7ff;stroke:#534fbc}#mermaid-svg-IhauDtNEyCXa6WKL .activeText0,#mermaid-svg-IhauDtNEyCXa6WKL .activeText1,#mermaid-svg-IhauDtNEyCXa6WKL .activeText2,#mermaid-svg-IhauDtNEyCXa6WKL .activeText3{fill:#000 !important}#mermaid-svg-IhauDtNEyCXa6WKL .done0,#mermaid-svg-IhauDtNEyCXa6WKL .done1,#mermaid-svg-IhauDtNEyCXa6WKL .done2,#mermaid-svg-IhauDtNEyCXa6WKL .done3{stroke:grey;fill:#d3d3d3;stroke-width:2}#mermaid-svg-IhauDtNEyCXa6WKL .doneText0,#mermaid-svg-IhauDtNEyCXa6WKL .doneText1,#mermaid-svg-IhauDtNEyCXa6WKL .doneText2,#mermaid-svg-IhauDtNEyCXa6WKL .doneText3{fill:#000 !important}#mermaid-svg-IhauDtNEyCXa6WKL .crit0,#mermaid-svg-IhauDtNEyCXa6WKL .crit1,#mermaid-svg-IhauDtNEyCXa6WKL .crit2,#mermaid-svg-IhauDtNEyCXa6WKL .crit3{stroke:#f88;fill:red;stroke-width:2}#mermaid-svg-IhauDtNEyCXa6WKL .activeCrit0,#mermaid-svg-IhauDtNEyCXa6WKL .activeCrit1,#mermaid-svg-IhauDtNEyCXa6WKL .activeCrit2,#mermaid-svg-IhauDtNEyCXa6WKL .activeCrit3{stroke:#f88;fill:#bfc7ff;stroke-width:2}#mermaid-svg-IhauDtNEyCXa6WKL .doneCrit0,#mermaid-svg-IhauDtNEyCXa6WKL .doneCrit1,#mermaid-svg-IhauDtNEyCXa6WKL .doneCrit2,#mermaid-svg-IhauDtNEyCXa6WKL .doneCrit3{stroke:#f88;fill:#d3d3d3;stroke-width:2;cursor:pointer;shape-rendering:crispEdges}#mermaid-svg-IhauDtNEyCXa6WKL .milestone{transform:rotate(45deg) scale(0.8, 0.8)}#mermaid-svg-IhauDtNEyCXa6WKL .milestoneText{font-style:italic}#mermaid-svg-IhauDtNEyCXa6WKL .doneCritText0,#mermaid-svg-IhauDtNEyCXa6WKL .doneCritText1,#mermaid-svg-IhauDtNEyCXa6WKL .doneCritText2,#mermaid-svg-IhauDtNEyCXa6WKL .doneCritText3{fill:#000 !important}#mermaid-svg-IhauDtNEyCXa6WKL .activeCritText0,#mermaid-svg-IhauDtNEyCXa6WKL .activeCritText1,#mermaid-svg-IhauDtNEyCXa6WKL .activeCritText2,#mermaid-svg-IhauDtNEyCXa6WKL .activeCritText3{fill:#000 !important}#mermaid-svg-IhauDtNEyCXa6WKL .titleText{text-anchor:middle;font-size:18px;fill:#000;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-IhauDtNEyCXa6WKL g.classGroup text{fill:#9370db;stroke:none;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:10px}#mermaid-svg-IhauDtNEyCXa6WKL g.classGroup text .title{font-weight:bolder}#mermaid-svg-IhauDtNEyCXa6WKL g.clickable{cursor:pointer}#mermaid-svg-IhauDtNEyCXa6WKL g.classGroup rect{fill:#ECECFF;stroke:#9370db}#mermaid-svg-IhauDtNEyCXa6WKL g.classGroup line{stroke:#9370db;stroke-width:1}#mermaid-svg-IhauDtNEyCXa6WKL .classLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.5}#mermaid-svg-IhauDtNEyCXa6WKL .classLabel .label{fill:#9370db;font-size:10px}#mermaid-svg-IhauDtNEyCXa6WKL .relation{stroke:#9370db;stroke-width:1;fill:none}#mermaid-svg-IhauDtNEyCXa6WKL .dashed-line{stroke-dasharray:3}#mermaid-svg-IhauDtNEyCXa6WKL #compositionStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-IhauDtNEyCXa6WKL #compositionEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-IhauDtNEyCXa6WKL #aggregationStart{fill:#ECECFF;stroke:#9370db;stroke-width:1}#mermaid-svg-IhauDtNEyCXa6WKL #aggregationEnd{fill:#ECECFF;stroke:#9370db;stroke-width:1}#mermaid-svg-IhauDtNEyCXa6WKL #dependencyStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-IhauDtNEyCXa6WKL #dependencyEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-IhauDtNEyCXa6WKL #extensionStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-IhauDtNEyCXa6WKL #extensionEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-IhauDtNEyCXa6WKL .commit-id,#mermaid-svg-IhauDtNEyCXa6WKL .commit-msg,#mermaid-svg-IhauDtNEyCXa6WKL .branch-label{fill:lightgrey;color:lightgrey;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-IhauDtNEyCXa6WKL .pieTitleText{text-anchor:middle;font-size:25px;fill:#000;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-IhauDtNEyCXa6WKL .slice{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-IhauDtNEyCXa6WKL g.stateGroup text{fill:#9370db;stroke:none;font-size:10px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-IhauDtNEyCXa6WKL g.stateGroup text{fill:#9370db;fill:#333;stroke:none;font-size:10px}#mermaid-svg-IhauDtNEyCXa6WKL g.statediagram-cluster .cluster-label text{fill:#333}#mermaid-svg-IhauDtNEyCXa6WKL g.stateGroup .state-title{font-weight:bolder;fill:#000}#mermaid-svg-IhauDtNEyCXa6WKL g.stateGroup rect{fill:#ECECFF;stroke:#9370db}#mermaid-svg-IhauDtNEyCXa6WKL g.stateGroup line{stroke:#9370db;stroke-width:1}#mermaid-svg-IhauDtNEyCXa6WKL .transition{stroke:#9370db;stroke-width:1;fill:none}#mermaid-svg-IhauDtNEyCXa6WKL .stateGroup .composit{fill:white;border-bottom:1px}#mermaid-svg-IhauDtNEyCXa6WKL .stateGroup .alt-composit{fill:#e0e0e0;border-bottom:1px}#mermaid-svg-IhauDtNEyCXa6WKL .state-note{stroke:#aa3;fill:#fff5ad}#mermaid-svg-IhauDtNEyCXa6WKL .state-note text{fill:black;stroke:none;font-size:10px}#mermaid-svg-IhauDtNEyCXa6WKL .stateLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.7}#mermaid-svg-IhauDtNEyCXa6WKL .edgeLabel text{fill:#333}#mermaid-svg-IhauDtNEyCXa6WKL .stateLabel text{fill:#000;font-size:10px;font-weight:bold;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-IhauDtNEyCXa6WKL .node circle.state-start{fill:black;stroke:black}#mermaid-svg-IhauDtNEyCXa6WKL .node circle.state-end{fill:black;stroke:white;stroke-width:1.5}#mermaid-svg-IhauDtNEyCXa6WKL #statediagram-barbEnd{fill:#9370db}#mermaid-svg-IhauDtNEyCXa6WKL .statediagram-cluster rect{fill:#ECECFF;stroke:#9370db;stroke-width:1px}#mermaid-svg-IhauDtNEyCXa6WKL .statediagram-cluster rect.outer{rx:5px;ry:5px}#mermaid-svg-IhauDtNEyCXa6WKL .statediagram-state .divider{stroke:#9370db}#mermaid-svg-IhauDtNEyCXa6WKL .statediagram-state .title-state{rx:5px;ry:5px}#mermaid-svg-IhauDtNEyCXa6WKL .statediagram-cluster.statediagram-cluster .inner{fill:white}#mermaid-svg-IhauDtNEyCXa6WKL .statediagram-cluster.statediagram-cluster-alt .inner{fill:#e0e0e0}#mermaid-svg-IhauDtNEyCXa6WKL .statediagram-cluster .inner{rx:0;ry:0}#mermaid-svg-IhauDtNEyCXa6WKL .statediagram-state rect.basic{rx:5px;ry:5px}#mermaid-svg-IhauDtNEyCXa6WKL .statediagram-state rect.divider{stroke-dasharray:10,10;fill:#efefef}#mermaid-svg-IhauDtNEyCXa6WKL .note-edge{stroke-dasharray:5}#mermaid-svg-IhauDtNEyCXa6WKL .statediagram-note rect{fill:#fff5ad;stroke:#aa3;stroke-width:1px;rx:0;ry:0}:root{--mermaid-font-family: '"trebuchet ms", verdana, arial';--mermaid-font-family: "Comic Sans MS", "Comic Sans", cursive}#mermaid-svg-IhauDtNEyCXa6WKL .error-icon{fill:#522}#mermaid-svg-IhauDtNEyCXa6WKL .error-text{fill:#522;stroke:#522}#mermaid-svg-IhauDtNEyCXa6WKL .edge-thickness-normal{stroke-width:2px}#mermaid-svg-IhauDtNEyCXa6WKL .edge-thickness-thick{stroke-width:3.5px}#mermaid-svg-IhauDtNEyCXa6WKL .edge-pattern-solid{stroke-dasharray:0}#mermaid-svg-IhauDtNEyCXa6WKL .edge-pattern-dashed{stroke-dasharray:3}#mermaid-svg-IhauDtNEyCXa6WKL .edge-pattern-dotted{stroke-dasharray:2}#mermaid-svg-IhauDtNEyCXa6WKL .marker{fill:#333}#mermaid-svg-IhauDtNEyCXa6WKL .marker.cross{stroke:#333}:root { --mermaid-font-family: "trebuchet ms", verdana, arial;}#mermaid-svg-IhauDtNEyCXa6WKL {color: rgba(0, 0, 0, 0.75);font: ;}200920102011inwsJanFebMarLE-daily.2011.001.tifLE-daily.2011.002.tif...Other包含文件夹包含文件夹

代码如下:

# -*- coding: UTF-8 -*-
import arcpy, sys, os, glob, numpy
from arcpy.sa import *'''
批量计算平均栅格(三级级目录):对输入文件夹下的数据 计算平均值,结果存放于输出文件夹需要修改:inws:输入路径(必选)outws:输出路径(必选)nameT:这里要进行下规范化,文件名的易读性(可选)
'''arcpy.CheckOutExtension('Spatial')
numpy.seterr(all='ignore')# 输入路径  应该注意,中文路径,会导致读不出文件
inws = r"F:\LE-monthly\MonthGroup"# 输出路径
outws = r"F:\LE-monthly\Monthly"path_list = os.listdir(inws)  # 第二级目录中的文件夹列表# 进入二级目录
for i in range(len(path_list)):path = inws + "\\" + path_list[i]  # 二级目录的路径target_path = outws + "\\" + path_list[i]  # 输出路径  --  二级目录的路径# 重构输出文件夹文件组织形式outFolder = target_pathisExists = os.path.exists(outFolder) # 判断路径是否存在:存在为True,不存在为Falseif not isExists:os.makedirs(outFolder)    # 如果不存在则创建目录path_list_3 = os.listdir(path)  # 第三级目录中的文件夹列表path_list_3.sort(key=int)   # 数字的月份,排个序# 进入三级目录for third in range(len(path_list_3)):path_3 = path + "\\" + path_list_3[third]  # 三级目录的路径# 利用glob包,将三级目录下的所有tif文件读存放到rasters中rasters = glob.glob(os.path.join(path_3, "*.tif"))r = Raster(rasters[0])  # 打开栅格array = arcpy.RasterToNumPyArray(r)  # 转成Numpy方便对每个像元进行处理rowNum, colNum = array.shape  # 行数、列数sum = numpy.zeros(shape=array.shape)  # 存储累加值count = numpy.zeros(shape=array.shape)  # 存储 有效像元计数器Average = numpy.zeros(shape=array.shape)  # 存储 平均值# 循环rasters中的所有影像,进行按掩模提取操作for ras in rasters:rmm = Raster(ras)  # 打开栅格array = arcpy.RasterToNumPyArray(rmm)  # 转成Numpy方便对每个像元进行处理# 逐像元计算for row in range(0, rowNum):for col in range(0, colNum):if array[row][col] > 0:  # 判断有效值sum[row][col] += array[row][col]  # 累加count[row][col] += 1  # 计数器continueAverage = sum / count  # 平均值计算# 保存栅格lowerLeft = arcpy.Point(r.extent.XMin, r.extent.YMin)  # 左下角点坐标cellWidth = r.meanCellWidth  # 栅格宽度cellHeight = r.meanCellHeightnameT = os.path.basename(rasters[0])outname = os.path.join(target_path, nameT)  # 合并输出文件名+输出路径arcpy.env.overwriteOutput = True  # 覆盖输出文件夹已有内容arcpy.env.outputCoordinateSystem = rasters[0]  # 输出坐标系与输入相同AvgRas = arcpy.NumPyArrayToRaster(Average, lowerLeft, cellWidth, cellHeight, r.noDataValue)  # 转换成栅格AvgRas.save(outname)  # 保存print path_list_3[third] + " --- OK!"     # 三级目录处理完成print path_list[i] + " --- OK!"     # 二级目录处理完成
print("   ---   All project is OK!   ---   ")

二级目录版本的代码,嗯,不错了。但是啊,挂机这种事情,当然是点个运行就跑路…才美妙啊。所以又回来了,添加了三级目录版本

总结

ArcPy牛皮!毕业万岁!中期快乐!
大家元旦快乐,顺利毕业,工作顺利

后记

写博客的初衷是分享我的一些经验,同时也方便自己在其他电脑上进行数据处理。帮了很多人,但评论区小伙伴也有遇到问题的,那么:知识付费,我的时间和经验正好可以解决你的问题。

ArcPy计算多影像有效像元的平均值相关推荐

  1. 计算遥感影像变异系数以及像元值变化趋势的小软件

    计算遥感影像变异系数以及像元值变化趋势的小软件 最近由于学习上的需要,需要计算很多遥感影像的相关系数,使用envi软件波段计算比较繁琐,就在网上找了不少计算相关指数的python代码,并且自己写了一些 ...

  2. IDLpython学习——实现根据有经纬度坐标的excel/csv表格提取相应影像的像元值

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 平时在做遥感应用的时候经常会拿监测站点数据和遥感影像进行对比,然后做一些拟合什么的,本博客就是 ...

  3. arcgis使用arcpy计算土地利用LUCC变化转移矩阵、马尔科夫模型变化表,最好用的方法TabulateArea实现两期数据变化统计

    arcgis使用arcpy计算土地利用LUCC变化转移矩阵.马尔科夫模型变化表,最好用的方法TabulateArea实现两期数据变化统计: 下载链接:LUCC变化转移矩阵Arcpy脚本 coding ...

  4. 编写一段程序录入 N 个学生的信息包括姓名、性别、年龄和成绩;要求:1.按照成绩由小到大的顺序输出,如果成绩相同则按学号由小到大的顺序输出;2.计算 N 个学生成绩的平均值;

    题目和要求: 编写一段程序录入 N 个学生的信息包括姓名.性别.年龄和成绩: 要求:1.按照成绩由小到大的顺序输出,如果成绩相同则按年龄由小到大的顺序 输出: 2.计算 N 个学生成绩的平均值: 注: ...

  5. a-awk 计算数值最大,最小,平均值并保留指定位数

    awk 计算最大值 echo -e "1\n2\n3\n10\n9\n5\n11\n"|awk 'BEGIN {max = 0} {if ($1>max) max=$1 } ...

  6. python求txt文件内平均值_如何使用python计算几个.dat文件的平均值?

    这是一种相当时间和资源有效的方法,它读取值并并行计算所有文件的平均值,但每次只读取一行文件 – 但它会暂时读取整个第一个.dat文件进入内存以确定每个文件中将有多少行和每列数字. 你没有说你的&quo ...

  7. python如何求每一行的均值_计算每X行数的平均值

    根据我对你问题的理解,听起来你有一些文件,你想把每一行的平均值取到第600行,然后重复多次,直到没有更多的数据为止.所以在第600行,你平均0-600行,在1200行你平均600到1200行.在 模除 ...

  8. 用python爬取豆瓣某本书的前n条书评并计算评分(star)的平均值

    这个爬虫小项目是中国大学MOOC的"用Python玩转数据"课程的一个课后作业,由南京大学张莉老师主讲,有兴趣的同学可以看一看. 虽然老师已经给出了参考代码,但由于豆瓣读书网站已经 ...

  9. 5-35计算N个分式有理数的平均值

    //本题要求编写程序,计算N个有理数的平均值. //输入格式: //输入第一行给出正整数N(≤100):第二行中按照a1/b1, a2/b2 -的格式给出N个分数形式的有理数,其中分子和分母全是整形范 ...

最新文章

  1. Alibaba 之 Nacos
  2. jquery 移除border_jQuery - 删除元素
  3. android内存加载dex,安卓8.1版本dex加载流程笔记--第一篇:oatfile,oatdexfile与dexfile...
  4. 【 C 】经典抽象数据类型(ADT)之内存分配
  5. 学完python基础知识之后可以做些什么-学完Python基础知识后,你真的会python吗?...
  6. Cannot assign to 'self' outside of a method in the init family
  7. java 自定义xml_6.1 如何在spring中自定义xml标签
  8. python定时器 是线程吗_定时器中断线程python
  9. Flume的安装与使用
  10. (最详细)红米手机4A的usb调试模式在哪里打开的教程
  11. 巧除Word插入水印后页眉处的折线(转)
  12. 基于张量分解的药物重定位预测药物、靶点和疾病之间的关联
  13. 主引导扇区程序代码优化-2
  14. 大数据下的用户画像标签去重
  15. Qml自定义等待指示器
  16. Deep Lab 系列总结
  17. 点到直线(超平面)的距离公式
  18. [轻笔记]Successor Features for Reinforcement learning
  19. 互联网公司的年会也太太太刺激了吧!
  20. 英国《金融时报》:3G迟来的商机

热门文章

  1. 指令集创始人潘爱民受邀出席CCF系统软件技术论坛,探讨泛在操作系统技术发展...
  2. 新金融时代,凡泰极客助力华西证券打造数字营销新生态
  3. PyhontPygame 飞船大战外星人 完整代码及资源下载
  4. 新东方雅思词汇(List 36 ~ List 40)
  5. MongoDB 入门教程实战学习笔记-31-mongo 聚合查询管道 Aggregation Pipieline
  6. [汇编语言 IBM-PC]寻址方式配套习题
  7. 刚当上leader,我让组员去开会,他非说有更重要的会
  8. PictureMerge
  9. 大龄程序员没有出路吗?
  10. UVALive 5075 Intersection of Two Prisms(柱体体积交)