Python ArcPy将多个文件夹内大量遥感影像批量四等分裁剪或切割为N×M个部分

news2024/11/24 6:21:48

  本文介绍基于Python中的ArcPy模块,基于一个大文件夹,遍历其中每一个子文件夹中所有的遥感影像栅格文件,并将原本的每一景遥感影像文件四等分切割,或裁剪为其他指定个数的小块的方法。

  首先明确一下我们的需求。现有一个大文件夹,其中具有多个子文件夹,如下图所示。

  其中,每一个子文件夹中,都含有大量的栅格遥感影像文件(我们这里就以.tif格式的栅格图像文件为例来介绍);例如,随意打开上图中任意一个子文件夹,都是如下图所示的情况。

  我们希望实现的是,将每一个子文件夹中的每一景遥感影像,都加以裁剪、切割,将原本的一景遥感影像切分为新的4份,相当于是四等分。这里大家想将原本的图像分为几部分都可以,即可以将原来的一景图像分为N * M个部分。

  了解了需求,我们就可以开始代码的撰写。本文所用代码,其实和我们之前的文章Python中ArcPy基于矢量要素批量将栅格影像切割为多个小部分(https://blog.csdn.net/zhebushibiaoshifu/article/details/128481851)、Python中ArcPy将多张栅格图像分割为多个网格小块的方法(https://blog.csdn.net/zhebushibiaoshifu/article/details/129018876)中提到的代码思路比较类似,但是在文件读取、裁剪参数设置等方面有所不同;大家如果有需要,可以先查阅以上这两篇文章。

  本文所用代码如下。

# -*- coding: utf-8 -*-
"""
Created on Mon Aug 28 22:39:52 2023

@author: fkxxgis
"""

import os
import arcpy

tif_file_path = r"E:/02_Project/202307_NDVIProduce/Beijing_Preprocessing/Original"
result_file_path = r"E:/02_Project/202307_NDVIProduce/Beijing_Preprocessing/Four_Result"
arcpy.env.parallelProcessingFactor = 0

for root, dirs, files in os.walk(tif_file_path):
    for dir_name in dirs:
        dir_path = os.path.join(root, dir_name)
        arcpy.env.workspace = dir_path
        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] + "_",
                                         "NUMBER_OF_TILES",
                                         "TIFF",
                                         "BILINEAR",
                                         "2 2",
                                         "#",
                                         "#",
                                         "PIXELS",
                                         "#",
                                         "#",
                                         "#",
                                         "#",
                                         "#",
                                         "0")
        print(dir_path)

  首先,我们需要设置输入和输出文件夹路径;其中,tif_file_path表示存放原始遥感影像的大文件夹路径,而result_file_path则表示存放拆分后结果的文件夹路径。随后,这里需要设置一下ArcPy的环境参数,通过arcpy.env.parallelProcessingFactor = 0这句代码禁用并行处理,以确保在处理期间不会产生问题——关于这一设置的原理,大家参考文章ArcGIS中ArcMap分割栅格Split Raster工具没有结果的解决(https://fkxxgis.blog.csdn.net/article/details/128474804)即可。

  随后,我们使用os.walk,遍历源文件夹中的所有子文件夹;对于每个子文件夹,设置ArcPy工作环境为该子文件夹的路径,从而使得我们可以使用 arcpy.ListRasters获取这一个子文件夹中的所有.tif格式的遥感影像文件。

  接下来,对于每个遥感影像,使用arcpy.SplitRaster_management函数对其进行切分。其中,第一个参数tif_file是要拆分的遥感影像的路径,第二个参数result_file_path是拆分后结果保存的文件夹路径,第三个参数tif_file.split(".tif")[0] + "_"是输出文件的前缀,这里使用原始文件名去掉.tif后缀,并在末尾添加下划线;接下来的参数用于设置拆分方式、输出格式、插值方法等。这里我们选择将遥感影像拆分为2 * 2块(大家如果需要将遥感影像拆分为其他的数量,修改这里就可以),插值方法为BILINEAR,输出格式为TIFF。最后一个参数0表示将原本遥感影像中的0值作为切割后小图像的NoData值。

  运行上述代码,我们即可在结果文件夹中,看到每一景遥感影像都已经被切分为了4份,且这里每一份的文件后都带有一个数字后缀(数字后缀从0开始计算,本文中就是0123);如下图所示。

  接下来,如果我们希望将这些得到的小遥感影像按照文件名的特征,复制、剪切到其他文件夹中,可以参考文章Python基于遥感影像的文件名称将不同文件复制到对应的文件夹中(https://blog.csdn.net/zhebushibiaoshifu/article/details/129125339)、Python遍历多个子文件夹并基于文件名特征将文件复制到不同的目标文件夹(https://blog.csdn.net/zhebushibiaoshifu/article/details/132332068)中提到的代码加以自动实现。

  至此,大功告成。

欢迎关注:疯狂学习GIS

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

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

相关文章

数据结构之单链表java实现

基本概念 链表是一种物理存储结构上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中指针链接次序实现的。和数组相比较,链表不需要指定大小,也不需要连续的地址。 单链表的基本设计思维是,利用结构体的设置&#xff0c…

平衡二叉树(AVL树)C++

目录 AVL树的概念 AVL树的节点结构 AVL树的插入 更新平衡节点 代码实现 AVL树的旋转 左单旋 右单旋 左右双旋 右左双旋 AVL树的删除 AVL树的查找 AVL树的高度 AVL树的判定 AVL树的遍历 AVL树的概念 二叉排序(搜索)树,虽然可以…

葡萄叶病害识别(图像连续识别和视频识别,Python代码,pyTorch框架)

葡萄叶病害识别(图像连续识别和视频识别,Python代码,pyTorch框架)_哔哩哔哩_bilibili 葡萄数据集 第一个文件夹为 Grape Black Measles(葡萄黑麻疹)病害(3783张) Grape Black rot葡…

108页石油石化5G智慧炼化厂整体方案PPT

导读:原文《108页石油石化5G智慧炼化厂整体方案PPT》(获取来源见文尾),本文精选其中精华及架构部分,逻辑清晰、内容完整,为快速形成售前方案提供参考。以下是部分内容, P P T 喜欢文章&#xf…

【BUG事务内消息发送】事务内消息发送,事务还未结束,消息发送已被消费,查无数据怎么解决?

问题描述 在一个事务内完成插入操作,通过MQ异步通知其他微服务进行事件处理。 由于是在事务内发送,其他服务消费消息,查询数据时还不存在如何解决呢? 解决方案 通过spring-tx包的TransactionSynchronizationManager事务管理器解…

管理与领导-58]:IT基层管理者 - 扩展技能 - 1 - 时间管理 -5- 持续改进— 时间管理的好习惯

前言: 对于大多数管理者而言,提高效能并不能一步到位,需要不断的实践、总结、持续的改进和优化,最终达到较高的效能,持续学习、持续改进是管理者一项终身精进的能力!!!养成时刻进行…

程序员赚钱的六种方式:技术实力和市场分析能力是关键

随着互联网的普及和发展,越来越多的人开始在网上寻找商机,其中程序员作为一个高技能的群体,可以利用自身的编程技术在网上获得收益。以下是一些程序员可以利用自己的编程技术在网上赚钱的途径: 开发软件:程序员可以利…

Spring Boot(Vue3+ElementPlus+Axios+MyBatisPlus+Spring Boot 前后端分离)【五】

😀前言 本篇博文是关于Spring Boot(Vue3ElementPlusAxiosMyBatisPlusSpring Boot 前后端分离)【五】,希望你能够喜欢 🏠个人主页:晨犀主页 🧑个人简介:大家好,我是晨犀,希望我的文章…

本地组策略编辑器找不到怎么解决?| 解决windows home 版本隐藏本地组策略编辑器的问题 | 简单的介绍本地组策略编辑器

一般的 Windows 非家庭系统中,本地组策略编辑器不会被隐藏,但在某些特定情况下,可能会受到限制或不可用。如果你无法访问本地组策略编辑器,并且认为应该可以访问,请确保你拥有管理员权限,并检查是否有任何系…

golang-bufio 缓冲读

缓冲 IO 计算机中我们常听到这样的两种程序优化方式: 以时间换空间以空间换时间 今天要来看的缓冲IO就是典型的以空间换时间,它的基本原理见上图。简单的解释就是:程序不再直接去读取底层的数据源,而是通过一个缓冲区来进行读取…

SPI3+DMA外设驱动-TFTLCD初始化

前言 (1)本系列是基于STM32的项目笔记,内容涵盖了STM32各种外设的使用,由浅入深。 (2)小编使用的单片机是STM32F105RCT6,项目笔记基于小编的实际项目,但是博客中的内容适用于各种单片…

算法leetcode|74. 搜索二维矩阵(rust重拳出击)

文章目录 74. 搜索二维矩阵:样例 1:样例 2:提示: 分析:题解:rust:go:c:python:java: 74. 搜索二维矩阵: 给你一个满足下述两条属性的…

新手将最简单的springboot部署上tomcat出现的意外问题

现阶段springboot部署到tomcat的文章一抓一大把且都相同,便贴一个地址以展示流程: SpringBoot打war包部署Tomcat(最全)_spring boot war 部署tomcat_聊Java的博客-CSDN博客 那么就说一下我出现的问题: 在完整复现流程且确认代码无误的情况下,部署到tomcat,此时问题出现了:启动…

vue中html引入使用<%= BASE_URL %>变量

首先使用src相对路径引入 注意: js 文件放在public文件下 不要放在assets静态资源文件下 否则 可能会报错 GET http://192.168.0.113:8080/src/assets/js/websockets.js net::ERR_ABORTED 500 (Internal Server Error) 正确使用如下:eg // html中引…

Midjourney学习(二)参数的基础

prompt的组成 prompt 可以由三部分组成&#xff0c; 第一部分是垫图部分&#xff0c;也就是一张网络图片 第二部分是文本描述内容 第三部分则是参数 参数列表 --aspect <value> 或者 --ar <value> 控制画面的比例&#xff0c;横竖比例 --version <value> -…

复数的四则运算(java版)

复数的四则运算&#xff08;java版&#xff09; 目录 复数的四则运算&#xff08;java版&#xff09;介绍复数的四则运算实现思路代码1、封装复数类2、测试复数类3、代码测试结果 介绍 复数&#xff0c;为实数的延伸&#xff0c;它使任一多项式方程都有根。复数当中有个“虚数单…

攻击与防御实战经验分享:分析真实的攻击事件和入侵行为,讨论防御方法和实践经验

章节 1: 前言 作为IT领域的从业者&#xff0c;我们时刻都面临着网络安全的挑战。攻击者不断寻找漏洞&#xff0c;而防御者则需要时刻保持警惕&#xff0c;采取最佳实践来保护系统和数据。在本文中&#xff0c;我们将分享一些真实的攻击事件和入侵行为&#xff0c;并探讨针对这…

JVM 垃圾收集

垃圾收集 分代理论Java 堆的内存分区不同分代收集垃圾收集算法 分代理论 弱分代假说&#xff1a;绝大多数对象都是朝生夕灭&#xff0c;即绝大多数对象都是用完很快需要销毁的。强分代假说&#xff1a;熬过多次垃圾收集过程的对象就越难以消亡&#xff0c;即如果对象经过多次垃…

6. vue-element-admin 二次开发避坑指南

vue-element-admin 二次开发避坑指南 1.1 前言1.1.1 切换标签时未保存页面的操作内容1.1.2 markdown 样式乱码1.1.3 修改默认尺寸1.1.4 当后端服务器宕机情况下页面加载层一直转圈无法停止&#xff0c;只能关闭页面1.1.5 隐藏齿轮 1.1 前言 上一篇博文&#xff0c;我们分享了vu…

HarmonyOS Codelab 优秀样例——购物应用,体验一次开发多端部署魅力

一. 样例介绍 本篇Codelab基于自适应布局和响应式布局&#xff0c;实现购物应用在手机、折叠屏、平板不同屏幕尺寸设备上按不同设计显示。通过三层工程结构组织代码&#xff0c;实现一次开发&#xff0c;多端部署 。 手机运行效果如图所示&#xff1a; 折叠屏运行效果图&#x…