Python中ArcPy基于矢量要素批量将栅格影像切割为多个小部分

news2024/11/24 23:05:03

  本文介绍基于PythonArcPy模块,基于具有多个面要素的要素类,批量分割大量栅格图像的方法。

  首先明确一下我们的需求。现在需要基于一个面要素类,对一个栅格遥感影像加以分割;如下图所示。这个面要素类中有3个部分,我们希望将背景的这个遥感影像也依据这3个要素的划分方式,进行切割,从而得到3个小区域对应的栅格数据。

在这里插入图片描述

  其中,如果大家想基于ArcMap软件,不用代码从而实现这一操作,可以基于文章ArcGIS中ArcMap分割栅格Split Raster工具没有结果的解决(https://fkxxgis.blog.csdn.net/article/details/128474804)中提到的分割栅格Split Raster)工具加以实现。本文就介绍基于代码来实现这一操作的具体步骤。

  本文需要用到的代码如下。

# -*- coding: utf-8 -*-
"""
Created on Tue Dec 27 17:19:07 2022

@author: fkxxgis
"""

import arcpy

tif_file_path = r"E:\02_Project\01_Chlorophyll\ClimateZone\Original"
result_file_path = r"E:\02_Project\01_Chlorophyll\ClimateZone\Split"
shp_file_name = r"E:\02_Project\01_Chlorophyll\ClimateZone\SCClimateP.shp"
arcpy.env.workspace = tif_file_path
arcpy.env.parallelProcessingFactor = 0

tif_file_list = arcpy.ListRasters("*", "tif")

for tif_file in tif_file_list:
    arcpy.SplitRaster_management(tif_file,
                                 result_file_path,
                                 tif_file.split(".tif")[0],
                                 "POLYGON_FEATURES",
                                 "TIFF",
                                 "BILINEAR",
                                 "#",
                                 "#",
                                 "#",
                                 "#",
                                 "#",
                                 "#",
                                 shp_file_name)

  其中,tif_file_path是保存有我们待分割的栅格图像的路径,result_file_path是分割后各个结果图像的保存路径,shp_file_name是分割栅格图像所用矢量面要素的文件路径与名称。

  代码整体思路也很简单:首先,我们基于arcpy.ListRasters()函数,获取tif_file_path路径下原有的全部.tif格式的图像文件,并以列表的形式存放于tif_file_list中;随后,逐一取出tif_file_list列表中的栅格文件,进行分割处理。

  在这里,我们的分割操作是基于arcpy.SplitRaster_management()函数来实现的。这一函数有很多参数,具体各个参数的含义大家直接参考ArcMap软件软件官网即可,这里就仅对本文中需要用到的参数加以介绍。其中,前两个参数就分别是我们待处理数据和结果数据的保存路径,第三个参数是每一个大的栅格图像(也就是待分割的图像)在被分为多个小图像后,每一个小图像的命名前缀。在这里,我们通过.split()函数,直接将原有每一个大的栅格图像的名称作为小图像的命名前缀;后面得到多个小图像结果后,程序会自动在这个命名前缀的后面加上对应的数字编号,从而区分每一个小图像

  接下来,第四个参数"POLYGON_FEATURES"表示我们将通过矢量要素来确定图像分割的范围,第五个参数"TIFF"表明我们结果图像的格式为.tif文件,第六个参数"BILINEAR"表明我们将用双线性插值法来实现切割后图像的重采样;关于不同重采样方法的选择,大家可以参考文章ArcGIS中ArcMap栅格重采样操作与算法选择(https://fkxxgis.blog.csdn.net/article/details/128448615)。此外,接下来的几个"#"表示我们对这些参数暂时不配置;最后一个参数就是我们分割栅格图像所用的矢量要素数据。

  此外,还有一点需要注意的是,上述代码中我们通过arcpy.env.parallelProcessingFactor参数,将“Parallel Processing”选项设置为0;如果我们不这么设置的话,大概率这段代码是无法成功运行的;具体为什么要这么设置,大家可以参考文章ArcGIS中ArcMap分割栅格Split Raster工具没有结果的解决(https://fkxxgis.blog.csdn.net/article/details/128474804),这里就不再赘述。

  运行上述代码,我们即可在结果保存路径result_file_path中看到各个栅格图像被分割后所得到的各个结果。

  至此,大功告成。

欢迎关注:疯狂学习GIS

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/126405.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MMdetection框架速成系列 第02部分:整体算法流程+模型搭建流程+detection训练与测试核心组件+训练部分与测试部分的核心算法

MMdetection框架速成系列 第02部分1 MMDetection是什么1.1 模型分类2. 整体算法流程3 detection训练核心组件3.1 Backbone3.2 Neck3.3 Head3.4 Enhance3.5 BBox Assigner3.9 BBox Sampler3.10 BBox Encoder3.11 Loss3.12 Training tricks4 detection测试核心组件4.1 BBox Decod…

python源码打包exe、exe反编译

一、python3打包为exe文件 这里有个hello.py文件 step1:安装pyinstaller包 pip install pyinstaller step2:在cmd中进入hello.py文件所在路径。可以直接在hello.py文件路径下直接进入cmd step3:打包生成exe文件,使用如下命令&…

Linux网络协议之IP协议(网络层)

Linux网络协议之IP协议(网络层) 文章目录Linux网络协议之IP协议(网络层)1.IP协议基本概念2.IPV4协议格式3.分片与组装4.IP网段划分4.1 IP地址组成4.2 IP地址分类4.3 特殊的IP地址4.4 IP地址的数量限制4.5 私网IP地址与公网IP地址5.对路由的了解1.IP协议基本概念 IP协议全称为“…

第四章 vi和vim 编辑器-[实操篇]

一:vi 和 vim 的基本介绍 所有的 Linux 系统都会内建vi文本编辑器。 Vim 具有程序编辑的能力,可以看做是 Vi的增强版本,可以主动的以字体颜色辨别语法的正确性,方便程序设计。代码补完,编译及错误跳转等方便编程的功…

Linux安装【入门学习适用】

Linux安装安装1、安装VMware激活码:ZF3R0-FHED2-M80TY-8QYGC-NPKYF2、安装CentOS3、FinalShell安装4、FinalShell的使用安装 1、安装VMware VMware-workstation-full-16.2.4无脑下一步即可 激活码:ZF3R0-FHED2-M80TY-8QYGC-NPKYF 2、安装CentOS 1、…

TensorFlow笔记之多元线性回归

文章目录前言一、数据处理二、TensorFlow1.x1.定义模型2.训练模型3.结果可视化4.模型预测5.TensorBoard可视化三、TensorFlow2.x1.定义模型2.训练模型3.结果可视化4.模型预测总结前言 记录使用TensorFlow1.x和TensorFlow2.x完成多元线性回归的过程。 一、数据处理 在此使用波…

dll修复工具哪个比较好?好的修复工具怎么选择

最近有小伙伴咨询小编,问dll修复工具的选择,因为他的电脑经常出现dll缺失,一缺失就打开不了各种软件程序,非常的让他烦恼,所以今天小编就来给大家详细的说说dll修复工具哪个比较好?要怎么去选择。 一.什么…

36 氪发布《研发项目管理软件应用指南》,ONES 入选典型厂商案例

近日,36氪企服点评发布了《研发项目管理软件应用指南》(下称「指南」)。36氪企服点评致力于帮助每个需求企业服务的人做出正确的决策,携手每个企服行业者为大众提供更高的价值与服务。在该指南中,36氪企服点评综合了海…

大数据系列——ClickHouse表引擎与分布式查询

目录 一、ClickHouse的表引擎 1、MergeTree的创建方式与存储结构 2、ReplacingMergeTree 二、数据分片与分布式查询 三、Clickhouse-ETL常见业务使用 一、ClickHouse的表引擎 表引擎体系,包括合并树、外部存储、内存、文件、接口和其他6大类20多种表引擎。而在…

全流量回溯分析为您解决应用性能问题(一)

前言 信息中心老师反应,用户反馈办公系统有访问慢的情况,需要通过流量分析系统来了解系统的运行情况,此报告专门针对系统的性能数据做了分析。 信息中心已部署NetInside流量分析系统,使用流量分析系统提供实时和历史原始流量&am…

【网络安全篇】浅谈web应用程序的安全风险

🏆今日学习目标: 🍀浅谈web应用程序的安全风险 ✅创作者:贤鱼 ⏰预计时间:25分钟 🎉个人主页:贤鱼的个人主页 🔥专栏系列:网络安全 🍁贤鱼的个人社区&#xf…

使用FastJson进行驼峰下划线相互转换写法及误区

PropertyNamingStrategy 有四种序列化方式。 CamelCase策略,Java对象属性:personId,序列化后属性:persionId – 实际只改了首字母 大写变小写 PascalCase策略,Java对象属性:personId,序列化后属…

说透IO多路复用模型

在说IO多路复用模型之前,我们先来大致了解下Linux文件系统。在Linux系统中,不论是你的鼠标,键盘,还是打印机,甚至于连接到本机的socket client端,都是以文件描述符的形式存在于系统中,诸如此类&…

springboot项目打war包 部署到Tomcat

1、SpringBoot项目Pom文件修改 <!-- 打war包配置 --><packaging>war</packaging><!-- 打war包配置 --><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-war-plugin</artifactId><version>…

英美TOP名校对IB的申请要求汇总

英美TOP名校对IB的申请要求汇总 英国大学剑桥大学 IB要求 40-42分&#xff08;满分45&#xff09;&#xff0c;HL要求为776分。 学校可能要求申请者的某些科目成绩为7&#xff0c;视不同专业和学院而定。 对任何要求数学的专业&#xff0c;申请者需选Analysis and Approaches&a…

Google SEM和谷歌SEO的区别

很多人对Google SEM和Google SEO概念很模糊。米贸搜整理如下。看图: Google SEM和SEO的关系 在上图中&#xff0c; 最上面的部分属于Google SEM&#xff0c;即Google Ads广告推广&#xff0c;是一种按效果付费的广告&#xff1b; 底层属于Google SEO&#xff0c;也就是Googl…

前端基础_配置IIS服务器

配置IIS服务器 在应用程序完全离线之前&#xff0c;还需要正确地提供清单文件。清单文件必须有扩展名.manifest和正确的mime-type。 如果使用Apache这样的通用Web服务器&#xff0c;需要找到在AppServ/Apache2.2/conf文件夹中的mine.types文件并向其添加“text/cache-manifes…

React学习02-React面向组件编程

React 开发者工具 推荐使用Chrome或Edge浏览器&#xff0c;安装React Developer Tools&#xff08;Facebook出品&#xff09;。 安装完成后&#xff0c;访问使用React编写的页面时&#xff0c;图标会高亮&#xff08;开发环境为红色有debug标识&#xff0c;生产环境为蓝色&…

如何高效阅读一篇论文

如何阅读一篇论文&#xff08;做好阅读笔记&#xff09;阅读步骤第一遍第二遍第三遍上哪里找论文paperswithcodeconnectedpaperslabml.ai 深度学习论文实现labml.ai 热门研究论文阅读步骤 第一遍 第一次通过的目的是大致了解论文。 阅读作者姓名、标题、摘要、简介、小节标题…

create first django

django-admin startproject first 1. 运行第一个django.py文件 python manage.py runserver 2. 建立第一个app python manage.py startapp first_app 修改settings.py&#xff0c;将first_app加入到下面中 然后修改views.py 然后修改urls.py配置导入view文件 前面是一个正则表达…