如何计算太阳辐射在任何地方,任何时间,地球科学栈交流吗江南电子竞技平台江南体育网页版 最近30从www.hoelymoley.com 2023 - 07 - 25 - t00:26:55z //www.hoelymoley.com/feeds/question/14491 https://creativecommons.org/licenses/by-sa/4.0/rdf //www.hoelymoley.com/q/14491 6 如何计算太阳辐射在任何地方,任何时间吗 汉Zhengzu //www.hoelymoley.com/users/5214 2018 - 06 - 25 - t16:23:45z 2021 - 03 - 27 - t17:03:08z < p >太阳辐射的重要因素之一是控制O_3美元的形成,从而影响大气中各种次要物种的水平。< / p > < p >然而,环境运动的美元PM_{2.5} $抽样,我没有工具获取实际的太阳辐射数据。自从可以计算太阳辐射主要由高度的太阳,我要找到一个方法来计算理想价值观状况干净的天空。< / p > < p >我发现< a href = " http://docs.pysolar.org/en/latest/ #例子”rel = " noreferrer " > pysolar < / >是一个潜在的工具来解决这类问题。通过简单地定义位置(经度、纬度),日期时间,太阳辐射的单位可以生成W / m ^ 2美元。< / p > < blockquote > < p >然而,这里的输出结果似乎是奇怪的。< / p > < /引用> <人力资源> < p >这是一个例子使用Python 3.4: < / p > < pre > <代码> #指出包只能在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_.value>5000, 'value'] = np.nan plt.plot(solar_.value)

enter image description here

The result seems to be incorrect. In my opinion, the solar radiation should present a clear diurnal pattern with seasonal heterogeneity.

How to explain the bizarre results? Or is there any better solution for the solar radiation data if the monitoring equipment is unavailable.

Any comments or suggestions would be appreciated.

PS: I added the result of altitude degree the same period to response the comment of BarocliniCplusplus enter image description here

//www.hoelymoley.com/questions/14491/-/14525 # 14525 7 答案Jareth霍尔特的如何计算太阳辐射在任何地方,任何时间 Jareth霍尔特 //www.hoelymoley.com/users/1342 2018 - 06 - 29 t07:53:06z 2021 - 03 - 27 - t17:03:08z < p >看pysolar文档(< a href = " http://pysolar.readthedocs。io/en/latest/" rel="nofollow noreferrer">http://pysolar.readthedocs.io/en/latest/) under "Estimate of clear sky radiation". The algorithm does not return zeros at night, but instead just plugs those numbers straight in, giving nonsensical values. Filter the results so that if altitude_deg < 0, the radiation is 0. An example just using pysolar, datetime, and pyplot (I don't use pandas, so I can't comment on that) and lists looks like:

import datetime import matplotlib.pyplot as plt import pysolar lat, lon = 39.9075, 116.39723 # Beijing, China timezone = datetime.timezone(datetime.timedelta(hours=8)) # 0800 UTC start = datetime.datetime(2018,1,1,tzinfo=timezone) # 1 Jan 2018 # Calculate radiation every hour for 90 days nhr = 24*90 dates, altitudes_deg, radiations = list(), list(), list() for ihr in range(nhr): date = start + datetime.timedelta(hours=ihr) altitude_deg = pysolar.solar.get_altitude(lat,lon,date) if altitude_deg <= 0: radiation = 0. else: radiation = pysolar.radiation.get_radiation_direct(date,altitude_deg) dates.append(date) altitudes_deg.append(altitude_deg) radiations.append(radiation) days = [ihr/24 for ihr in range(nhr)] fig, axs = plt.subplots(nrows=2,ncols=1,sharex=True) axs[0].plot(days,altitudes_deg) axs[0].set_title('Solar altitude, degrees') axs[1].plot(days,radiations) axs[1].set_title('Solar radiation, W/m2') axs[1].set_xlabel('Days since ' + start.strftime('%Y/%m/%d %H:%M UTC')) plt.show() 

Altitude and radiation plot

Baidu
map