使用Py6S计算瑞利反射率教程

news2024/9/24 17:10:06

1、前言

那么,首先,什么是瑞利反射率? 好吧,这是由大气中的瑞利散射引起的反射率(在大气层顶部测量)。 这是大气中气体分子对光的波长依赖性散射——这是光穿过大气时不可避免的结果。

所以,关于如何在 Py6S 中计算它。 不幸的是,底层 6S 模型不提供瑞利反射率作为输出,因此我们必须做更多的工作来计算它。

2、Py6S参数设置

from Py6S import*

s = SixS()# Standard altitude settings for the sensor# and target
s.altitudes.set_sensor_satellite_level()
s.altitudes.set_target_sea_level()# Wavelength of 0.5nm
s.wavelength = Wavelength(0.5)

现在,要计算完全由瑞利散射引起的反射率,我们需要“关闭”所有可能影响反射率的其他因素。 首先,我们通过将地面反射率设置为零来“关闭”地面反射率,这样地面反射率就不会产生任何影响:

s.ground_reflectance = GroundReflectance.HomogeneousLambertian(0)

然后我们关闭气溶胶散射:

s.aero_profile = AeroProfile.PredefinedType(AeroProfile.NoAerosols)

以及气体对大气的吸收:

s.atmos_profile = AtmosProfile.PredefinedType(AtmosProfile.NoGaseousAbsorption)

然后我们可以运行模拟(使用 s.run())并查看输出。 最好的方法是运行:

print(s.outputs.fulltext)

查看 Py6S 提供的文本输出。 我们想要的值是“表观反射率”——这是大气层顶部的反射率。 因为我们已经关闭了其他一切,这将纯粹是由瑞利反射率引起的。

我们可以通过编程方式访问此值作为 s.outputs.apparent_reflectance。

所以,这就是如何获得瑞利反射率——但还有一些更有趣的事情要说……

首先,我们实际上不必将地面反射率设置为零。 如果我们将地面反射率设置为其他值——例如:

s.ground_reflectance = GroundReflectance.HomogeneousLambertian(GroundReflectance.GreenVegetation)

3、运行模拟并进行可视化

运行模拟,然后我们将得到表观辐射率的不同答案——因为现在考虑了地面反射率——但我们将看到我们想要的值作为大气固有反射率。 这是直接来自大气的反射率(在这种情况下仅来自瑞利散射,但在正常情况下,这也包括气溶胶散射)。 这可以作为 s.outputs.atmospheric_intrinsic_reflectance 以编程方式访问。

还有一件事,只是为了表明 Py6S 中的瑞利反射率的行为方式符合我们从物理学知识中所期望的方式……我们可以编写一些代码来提取各种波长的瑞利反射率并绘制图表 – 我们预计曲线呈指数下降,在低波长处显示高瑞利反射率,反之亦然。

下面的代码将执行此操作:

from Py6S import*import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
%matplotlib inline

s = SixS()

s.altitudes.set_sensor_satellite_level()
s.altitudes.set_target_sea_level()
s.aero_profile = AeroProfile.PredefinedType(AeroProfile.NoAerosols)
s.atmos_profile = AtmosProfile.PredefinedType(AtmosProfile.NoGaseousAbsorption)

wavelengths = np.arange(0.3,1.0,0.05)
results =[]for wv in wavelengths:
    s.wavelength = Wavelength(wv)
    s.run()

    results.append({'wavelength': wv,'rayleigh_refl': s.outputs.atmospheric_intrinsic_reflectance})

results = pd.DataFrame(results)

results.plot(x='wavelength', y='rayleigh_refl', style='x-', label='Rayleigh Reflectance', grid=True)
plt.xlabel('Wavelength ($\mu m$)')
plt.ylabel('Rayleigh Reflectance (no units)')

这是输出的下图,它准确地显示了物理学的预测:

我们存储模型结果的方式值得简要说明,因为这是我经常使用的模式。 每次运行模型时,一个新的字典都会附加到列表中——这个字典包含我们感兴趣的各种参数(在本例中只是波长)和我们感兴趣的各种结果(在本例中 只是瑞利反射)。 完成循环后,我们可以简单地将这个字典列表传递给 pd.DataFrame() 并返回一个漂亮的 pandas DataFrame——准备好进一步显示、绘图或分析。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【2022年度总结与2023展望】---22年故事不长,且听我来讲

🚀write in front🚀 📝个人主页:认真写博客的夏目浅石. 📣系列专栏:故事 文章目录前言一、高考前及高考后的暑假二、大一上的生活2.1 感受校园美景2.2 进入ACM实验室2.3 比赛和比赛经历三、那些帮助过我的人…

AlmaLinux 9 安装Oracle GraalVM Enterprise Edition 22.3.x

今天我们尝试一下在AlmaLinux 9 安装Oracle GraalVM Enterprise Edition 22.3.x。 GraalVM Enterprise 22是包含新功能的最新版本,但不是Long-Term-Support (LTS) 版本。 注意:下载Oracle GraalVM Enterprise Edition需要有Oracle账户,如果没…

六、pyhon操作mysql篇(黑马程序猿-python学习记录)

黑马程序猿的python学习视频:https://www.bilibili.com/video/BV1qW4y1a7fU/ 目录 1. 下载pymysql 2. 新建数据库 3. mysql服务器版本查询 4. 执行非查询性质的SQL 5. 执行查询性质的sql ​​​​​​​6. 执行新增sql 1. 下载pymysql 右下角点击版本 选择解释器设…

基于Markdown文件的个人wiki

节后第一更,老苏祝您兔年大吉,幸福安康,事事顺心! 什么是 wikmd ? wikmd 是一个基于文件的 wiki,旨在简化。这些文档完全用 Markdown 编写,使用 pandoc 将 Markdown 文件转换为 html5。 &#…

WPF__Viewport3D 学习记录

1、相机的摆放位置和姿态 Position 是指定照相机的位置,注意Z轴的坐标,如果Z轴值大于模型的Z轴值,那么镜头就在物体前面,反之在物体后面。因此,你可以设置 LookDirection 来调整相机的方向,Position是相机的…

NodeJS 之模块化

NodeJS 之模块化参考描述模块化优点分类加载模块作用域优点自定义模块modulemodule.exportsexports 与 module.exports示例示例一示例二示例三建议CommonJS规范CommonJS参考 项目参考搜索引擎Bing哔哩哔哩黑马程序员 描述 项目描述操作系统Windows 10 专业版NodeJS18.13.0 模…

MU-MIMO是什么

欢迎来到东用知识小课堂!1.什么是MIMOMIMO:Multiple-Intput Multiple-Output,即多入多出系统,这里的入和出是相对于发射天线和接受天线构成的天线系统来讲。通常的通信系统是单发单收,也就是SISO:Single-Input Single-…

【Bp2Lua】蓝图定义 Struct 和 Enum

【Bp2Lua】蓝图定义 Struct 和 Enum 背景 Enum Struct 结论 enum 可以保持不动,使用枚举值注释;如果C特别需要访问 enum,可以 C 化struct 必须 C 化 坑 首先,从字段访问都有字段名的坑,名字可以有空格&#xff0c…

maven-3-java调用python程序

【Java】使用Java调用Python的四种方法 fastjson的使用——JSON字符串、JSON对象、Java对象的互转 使用idea给Java程序打jar包(超简单 超详细) 1 环境准备 (1)新建Maven类型的项目,D:\processPython。 右键src/main/java,创建ja…

基于深度学习的文本分类6大算法-原理、结构、论文、源码打包分享

导读:文本分类是NLP领域一项基础工作,在工业界拥有大量且丰富的应用场景。传统的文本分类需要依赖很多词法、句法相关的human-extracted feature,自2012年深度学习技术快速发展之后,尤其是循环神经网络RNN、卷积神经网络CNN在NLP领…

【Leetcode面试常见题目题解】8. 合并两个有序链表

前言 本文是LC第21题&#xff1a;合并两个有序链表 题目描述 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 提示&#xff1a; 两个链表的节点数目范围是 [0, 50] -100 < Node.val < 100 l1 和 l2 均按 非递减顺…

产品设计-基础控件-信息反馈控件

产品设计-基础控件-信息反馈控件1.1 吐司提示1.2 对话框1.3 气泡卡片1.4 动作面板和弹出层1.4.1 动作面板1.4.2 弹出层1.5 进度条和加载状态1.5.1进度条1.5.2 加载状态1.1 吐司提示 用户输入信息后&#xff0c;一个好的产品设计会给予用户明确的信息反馈&#xff0c;例如&…

五、pyhon-地图可视化篇(黑马程序猿-python学习记录)

黑马程序猿的python学习视频&#xff1a;https://www.bilibili.com/video/BV1qW4y1a7fU/ 目录 1. 基础地图 2. 设置分段 1. 基础地图 from pyecharts.charts import Map # 准备地图对象 map Map() # 准备数据 data[ ("北京",99), ("上海",199), ("…

【2023.01.23】定时执行专家 V6.6 兔年春节版 - 更新日志

目录 ◆ 最新版下载链接 ◆ 软件更新日志 – TimingExecutor Full Change Log ▼ 2023-01-23 V6.6 ▼ 2023-01-20 V6.5 ▼ 2022-12-25 V6.4 ▼ 2022-11-15 V6.3 ▼ 2022-10-01 V6.2 ▼ 2022-07-30 V6.1&#xff08;Build 769.30072022&#xff09; ▼ 2022-0…

[前端笔记——CSS] 10.层叠与继承+选择器

[前端笔记——CSS] 10.层叠与继承选择器1.层叠与继承1.1 冲突规则1.2 继承1.3 层叠1.4 CSS位置的影响2.选择器2.1 选择器是什么&#xff1f;2.2 选择器列表2.3 选择器的种类类型、类和 ID 选择器标签属性选择器伪类与伪元素运算符选择器参考表1.层叠与继承 1.1 冲突规则 CSS …

动态规划(基础)

目录 一、算法思想 二、解题步骤 三、神奇的兔子序列 &#xff08;一&#xff09;问题 &#xff08;二&#xff09;递归公式 &#xff08;三&#xff09;以求解F(6)为例 &#xff08;四&#xff09;代码 四、01背包问题 &#xff08;一&#xff09;算法思想 &…

深入跨域问题(4) - 利用代理解决跨域

在上面的文章中&#xff0c;我们依此了解到&#xff0c;CORS &#xff0c;JSONP 两种方式实现跨域请求。 这两种方法&#xff0c;都需要 前后端进行配合 才能够正确地处理跨域问题。 今天介绍一种方法&#xff0c;不需要前后端配合&#xff0c;前端可独立完成。 众所周知&…

Java的基本语法格式

在编写JavaJavaJava代码过程中&#xff0c;必须先声明一个类&#xff0c;类使用class字眼定义&#xff0c;在class前面可以有一些修饰符&#xff1a; class的修饰符有&#xff1a; public&#xff0c;final(默认是default&#xff0c;只允许在同一包中进行访问) public&#xf…

C++STL-priority_queue的实现

大家好&#xff01;这篇文章&#xff0c;主要讲解一下这个优先级队列&#xff0c;还包含了仿函数等等的知识。希望大家能够一起加油&#xff01;&#xff01;&#xff01; 文章目录1. priority_queue的实现1.1 push函数1.2 pop函数1.3 top函数和empty函数2. 仿函数2.1 仿函数的…

【C进阶】模拟实现atoi函数

⭐博客主页&#xff1a;️CS semi主页 ⭐欢迎关注&#xff1a;点赞收藏留言 ⭐系列专栏&#xff1a;C语言进阶 ⭐代码仓库&#xff1a;C Advanced 家人们更新不易&#xff0c;你们的点赞和关注对我而言十分重要&#xff0c;友友们麻烦多多点赞&#xff0b;关注&#xff0c;你们…