Skip to content

Commit a8fe59f

Browse files
mikofskiwholmgren
authored andcommitted
add timezone for package overview (#162)
* add timezone for package overview * add test docs in tests * test passes, but it's a hack * remove test_docs * use Etc/GMT+7 for US-Mountain and Etc/GMT-1 for EU/Berlin * update modelchain example to use timezones too * localize OOP-Loc/PVSys example * localize OOP-Localized-PVSystem example * move 'localize datetime indices' comment before for loop * San Francisco is +8 * add note to whatsnew v0.3.3 and add my name to contributors
1 parent 522007a commit a8fe59f

File tree

2 files changed

+23
-15
lines changed

2 files changed

+23
-15
lines changed

docs/sphinx/source/package_overview.rst

Lines changed: 20 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -43,14 +43,14 @@ configuration at a handful of sites listed below.
4343
import seaborn as sns
4444
sns.set_color_codes()
4545
46-
times = pd.DatetimeIndex(start='2015', end='2016', freq='1h')
46+
naive_times = pd.DatetimeIndex(start='2015', end='2016', freq='1h')
4747
4848
# very approximate
49-
# latitude, longitude, name, altitude
50-
coordinates = [(30, -110, 'Tucson', 700),
51-
(35, -105, 'Albuquerque', 1500),
52-
(40, -120, 'San Francisco', 10),
53-
(50, 10, 'Berlin', 34)]
49+
# latitude, longitude, name, altitude, timezone
50+
coordinates = [(30, -110, 'Tucson', 700, 'Etc/GMT+7'),
51+
(35, -105, 'Albuquerque', 1500, 'Etc/GMT+7'),
52+
(40, -120, 'San Francisco', 10, 'Etc/GMT+8'),
53+
(50, 10, 'Berlin', 34, 'Etc/GMT-1')]
5454
5555
import pvlib
5656
@@ -80,7 +80,9 @@ to accomplish our system modeling goal:
8080
'surface_azimuth': 180}
8181
8282
energies = {}
83-
for latitude, longitude, name, altitude in coordinates:
83+
# localize datetime indices (pvlib>=0.3.0)
84+
for latitude, longitude, name, altitude, timezone in coordinates:
85+
times = naive_times.tz_localize(timezone)
8486
system['surface_tilt'] = latitude
8587
cs = pvlib.clearsky.ineichen(times, latitude, longitude, altitude=altitude)
8688
solpos = pvlib.solarposition.get_solarposition(times, latitude, longitude)
@@ -125,8 +127,9 @@ a full understanding of what it is doing internally!
125127
from pvlib.modelchain import basic_chain
126128
127129
energies = {}
128-
for latitude, longitude, name, altitude in coordinates:
129-
dc, ac = basic_chain(times, latitude, longitude,
130+
for latitude, longitude, name, altitude, timezone in coordinates:
131+
dc, ac = basic_chain(naive_times.tz_localize(timezone),
132+
latitude, longitude,
130133
module, inverter,
131134
altitude=altitude,
132135
orientation_strategy='south_at_latitude_tilt')
@@ -173,14 +176,15 @@ objects to accomplish our system modeling goal:
173176
inverter_parameters=inverter)
174177
175178
energies = {}
176-
for latitude, longitude, name, altitude in coordinates:
177-
location = Location(latitude, longitude, name=name, altitude=altitude)
179+
for latitude, longitude, name, altitude, timezone in coordinates:
180+
location = Location(latitude, longitude, name=name, altitude=altitude,
181+
tz=timezone)
178182
# very experimental
179183
mc = ModelChain(system, location,
180184
orientation_strategy='south_at_latitude_tilt')
181185
# model results (ac, dc) and intermediates (aoi, temps, etc.)
182186
# assigned as mc object attributes
183-
mc.run_model(times)
187+
mc.run_model(naive_times.tz_localize(timezone))
184188
annual_energy = mc.ac.sum()
185189
energies[name] = annual_energy
186190
@@ -211,15 +215,17 @@ object to accomplish our modeling goal:
211215
from pvlib.pvsystem import LocalizedPVSystem
212216
213217
energies = {}
214-
for latitude, longitude, name, altitude in coordinates:
218+
for latitude, longitude, name, altitude, timezone in coordinates:
215219
localized_system = LocalizedPVSystem(module_parameters=module,
216220
inverter_parameters=inverter,
217221
surface_tilt=latitude,
218222
surface_azimuth=180,
219223
latitude=latitude,
220224
longitude=longitude,
221225
name=name,
222-
altitude=altitude)
226+
altitude=altitude,
227+
tz=timezone)
228+
times = naive_times.tz_localize(timezone)
223229
clearsky = localized_system.get_clearsky(times)
224230
solar_position = localized_system.get_solarposition(times)
225231
total_irrad = localized_system.get_irradiance(solar_position['apparent_zenith'],
@@ -283,4 +289,3 @@ The pvlib-python maintainers thank all of pvlib's contributors of issues
283289
and especially pull requests.
284290
The pvlib-python community thanks all of the
285291
maintainers and contributors to the PyData stack.
286-

docs/sphinx/source/whatsnew/v0.3.3.txt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,8 @@ Bug fixes
3535
Documentation
3636
~~~~~~~~~~~~~
3737

38+
* Localize datetime indices in package overview examples.
39+
(:issue:`156`)
3840
* Clarify that ``ModelChain`` and ``basic_chain`` currently only
3941
supports SAPM. (:issue:`177`)
4042
* Fix version number in 0.3.2 whatsnew file.
@@ -55,3 +57,4 @@ Contributors
5557
~~~~~~~~~~~~
5658

5759
* Will Holmgren
60+
* Mark Mikofski

0 commit comments

Comments
 (0)