利用python批量掩膜提取遥感图像

news2025/1/12 10:42:45

(1) 前言

遥感影像的提取和分析在地理信息系统、环境监测、农业、城市规划等领域具有重要的应用价值。按掩膜提取遥感影像是一种常用的方法,它可以通过定义掩膜来选择感兴趣的区域,并排除其他干扰因素。

按掩膜提取遥感影像的方法可以分为两个主要步骤:掩膜定义和影像提取。
掩膜定义
是指根据研究目的和需求,确定感兴趣的区域,并将其转化为掩膜图层。常用的掩膜定义方法包括手动绘制、阈值分割、形态学操作等。

影像提取
是指根据掩膜图层,将感兴趣的区域从原始遥感影像中提取出来。常用的影像提取方法包括像元级提取、基于对象的提取等。(本文主要方向)

  • 研究区概况:福建省厦门市
  • Landsat4 TM 影像,7波段共7景影像
  • Python版本:2.7.0
  • 文末附arcmap官方批量迭代器处理掩膜文件的代码,不建议使用(容易报错)
    在这里插入图片描述
  • 将批量掩膜结果导入arcgis
    在这里插入图片描述

(2) python代码实现

#!/usr/bin/env python
# -*- coding:utf-8 -*- 
"""
@author: LIFEI
@time: 2023/8/22 13:28 
@file: print_file.py
@project: main.py
@describe: CWNU
"""

import os
import arcpy
from arcpy import env
from arcpy.sa import *

# 创建批量掩膜提取遥感影像的类
class RSshapemask:
    # 构造函数
    def __init__(self,major_path,workplace,mask_path,outputpath):
        # 存放待掩膜影像的文件夹路径
        self.majorpath = major_path
        # arcpy的工作空间,代码并不会在此路径中生成数据
        self.workplace = workplace
        # 存放掩膜数据的文件夹路径,记住arcgis创建掩膜数据之后需要对其进行定义投影
        self.mask_path = mask_path
        # 掩膜之后的文件输出路径
        self.outputpath = outputpath

    # 批量读取文件的路径并存储于列表中的子函数
    def readimgpath(self):
        # 创建空列表
        img_path_base = []
        # os库中listdir作用于访问指定文件夹中的文件,注意是所有文件
        for filename in os.listdir(self.majorpath):
            # 字符串拼接文件夹和文件名
            img_path = self.majorpath + '/' + filename
            # 将拼接的字符串传入列表
            img_path_base.append(img_path)
            # 由于汉字编码的问题,输出采用英文打印
            print('The remote sensing image being read is:',img_path)
        print("全部读取完成!")
        return img_path_base # 返回列表

    # 批量掩膜提取输出的子函数
    def masekhandle(self,img_base):
        # 当前掩膜的工作空间,最好是独立于数据文件的其他路径
        env.workspace = self.workplace
        for i in range(0, len(img_base)):
            comFilePath = img_base[i]
            # 字符串拼接输出文件夹和文件名,必须含有后缀
            outFilePathName = self.outputpath + str(i + 1) + ".tif"
            # ExtractByMsak_sa函数专门用于掩膜提取的工具
            outExtractByMask = arcpy.gp.ExtractByMask_sa(comFilePath, self.mask_path, outFilePathName)
            # 目的防止出错
            env.overwriteOutput = True
            # 打印
            print("The remote sensing image being output for mask extraction is:",outFilePathName)
        print("掩膜提取完成!")

# 主函数
if __name__ == '__main__':
    # 构造函数参数设置,注意路径中为'/',直接复制粘贴的路径为'\'
    # 1、手动将'\'改为'/'; 2、在路径前面加上r防止路径转义 ;
    project = RSshapemask('D:/data/img',
                          "D:/data/result",
                          "D:/data/shp/shp.shp",
                          "D:/data/result/landsat4_TM")
    img_path_base = project.readimgpath() # 将第一个子函数返回列表赋值给img_path_base
    project.masekhandle(img_path_base) # 传入第二个子函数

(3) 运行结果

亲测有效,花费时间大约20秒
在这里插入图片描述
掩膜结果输出展示:
在这里插入图片描述

(4)arcmap官方批量迭代器处理掩膜文件的代码

在这里插入图片描述
提示:谨慎运行,大概率会报错

# -*- coding: utf-8 -*-
# ---------------------------------------------------------------------------
# mask.py
# Created on: 2023-08-21 14:54:08.00000
#   (generated by ArcGIS/ModelBuilder)
# Description: 
# ---------------------------------------------------------------------------

# Import arcpy module
import arcpy
# Load required toolboxes
arcpy.ImportToolbox("模型函数")
# Local variables:
img = "D:\\data\\img"
L5119043_04320100524_B10_TIF = "D:\\data\\img\\L5119043_04320100524_B10.TIF"
shp_shp = "D:\\data\\shp\\shp.shp"
v_name_ = "D:\\data\\result\\%name%"
名称 = "L5119043_04320100524_B10"
# Process: 迭代栅格数据
arcpy.IterateRasters_mb(img, "", "", "NOT_RECURSIVE")
# Process: 按掩膜提取
arcpy.gp.ExtractByMask_sa(L5119043_04320100524_B10_TIF, shp_shp, v_name_)

(4) 掩膜原理:

按掩膜提取遥感影像的原理是基于像元级别的图像处理。掩膜定义过程中,根据研究目的和需求,将感兴趣的区域转化为二值掩膜图层。在影像提取过程中,将掩膜图层与原始遥感影像进行像元级别的运算,提取出感兴趣的区域。这种方法可以排除其他干扰因素,提高遥感影像的准确性和可靠性。

(5) 掩膜作用:

按掩膜提取遥感影像的作用主要体现在以下几个方面:

区域选择:可以根据研究目的和需求,选择感兴趣的区域进行分析和研究。
干扰排除:可以排除其他干扰因素,提高遥感影像的准确性和可靠性。
数据提取:可以从大量的遥感影像数据中提取出感兴趣的区域,减少数据处理的复杂性和计算量。
最新技术:
随着遥感技术的不断发展,按掩膜提取遥感影像的方法也在不断更新和改进。最新的技术包括:

  • 深度学习方法:
    利用深度学习算法,可以自动学习和提取遥感影像中的特征,提高影像提取的准确性和效率。

  • 多源数据融合:
    将多源遥感数据进行融合,可以提供更全面和准确的遥感影像提取结果。
    高分辨率影像处理:针对高分辨率遥感影像,开发了一系列针对性的处理方法,提高影像提取的精度和细节表达能力。

  • 掩膜偏差求解:
    在按掩膜提取遥感影像的过程中,可能会出现掩膜偏差的情况。掩膜偏差是指由于掩膜定义不准确或影像提取算法的局限性,导致提取结果与实际情况存在差异。

为了解决掩膜偏差问题,可以采用以下方法:

  • 优化掩膜定义:
    通过改进掩膜定义方法,减少掩膜偏差的发生。
  • 算法改进:
    进影像提取算法,提高提取结果的准确性和可靠性。
  • 数据验证:
    通过野外调查和实地验证,对提取结果进行验证和修正。

(6)结论:

按掩膜提取遥感影像是一种常用的方法,它可以通过定义掩膜来选择感兴趣的区域,并排除其他干扰因素。随着遥感技术的不断发展,最新的技术如深度学习方法和多源数据融合等,为按掩膜提取遥感影像提供了更高的准确性和效率。然而,掩膜偏差仍然是一个需要解决的问题,需要通过优化掩膜定义、算法改进和数据验证等方法来减少偏差的发生。未来,随着技术的进一步发展,按掩膜提取遥感影像的方法将会更加精确和可靠。

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

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

相关文章

ssm网上服装销售系统源码和论文

ssm网上服装销售系统047 开发工具:idea 数据库mysql5.7 数据库链接工具:navcat,小海豚等 技术:ssm 目前互联网上的网上销售系统每天以惊人的速度增加,网上购物越来越成为现代年轻人的首选,足不出门便能选购好自己…

H5商城公众号商城系统源码 积分兑换商城系统独立后台

网购商城系统源码 积分兑换商城系统源码 独立后台附教程 测试环境:NginxPHP7.0MySQL5.6thinkphp伪静态

胖小酱之广告

广告是一种宣传手段,通过一定形式的媒体,向公众传递信息的方式。广告可以分为广义和狭义两种,其中广义广告是指不以营利为目的的广告,如政府公告、社会团体声明等;狭义广告则是指以营利为目的的广告,通常是…

【JAVA基础】 IO详解

【JAVA基础】 IO详解 文章目录 【JAVA基础】 IO详解一、概述二、IO流的作用三、IO流的使用场景四、IO流的分类4.1 传输数据的单位分:4.2 数据传输的方向分:4.3 流的角色的不同分: 五、IO流体系六、字节输入流InputStream七、字节输出流 Outpu…

Python 从入门到实践第3版(中文版)正式版+编制版+电子版

Python编程:从入门到实践(第3版) ([美] 埃里克 • 马瑟斯(Eric Matthes)) 2023 (Z-Library)

【算法日志】动态规划刷题:01背包问题(day36)

代码随想录刷题60Day 前言 今天主要讨论背包问题中的01背包问题,这类问题的难点在于怎样对问题进行数学建模。一旦思考好问题的解决方式,剩下的步骤就比较简单了。 分割等和子集 本题可采用暴力回溯,但复杂度比较高,所以采取动态…

解决Win10运行软件程序提示【管理员已阻止你运行此应用】

一、问题描述 在Win10系统打开软件,弹窗提示【管理员已阻止你运行此应用】,如下图所示: 二、问题分析 是由于Windows系统的安全策略设置影响,保护你的电脑不被恶意程序破坏;只用修改系统的安全策略即可。 三、解决办法…

多目标优化算法知识点梳理

EA进化算法 MOEA多目标进化算法 1.MOEA的分类 1.1 按不同的进化机制分类 基于分解的MOEA:是比较早起所使用的方法:聚集函数法。将被优化的所有子目标组合或聚集为单个目标,从而将多目标优化问题转换为单目标优化问题。 基于支配关系的MOE…

ACME协议申请泛域名证书

ACME协议申请泛域名证书 注册域名 namecheap迁移DNS到cloudflare创建API令牌 区域选择域名生成证书安装证书参考 注册域名 namecheap 迁移DNS到cloudflare 创建API令牌 区域选择域名 复制此令牌,令牌只显示一次。 生成证书 export CF_Token"API令牌"a…

从零实现深度学习框架——Transformer从菜鸟到高手(二)

引言 💡本文为🔗[从零实现深度学习框架]系列文章内部限免文章,更多限免文章见 🔗专栏目录。 本着“凡我不能创造的,我就不能理解”的思想,系列文章会基于纯Python和NumPy从零创建自己的类PyTorch深度学习框…

C++信息学奥赛2046:【例5.15】替换字母

这段代码的功能是对输入的字符串进行处理&#xff0c;将字符串中的字符 a 替换为字符 b 后输出结果。 #include<bits/stdc.h> using namespace std; int main() {string s; // 定义字符串变量s&#xff0c;用来存储输入的字符串char a, b; // 定义字符变量a和b&#xff…

港科夜闻|香港科大将与世界经济论坛合作举办大中华区首个全球青年领袖论坛领导力发展课程,与全球青年领袖共同探讨人工智能...

关注并星标 每周阅读港科夜闻 建立新视野 开启新思维 1、​香港科大将与世界经济论坛合作举办大中华区首个"全球青年领袖论坛领导力发展课程",与全球青年领袖共同探讨人工智能。香港科大下月将与世界经济论坛合作&#xff0c;接待40位来自包括欧洲、拉丁美洲、非洲和…

采用typescript编写,实现ofd前端预览、验章

前言 浏览器内核已支持pdf文件的渲染&#xff0c;这极大的方便了pdf文件的阅读和推广。ofd文件作为国产板式标准&#xff0c;急需一套在浏览器中渲染方案。 本人研究ofd多年&#xff0c;分别采用qt、c# 开发了ofd阅读器。本人非前端开发人员&#xff0c;对js、typescript并不熟…

GNU-gcc编译选项-1

include目录 -I &#xff0c;比如: -I. -I ./Platform/include -I ./Platform/include/prototypes -I ./tpm/include -I ./tpm/include/prototypes -I ./Simulator/include -I ./Simulator/include/prototypes 编译选项 在GCC编译器中&#xff0c;-D是一个编译选项&…

京东CEO许冉的第一份成绩单 我们打分:80!

大数据产业创新服务媒体 ——聚焦数据 改变商业 2023年8月16日&#xff0c;京东发布了截至2023年6月30日的二季度财报及中期业绩。这也是京东集团CEO许冉由CFO升任CEO后交出的第一份成绩单。 在看成绩单之前&#xff0c;我们先回顾一下许冉上任时京东的状况。当时&#xff0c;…

群晖上用Docker安装OpenWrt

什么是 OpenWrt &#xff1f; OpenWrt 是一款基于 Linux 系统的开源路由器操作系统&#xff0c;可以将普通的 PC 或嵌入式设备转变成为一个功能强大的路由器。 老苏对没玩过的东西总是比较好奇&#xff0c;准备用 Docker 搭建一个 OpenWrt 来研究研究。 网上管这种玩法叫旁路路…

Xmake v2.8.2 发布,官方包仓库数量突破 1k

Xmake 是一个基于 Lua 的轻量级跨平台构建工具。 它非常的轻量&#xff0c;没有任何依赖&#xff0c;因为它内置了 Lua 运行时。 它使用 xmake.lua 维护项目构建&#xff0c;相比 makefile/CMakeLists.txt&#xff0c;配置语法更加简洁直观&#xff0c;对新手非常友好&#x…

ChatGPT只是玩具:生成式人工智能在不同行业的应用

源自&#xff1a;IT经理网 生成式人工智能的十一个行业用例 打开生成式 AI的正确姿势 声明:公众号转载的文章及图片出于非商业性的教育和科研目的供大家参考和探讨&#xff0c;并不意味着支持其观点或证实其内容的真实性。版权归原作者所有&#xff0c;如转载稿涉及版权等问题&…

ssm在线云音乐系统的设计与实现

ssm在线云音乐系统的设计与实现042 开发工具&#xff1a;idea 数据库mysql5.7 数据库链接工具&#xff1a;navcat,小海豚等 技术&#xff1a;ssm 摘 要 随着移动互联网时代的发展&#xff0c;网络的使用越来越普及&#xff0c;用户在获取和存储信息方面也会有激动人心的…

代码随想录算法训练营(回溯总结篇)

回溯也可以说是暴力搜索&#xff08;最多剪枝一下&#xff09;。回溯是递归的副产品&#xff0c;只要有递归就会有回溯。 一.分类 1.组合问题 &#xff08;1&#xff09;按组合元素的个数 &#xff08;2&#xff09;按组合元素的总和 有重复元素 同一元素可以重复选&#x…