【Arcpy】不同文件夹下的栅格计算代码构建

上篇文章【Arcpy】相邻时相栅格数据批量作差的代码构建针对的是同一文件夹下的栅格文件,在env.workspace中设置工作空间,使用ListRasters获取栅格列表然后利用Python切片功能构造相邻文件作差的效果

本篇将解决不同文件夹下栅格文件的提取,以及代码构建过程和常见bug处理

需求

两个文件夹分别有地温和气温,求其对应日期的差,同时要注意单位换算和栅格大小

代码

# coding=utf-8
# 不同文件夹数据囧计算
import arcpy
from arcpy.sa import *
import glob
import os

output_path = r'H:\240329\LSTmiTa201703\tset'
input_path1 = r'H:\240329\Clip_LST201703\*.tif'
input_path2 = r'H:\240329\Tavg201703\*.img' # 这里最好不要把反斜杠放最后,文章会解释

rasterlist1 = glob.glob(input_path1)
rasterlist2 = glob.glob(input_path2)  # 使用glob.glob提取到List

print len(rasterlist1)
print len(rasterlist2)

arcpy.env.cellSize = "MINOF" # 规定以最小的栅格图像为栅格大小
for raster1name, raster2name in zip(rasterlist1, rasterlist2):
    raster1 = arcpy.Raster(raster1name)
    raster2 = arcpy.Raster(raster2name)
    outRaster = (raster1 - 27315) * 0.01 - (raster2 * 0.1)
    output_name = output_path + "\\LSTmiTavg" + os.path.basename(raster2name)[6:13] + ".tif" #反斜杠在这里加 而且raster2name是包括路径的名字 所以要用basenane提取一下
    outRaster.save(output_name)

    print str(raster1)
    print str(raster2)
    print("\n")
print("OK!")

debug过程

  1. 栅格不存在或不受支持
    最早的代码直接设定了两个不同的workspace然后分别提取ListRasters,但是后续会出现栅格文件不存在,因为此时已经是raster2的文件夹作为workspace所以找不到raster1,传递的参数仅仅是basename的string而不是文件本身
  2. rasterlist为空
    原来的代码规定文件路径如下:

output_path = r'H:\240329\LSTmiTa201703\tset\ ' 
input_path1 = r'H:\240329\Clip_LST201703\*.tif '
input_path2 = r'H:\240329\Tavg201703\*.img '

output_path末尾有空格,如果没有空格会报错,因为’是单引号的转义字符,尽管前面有了RAWr来表示不用转义字符。。。。。。
而有空格之后就会造成文件路径问题
这导致我以为字符串引号前必须有空格,,,,所以input两个变量也画蛇添足导致glob不能识别文件,进而rasterlist为空值

  1. 新文件命名
    保存栅格时,使用了 raster2name[6:13] 来获取日期字符串的一部分,但是这里raster2name是完整路径+文件名,为了提高鲁棒性,改成了os.path.basename(raster2name)[6:13],这样可以无视不同文件夹长度了

感谢文心一言,终于有点用了
在这里插入图片描述

  • 5
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值