当前位置:   article > 正文

Python(arcpy) 批量裁减TIF图像_python 开源库 裁剪tif

python 开源库 裁剪tif

任务描述:已有流域边界的面文件,从长时间序列的全球尺度栅格图像裁减出流域的部分
在这里插入图片描述效果如下:
在这里插入图片描述

import arcpy
import os

#检查Arcgis的权限
arcpy.CheckOutExtension("spatial")
arcpy.gp.overwriteOutput = 1

##################################裁减径流图#################################

#读取掩膜文件(矢量面文件)
arcpy.env.workspace = "F:/Snowmelt/Boundary/"
shps = arcpy.ListFiles("*.shp")

#读取要进行裁减的图像(栅格文件)
arcpy.env.workspace = "F:/TerraClimate/TIFF/q/"
rasters = arcpy.ListRasters("*", "tif")

#遍历shps中的所有掩膜文件
for shp in shps:

	#读取流域编号
	mask = shp
	print mask               #用于检查是否读对掩膜文件
	npos=mask.index('_')
	# print npos
	catchment_name = mask[int(npos)+1:int(npos)+13]
	# print catchment_name   #用于检查是否读对流域编号

	for raster in rasters:

		#判断存储最终图像的文件夹是否存在,是则存储,否则创建并存储;注意if和else后一定要加冒号,格式要对齐
		if os.path.exists(r"F:/Snowmelt/"+catchment_name+"/q"):
			out = (r"F:/Snowmelt/"+catchment_name+"/q/"+raster)
		else:
			os.makedirs(r"F:/Snowmelt/"+catchment_name+"/q")
			out = "F:/Snowmelt/"+catchment_name+"/q/"+raster

		# 调用裁减工具
		arcpy.gp.ExtractByMask_sa(raster, mask, out)

		print("clip_"+raster+"  has done")
	print(catchment_name+"_Q_has done")

print("All done")
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44

其中:
substr.start() for substr in re.finditer(a,b) 查找在b中a出现的位置

需要注意:
把边界和待裁剪的栅格数据放到一个文件下!
把边界和待裁剪的栅格数据放到一个文件下!
把边界和待裁剪的栅格数据放到一个文件下!

原因是:如果在不同文件夹,就得切换程序的工作环境,很麻烦

Finish!

在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/310577
推荐阅读
相关标签
  

闽ICP备14008679号