diff --git a/docs/sphinx/source/whatsnew/v0.16.2.rst b/docs/sphinx/source/whatsnew/v0.16.2.rst index f0b52494dc..4f0ef42d1c 100644 --- a/docs/sphinx/source/whatsnew/v0.16.2.rst +++ b/docs/sphinx/source/whatsnew/v0.16.2.rst @@ -31,6 +31,10 @@ Documentation * Fix the :py:func:`pvlib.spa.solar_position` docstring, which listed outputs ``elevation`` and ``apparent_elevation`` in the wrong order. (:issue:`2886`, :pull:`2887`) +* Document in :py:func:`pvlib.iotools.read_epw` that each record is labelled + with the start of its hour, unlike :py:func:`pvlib.iotools.read_tmy3`, and + how to label it with the time given in the EPW file. (:issue:`1156`, + :pull:`2894`) Testing @@ -56,6 +60,7 @@ Contributors * Chen Yi (:ghuser:`chenyi6758-source`) * Rajiv Daxini (:ghuser:`rdaxini`) * jason-writer (:ghuser:`jason-writer`) +* Christoph Deil (:ghuser:`cdeil`) diff --git a/pvlib/iotools/epw.py b/pvlib/iotools/epw.py index 01c87c180a..c3dd848676 100644 --- a/pvlib/iotools/epw.py +++ b/pvlib/iotools/epw.py @@ -208,6 +208,17 @@ def read_epw(filename, coerce_year=None): | | liquid precipitation depth field, hour | +-------------------------------+-----------------------------------------+ + .. warning:: EPW irradiance and illuminance values are totals over the + hour *ending* at the time in the file, while temperatures, humidity + and pressure are values *at* that time [1]_. ``read_epw`` labels + each record with the *start* of its hour: EPW hour 1 (00:00-01:00) + becomes 00:00, so a full year runs from 00:00 on 1 January to 23:00 + on 31 December. :py:func:`~pvlib.iotools.read_tmy3` labels each record + with the *end* of its hour instead, so the same data read from an EPW + file and from a TMY3 file are one hour apart. To label the records + with the time given in the EPW file, add one hour to the index: + ``data.index = data.index + pd.Timedelta('1h')``. + References ----------