基于IDLE(arcgis)的.shp文件批裁剪


一直想整出个批裁剪的程序,最后终于基于以下两个网页做到了。原网页链接如下,看不懂的可以点原网页查看,本文主要是方便自己学习: https://blog.csdn.net/gisboygogogo/article/details/75195760(利用ArcGIS-Python批量拼接裁剪遥感影像(arcpy batch processing)) https://www.sohu.com/a/212432991_277070(如何批量修改十万个文件名)**

工具:Arcgis 10.2;Excel;Txt

一 基于IDLE的批处理

  1. 打开IDL工具
    arcgis-IDLE,之后file-New Window复制以下代码;更改所在、存放目录和shp文件位置后,run-run Module(F5)。正常情况下就可以看到clp.tif文件了。
import arcpy
import glob
import os

arcpy.CheckOutExtension('Spatial')

#指定先前拼接后的遥感影像所在目录
inws = r"d:\xingan\mrt\MOD11\pichuli"

#指定裁剪后的影响存放目录
outws = r"d:\xingan\mrt\MOD11\11"

#指定shp范围边界文件,即目标区域的边界
mask = r"d:\xingan\data\xingan.shp"

#利用glob包,将inws下的所有tif文件读存放到rasters中
rasters = glob.glob(os.path.join(inws, "*.tif"))

#循环rasters中的所有影像,进行按掩模提取操作
for ras in rasters:
  outname = os.path.join(outws, os.path.basename(ras).split(".")[0] + "11_clp.tif")  #指定输出文件的命名方式(以被裁剪文件名+_clip.tif命名)
  out_extract = arcpy.sa.ExtractByMask(ras, mask)  #执行按掩模提取操作
  out_extract.save(outname)  #保存数据

二 问题

  1. 但我的出现了下列错误:在这里插入图片描述
    经反复试验,发现是在生成腌膜文件时,因我文件的特点,其腌膜文件一致(均是MOD11A2),因此导致程序出现错误在这里插入图片描述
    因无Python基础,不知道如何更改程序,因此想到了批量更改文件名。
    三 批量更改文件夹名称

  2. dir命令自动提取文件名

  3. 以文件在d:\xingan\mrt\MOD11\pichuli 内为例,具体方法如下
    命令→cmdd: -cd xingan\mrt\MOD11\pichulidir/b>1.xls
    在这里插入图片描述
    1.xml文件打开
    在这里插入图片描述
    在左侧加列,第二行输入ren,点右下角位置下拉,使文件前均有ren,
    在这里插入图片描述
    在这里插入图片描述
    因我需要的是A开头及之后的部分,操作如下
    在第3列第二行(C2)输入**=right(B2,24),其中B2是第2列第2行(原文件名称),24为24个字符串,right(B2,24)为第二行第2列从右开始向左查到第24个字符串,
    在这里插入图片描述
    右下角下拉单元格
    在这里插入图片描述
    复制除第一行的需要更改文件夹的前三列到新建的TXT文件中,
    在这里插入图片描述
    将该文件的
    后缀改为.bat**,双击该文件,可看到该文件夹内的MOD11A2.已经去掉,此时在进行第一步批裁剪操作即可成功
    在这里插入图片描述

转载自:https://blog.csdn.net/d_158/article/details/83051289

You may also like...