Solar Radiation Monitoring Laboratory (SRML)#
The Solar Radiation Monitoring Laboratory (SRML) at the University of Oregon has been providing solar radiation data for the Northwestern United States since 1975. The SRML monitoring station network consists of both high-quality stations that measure all three irradiance components at a 1-minute resolution, as well as stations with low quality instruments that only log measurements hourly. A full list of the 42 stations (including discontinued stations) can be found on the SRML website.
The high-quality SRML stations can be retrieved from the SolarStations’ station listing and are shown below.
Show code cell content
import pandas as pd
stations = pd.read_csv('solarstations.csv', sep=';', encoding='latin1')
stations = stations[stations['Network'].str.contains('SRML')]
stations
Station full name | Abbreviation | State | Country | Latitude | Longitude | Elevation | Time period | Network | Comment | URL | Tier 2 | Instrument | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
80 | Portland | NaN | Oregon | USA | 45.510 | -122.690 | 70.0 | 2011- | SRML | 5-min data between 2004 and 2011. | http://solardat.uoregon.edu/PortlandPV.html | 2 | RSR |
81 | Burns | NaN | Oregon | USA | 43.520 | 119.020 | 1265.0 | 2011- | SRML | 5 min data from 1994 to 2011. | http://solardat.uoregon.edu/Burns.html | 1 | Thermopile |
82 | Silver lake | NaN | Oregon | USA | 43.120 | -121.060 | 1355.0 | 2002- | SRML | Only 5 minute data? | http://solardat.uoregon.edu/SilverLake.html | 2 | RSP |
83 | Ashland | NaN | Oregon | USA | 42.190 | -122.700 | 595.0 | 2018- | SRML | 5-minute data from 2000 to 2018. | http://solardat.uoregon.edu/Ashland.html | 2 | RSP |
84 | Seattle | NaN | Washington | USA | 47.654 | -122.309 | 70.0 | 2015- | SRML | NaN | http://solardat.uoregon.edu/Seattle_UW.html | 1 | Thermopile |
Data retrieval#
Data from the SRML stations is stored in monthly files for each station and can be freely downloaded from their website. The data can also be downloaded programmatically using the pvlib-python library, specifically the read_srml_month_from_solardat
function.
Help support the SRML
If you find the data useful, please consider donating to support the SRML.
An example of how to use pvlib to download data from the Hermiston station for June 2020 is shown here:
import pvlib
df = pvlib.iotools.read_srml_month_from_solardat(
station='HE',
year=2020,
month=6)
df.head(12) # print the first 12 rows of data
Show code cell output
ghi_0 | ghi_0_flag | dni_0 | dni_0_flag | dhi_3 | dhi_3_flag | ghi_2 | ghi_2_flag | dni_2 | dni_2_flag | ... | relative_humidity_1 | relative_humidity_1_flag | 9151 | 9151_flag | wind_dir_1 | wind_dir_1_flag | wind_speed_1 | wind_speed_1_flag | dhi_0 | dhi_0_flag | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
2020-06-01 00:00:00-08:00 | 0 | 12 | 0 | 12 | 0 | 12 | 0 | 12 | 0 | 12 | ... | 55.3 | 12 | 0.0 | 11 | 172.5 | 11 | 1.3 | 12 | 0 | 71 |
2020-06-01 00:01:00-08:00 | 0 | 12 | 0 | 12 | 0 | 12 | 0 | 12 | 0 | 12 | ... | 55.5 | 12 | 0.0 | 11 | 180.7 | 11 | 1.3 | 12 | 0 | 71 |
2020-06-01 00:02:00-08:00 | 0 | 12 | 0 | 12 | 0 | 12 | 0 | 12 | 0 | 12 | ... | 55.6 | 12 | 0.0 | 11 | 128.9 | 11 | 0.4 | 12 | 0 | 71 |
2020-06-01 00:03:00-08:00 | 0 | 12 | 0 | 12 | 0 | 12 | 0 | 12 | 0 | 12 | ... | 55.4 | 12 | 0.0 | 11 | 141.6 | 11 | 1.2 | 12 | 0 | 71 |
2020-06-01 00:04:00-08:00 | 0 | 12 | 0 | 12 | 0 | 12 | 0 | 12 | 0 | 12 | ... | 55.6 | 12 | 0.0 | 11 | 186.3 | 11 | 0.8 | 12 | 0 | 71 |
2020-06-01 00:05:00-08:00 | 0 | 12 | 0 | 12 | 0 | 12 | 0 | 12 | 0 | 12 | ... | 55.4 | 12 | 0.0 | 11 | 188.7 | 11 | 1.8 | 12 | 0 | 71 |
2020-06-01 00:06:00-08:00 | 0 | 12 | 0 | 12 | 0 | 12 | 0 | 12 | 0 | 12 | ... | 55.1 | 12 | 0.0 | 11 | 170.8 | 11 | 0.9 | 12 | 0 | 71 |
2020-06-01 00:07:00-08:00 | 0 | 12 | 0 | 12 | 0 | 12 | 0 | 12 | 0 | 12 | ... | 55.5 | 12 | 0.0 | 11 | 122.4 | 11 | 0.0 | 12 | 0 | 71 |
2020-06-01 00:08:00-08:00 | 0 | 12 | 0 | 12 | 0 | 12 | 0 | 12 | 0 | 12 | ... | 55.7 | 12 | 0.0 | 11 | 236.5 | 11 | 0.1 | 12 | 0 | 71 |
2020-06-01 00:09:00-08:00 | 0 | 12 | 0 | 12 | 0 | 12 | 0 | 12 | 0 | 12 | ... | 55.2 | 12 | 0.0 | 11 | 201.3 | 11 | 0.7 | 12 | 0 | 71 |
2020-06-01 00:10:00-08:00 | 0 | 12 | 0 | 12 | 0 | 12 | 0 | 12 | 0 | 12 | ... | 55.8 | 12 | 0.0 | 11 | 186.7 | 11 | 0.2 | 12 | 0 | 71 |
2020-06-01 00:11:00-08:00 | 0 | 12 | 0 | 12 | 0 | 12 | 0 | 12 | 0 | 12 | ... | 55.9 | 12 | 0.0 | 11 | 192.1 | 11 | 0.0 | 12 | 0 | 71 |
12 rows × 30 columns
The data retrieved from the Hermiston station includes measurements of the three irradiance components, as well as additional weather parameters such as temperature and humidity. A few of the parameters in the datasets for the month of data are visualized below.
Show code cell source
axes = df[['ghi_0','dni_0','dhi_3','temp_air_1','wind_speed_1']].plot(
subplots=True, legend=False, rot=0, figsize=(8,8), sharex=True)
# Set y-labels and y-limits
axes[0].set_ylabel('GHI [W/m$^2$]'), axes[0].set_ylim(-10,1400)
axes[1].set_ylabel('DNI [W/m$^2$]'), axes[1].set_ylim(-10,1400)
axes[2].set_ylabel('DHI [W/m$^2$]'), axes[2].set_ylim(-10,1400)
axes[3].set_ylabel('Temperature [°]'), axes[3].set_ylim(0,40)
_ = axes[4].set_ylabel('Wind\nspeed [m/s]'), axes[4].set_ylim(0,15)