最近在写论文时需要裁剪张栅格影像,argis批处理还是感觉不太方便。于是转到arcPy来试试。
处理速度瞬间上了一道台阶。
代码记录如下:
import arcpy
from arcpy import env
from arcpy.sa import *
import os
#获取文件目录列表
def get_path(filenames_in):
path_list = []
for root, dirs, files in os.walk(filenames_in):
print(dirs)
for dir in files:
#twoFilenames_in = os.path.join(root,dir)
#print(twoFilenames_in)
#for twoRoot, twoDirs, twoFiles in os.walk(twoFilenames_in):
# for twoFile in twoFiles:
# if twoFile[-3:] == 'tif':
#print(dir)
#filename = os.path.join(filenames_in, dir[:-4])
#print(filename)
#print(pathDir)
print(dir)
if dir[-3:] == 'tif':
filePath = os.path.join(filenames_in, dir)
path_list.append(filePath)
print(path_list)
return path_list
def outExtract(fileroot,maskPath,outPath):
for path in get_path(fileroot) :
outExtractByMask = ExtractByMask(path,maskPath)
path = outPath + path.split('\\')[-1]
outExtractByMask.save(path)
print(path,'have done!')
#投影至
#arcpy.ProjectRaster_management(in_raster = outExtractByMask,out_raster=f"D:\dataset\caijiannc\{path[-10:]}.tif", \
#out_coor_system= r"D:\datasum\DEM\1984_DEM.tif",resampling_type= "BILINEAR",
#cell_size='0.00833333333332575'
#)
outPath = r"D:\datasum\preExact\\"
preRoot = r"D:\datasum\pre"
maskPath = r"D:\datasum\DEM\\zhibeDEM.tif"
outExtract(preRoot,maskPath,outPath)
outPath = r"D:\datasum\tmpExact\\"
preRoot = r"D:\datasum\tmp"
outExtract(preRoot,maskPath,outPath)