30年两组栅格数据对应做减法运算

说明:

(1)Up_Path:始期数据路径

(2)Down_Path:末期数据路径

(3)outPath:相减输出结果路径

import arcpy
arcpy.CheckOutExtension("spatial")
arcpy.gp.overwriteOutput=1

Up_Path="G:\\Phenology of 30 Years\\GIMMS 3g\\13Up\\2PointToRaster\\"
Down_Path="G:\\Phenology of 30 Years\\GIMMS 3g\\14Down\\2PointToRaster\\"
OutPath="G:\\Phenology of 30 Years\\GIMMS 3g\\15Length\\1Length\\"
n=1983

for i in range(0,30):
    
    OutName=OutPath+str(n)
    
    a=Up_Path+"p2r_"+str(n)
    b=Down_Path+"p2r_"+str(n)
    
    arcpy.gp.Minus_sa(b, a, OutName)   #栅格相减,其实是字符串对应的数据相减,但是不能直接用“-”来操作字符串
    print(str(n)+" has done")

    n=n+1
    OutName=""

print("All done,Please close!")
注意:

(1)以上栅格数据相减调用的是Math下面的Minus函数,操作的是数据是构造的路径+数据名”形式的字符串,不能直接做减法运算

(2)如果非要做减法运算,可以将路径+数据名”形式的字符串转换为Raster,即outRaster=Raster(路径1+数据名1)-Raster(路径2+数据名2),再做相减,最后再将相减的结果进行save,outRaster.save("路径+数据名"),但是要引入from arcpy.sa improt *模块,修改后的代码如下:

import arcpy
from arcpy.sa import * #添加模块
arcpy.CheckOutExtension("spatial")
arcpy.gp.overwriteOutput=1

Up_Path="G:\\Phenology of 30 Years\\GIMMS 3g\\13Up\\2PointToRaster\\"
Down_Path="G:\\Phenology of 30 Years\\GIMMS 3g\\14Down\\2PointToRaster\\"
OutPath="G:\\Phenology of 30 Years\\GIMMS 3g\\15Length\\1Length\\"
n=1983

for i in range(0,30):
    
    OutName=OutPath+str(n)
    
    a=Raster(Up_Path+"p2r_"+str(n))
    b=Raster(Down_Path+"p2r_"+str(n))
    
    #arcpy.gp.Minus_sa(b, a, OutName)   #栅格相减,其实是字符串对应的数据相减,但是不能直接用“-”来操作字符串
    c=b-a  #栅格数据直接相减
    c.save(OutName) #保存栅格数据
    print(str(n)+" has done")

    n=n+1
    OutName=""

print("All done,Please close!")


你可能感兴趣的:(30年两组栅格数据对应做减法运算)