Python遥感开发之批量镶嵌

Python遥感开发之批量镶嵌

  • 1.ArcGis镶嵌
  • 2.Arcpy实现镶嵌
    • 2.1 Arcpy实现单个镶嵌
    • 2.2 Arcpy实现批量镶嵌
  • 3.GDAL实现镶嵌

前言:主要介绍了遥感数据的镶嵌,其中包括使用ArcGis如何完成镶嵌,如何使用Arcpy和GDAL完成镶嵌。


1.ArcGis镶嵌

是ArcGis中的非常重要的一个功能,具体Arcgis中的使用可以参考以下博客。
《Arcgis使用教程(五)ARCGIS空间数据处理之影像镶嵌(拼接)与裁剪_arcgis镶嵌工具在哪里-CSDN博客》
简单理解就是由多个TIF合成一个TIF,再合成一个TIF的过程中,可以选择最大值法、中值法、均值法、最小值法等。至于为什么要进行合成,多数是因为单幅影像缺失比较大,需要多幅影像合成才可以,如下图所示!
在这里插入图片描述
在这里插入图片描述

2.Arcpy实现镶嵌

2.1 Arcpy实现单个镶嵌

其中32_BIT_FLOAT表示浮点型,16_BIT_UNSIGNED表示整型,MAXIMUM表示最大值合成,MEAN表示均值合成。

# encoding:utf-8
import os
from arcpy.management import MosaicToNewRaster

if __name__ == "__main__":

    file = unicode(r"E:\AAWORK\work\b1\20220816", "utf-8")
    out = unicode(r"E:\AAWORK\work\202208合成\bb16arcpy", "utf-8")
    os.chdir(file)
    names = os.listdir(file)
    list1 = []
    for name in names:
        list1.append(file+"\\"+name)
    print list1
    # mosaic = MosaicToNewRaster(list1, out, "202208_b20.tif", pixel_type="32_BIT_FLOAT",number_of_bands=1, mosaic_method="MAXIMUM")
    # mosaic = MosaicToNewRaster(list1, out, "20220816_b4.tif", pixel_type="16_BIT_UNSIGNED",number_of_bands=1, mosaic_method="MAXIMUM")
    mosaic = MosaicToNewRaster(list1, out, "20220816_mean_b1.tif", pixel_type="16_BIT_UNSIGNED",number_of_bands=1, mosaic_method="MEAN")

2.2 Arcpy实现批量镶嵌

在2.1的基础上增加了一个for遍历实现批量处理

# encoding:utf-8
import os
from arcpy.management import MosaicToNewRaster

if __name__ == "__main__":

    name_time = '202108'
    list_band_name = ["b1","b2","b3","b4","b6","b7","b19"]
    out = r"E:\AAWORK\work\{0}合成\bb31mean".format(name_time)
    out = unicode(out, "utf-8")
    for band_name in list_band_name:
        file = r"E:\AAWORK\work\{0}\{1}".format(band_name,name_time)
        file = unicode(file, "utf-8")
        os.chdir(file)
        names = os.listdir(file)
        list1 = []
        for name in names:
            list1.append(file+"\\"+name)
        file_name = "{0}_mean_{1}.tif".format(name_time,band_name)
        mosaic = MosaicToNewRaster(list1, out, file_name, pixel_type="16_BIT_UNSIGNED",number_of_bands=1, mosaic_method="MEAN")
        # mosaic = MosaicToNewRaster(list1, out, file_name, pixel_type="32_BIT_FLOAT",number_of_bands=1, mosaic_method="MEAN")
        print file_name

3.GDAL实现镶嵌

借助GDAL中的ReprojectImage方法实现镶嵌

import os
from osgeo import gdal
from osgeo import gdalconst

def get_data_list(file_path, out=""):
    list1 = []  # 文件的完整路径
    if os.path.isdir(file_path):
        fileList = os.listdir(file_path)
        if out != "":
            for f in fileList:
                out_data = out + "\\" + f
                out_data = out_data.replace(".HDF", "_ndvi.tif")
                list1.append(out_data)
        else:
            for f in fileList:
                pre_data = file_path + '\\' + f  # 文件的完整路径
                list1.append(pre_data)
        return list1


if __name__ == '__main__':
    inputfile_path = r"E:\AAWORK\work\b19\202208"
    output_tif = r"E:\AAWORK\work\202208合成\bb16\20220801-16_b19.tif"
    input_tiffs = get_data_list(inputfile_path)
    # 打开第一个TIFF文件以获取参考信息
    ref_ds = gdal.Open(input_tiffs[0], gdalconst.GA_ReadOnly)
    driver = gdal.GetDriverByName("GTiff")

    # 创建输出TIFF文件
    output_ds = driver.Create(output_tif, ref_ds.RasterXSize, ref_ds.RasterYSize, 1, gdalconst.GDT_Int32)
    output_ds.SetProjection(ref_ds.GetProjection())
    output_ds.SetGeoTransform(ref_ds.GetGeoTransform())

    # 逐一读取和镶嵌TIFF文件
    for input_tiff in input_tiffs:
        input_ds = gdal.Open(input_tiff, gdalconst.GA_ReadOnly)
        band = input_ds.GetRasterBand(1)
        # 镶嵌到输出文件并采用最大值法
        gdal.ReprojectImage(input_ds, output_ds, None, None, gdalconst.GRA_Max)
        # 释放内存
        input_ds = None
    # 关闭输出文件
    output_ds = None
    print("TIFF文件已镶嵌到 %s,采用最大值法。" % output_tif)

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

记一次若依二开的简单流程

记一次若依二开的简单流程 前言: 搞Java后端的应该都知道若依框架,是一个十分强大且功能齐全的开源的快速开发平台,且毫无保留给个人及企业免费使用。很多中小型公司会直接在该系统上进行二次开发使用。本文记录一次使用若依二开零编码的简单实现&#…

Fiddler抓包工具之fiddler设置断点和简单的并发测试

断点有两种方式: 1、全局断点 2、局部断点 全局断点 全局断点的特点是:不能针对一个请求,是给所有抓到的请求打断点 全局断点如何设置: 1、快速设置断点:直接点击底部状态栏断点处 ;点击第一下是请求…

vcruntime140.dll无法继续执行代码五种解决方法修复教程

在电脑使用过程中,我们可能会遇到一些常见的错误提示,其中之一就是“vcruntime140.dll丢失”。这个错误通常会导致某些应用程序无法正常运行。本文将介绍vcruntime140.dll丢失对电脑的影响以及如何修复这个问题,并提供一些预防措施&#xff0…

Ubuntu系统CLion安装与Ubuntu下菜单启动图标设置

Ubuntu系统CLion安装 pycharm 同理。 参考官网安装过程:官网安装过程 下载linux tar.gz包 # 解压 sudo tar -xzvf CLion-*.tar.gz -C /opt/ sh /opt/clion-*/bin/clion.sh其中第二个命令是启动CLion命令 clion安装完以后,不会在桌面或者菜单栏建立图…

半监督语义分割综述

paper link:https://arxiv.org/pdf/2302.09899.pdf 1. Introduction 图像分割是最古老、研究最广泛的计算机视觉 (CV) 问题之一。图像分割是指将图像划分为不同的非重叠区域,并将相应的标签分配给图像中的每个像素,最终获得ROI区域位置及其类…

Linux - 动态库的加载 和 重谈进程地址空间 - vscode 当中的 Remote - SSH 插件

推书:《现代操作系统》《操作系统--精髓于设计原理》《UNIX环境高级编程》 目录 前言 程序的加载 程序没有加载之前的地址(此时还是程序) 程序被加载到内存之后(此时是进程) 动态库的地址 静态库的不加载&#xff…

海外之路,英语相助:我的雅思考试之旅(成功以此申请到了港科大硕士)

文章目录 背景注册过程 雅思考试之旅全程记录2023年2月14日 - 报名补充2023年2月15日 - 模拟考试2023年2月16日 - 在线考试失利2023年2月20日 - 线下考试再战成功2023年2月23日 - 成绩出来了 考试经验寄送成绩问题请求额外的IELTS成绩寄送 结语 背景 在新加坡Shopee工作了两年…

Linux 内核源码各版本下载

下载地址: kernel/git/stable/linux.git - Linux kernel stable treehttps://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/refs/ 1. Linux 内核的基本概念: 内核是什么? 内核是操作系统的核心部分,负责管理系统…

Active Stereo Without Pattern Projector论文精读

1.背景补充 主动立体相机和被动立体相机的主要区别在于它们获取立体视觉信息的方式 主动立体相机12: 主动立体视觉是指寻找最佳的视角去重建目标或者场景1。主动视觉的实现方式通常有:改变环境中的光照条件、改变相机的视角、移动相机自身位置等&…

P1 嵌入式开发之什么是Linux应用开发

目录 前言 01 .Linux应用与裸机编程、驱动编程之间的区别 1.1裸机编程: 1.2 驱动编程 1.3应用编程 前言 🎬 个人主页:ChenPi 🐻推荐专栏1: 《C_ChenPi的博客-CSDN博客》✨✨✨ 🔥 推荐专栏2: 《Linux C应用编程&a…

蓝桥杯物联网竞赛_STM32L071_7_LORA发送接收

理论: LoRa(长距离低功耗无线射频)是利用无线电频谱中的电磁波进行通信的一种技术。它使用无线电频段中的射频信号来传输数据。电磁波是一种波动形式的能量,具有特定的频率和波长,可以传播在真空和大多数介质中&#x…

腾讯云云服务器功能与优势

腾讯云云服务器(Cloud Virtual Machine,CVM)是腾讯云提供的可扩展的计算服务。使用云服务器 CVM 避免了使用传统服务器时需要预估资源用量及前期投入的问题,帮助您在短时间内快速启动任意数量的云服务器并及时部署应用程序。 云服…

代码生成器——MyBatisX插件

MyBatisX插件 MyBatis-Plus为我们提供了强大的mapper和service模板,能够大大的提高开发效率。 但是在真正开发过程中,MyBatis-Plus并不能为我们解决所有问题,例如一些复杂的SQL,多表联查,我们就需要自己去编写代码和SQ…

Linux常见指令大全及周边知识:让你的命令行变得更加强大

文章目录 目录 文章目录 前言 一,Linux操作系统是啥? 二,Linux操作系统具有以下特点 三,指令的学习 1,指令是什么? 2,ls 指令及其常用的衍生指令: 周边知识: ls…

uniapp 微信小程序连接蓝牙卡死

解决方法,需要同意隐私保护协议,否则不能开启蓝牙权限和定位权限,会导致定位失败

C#-串口通信入门及进阶扩展

目录 一、串口相关参数介绍 1、端口(COM口) 2、波特率(Baud rate) 3、起始位 4、停止位(StopBits) 5、数据位 6、校验位 7、缓存区 二、串口通信助手 三、虚拟串口工具 四、进阶扩展 1、位运算…

五子棋AI算法自动测试方法

先前发了几篇五子棋游戏程序设计的博文,设计了游戏程序,也设计了AI智能奕棋的算法,运行程序检测算法的可行性,完成人机模式游戏功能的设置。 本文主要介绍自动测试算法的方法。 AI智能奕棋的算法testAIq( ),主要是检测…

利用段落检索和生成模型进行开放域问答12.2

利用段落检索和生成模型进行开放域问答 摘要引言2 相关工作3 方法 摘要 事实证明,开放域问答的生成模型具有竞争力,无需借助外部知识。虽然很有希望,但这种方法需要使用具有数十亿个参数的模型,而这些模型的训练和查询成本很高。…

opencv知识库:利用cv2.resize()函数进行图像缩放

引言 在numpy知识库:深入理解numpy.resize函数和数组的resize方法中,小编较为详细地探讨了numpy的resize函数背后的机理。从结果来看,numpy.resize函数并不适合对图像进行缩放操作。而opencv中的resize函数虽然和numpy的resize函数同名&…

结构体||联合体

1.结构体 1.1实际生活中一些东西往往有多个元素组成。如一名学生有身高、体重、名字、学号等。这时候就需要用到结构体。 结构体是一些值的结合,这些值被称为成员变量。结构体的每个成员可以是不同类型的变量,如:标量、数组、指针、甚至是其…