当前位置: 首页 > news >正文

qq网站官网娄底网站开发

qq网站官网,娄底网站开发,免费代理游戏,谷歌搜索引擎免费本文介绍基于Python中的gdal模块#xff0c;对大量长时间序列的栅格遥感影像文件#xff0c;绘制其每一个波段中、若干随机指定的像元的时间序列曲线图的方法。 在之前的文章Python中GDAL批量绘制多时相栅格遥感影像的像元时间序列曲线图#xff08;https://blog.csdn.net/z…  本文介绍基于Python中的gdal模块对大量长时间序列的栅格遥感影像文件绘制其每一个波段中、若干随机指定的像元的时间序列曲线图的方法。 在之前的文章Python中GDAL批量绘制多时相栅格遥感影像的像元时间序列曲线图https://blog.csdn.net/zhebushibiaoshifu/article/details/128354151中我们就已经介绍过基于gdal模块对大量多时相栅格图像批量绘制像元时间序列折线图的方法。不过当时文章中的需求每1个时相都对应着3个不同的遥感影像文件而每1个遥感影像文件则都仅仅只有1个波段而在本文中我们每1景遥感影像都对应着2个波段我们最终绘制的多条曲线图也都来自于这每1景遥感影像的不同波段。 我们再来明确一下本文的需求。现在有一个文件夹其中放置了大量的遥感影像文件如下图所示。其中所有遥感影像都是同一地区、不同成像时间的图像其各自的空间参考信息、像元行数与列数等都是一致的文件名中有表示成像日期的具体字段且每1景遥感影像都具有2个波段。现在我们希望在遥感影像覆盖的区域内随机选取若干的像元基于这些像元我们绘制其随时间变化的曲线图。因为我们的每个遥感影像都有2个波段且都希望绘制出曲线图因此最终的曲线图一共就有2条曲线。 明确了需求我们就可以开始代码的撰写。本文用到的代码如下。 # -*- coding: utf-8 -*-Created on Tue Jul 25 23:04:41 2023author: fkxxgis import os import random import matplotlib.pyplot as plt from osgeo import gdaldef load_image(image_path):dataset gdal.Open(image_path)band1 dataset.GetRasterBand(1).ReadAsArray()band2 dataset.GetRasterBand(2).ReadAsArray()del datasetreturn band1, band2def plot_time_series(image_folder, pic_folder, num_pixels):image_files [file for file in os.listdir(image_folder) if file.endswith(.tif)]band1_merge, band2_merge [], []i 0for image_file in image_files:image_path os.path.join(image_folder, image_file)band1, band2 load_image(image_path)band1_merge.append(band1)band2_merge.append(band2)i 1x_size, y_size band1.shapepixel_indices random.sample(range(x_size * y_size), num_pixels)for pixel_index in pixel_indices:x, y divmod(pixel_index, y_size)band_list_1, band_list_2 [], []for i in range(len(band1_merge)):band_data_1 band1_merge[i]band_list_1.append(band_data_1[x, y])band_data_2 band2_merge[i]band_list_2.append(band_data_2[x, y])plt.figure()plt.plot(range(len(band1_merge)), band_list_1, labelBand 1)plt.plot(range(len(band1_merge)), band_list_2, labelBand 2)plt.xlabel(Time)plt.ylabel(NDVI)plt.ylim(0, 1000)plt.title(fTime Series for Pixel at ({x}, {y}))plt.legend()plt.savefig(os.path.join(pic_folder, str(x) _ str(y)))plt.show()image_folder_path E:/02_Project/Result/test pic_folder_path E:/02_Project/TIFF/Plot num_pixels 50 plot_time_series(image_folder_path, pic_folder_path, num_pixels)上述代码的具体含义如下。 首先我们导入了需要使用的库其中os用于处理文件路径和目录操作random用于随机选择像素matplotlib.pyplot则用于绘制图像。 随后我们定义函数load_image(image_path)这个函数接收一个影像文件路径image_path作为输入参数。随后在函数内使用gdal库打开该影像文件然后提取其第一个和第二个波段的数据并分别存储在band1和band2中。最后函数返回这两个波段的数据。 接下来我们定义函数plot_time_series(image_folder, pic_folder, num_pixels)这个函数接收三个输入参数分别为image_folder、pic_folder和num_pixels。其中image_folder为包含多个.tif格式的影像文件的文件夹路径pic_folder是保存生成的时间序列图像的文件夹路径而num_pixels则指定了随机选择的像素数量用于绘制时间序列图——这个参数设置为几我们最后就会得到几张结果图像。 在这个函数的内部我们通过os.listdir函数获取image_folder中所有以.tif结尾的影像文件并将这些文件名存储在image_files列表中。然后我们创建两个空列表band1_merge和band2_merge用于存储所有影像文件的2个波段数据。接下来我们遍历所有影像文件逐个加载每个影像文件的全部波段数据并将它们添加到对应的列表中。其次使用random.sample函数从像素索引的范围中随机选择num_pixels个像素的索引并保存在pixel_indices列表中。接下来我们遍历并恢复pixel_indices中的每个像素索引计算该像素在每个影像中的每个波段的时间序列数据并存储在band_list_1、band_list_2列表中。 随后我们即可绘制两个时间序列图分别表示2个波段在不同影像日期上的数值。最后我们将图像保存到指定的文件夹pic_folder中命名规则为x_y其中x与y分别代表像素的横、纵坐标。 执行上述代码我们即可在指定的文件夹路径下看到我们生成的多张曲线图如下图所示。 其中每1张图像都表示了我们2个波段在这段时间内的数值走势如下图所示。 至此大功告成。 欢迎关注疯狂学习GIS
http://www.zqtcl.cn/news/961786/

相关文章:

  • 一个公司做2个产品网站怎么做的wordpress网站怎么百度的到
  • 邓州做网站做网站seo怎么赚钱
  • 微信小程序开发步骤图长沙百度seo
  • 网站代做仿百度图片网页设计
  • 广州建设局网站首页网络营销专业的就业方向
  • wordpress单页seo关键词优化培训
  • 网站301多久短信营销平台
  • 江苏省现代化实训基地建设网站网站备案加速
  • 中国的网站域名云服务器发布网站
  • 免费seo网站自动推广软件做的好微信商城网站
  • 杭州网站建设方案优化腾讯网络游戏大全列表
  • 泰安网站建设收费标准直播视频app
  • 网站路径问题优秀的网站有哪些
  • 建设网站使用的工具大连免费网站制作
  • 专业的网站优化扬州市城乡建设网站
  • 射阳做网站的公司在哪品牌建设是指
  • 沈阳做网站好的网站分析论文
  • 做熟食的网站美食网站网站开发后端书籍
  • 做模板下载网站挣钱吗网站建设专业导航网站
  • 网站目录结构html静态网站作品
  • 南通建设局网站分类门户网站系统
  • 合肥网站建设企业秒玩小游戏入口
  • 个人做网站开发个人网站备案取名
  • 替代wordpress 搜索seo优化排名易下拉程序
  • asp.net 网站 方案小程序开发是前端还是后端
  • 网站开发 介绍 回扣建设项目验收在哪个网站公示
  • 建立网站免费如何做物流网站
  • 重庆网站设计费用wordpress自动翻页
  • 燕郊做网站的公司seo快速优化
  • 建了网站却搜不出来设计网站室内