6
\ begingroup美元

太阳辐射的重要因素之一是控制O_3美元的形成,从而影响大气中各种次要物种的水平。

然而,在运动环境美元PM_{2.5} $抽样,我没有工具获得实际的太阳辐射数据。自从可以计算太阳辐射主要由高度的太阳,我要找到一个方法来计算理想价值观状况干净的天空。

我发现pysolar是一个潜在的工具来解决这类问题。通过简单地定义位置(经度、纬度),日期时间,太阳辐射的单位可以生成W / m ^ 2美元。

然而,这里的输出结果似乎是奇怪的。


这里有一个例子使用Python 3.4:

#指出包只能在Python 3.4中实现从pysolar环境。太阳能进口*进口datetime #定义位置(中国,北京)纬度,经度= 39.9075、116.39723 #太阳辐射产生的时间序列数据集开始= datetime。datetime (2018 1 1 8 0, 0, 0, tzinfo = datetime.timezone.utc) solar_data =[]我的范围(0,24 * 90,1):# 24小时x 90天日期=开始+ pd.to_timedelta (1,“H”) altitude_deg = get_altitude(纬度、经度、日期)solar_data.append(辐射。get_radiation_direct(日期、altitude_deg)) solar_ = pd.Dataframe ([]) solar_['值]= solar_data #策划# #策划之前,我发现有很多辐射大于10 e5极端值。我不知道他们出现的原因,以及如何删除这些数据条件。solar_.loc [solar_。值> 5000,“价值”]= np。南plt.plot (solar_.value)

在这里输入图像描述

结果似乎是不正确的。在我看来,太阳辐射应该呈现出明显的昼夜模式与季节性的异质性。

如何解释这个奇怪的结果吗?或者有什么更好的解决办法如果监测设备不可用太阳辐射数据。

任何意见或建议,我们将不胜感激。

PS我添加的结果高度程度同期BarocliniCplusplus回应评论在这里输入图像描述

\ endgroup美元
3
  • 2
    \ begingroup美元 它看起来像sec的输出函数。可能我建议检查是否高度角似乎是合理的(如打印出来)? \ endgroup美元
    - - - - - -BarocliniCplusplus
    2018年6月25日,在十七34
  • \ begingroup美元 我几乎没有做过任何Python,所以可能方式,完全不靠谱了…但发现日期是奇怪的不使用我(也许在某种程度上假设pd因循环迭代! ? ? ? ?),同时也想知道(的价值)在solar_(的价值)线(也许做一个列表的数组或一些这样的东西,但会觉得你不希望索引值? ?)无论如何,可能没用的输入,但思想(知道为什么不呢,很少回复)。也许只打印一个值之前循环/试图重新格式化图形包,以确保这个问题不是介于两者之间? \ endgroup美元
    - - - - - -JeopardyTempest
    2018年6月26日,在21
  • 1
    \ begingroup美元 @BarocliniCplusplus,谢谢你的回复,抱歉迟到的响应。我将上传高度度数据作为补充信息。 \ endgroup美元
    - - - - - -汉Zhengzu
    2018年6月26日,在29

1回答1

7
\ begingroup美元

看pysolar文档(http://pysolar.readthedocs.io/en/latest/)“晴空辐射的估计”。晚上该算法不返回0,而是直接插入这些数字,让荒谬的价值观。如果过滤结果altitude_deg< 0,辐射是0。只使用一个例子pysolar datetime, pyplot(我不使用熊猫,所以我不能评论)和列表看起来像:

进口进口matplotlib datetime。pyplot plt进口pysolar lat,朗= 39.9075,116.39723 #北京,中国时区= datetime.timezone (datetime.timedelta(小时= 8))# 0800 UTC开始= datetime.datetime(2018年,1,1,tzinfo =时区)# 2018年1月1 #计算辐射每小时90天nhr = 24 * 90日期,altitudes_deg,辐射=()列表,列表(),列表()《国际卫生条例》的范围(nhr):日期=开始+ datetime.timedelta(小时=国际卫生条例)altitude_deg = pysolar.solar.get_altitude(纬度、经度、日期)如果altitude_deg < = 0 = 0:辐射。其他:辐射= pysolar.radiation.get_radiation_direct(日期、altitude_deg) dates.append(日期)altitudes_deg.append (altitude_deg) radiations.append(辐射)天=[国际卫生条例/ 24国际卫生条例的范围(nhr)]无花果、中心——axs = plt.subplots (nrows = 2, ncols = 1, sharex = True)中心——axs [0] .plot(天,altitudes_deg)中心——axs [0]。set_title(太阳高度,度)中心——axs [1] .plot(天,辐射)中心——axs [1]。set_title(太阳辐射、W / m2)中心——axs [1]。set_xlabel(“天”+开始。strftime (“% Y / % m / H % d %: % m UTC ')) plt.show ()

高度和辐射图

\ endgroup美元

    你的答案

    通过点击“发布你的答案”,你同意我们服务条款并承认您已阅读并理解我们的隐私政策的行为准则

    不是你要找的答案?浏览其他问题标记问你自己的问题