循环读取影像,调用栅格计算器批量计算最后保存
#第一次计算代码
import arcpy
import pandas as pd
#读取csv文件,转为字典
df = pd.read_csv("土壤含水量均值.csv")
df=df.set_index("date")['mean'].to_dict()
#设定工作空间和投影
e=r'土壤含水量栅格'
arcpy.env.workspace=e
arcpy.env.outputCoordinateSystem =arcpy.SpatialReference("WGS 1984")
#读取工作空间内的栅格数据
rasters = arcpy.ListRasters()
for raster in rasters:
#读取栅格
out_raster = arcpy.Raster(raster)
#out_raster.exportImage()
#获取多年同期土壤含水量均值
a=df[raster[5:10]]
#执行栅格计算
output_raster = arcpy.sa.RasterCalculator([out_raster, a], ["x", "y"],"(x-y)/y")
#保存数据
output_raster.save("MyProject\\result\C"+raster)
#output_raster.exportImage()
#计算每个月的均值影像
import arcpy
import pandas as pd
#读取csv文件,转为字典
df = pd.read_csv("土壤含水量均值.csv")
df=df['date'].tolist()
#设定工作空间和投影
e=r'土壤含水量栅格'
arcpy.env.workspace=e
arcpy.env.outputCoordinateSystem =arcpy.SpatialReference("WGS 1984")
#读取工作空间内的栅格数据
rasters = arcpy.ListRasters()
#循环读取每天
for i in range(len(df)):
n=0
#从原始影像中循环找出该天的影像
for raster in rasters:
if(raster[5:10]==df[i]):
#计算总和
if(n==0):
out_raster=raster
else:
output_raster = arcpy.sa.RasterCalculator([out_raster, raster], ["x", "y"],"x+y")
n=n+1
#计算均值并保存
output_raster = arcpy.sa.RasterCalculator([out_raster, n], ["x", "y"],"x/y")
output_raster.save("MyProject\\mean\C"+df[i]+'.tif')
#读取csv文件,转为字典
df = pd.read_csv("土壤含水量均值.csv")
df=df.set_index("date")['mean'].to_dict()
for raster in rasters:
#读取栅格
out_raster = arcpy.Raster(raster)
#out_raster.exportImage()
#获取多年同期土壤含水量均值影像
a=arcpy.Raster('MyProject\mean\\c'+raster[5:10]+'.tif')
#执行栅格计算
output_raster = arcpy.sa.RasterCalculator([out_raster, a], ["x", "y"],"(x-y)/y")
#保存数据
output_raster.save("MyProject\\result\C"+raster)
#output_raster.exportImage()
新开通了本人的公众号,欢迎关注:燕南路GISer ,专注GIS干货分享,不定期更新。
主要兴趣:GIS、时空数据挖掘、python、机器学习深度学习
优快云的部分内容会重写再搬迁到公众号,欢迎关注!