<h1>Changelog</h1><h2>EOTSV 2.2 (2025-09-25)</h2><ul><li>multi-sensor time series can be saved as JSON. loading from  the timeseries from a JSON file is rapid, as it avoids source files access</li><li>faster and asynchronous loading of time series sources  <a href="https://github.com/jakimowb/eo-time-series-viewer/issues/27">issue #27</a></li><li>faster and asynchronous loading of time series raster images  <a href="https://github.com/jakimowb/eo-time-series-viewer/issues/31">issue #31</a></li><li>faster and asynchronous loading of temporal profiles</li><li>the initial raster stretch is taken from the first sensor raster</li><li>added <code>scripts/load_eotsv_profiles.py</code> to load temporal profiles  without having the QGIS API installed</li><li>some context menus got shorter names and better tooltips</li><li>preview for python-code band index expressions</li><li>(experimental) user functions allow creating additional profiles  that are derived from temporal profiles</li><li>antialias for spectral and temporal profile plots</li><li>fixed a bug that could occur when selecting vector features in a map</li><li>map layers that are not used in any legend (zombie layers) are now removed from the EOTSV project  to not appear in layer selection widgets</li><li>map canvas context menu option 'Copy &gt; All Maps' now copies maps without other widget boundaries  to the clipboard</li><li>missing / inaccessible sources are highlighted in the time series view</li><li>fixed minor issues related to the QGIS processing framework, e.g., with QGIS 3.44</li></ul><h2>EOTSV 2.1 (2025-06-05)</h2><ul><li>added a map region window to the temporal profile plot</li><li>revised quick labeling tools</li><li>revised documentation, added more animated GIFs</li><li>temporal profile plot: fixed band matching, added quick label shortcuts</li></ul><h2>EOTSV 2.0 (2025-04-19)</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 the QGIS settings dialog</li><li>allows defining the number of parallel reading threads</li><li>it allows defining shortcuts to visualize spectral indices in the Temporal Profile tool</li></ul></li><li><p>revised of Quick Labeling</p><ul><li>added customized quick label values that allow defining new values using a QGIS expression</li><li>the quick label editor widget allows defining a classification scheme</li><li>added quick-labeling shortcuts to the TP tool context menu</li></ul></li><li><p>FORCE product import allows filtering data by start and end date</p></li></ul><h2>EOTSV 1.20 (2024-12-08)</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 plus symbology),  map extent, crs and current date</li><li>optimized map rendering</li><li>background tasks can be canceled in the task manager.</li><li>fixed a fatal crash related to a missing QgsRasterDataProvider python ref</li></ul><h2>EOTSV 1.19 (2024-09-29)</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 the 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 are now extracted with context information</li></ul><h2>EOTSV 1.18 (2023-04-07)</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>EOTSV 1.17 (2021-03-10)</h2><ul><li>quick raster band selection and GDAL Metadata panel now appear in the 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 the next / previous observation with arrow right/left</li><li>move to the next / previous observation window with CTRL + arrow right/left or A/D</li><li>move to the last / first observation with End/Pos1 or ALT + A/D</li><li>select the next / previous vector feature with arrow downs/up or S/W</li><li>added option for exclusive visibility of map views</li><li>show the 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 a range of visible dates</li></ul><h2>EOTSV 1.16 (2021-02-02)</h2><ul><li>fixed smaller issues</li><li>the forward / backward button to move in time now shifts by the 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>EOTSV 1.15 (2020-11-23)</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 a map menu even when the feature-modified map tool is activated</li><li>source visibility update can be run on the entire time series or (new and faster) for the next time steps only</li><li>added the "follow current date" option to the time series table to keep focus on the map window date range</li><li>added wildcard and regular expression filter to the time series table</li><li>smaller bug fixes and improvements</li></ul><h2>EOTSV 1.14 (2020-11-06)</h2><ul><li>this version focuses on stability updates and improvements of the "quick label" system</li><li>the map canvas menu is now available with a standard map tool (like zoom tool)</li><li>introduces label groups to apply quick labeling shortcuts on different sets of vector fields</li><li>attribute table allows selecting added features automatically</li><li>optimized package imports</li><li>improved SpectralLibrary tool</li><li>fixed bugs</li></ul><h2>EOTSV 1.13 (2020-07-23)</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>EOTSV 1.12 (2020-04-09)</h2><ul><li>TimeSeries tree view allows changing 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 opening images from sources with subdatasets, e.g., from Sentinel-2 or HDF images.</li></ul><h2>EOTSV 1.11 (2020-01-23)</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 store an unpickable QgsTextFormat to QSettings</li></ul><h2>EOTSV 1.10 (2019-11-25)</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>the settings dialog shows known sensor / product specification and allows modifying their default "sensor name"</li><li>fixed copying of layer styles to maps of the 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>EOTSV 1.9 (2019-10-02)</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>EOTSV 1.8 (2019-09-19)</h2><ul><li>updated spectral library module</li><li>fixed #104: error in case of a wrong spatial extent</li><li>by default, CRS is properly shown in map view settings</li><li>user-defined CRS visible</li></ul><h2>EOTSV 1.7 (2019-08-06)</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 the date of interest selected in a temporal profile plot</li></ul><h2>EOTSV 1.6 (2019-07-16)</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 the crosshair dialog</li></ul><h2>EOTSV 1.5 (2019-07-07)</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 the central widget</li><li>fixed missing updates of the time series tree view when adding / removing source images</li><li>the map canvas context menu lists layers with a 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 the raster layer</li></ul><h2>EOTSV 1.4 (2019-07-02)</h2><ul><li>adding vector layers with sub-layers will add all sub-layers</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 iterating over vector features. the spatial map extent will be centered to each feature (#26)</li><li>added several convenience functions to the TimeSeriesViewer object</li><li>fixed a bug that did not allow creating 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 a spelling error in the 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>EOTSV 1.3 (2019-06-12)</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>EOTSV 1.2 (2019-05-31)</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>EOTSV 1.1 (2019-05-24)</h2><ul><li>dates and data sources of the TimeSeries are now shown in a TreeView instead of 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 the center  mapcanvas.</li><li>fixed: StackedInputDialog, MapCanvas context menu, "Save Changes?" labeling dialog (#85),</li><li>remove temporal profile (#86), draw new feature error (#84), Crosshair button status (#90) and more ...</li></ul><h2>EOTSV 1.0 (2019-05-15)</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 its own layer tree.</li><li>improved MapTool organization</li><li>removed PyQtGraph from a list of required external python packages</li><li>renamed the 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>EOTSV 0.8 (2019-03-01)</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><li>fixed bugs which were caused by CRS changes</li><li>fixed macOS QGIS (3.4.1.) crashes caused by QgsMapCanvas constructor</li><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>EOTSV 0.7 (2018-06-20)</h2><ul><li>Visualization of images with stacked temporal information (each band = one observation date)</li><li>some bugfixes</li><li>Speclib I/O as CSV or ENVI-Spectral Library + CSV table for attributes</li><li>temporary VRTs are now created in-memory (gdal VSI mechanism) instead of a disk temp path</li><li>Spectral Library: profile coordinate now in the center of the map pixel (issue #66)</li><li>Save map canvas to clipboard</li><li>The width of plot lines is now scale-independent (issue #64, QPen.setCosmetic(True))</li><li>adding fields to a spectral library (issue #61)</li></ul><h2>EOTSV 0.6 (2018-06-04)</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 a 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>EOTSV 0.5 (2018-04-17)</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 a spatial extent of map canvas or center)</li><li>improved definition of individual 2D / 3D charts per sensor and pixel-location</li><li>added based OpenGL-based 3D plot features (axis, grids, labels)</li><li>changed the name to "EO Time Series Viewer" (EOTSV)</li><li>merged updates to temporal profile visualization, e.g.,  save temporal profiles, compare 2D profiles between different locations, experimental 3D visualization</li></ul><h2>EOTSV 0.3 (2018-01-31)</h2><ul><li>added file filters for OpenFileDialog</li></ul><h2>EOTSV 0.2 (2018-01-19)</h2><ul><li>initialized Sphinx-based documentation</li><li>improved map visualization + map settings</li></ul><h2>EOTSV 0.2 (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>EOTSV 0.1 (2017-02-14)</h2><ul><li>first setup for test users in the recent development branch</li></ul>