当前位置: 首页 > news >正文

基于ArcMap中Python 批量处理栅格数据(以按掩膜提取为例)

注:图片来源于公众号,公众号也是我自己的。

ArcMap中的python编辑器是很多本科生使用ArcMap时容易忽略的一个工具,本人最近正在读一本书《ArcGIS Python 编程基础与应用》,在此和大家分享、交流一些相关的知识。


这篇文章主要分享一下以按掩膜提取为例的栅格数据的批量处理。当数据量比较少的时候,栅格数据的裁剪可以通过 ArcToolbox -- 提取分析 -- 按掩膜提取的功能进行。如下图:

但是如果需要处理的数据很多,也就是批量处理栅格数据,再手动处理就显得比较低效了。这个时候就需要用到 Python编辑器,利用程序批量处理。下面我将简单介绍一下实现代码以及相关原理:

1.代码内容

>>> import arcpy
... from arcpy import env
... from arcpy.sa import *
... 
>>> arcpy.CheckOutExtension("Spatial")
# 系统会输出:u'CheckedOut'
>>> 
>>> env.workspace = 'D:/competition data/2001-2023 China_MOD17A3H(NPP) data'
>>> rs = arcpy.ListRasters("*", "TIF")
>>> for r in rs:
...     outExtractByMask = ExtractByMask(r, "重庆市范围.shp")
...     outExtractByMask.save('D:/competition data/tmpcode' + r + "_mask.tif")

2.分步讲解

1.导入Arcpy库和对应的模块

>>> import arcpy
... from arcpy import env
... from arcpy.sa import *

ArcGIS中很多操作对应的函数都在Arcpy库中,所以使用Python写代码时基本上都要导入Arcpy库。而ExtractByMask函数是 ArcGIS Spatial Analyst 扩展的一部分,所以需要单独带入模块。 

 

2.检查并启用Spatial Analyst扩展

>>> arcpy.CheckOutExtension("Spatial")
# 点击回车键之后会输出:u'CheckedOut'

3.设置工作空间

# 设置工作空间
env.workspace = r'D:\competition data\2001-2023 China_MOD17A3H(NPP) data'

 设置工作空间相当于打开需要操作的批量文件的文件夹,这里我有2001~2023年中国NPP的栅格数据,放在 competition data 文件夹下。同时我也把输出栅格数据或要素掩膜数据(重庆的范围)放在了同一个文件夹下。

4.列出工作空间所有TIF格式的栅格数据(如果是其他类型就改成其他的数据类型)以及使用循环批量处理栅格数据。

rs = arcpy.ListRasters("*", "TIF")# 循环遍历栅格数据,并进行按掩膜提取操作
for r in rs:# 使用ExtractByMask函数进行掩膜提取# 确保"重庆市范围.shp"文件位于工作空间目录下,或者提供完整的路径outExtractByMask = ExtractByMask(r, r'D:\competition data\2001-2023 China_MOD17A3H(NPP) data\重庆市范围.shp')# 保存提取后的栅格数据# 确保输出路径存在,或者使用arcpy环境变量指定输出路径output_path = r'D:\competition data\tmpcode'arcpy.env.overwriteOutput = True  # 允许覆盖同名文件outExtractByMask.save('D:/competition data/tmpcode' + "\\" + r + "_mask.tif")

3.操作截图

1.Python操作台 

 

2.输入数据

 

3.输出数据

 


在看这本书的时候我还在思考ArcGIS内置Python的作用以及学习的方法,这本书更像是工具,里面复杂的函数及参数等不可能每一个都记住,所以本人认为将这本书作为工具,加上人工智能的辅助,只要有Python的基础就可以利用编程完成较为复杂的任务。

我也会继续分享学习经历,欢迎各位GISer交流、指导。

http://www.lryc.cn/news/471973.html

相关文章:

  • 【flink】之集成mybatis对mysql进行读写
  • Java设计模式—观察者模式详解
  • 【Cri-Dockerd】安装cri-dockerd
  • GCC及GDB的使用
  • 大数据新视界 -- 大数据大厂之大数据重塑影视娱乐产业的未来(4 - 3)
  • 数据结构——基础知识补充
  • 只有.git文件夹时如何恢复项目
  • anchor、anchor box、bounding box之间关系
  • 代码随想录算法训练营第三十天 | 452.用最少数量的箭引爆气球 435.无重叠区间 763.划分字母区间
  • 海亮科技亮相第84届中国教装展 尽显生于校园 长于校园教育基因
  • C语言数据结构学习:栈
  • 如何快速分析音频中的各种频率成分
  • MongoDB 6.0 主从复制配置
  • NPU 神经网络处理单元
  • 安宝特分享 | AR技术引领:跨国工业远程协作创新模式
  • Vulkan 开发(五):Vulkan 逻辑设备
  • Kafka 解决消息丢失、乱序与重复消费
  • 计算机专业毕业生面试工具推荐:白瓜面试
  • 数字IC开发:布局布线
  • 高空作业未系安全带监测系统 安全带穿戴识别预警系统
  • k8s的配置和存储(ConfigMap、Secret、Hostpath、EmptyDir以及NFS的服务使用)
  • JS轮播图实现自动轮播、悬浮停止轮播、点击切换,下方指示器与图片联动效果
  • 使用 Kafka 和 MinIO 实现人工智能数据工作流
  • 力扣题86~90
  • 【JavaEE】【多线程】定时器
  • CI/CD 的原理
  • 进一步认识ICMP协议
  • NUUO网络视频录像机upload.php任意文件上传漏洞复现
  • WebGL 3D基础
  • Docker 部署MongoDb