首页 > 编程语言 >【Python&RS】基于Python批量镶嵌拼接遥感影像/栅格数据

【Python&RS】基于Python批量镶嵌拼接遥感影像/栅格数据

时间:2023-10-20 10:57:41浏览次数:42  
标签:RS Python 投影 栅格数据 影像 img2 path ds gdal

        我之前分享过【Python&RS】基于GDAL镶嵌拼接遥感影像,但是没有加入批量处理的代码。最近正好有这个需求,所以就对原来的代码进行了优化加入了批量拼接的代码。现在只需输入一个文件夹即可将其中的影像全部镶嵌起来。

 一、导入GDAL库

from osgeo import gdal

二、查看影像信息

        为了凑字数的,可以查看影像的投影、宽度、高度、波段数等信息。不过需要注意的是在ENVI中没有投影坐标系,只有地理坐标系是做不了镶嵌拼接的。

        这个代码我还不太清楚能不能不要投影坐标系进行拼接,你们可以自己试试。但最好还是用包含投影坐标系的影像进行拼接。所以在拼接之前就可以用这段代码先看一看。

def Get_data(filepath):
    ds = gdal.Open(filepath)  # 打开数据集dataset
    ds_width = ds.RasterXSize  # 获取数据宽度
    ds_height = ds.RasterYSize  # 获取数据高度
    ds_bands = ds.RasterCount  # 获取波段数
    ds_geo = ds.GetGeoTransform()  # 获取仿射地理变换参数
    ds_prj = ds.GetProjection()  # 获取投影信息
    print("影像的宽度为:" + str(ds_width))
    print("影像的高度为:" + str(ds_height))
    print("仿射地理变换参数为:" + str(ds_geo))
    print("投影坐标系为:" + str(ds_prj))
    # data = ds.ReadAsArray(0, 0, ds_width, ds_height)  # 以数组的形式读取整个数据集

三、镶嵌模块

        代码中的srcSRS,dstSRS分别是输入投影和输出投影,这里用一样的就行了。因为我们做的是镶嵌操作,肯定是不用动原始坐标系的。其他的参数都在代码中表明了,这里就不介绍了,如果大家有什么问题,可以留言交流。

def Mosaic_GDAL(path_image):
    """
    :param path_image: 需要镶嵌影像的路径
    :return: None
    """
    path = path_image
    path_lists = os.listdir(path)
    for i in range(0, len(path_lists)):
        print("正在处理第%s幅影像......" % i)
        if i == 0:
            continue
        elif i == 1:
            img1 = gdal.Open(path+path_lists[0], gdal.GA_ReadOnly)
            img2 = gdal.Open(path+path_lists[1], gdal.GA_ReadOnly)
            input_proj = img2.GetProjection()
            options = gdal.WarpOptions(srcSRS=input_proj, dstSRS=input_proj, format='GTiff',
                                       resampleAlg=gdal.GRA_NearestNeighbour, callback=Show_Progress)
            # 输入投影,输出投影,输出格式,重采样方法
            gdal.Warp(path+"%s.tif" % (i+1), [img1, img2], options=options)  # 输出路径,需要镶嵌的数据,参数配置
            img1 = None
            img2 = None
            del img1, img2
        else:
            img1 = gdal.Open(path+"%s.tif" % i, gdal.GA_ReadOnly)
            img2 = gdal.Open(path + path_lists[i], gdal.GA_ReadOnly)
            input_proj = img2.GetProjection()
            options = gdal.WarpOptions(srcSRS=input_proj, dstSRS=input_proj, format='GTiff',
                                       resampleAlg=gdal.GRA_NearestNeighbour, callback=Show_Progress)
            # 输入投影,输出投影,输出格式,重采样方法
            gdal.Warp(path + "%s.tif" % (i + 1), [img1, img2], options=options)  # 输出路径,需要镶嵌的数据,参数配置
            img1 = None
            img2 = None
            del img1, img2

        使用时直接修改Mosaic_GDAL函数的入参就行了,选择数据存放的路径会自动拼接,命名也会自己设置无需额外修改。

        如果大家在学习Python或者RS时有什么问题,可以随时留言交流!如果大家对批量处理有兴趣同样可以留言给博主,博主会分享相关代码以供学习!

标签:RS,Python,投影,栅格数据,影像,img2,path,ds,gdal
From: https://www.cnblogs.com/RSran/p/17776513.html

相关文章

  • Python猴子补丁
    Python猴子补丁介绍猴子补丁是一种替换方法的方式。因为python是动态语言,所以我们在方法执行之前,可以将方法替换,以达到我们期望的结果。需要理解的是,python的方法在加上括号之前,代表的的只是方法的内存,可以被当做一个变量进行传递。使用#示例classTest:  a=1 ......
  • [920] Copy the font style from one cell in a table of a Word document to another
    TocopythefontstylefromonecellinatableofaWorddocumenttoanothercellusingPythonandthepython-docxlibrary,youcanaccessthefontpropertiesofthesourcecellandapplythemtothetargetcell.Here'showyoucandoit:First,ma......
  • 【PowerShell】Invoke-WebRequest和Invoke-RestMethod
    ##PublicfreeRestfulAPIURL ##https://documenter.getpostman.com/view/8854915/Szf7znEe#intro#Example01#--------------------------------------------------------------$url="https://cat-fact.herokuapp.com/facts/"$r=Invoke-WebReques......
  • 论文阅读:Point-BERT: Pre-training 3D Point Cloud Transformers with Masked Point M
    Point-BERT:Pre-training3DPointCloudTransformerswith MaskedPointModeling摘要我们提出了Point-BERT,一个学习注意力的新范式,将BERT[8]的概念推广到三维点云。受BERT的启发,我们设计了一个掩蔽点建模(MPM)任务来预先训练点云注意力。具体来说,我们首先将点云划分为几个局部的......
  • python中json模块
    importjsonstring='{"name":"xxx","age":18,"object":[{"数学":100,"语文":90,"英语":70}]}'print(string)print(type(string))#将json字符串转为python字典data_dic=json.loads(string)print......
  • python sys.path介绍
    pythonsys.path介绍介绍当我们导入模块时,python解释器会通过sys.path中的环境变量搜索。sys.path是一个列表,里面包含已添加到环境变量中的路径。使用sys.path.append({路径})可以往里面添加自定义的环境变量。使用当我们想要导入某个文件中的文件失败时,可以将其文件夹路......
  • [学习编程]pythontip习题心得
    题目最小缺失数编写一个Python程序,找出列表中最小的缺失整数(理想情况下为连续数字)。输入的列表保证只有一个缺失数字,而且列表中的数字都是正整数,列表中的数字不会重复,且最小数字为起始数字。比如是[2,3,4]的话,缺失值是5,而不是1,而[2,4]缺失数字为3。#用你的代码替换___......
  • Python用KNN(K-近邻)回归、分类、异常值检测预测房价、最优K值选取、误差评估可视化
    全文链接:https://tecdat.cn/?p=33917原文出处:拓端数据部落公众号KNN是一种非参数学习算法,这意味着它不会对底层数据做出任何假设。这是一个非常有用的特性,因为大多数客户的数据并不真正遵循任何理论假设,例如线性可分性,均匀分布等等。何时应使用KNN?假设您想要租一间公寓并最近......
  • 二、关于python语言的介绍与安装
    二、关于Python语言的介绍与安装1.什么是Python语言?在前面我们知道了,Python就是我们用于与计算机进行交流的语言,这里我们在解释一下,Python有一个软件我们叫做解释器的东西,这就是把我们编写的代码转换成计算机语言,让计算机能看懂,怎么运行的呢,在目前的高级语言由大致分为两种解释......
  • python
    num=int(input("请输入一个数字:"))square=num*num;print(num,"的平方为:",square)a=int(input("请输入矩形的高:"))b=int(input("请输入矩形的宽:"))print("矩形的面积为:",end="")print(a*b)foriinrange(1,101):print(i,en......