Python批量解压zip文件并利用arcpy进行栅格批量拼接操作
前言:在“NASADEM-中国”文件夹中有很多子文件夹:
而在这些子文件夹中又有很多zip压缩文件:
现在先想要把这些压缩文件解压到一个文件夹“ALL”中:
import os import shutil import zipfile parent_path=r'G:\DEM\NASADEM-中国' #父文件夹路径 directory_to_extract_to=r"G:\DEM\ALL" #解压目标文件夹路径 for root, dirs, files in os.walk(parent_path): # 读取文件名 for name in files: print(name) path_to_zip_file=root+'\\'+name print(path_to_zip_file) with zipfile.ZipFile(path_to_zip_file, 'r') as zip_ref: zip_ref.extractall(directory_to_extract_to)
等待其运行完。
接下来可以再ArcGIS中进行DEM的拼接操作:
参考:https://blog.csdn.net/gisboygogogo/article/details/75195760
###批量拼接tiff的DEM ------------------------------ import arcpy from arcpy import env from arcpy.sa import * import sys reload(sys) # reload 才能调用 setdefaultencoding 方法 sys.setdefaultencoding('utf-8') # 设置 'utf-8' arcpy.CheckOutExtension('Spatial') arcpy.env.workspace = "G:/DEM/NASADEM-中国/ALL" #提取待拼接影像的文件名,且中间以;隔开,例如:a.tif;b.tif;c.tif rasters = [] for ras in arcpy.ListRasters("*.hgt"): print(ras) rasters.append(ras) ras_list = ";".join(rasters) print(ras_list) base = "n18e108.hgt" #以下一段代码是为执行拼接做参数准备 out_coor_system = arcpy.Describe(base).spatialReference #获取坐标系统 dataType = arcpy.Describe(base).DataType piexl_type = arcpy.Describe(base).pixelType cellwidth = arcpy.Describe(base).meanCellWidth #获取栅格单元的的宽度 bandcount = arcpy.Describe(base).bandCount #获取bandCount #输出与拼接 outFolder = r"G:\DEM\NASADEM-中国" arcpy.MosaicToNewRaster_management(ras_list,outFolder,"China__dem_data.tif", out_coor_system, "16_BIT_SIGNED", cellwidth, bandcount, "LAST", "FIRST")
对应的ArcGIS中使用工具为:
可惜由于数据量实在过大,最后拼接出来的一张影像可能有十几个G大小,在ArcGIS中也不怎么打得开,综合考虑到处理大数据量的时候也是分块处理,因此针对所要研究的对象进行分开式处理,进行掩膜提取之类
例如,先拼接N38-N58的数据,再进行掩膜提取
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 记一次.NET内存居高不下排查解决与启示