<h1>Changelog</h1><h2>2025-04-19 (version 2.0)</h2><ul><li>revised map visualization</li><li><p>faster image loading by using the QGIS task manager and parallel background threads</p></li><li><p>revised of Temporal Profile (TP) Tool.</p><ul><li>TPs now consist of full-spectrum time series, loaded in parallel background threads</li><li>TPs are stored in vector layer fields</li><li>TPs can be loaded for vector layer points using a QGIS processing algorithm</li><li>the TP tool visualizes TPs from different vector layers or layer fields</li><li>TP tool has shortcuts to visualize spectral indices  from https://github.com/awesome-spectral-indices/awesome-spectral-indices</li></ul></li><li><p>revised of EO Time Series Viewer Settings</p><ul><li>settings are now stored in QGIS settings dialog</li><li>allows to define number of parallel reading threads</li><li>allows to define shortcuts to visualize spectral indices in TP tool</li></ul></li><li><p>revised of Quick Labeling</p><ul><li>added customized quick label values that allow to define new values using a QGIS expression</li><li>quick label editor widget allows to define classification scheme</li><li>added quick labeling shortcuts to TP tool context menu</li></ul></li><li><p>FORCE product import allows to filter data by start and end date</p></li></ul><h2>2024-12-08 (version 1.20)</h2><ul><li>added FORCE Product Import</li><li>restore / reload EOTSV workbench from QGIS Project, e.g.  time series sources, map layer styles (rendering + symbology),  map extent, crs and current date</li><li>optimized map rendering</li><li>background tasks can be canceled in task manager.</li><li>fixed fatal crash related to a missing QgsRasterDataProvider python ref</li></ul><h2>2024-09-29 (version 1.19)</h2><ul><li>API fixes to run with QGIS 3.34 - 3.38</li><li>updates Spectral Library Module</li><li>enabled tooltips in MapCanvas context menu</li><li>attribute table: next / previous feature buttons consider order as shown in table</li><li>fixed VRT building</li><li>fixed context menu connection in QGIS environments with other languages than english</li><li>maps can flash selected features</li><li>spectral profiles now extracted with context information</li></ul><h2>2023-04-07 (version 1.18)</h2><p><em>Stability Update</em></p><ul><li>removed several issues related to updates in QGIS and GDAL</li><li>updated QPS library, which introduces several updates to the SpectralLibrary handling</li></ul><h2>2021-03-10 (version 1.17)</h2><ul><li>quick raster band selection and GDAL Metadata panel now appear in QGIS layer properties dialog</li><li>fixed smaller issues related to plugin loading and unloading</li><li>added bulk loading from time series definition files</li><li>fixes to run with QGIS 3.18+</li><li>move to next/previous observation with arrow right/left</li><li>move to next/previous observation window with CTRL + arrow right/left or A/D</li><li>move to last/first observation with End/Pos1 or ALT + A/D</li><li>select next/previous vector feature with arrow downs/up or S/W</li><li>added option for exclusive visibility of map views</li><li>show next/previous map view with PageDown/PageUp or ALT + S/W</li><li>set map center from/to QGIS with F1/ALT+F1</li><li>set map extent from/to QGIS with F2/ALT+F2</li><li>modified observation slider, slider shows range of visible dates</li></ul><h2>2021-02-02 (version 1.16)</h2><ul><li>fixed smaller issues</li><li>forward / backward button to move in time now shifts by number of opened observation dates/maps</li><li>next / previous feature button offers to (i) move to the next feature and (ii)  update the map dates according to the availability of raster sources for the new map extent</li><li>faster updates of observation data visibility</li></ul><h2>2020-11-23 (version 1.15)</h2><ul><li>source files can be opened by drag and drop to the time series tree view</li><li>maps can be organized in multiple rows per map view (rows x columns)</li><li>map descriptions can be defined with QgsExpressions, e.g. '@map_date' to show the date</li><li>quick labels: CTRL + right mouse button opens map menu even when the feature modify map tool is activates</li><li>source visibility update can be run on entire time series or (new and faster) for the next time steps only</li><li>added "follow current date" option to time series table to keep focus on the map window date range</li><li>added wildcard + regular expression filter to time series table</li><li>smaller bug fixes and improvements</li></ul><h2>2020-11-06 (version 1.14)</h2><ul><li>this version focuses on stability updates and improvements of the "quick label" system</li><li>map canvas menu now available with standard map tool (like zoom tool)</li><li>introduces label groups to apply quick labeling short cuts on different sets of vector fields</li><li>attribute table allow to selected added features automatically</li><li>optimized package imports</li><li>improved SpectralLibrary tool</li><li>fixed bugs</li></ul><h2>2020-07-23 (version 1.13)</h2><ul><li>time series and map settings can be stored to and reloaded from QGIS Projects</li><li>refactored layer styling and default raster stretching</li><li>fixed CRS translation bug and other smaller bugs</li><li>quick labels can be used to write date / datetime data into vector fields of type QDate or QDateTime</li><li>refactored context menus, e.g. in map view layer tree view, fixed #106</li></ul><h2>2020-04-09 (version 1.12)</h2><ul><li>TimeSeries tree view allows to change the visibility of single source images, e.g. to hide clouded observations</li><li>several updates to the Spectral Library Widget, e.g. import / export of profiles from ASD, ARTMO, EcoSYS or SPECCHIO</li><li>EOTSV allows to open images from sources with subdatasets, e.g. from Sentinel-2 or HDF images.</li></ul><h2>2020-01-23 (version 1.11)</h2><ul><li>revised unit tests for CI pipelines</li><li>fixed smaller issues in SensorModel</li><li>fixed #103: EOTSV crashed on Linux, caused by an attempt to storing a unpickable QgsTextFormat to QSettings</li></ul><h2>2019-11-25 (version 1.10)</h2><ul><li>improved matching of source images to sensors: matching can be specified in the settings dialog. Sensor matching  based on ground sampling distance + number of bands + data type and optionally wavelength and/or sensor name</li><li>settings dialog shows known sensor / product specification and allows to modify their default "sensor name"</li><li>fixed copying of layer styles to maps of same sensor and map view type</li><li>improved speed of mapping and layer buffering</li><li>failed image sources are logged in the EO Time Series Viewer log panel</li><li>Spectral Library Viewer better handles large collections of spectral profiles</li></ul><h2>2019-10-02 (version 1.9)</h2><ul><li>includes several smaller updates</li><li>fixed error 'shortcutVisibleInContextMenu' error that occurred with Qt &lt; 5.10</li><li>enhanced wavelength extraction from GDAL metadata: wavelength can be specified per band</li></ul><h2>2019-09-19 (version 1.8)</h2><ul><li>updated spectral library module</li><li>fixed #104: error in case of wrong spatial extent</li><li>default CRS properly shown in map view settings</li><li>user-defined CRS visible</li></ul><h2>2019-08-06 (version 1.7)</h2><ul><li>increased contrast for default map view text</li><li>improved reading of wavelength information, e.g. from Pleiades, Sentinel-2 and RapidEye data</li><li>temporal profile plot: data gaps can be shown by breaks in the profile line, data source information is correctly  shown for selected points only</li><li>current extent can be copied via MapCanvas context menu</li><li>fixed #102: move maps to date of interest selected in a temporal profile plot</li></ul><h2>2019-07-16 (version 1.6)</h2><ul><li>re-design of map visualization: faster and more compact, the number of maps is fixed to n dates x m map views</li><li>date, sensor or map view information can be plotted within each map and become available in screenshots</li><li>releases map layers that are not required any more</li><li>slider + buttons to navigate over time series</li><li>fixed preview in crosshair dialog</li></ul><h2>2019-07-07 (version 1.5)</h2><ul><li>closing the EO Time Series Viewer instance will release all of its resources</li><li>added "Lock Map Panel" to avoid unwanted resizing of central widget</li><li>fixed missing updates of time series tree view when adding / removing source images</li><li>map canvas context menu lists layers with spatial extent intersecting the cursor position only</li><li>fixes feature selection error</li><li>added quick label source image to label the path of raster layer</li></ul><h2>2019-07-02 (version 1.4)</h2><ul><li>adding vector layers with sublayers will add all sublayers</li><li>map canvas context menu "Focus on Spatial Extent" will hide maps without time series data for the current spatial  extent</li><li>labeling dock allows to iterate over vector features. the spatial map extent will be centered to each feature (#26)</li><li>added several convenience function to TimeSeriesViewer object</li><li>fixed a bug that did not allow to create new polygon features</li><li>temporal profile visualization: fixed icons to preview selected plot style, coordinate described by "<fid> <name>",  e.g. "42 Deforested", fixed plot style preview</li><li>updated SpectralLibraryViewer</li><li>fixed spelling error in stacked band input dialog</li><li>MapViews can add raster layers that have been opened in QGIS, e.g. XYZ Tile with OpenStreetMap data</li></ul><h2>2019-06-12 (version 1.3)</h2><ul><li>fixed #99: opening example closes QGIS on linux</li><li>fixed #96 and #99 : docutils not installed error when showing rst/md content</li><li>fixed #97: TSV does not start (Linux)</li></ul><h2>2019-05-31 (version 1.2)</h2><ul><li>added SaveAllMapsDialog and menu option to export all maps as image files.</li><li>fixed #91: select Temporal Profile / Spectral Profile button activates the required map tools.</li><li>fixed #92: map canvas context menu "copy to clipboard" options.</li></ul><h2>2019-05-24 (version 1.1)</h2><ul><li>dates and data sources of the TimeSeries are now shown in a TreeView instead TableView</li><li>observation dates of current visible map canvases are highlighted in the time series tree view</li><li>sensor raster layer properties can be opened from MapView layer tree #87. Stats will be related to center mapcanvas.</li><li>fixed: StackedInputDialog, MapCanvas context menu, "Save Changes?" labeling dialog (#85), remove temporal profile (  #86), draw new feature error (#84), Crosshair button status (#90), and some more</li></ul><h2>2019-05-15 (version 1.0, major update)</h2><ul><li>labeling tools to modify vector layers.</li><li>quick labeling for time-labels information</li><li>synchronization with QGIS Map canvas center</li><li>SpectralLibrary can import SpectralProfiles from a raster image based on vector positions</li><li>simplified MapView control dock, each MapView has it's own layer tree.</li><li>improved MapTool organization</li><li>removed PyQtGraph from list of required external python packages</li></ul><h2>2019-03-29</h2><ul><li>renamed plugin folder from "timeseriesviewerplugin" to "EOTimeSeriesViewer".</li><li>improved SpectraLibrary tool</li><li>CI tests with bitbucket pipelines</li><li>several bug fixes</li></ul><h2>2019-03-01 (version 0.8)</h2><ul><li>added labeling panel</li><li>scheduled map canvas refreshes</li><li>multiple images per observationdata &amp; sensor</li><li>fixed several bugs</li></ul><h2>2018-11-13</h2><ul><li>fixed bugs which where caused by CRS changes</li><li>fixed macOS QGIS (3.4.1.) crashes caused by QgsMapCanvas constructor</li></ul><h2>2018-11-09</h2><ul><li>uses QgsTaskManager for background loading</li><li>own QgsMapLayerStore to not mix-up with (main) QGIS layers</li><li>fixed bugs related to changes in QGIS API</li></ul><h2>2018-06-20 (version 0.7)</h2><ul><li>Visualization of images with stacked temporal information (each band = one observation date)</li><li>some bugfixes</li></ul><h2>2018-06-12</h2><ul><li>Speclib I/O as CSV or ENVI-Spectral Library + CSV table for attributes</li><li>temporary VRTs now created in-memory (gdal VSI mechanism) instead in a disk temp path</li><li>Spectral Library: profile coordinate now in center of map pixel (issue #66)</li><li>Save map canvas to clipboard</li><li>Width of plot lines now scale-independent (issue #64, QPen.setCosmetic(True))</li><li>adding fields to spectral library (issue #61)</li></ul><h2>2018-06-04 (version 0.6)</h2><p>SpectralLibrary Module</p><ul><li>now based on in-memory QgsVectorLayer</li><li>Locations and values of spectral profile can be exported as vector data set</li><li>Locations of spectral profiles can be rendered on MapCanvases</li></ul><p>Temporal Profile Module</p><ul><li>now based on in-memory QgsVectorLayer</li><li>Locations of temporal profiles can be exported as vector data set</li><li>Band values of temporal profiles can be exported as CSV file</li><li>Locations of temporal profiles can be rendered on MapCanvases</li></ul><h2>2018-04-17 (version 0.5)</h2><ul><li>ported to QGIS 3, Qt5 and Python 3.6</li><li>improvements in temporal profile visualization</li><li>removed several bug</li><li>visibility of vector and raster layers can be toggled per map view</li><li>improved interaction between QGIS and EOTSV (Buttons to import/export spatial extent of map canvas or center)</li></ul><h2>2018-03-29</h2><ul><li>improved definition of individual 2D / 3D charts per sensor &amp; pixel-location</li><li>added based OpenGL based 3D plot features (axis, grids, labels)</li><li>changed name to "EO Time Series Viewer" (EOTSV)</li></ul><h2>2018-02-11</h2><ul><li>merged updates to temporal profile visualization, e.g.  save temporal profiles, compare 2D profiles between different location, experimental 3D visualization</li></ul><h2>2018-01-31</h2><ul><li>added file filters for OpenFileDialog</li></ul><h2>2018-01-19</h2><ul><li>initialized Sphinx-based documentation</li><li>improved map visualization + map settings</li></ul><h2>2017-05-21</h2><ul><li>many changes, done in development branch "develop",</li><li>e.g: QGIS MapCanvases for interactive maps, temporal profiles, ...</li></ul><h2>2017-02-14</h2><ul><li>first setup for test users in the recent development branch</li></ul>