范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文

PythonGDAL绘制栅格图像的时间序列折线图

    本文介绍基于 Python 中 gdal  模块,对大量多时相栅格图像,批量绘制像元时间序列折线图的方法。
    首先,明确一下本文需要实现的需求:现有三个文件夹,其中 第一个文件夹 存放了某一研究区域原始的多时相栅格遥感影像数据(每一景 遥感影像 对应一个 时相 ,文件夹中有多景 遥感影像 ),每一景遥感影像都是 .tif  格式;第二个文件夹与第三个文件夹则分别存放了前述第一个文件夹中原始遥感影像基于2  种不同滤波方法处理后的遥感影像(同样是每一景遥感影像对应一个时相,文件夹中有多景遥感影像),每一景遥感影像同样也都是.tif  格式。我们希望分别针对这三个文件夹中的多张遥感影像数据,随机绘制部分像元对应的时间序列曲线图(每一个像元对应一张曲线图,一张曲线图中有三条曲线);每一张曲线图的最终结果都是如下所示的类似的样式,X  轴表示时间节点,Y  轴就是具体的像素值。
    知道了需求,我们便开始代码的书写。具体代码如下:# -*- coding: utf-8 -*- """ Created on Wed Dec 14 00:48:48 2022  @author: fkxxgis """  import os import numpy as np import matplotlib.pyplot as plt from osgeo import gdal  original_file_path = r"E:AllYearOriginal" hants_file_path = r"E:AllYearReconstruction" sg_file_path = r"E:AllYearSG" pic_file_path = r"E:AllYearPic" pic_num = 50 np.random.seed(6)  original_file_list = os.listdir(original_file_path) tem_raster = gdal.Open(os.path.join(original_file_path, original_file_list[0])) col_num = tem_raster.RasterXSize row_num = tem_raster.RasterYSize col_point_array = np.random.randint(0, col_num, pic_num) row_point_array = np.random.randint(0, row_num, pic_num) del tem_raster  hants_file_list = os.listdir(hants_file_path) start_day = hants_file_list[0][12:15] end_day = hants_file_list[-1][12:15] day_list = [x for x in range(int(start_day), int(end_day) + 20, 10)]  for i in range(pic_num):     original_pixel_list, hants_pixel_list, sg_pixel_list = [[] for x in range(3)]      for tif in original_file_list:         original_raster = gdal.Open(os.path.join(original_file_path, tif))         original_array = original_raster.ReadAsArray()         original_pixel_list.append(original_array[row_point_array[i],col_point_array[i]])      for tif in hants_file_list:         hants_raster = gdal.Open(os.path.join(hants_file_path, tif))         hants_array = hants_raster.ReadAsArray()         hants_pixel_list.append(hants_array[1, row_point_array[i],col_point_array[i]])      sg_file_list = os.listdir(sg_file_path)     for tif in sg_file_list:         sg_raster = gdal.Open(os.path.join(sg_file_path, tif))         sg_array = sg_raster.ReadAsArray()         sg_pixel_list.append(sg_array[1, row_point_array[i],col_point_array[i]])      pic_file_name = str(col_point_array[i]) + "_" + str(row_point_array[i]) + ".png"     plt.figure(dpi = 300)     plt.plot(original_pixel_list,color = "red", label = "Original")     plt.plot(hants_pixel_list,color = "green", label = "HANTS")     plt.plot(sg_pixel_list,color = "blue", label = "SG")     plt.legend()     plt.xticks(range(len(day_list)), day_list, fontsize = 11)     plt.xticks(rotation = 45)     plt.title(str(col_point_array[i]) + "_" + str(row_point_array[i]), fontweight = "bold")     plt.savefig(os.path.join(pic_file_path, pic_file_name))     plt.show()     plt.clf()      del original_raster     del hants_raster     del sg_raster
    其中,E:AllYearOriginal  为原始多时相遥感影像数据存放路径,也就是前述的第一个文件夹的路径;而E:AllYearR  与E:AllYearS  则是前述第二个文件夹和第三个文件夹对应的路径;E:AllYearPic  则是批量绘图后,图片保存的路径。这里请注意,在运行代码前我们需要在资源管理器中,将上述三个路径下的各文件以"名称"排序的方式进行排序(每一景遥感影像都是按照成像时间命名的)。此外,pic_num  则是需要加以绘图的像元个数,也就表明后期我们所生成的曲线图的张数为50  。
    代码的整体思路也非常简单。首先,我们借助os.listdir()  函数获取original_file_path  路径下的所有栅格遥感影像文件,在基于gdal.Open()  函数将这一文件下的第一景遥感影像打开后,获取其行数与列数;随后,通过np.random.randint()  函数生成两个随机数数组,分别对应着后期我们绘图的像元的行号与列号。
    在代码的下一部分(就是hants_file_list  开头的这一部分),我们是通过截取文件夹中图像的名称,来确定后期我们生成的时间序列曲线图中X  轴的标签(也就是每一个x  对应的时间节点是什么)——其中,这里的[12:15]  就表示对于我的栅格图像而言,其文件名的第13  到15  个字符表示了遥感影像的成像时间;大家在使用代码时依据自己的实际情况加以修改即可。在这里,我们得到的day_list  ,就是后期曲线图中X  轴各个标签的内容。
    随后,代码中最外层的for  循环部分,即为批量绘图工作的开始。我们前面选择好了50  个随机位置的像元,此时就可以遍历这些像元,对每一个像元在不同时相中的数值加以读取——通过.ReadAsArray()  函数将栅格图像各波段的信息读取为Array  格式,并通过对应的行号与列号加以像素值的获取;随后,将获取得到的像元在不同时相的数值通过.append()  函数依次放入前面新生成的列表中。
    在接下来,即可开始绘图的工作。其中,pic_file_name  表示每一张曲线图的文件名称,这是通过当前像元对应的行号与列号来命名的;plt.figure(dpi = 300)  表示设置绘图的DPI为300  。随后,再对每一张曲线图的图名、图例与坐标轴标签等加以配置,并通过plt.savefig()  函数将生成的图片保存在指定路径下。
    最终,我们得到的多张曲线图结果如下图所示,其文件名通过列号与行号分别表示了当前这张图是基于哪一个像元绘制得到的;其中,每一张图的具体样式就是本文开头所展示的那一张图片的样子。
    至此,大功告成。
  欢迎关注:疯狂学习GIS

深一度中国女篮存在的意义是什么?听韩旭告诉你2018年女篮世界杯,中国队以88比100负于美国队,这是中国女篮自1983年以来,与美国队交手的最小输球分差。彼时只有18岁的小将韩旭砍下20分和5个篮板,惊艳世界。四年后的女篮屋顶光伏,万亿市场!特斯拉重启,供应商躺赢?作者星空下的锅包肉编辑菠菜的星空排版星空下的小香梨近日,有不少媒体报道,特斯拉或将在第四季度重启屋顶光伏项目。来源界面新闻所谓屋顶光伏,即BIPV(光伏建筑一体化)的一种。马斯克此跑不动的搜狗文法人杂志全媒体记者李韵石提到搜狗,人们想到的,不止输入法,还有浏览器搜索引擎地图等众多应用。而这个曾经家喻户晓的名字,正逐渐从我们的生活里淡出。8月9日,国内搜索引擎巨头之一的搜10月换机优先考虑大内存,这几款12GB256GB手机,最低只要1899元10月换机优先考虑大内存,这几款12GB256GB手机,最低只要1899元。第一款iQOOZ51899元12GB256GB版本真心好评,1899就能入手,搭载骁龙778G处理器,功环时深度美国硅谷,为何被五角大楼政治化?来源环球时报环球时报综合报道美国国家安全局特定入侵行动办公室(OfficeofTailoredAccessOperation)网络攻击西北工业大学的不法行为本月被曝光,让人们对这个欧洲大量购买中国取暖设备,拜登后头还有大麻烦这段时间,美国一直拉着欧洲,要对俄罗斯实施新的能源禁令。美国先是想要对俄罗斯的石油设定价格上限,后面还想让欧洲对俄罗斯的天然气也设定最高价格。看得出来,为了打压俄罗斯,美国这是招数深一度中国女篮存在的意义是什么?听韩旭告诉你2018年女篮世界杯,中国队以88比100负于美国队,这是中国女篮自1983年以来,与美国队交手的最小输球分差。彼时只有18岁的小将韩旭砍下20分和5个篮板,惊艳世界。四年后的女篮逆水寒手游首测既然是千人千面,那我必是那个江湖gai溜子本文来自快爆编辑部野台首先是,大家先不要羡慕,我知道很多小伙伴想参加这次逆水寒手游的首测但是并没有获得资格。其次是,我确实也很开心能欧气爆棚混到这次资格哈哈哈哈哈哈可能有些看过野台逆水寒手游首测既然是千人千面,那我必是那个江湖gai溜子本文来自快爆编辑部野台首先是,大家先不要羡慕,我知道很多小伙伴想参加这次逆水寒手游的首测但是并没有获得资格。其次是,我确实也很开心能欧气爆棚混到这次资格哈哈哈哈哈哈可能有些看过野台大姨妈已经走了一个星期,如果这个时候同房,会不会意外怀孕对于育龄期的女性来说,每个月都会排卵一次排卵,也就是说,按照正常的周期来计算,女性差不多每个月会来一次姨妈经。如果是在经期,夫妻之间是要严格要做到不能够进行夫妻生活的,否则就会给女大姨妈已经走了一个星期,如果这个时候同房,会不会意外怀孕对于育龄期的女性来说,每个月都会排卵一次排卵,也就是说,按照正常的周期来计算,女性差不多每个月会来一次姨妈经。如果是在经期,夫妻之间是要严格要做到不能够进行夫妻生活的,否则就会给女
孕期注意事项今天来给大家统一回答一下问题,我看了一下,真的是吃方面的问题比较多,咱们的孕妇大部分还是小吃货!能不能吃麻辣烫?你们不觉得麻辣烫是一个蛮健康的食物吗?我个人还是挺喜欢的,但是啊,多准备去北京旅游的朋友存一下吧!很难找全的出行的实用建议!!1北京胡同游玩路线五道营胡同箭厂胡同国子监街北锣鼓巷鼓楼大街(南北锣鼓巷中间)2故宫游玩路线从午门进依次参观太和门太和殿中和殿保和殿慈宁宫慈宁宫花园寿康宫西六宫御为什么要摩旅,摩旅路上的注意事项!摩托车旅行是一种独特的旅行方式,它可以让你感受到路上的风景气氛和挑战。摩托车旅行有很多好处,比如你可以自由地选择你的路线和目的地,不受交通工具或时间的限制。还可以更贴近大自然,欣赏甘泉堡经开区招商推介会在北京举行3月3日,自治区人民政府驻北京办事处甘泉堡经开区联合举办的促投资对外开放展新局谋创新高质量发展谱新篇专场招商推介会在北京举行,现场有11家企业签约,签约金额达102亿元。近年来,甘非凡冬残奥一起向未来主题文化展在北京开展图为非凡冬残奥一起向未来主题文化展。主办方供图中新网北京3月4日电(记者徐婧)4日,纪念北京2022年冬残奥会成功举办一周年系列活动非凡冬残奥一起向未来主题文化展在北京开幕。本次展同型半胱氨酸高了,饮食应增加这些食物!同型半胱氨酸(Hcy)是一种氨基酸,是我们平时吃一些鸡蛋动物性食物时,里面的蛋氨酸代谢来的,由于身体有正常的代谢功能,同型半胱氨酸会经过甲基化和转硫化变成其它物质(体内需要维生素B胃到底会不会随着吃的食物变大?相信大家都有过这种经验,如果饿了两顿,那么下一顿吃的东西就会比上一顿多。但这也意味着,你的胃会变得比上一顿大,而这与吃得多,胃变大这个说法又是相矛盾的。胃真的会被撑大吗?答案是不一生化检查白蛋白低,饮食应注意什么?蛋白质对于人体很重要,人体蛋白质含量占1820左右。所以没有蛋白质就没有生命一肝生化检查中白蛋白低要重视,白蛋白又称清蛋白,由肝脏合成,是血浆中主要的蛋白成分。占血浆总蛋白的406专家发钱鼓励生孩,同时更要关注第一孩,这说出多少宝妈的心声头条创作挑战赛2022年,中国人口进入负增长,年出生人口不到1000万。人口负增长对于经济社会发展方方面面有何影响?这个问题值得我们去思考。在这个大背景前提下,两会之际,全国政协委专家们屡提生育问题,建议层出不穷,但大都没有触及问题的本质这世上,最不缺的可能就是专家建议。专家建议为什么屡次三番出现在网络热搜?也许是专家每天都在建议,也许是我们太在乎专家说了什么,也许是网络太过发达,导致信息传播速度变快,专家前脚提出又失准了?专家预测的第二波感染高峰为何现在还没到来?自从疫情放开后,我们对疫情的各种猜测就从未停止过,当第一波感染高峰过去,我们才切切实实的感受到病毒的威力!此前,就有多位专家预测,春节后将迎来新一波感染高峰?那么,专家为什么这样说