Python计算日照总辐射量

2023-11-08

import numpy as np
from datetime import datetime
import pandas as pd


def get_dayofyear(date_string):
    '''
    :param date_string: 字符串时间格式
    :return: 某日期属于一年中的第几天
    '''
    # date_string = '20230131'
    # 将字符串转换为datetime对象
    date = datetime.strptime(date_string, '%Y%m%d')
    # 使用day属性得到这一天是该年的第几天
    day_of_year = date.timetuple().tm_yday
    return day_of_year


def get_ra(lat, yyyymmdd):
    '''
    :param lat: 所在地维度
    :param yyyymmdd: 所在时间,yyyymmdd格式
    :return: ra:大气外太阳辐射;24 / np.pi * theta_sun:理论日照时长
    '''
    J = get_dayofyear(yyyymmdd)
    phi = lat / 180 * np.pi
    epsilon_sun = 0.409 * np.sin(2 * np.pi / 365 * J - 1.39)
    dr = 1 + 0.33 * np.cos(2 * np.pi / 365 * J)
    theta_sun = np.arccos(-np.tan(phi) * np.tan(epsilon_sun))
    ra = 0.0820 * 24 * 60 / np.pi * dr * (
            theta_sun * np.sin(phi) * np.sin(epsilon_sun) + np.cos(phi) * np.cos(epsilon_sun) * np.sin(theta_sun))
    return ra, 24 / np.pi * theta_sun


if __name__ == '__main__':
    df_sun = pd.read_csv('日照时数.csv', na_values=9999)  # 读取数据
    sun_hour = np.array(df_sun.iloc[6212:21918, :])  # 选出1978-2020年日照数据
    solar_radiation = np.full_like(sun_hour, np.nan)
    for i in range(np.size(sun_hour, 0)):
        for j in range(1, np.size(sun_hour, 1)):
            ra, N = get_ra(df_sun.iloc[2, j], str(int(sun_hour[i, 0])))
            solar_radiation[i, j] = (0.16 + 0.58 * sun_hour[i, j] / N) * ra
    solar_radiation[:, 0] = sun_hour[:, 0]
    np.save('solar_radiation.npy', solar_radiation)

参考文献:

  1. 杨勤.宁夏区域太阳日辐射通量计算方法的研究[J].干旱气象,2007(03):23-27.
  2. 杨勤,梁旭,赵光平等.宁夏太阳辐射逐日、月、年总量的变化特征[J].干旱区研究,2009,26(03):413-423.DOI:10.13866/j.azr.2009.03.008.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python计算日照总辐射量 的相关文章

  • 使用Python开发Web应用程序

    我一直在用 python 做一些工作 但这都是针对独立应用程序的 我很想知道 python 的任何分支是否支持 Web 开发 有人还会建议一个好的教程或网站吗 我可以从中学习一些使用 python 进行 Web 开发的基础知识 既然大家都说
  • 如何在刻度标签和轴之间添加空间

    我已成功增加刻度标签的字体 但现在它们距离轴太近了 我想在刻度标签和轴之间添加一点呼吸空间 如果您不想全局更改间距 通过编辑 rcParams 并且想要更简洁的方法 请尝试以下操作 ax tick params axis both whic
  • 如何在android上的python kivy中关闭应用程序后使服务继续工作

    我希望我的服务在关闭应用程序后继续工作 但我做不到 我听说我应该使用startForeground 但如何在Python中做到这一点呢 应用程序代码 from kivy app import App from kivy uix floatl
  • 导入错误:没有名为 _ssl 的模块

    带 Python 2 7 的 Ubuntu Maverick 我不知道如何解决以下导入错误 gt gt gt import ssl Traceback most recent call last File
  • 为 pandas 数据透视表中的每个值列定义 aggfunc

    试图生成具有多个 值 列的数据透视表 我知道我可以使用 aggfunc 按照我想要的方式聚合值 但是如果我不想对两列求和或求平均值 而是想要一列的总和 同时求另一列的平均值 该怎么办 那么使用 pandas 可以做到这一点吗 df pd D
  • 安装后 Anaconda 提示损坏

    我刚刚安装张量流GPU创建单独的后环境按照以下指示here https github com antoniosehk keras tensorflow windows installation 但是 安装后当我关闭提示窗口并打开新航站楼弹出
  • 从 scikit-learn 导入 make_blobs [重复]

    这个问题在这里已经有答案了 我收到下一个警告 D Programming Python ML venv lib site packages sklearn utils deprecation py 77 DeprecationWarning
  • keras加载模型错误尝试将包含17层的权重文件加载到0层的模型中

    我目前正在使用 keras 开发 vgg16 模型 我用我的一些图层微调 vgg 模型 拟合我的模型 训练 后 我保存我的模型model save name h5 可以毫无问题地保存 但是 当我尝试使用以下命令重新加载模型时load mod
  • python 集合可以包含的值的数量是否有限制?

    我正在尝试使用 python 设置作为 mysql 表中 ids 的过滤器 python集存储了所有要过滤的id 现在大约有30000个 这个数字会随着时间的推移慢慢增长 我担心python集的最大容量 它可以包含的元素数量有限制吗 您最大
  • Python:字符串不会转换为浮点数[重复]

    这个问题在这里已经有答案了 我几个小时前写了这个程序 while True print What would you like me to double line raw input gt if line done break else f
  • Pandas Dataframe 中 bool 值的条件前向填充

    问题 如何转发 fill boolTruepandas 数据框中的值 如果是当天的第一个条目 True 到一天结束时 请参阅以下示例和所需的输出 Data import pandas as pd import numpy as np df
  • Geopandas 设置几何图形:MultiPolygon“等于 len 键和值”的 ValueError

    我有 2 个带有几何列的地理数据框 我将一些几何图形从 1 个复制到另一个 这对于多边形效果很好 但对于任何 有效 多多边形都会返回 ValueError 请指教如何解决这个问题 我不知道是否 如何 为什么应该更改 MultiPolygon
  • Python - 按月对日期进行分组

    这是一个简单的问题 起初我认为很简单而忽略了它 一个小时过去了 我不太确定 所以 我有一个Python列表datetime对象 我想用图表来表示它们 x 值是年份和月份 y 值是此列表中本月发生的日期对象的数量 也许一个例子可以更好地证明这
  • Python - 在窗口最小化或隐藏时使用 pywinauto 控制窗口

    我正在尝试做的事情 我正在尝试使用 pywinauto 在 python 中创建一个脚本 以在后台自动安装 notepad 隐藏或最小化 notepad 只是一个示例 因为我将编辑它以与其他软件一起使用 Problem 问题是我想在安装程序
  • 从 pygame 获取 numpy 数组

    我想通过 python 访问我的网络摄像头 不幸的是 由于网络摄像头的原因 openCV 无法工作 Pygame camera 使用以下代码就像魅力一样 from pygame import camera display camera in
  • VSCode:调试配置中的 Python 路径无效

    对 Python 和 VSCode 以及 stackoverflow 非常陌生 直到最近 我已经使用了大约 3 个月 一切都很好 当尝试在调试器中运行任何基本的 Python 程序时 弹出窗口The Python path in your
  • 用于运行可执行文件的python多线程进程

    我正在尝试将一个在 Windows 上运行可执行文件并管理文本输出文件的 python 脚本升级到使用多线程进程的版本 以便我可以利用多个核心 我有四个独立版本的可执行文件 每个线程都知道要访问它们 这部分工作正常 我遇到问题的地方是当它们
  • 在python中,如何仅搜索所选子字符串之前的一个单词

    给定文本文件中的长行列表 我只想返回紧邻其前面的子字符串 例如单词狗 描述狗的单词 例如 假设有这些行包含狗 hotdog big dog is dogged dog spy with my dog brown dogs 在这种情况下 期望
  • 使用基于正则表达式的部分匹配来选择 Pandas 数据帧的子数据帧

    我有一个 Pandas 数据框 它有两列 一列 进程参数 列 包含字符串 另一列 值 列 包含相应的浮点值 我需要过滤出部分匹配列 过程参数 中的一组键的子数据帧 并提取与这些键匹配的数据帧的两列 df pd DataFrame Proce
  • Python 分析:“‘select.poll’对象的‘poll’方法”是什么?

    我已经使用 python 分析了我的 python 代码cProfile模块并得到以下结果 ncalls tottime percall cumtime percall filename lineno function 13937860 9

随机推荐

  • Android常用知识点总结

    一 选择题 1 Android项目中的主题和样式资源 通常放在 C 目录 A res drawable B res layout C res values D assets 2 Dalvik虚拟机属于Android系统架构中的 C A 应用
  • Torchvision.ops.batched_nms() 和 nms()区别

    区别 batched nms 根据每个类别进行过滤 只对同一种类别进行计算IOU和阈值过滤 nms 不区分类别对所有bbox进行过滤 如果有不同类别的bbox重叠的话会导致被过滤掉并不会分开计算 Torchvision ops nms 参数
  • 干货!人体姿态估计与运动预测

    点击蓝字 关注我们 AI TIME欢迎每一位AI爱好者的加入 我们人类具有识别人体姿态 预测短期未来的能力 例如在走路时我们会识别对向行人的姿态 根据对他们未来运动的预测来决定往左走还是往右走 在打篮球或踢足球时会根据对防守球员的姿态 运动
  • ASP.NET Core学习路线图

    说明 1 先决条件 C https www pluralsight com paths csharp Entity Framework https www pluralsight com search q entity 20framewor
  • 最新的ssm毕业设计题目50例

    ssm毕业设计题目1 10题 1 基于SSM的车险管理系统设计与实现 2 基于SSM框架的学子商城系统的设计与实现 3 基于SSM的高校排课系统的研究与应用 4 基于SSM的湖南省入境旅游客源市场结构分析 5 基于SSM模型的重庆制造业主导
  • VOSviewer安装及配置

    VOSviewer安装网址 VOSviewer Download 根据自己电脑安装 并且VOSviewer要求JAVA 使用的是1 8 0 https www oracle com technetwork java javase downl
  • 关于maven <dependencyManagement>标签的问题

    项目场景 我giao 大家好跟大家分享一个使用maven时发现的小问题 关于父工程pom文件中 dependencyManagement 标签的问题 问题描述 在新建夫工程pom文件时 在内部的依赖不会马上到中央仓库中去下载jar包 而是在
  • 李宏毅-DeepLearning-2017-Unsupervised Learning:Neighbor Embedding

    数据降维的方法 Manifold Learning 流行学习 1 什么是流形 流形学习的观点 认为我们所能观察到的数据实际上是由一个低维流行映射到高维空间的 由于数据内部特征的限制 一些高维中的数据会产生维度上的冗余 实际上这些数据只要比较
  • 将一台笔记本电脑作为另一台笔记本电脑的扩展显示器

    步骤 步骤1 打开设置 可以使用 快捷键win i 打开设置 然后点击 系统 步骤2 点击 投影到此电脑 可以看到右边的选项是灰色 不可以选 然后点击 可选功能 如果是可选的 可以跳过步骤4 步骤3 查找是否安装了 无线显示器 如果没有安装
  • 【机器学习】Tensorflow概率编程:线性混合模型

    线性模型是我们最常见到的 最理想的数学模型 基本的线性模型是数据科学入门的基本案例 然而现实生活中的线性问题 很大几率不适用于基本的线性模型 需要使用线性混合模型来描述 Tensorflow edward提供对这类问题的解决方案 大部分数据
  • 记一次文件因content-type问题无法打开的经历

    记一次文件因content type问题无法打开的经历 引 场景 方案 Jsoup的Content Type simplemagic file can t open 流不可重复消费问题 Tika 总结 引 在Http请求头和响应头都有这个a
  • 什么是 Scrum 工件?

    What is Scrum Artifacts 随着我们的技术系统和项目在规模和复杂性方面不断发展 Scrum 会议和敏捷方法已成为许多公司开发过程中不可或缺的一部分 Scrum 会议是团队成员协作的好方法 可确保队列中的所有项目和任务都得
  • IBM RATIONAL BUILDFORGE入门

    最近在项目中使用了BUILDFORGE作为自动化部署工具进行项目的自动化部署 在此写下自己在该工具中入门的心得 1 首先需要建立服务器认证 可以为多台服务器设置相同的一个服务器认证 用该认证中的用户名和密码去登录服务器 2 其次建立服务器
  • Redis的RDB和AOF两种存储方式

    Redis其实就是一个用C语言写的一个程序 这个程序用来存储 key value数据 数据先放在内存 然后写入磁盘指定位置 这么理解十分肤浅 但tm好像就是这样啊 下面我们梳理一下Redis存储两种方式 RDB和AOF 第一种方式 RDB
  • Python求水仙花数

    水仙花数 Narcissistic Number 是一个三位数 其各位数字的立方和等于该数本身 例如 153 1 3 5 3 3 3 因此153是一个水仙花数 以下是一个简单的Python代码来找出所有的水仙花数 python def is
  • python数据分许基础

    1 单选题 单选题 下列关于数据和数据分析的说法正确的是 A 数据就是数据库中的表格 B 文字 声音 图像这些都是数据 C 数据分析的数据只能是结构化的 D 数据分析不可能预测未来几天的天气变化 正确答案 B 文字 声音 图像这些都是数据
  • 理解JavaScript的编译过程与运行机制

    JavaScript引擎 不是逐条解释执行javaScript代码 而是按照代码块一段段解释执行 所谓代码块就是使用
  • LeetCode 172. Factorial Trailing Zeroes

    Given an integer n return the number of trailing zeroes in n Follow up Could you write a solution that works in logarith
  • Cookie增删改查

    cookie 浏览器请求访问服务器 用请求头 首部行等信息来获取数据 服务器就会给出响应头 以及set cookie 给出的是唯一的cookie 之后就返回给浏览器 当浏览器第二次请求的时候 除了发送请求头之外还要发送cookie id 1
  • Python计算日照总辐射量

    import numpy as np from datetime import datetime import pandas as pd def get dayofyear date string param date string 字符串