基于Python批量镶嵌拼接遥感影像/栅格数据(示例代码)
我之前分享过【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批量镶嵌拼接遥感影像/栅格数据 的文章就介绍到这了,更多相关Python遥感影像批量镶嵌内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
Windows环境下Python3.6.8 importError: DLLload failed:找不到指定的模块
这篇文章主要介绍了Windows环境下Python3.6.8 importError: DLLload failed:找不到指定的模块,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2020-11-11
最新评论