This release was tested under QGIS 3.34 (LTR) and 3.38 (latest release).
- add algorithm and interactive tool for plotting trajectories of land cover change over time via Sankey plot #924
- support temporal metadata provided by 'time' dimension in NetCDF files #906
- support temporal metadata provided by .aux.json files created with R-cran terra package #907
- [Data Views] add "Apply mask" option to the raster layer context menu #942
- Import USGS ASCII Speclib #302
- add import algorithms for Planet Scope products #492
- [Classification workflow] support OOB validation #910
- [Create classification/regression/unsupervised dataset] store sample locations inside a dataset if available #911
- [Classification workflow] add "classification layer accuracy and area report" output #912
- implement "Create spectral library (from classification dataset)" #917
- add algorithm and interactive tool for plotting trajectories of land cover change over time via Sankey plot #924
- add algorithms for creating spectral library from classification/regression dataset #931
- [Raster layer bounding polygon] add option for convex hull #950
- [Analysis ready data] add algorithm for raster tiling #953
- add "Aggregate raster layers" algorithm #956
- add algorithm for creating a raster mask #959
- [Import EnMAP L2A product] support L2A Analysis Ready Data from Geoservice / EOLAB #973
- [Import EnMAP L2A product] derive bad band information from metadata file #974
- in all algorithms with VRT raster output, also support GTiff and ENVI outputs #977
- implement auto-generated changelog #938
Show all (5)
- Save current profiles on CTRL+S #871
- [Spectral resampling] EMIT sensor is missing #891
- [Classification layer accuracy and area report (for simple random sampling)] wrong confidence intervals for area estimates #909
- Regression based unmixing | problem with implementation of LinearSVR #967
- [Regression-based unmixing] _catboost.CatBoostError: Expected callable object or stream-like object #980
This release was tested under QGIS 3.34 (LTR) and 3.36 (latest release).
- [Profile Analytics] allow aggregated Z-Profiles using a selected feature-geometry #261
- [GDAL Metadata] rename "Range" band property to "Wavelength Range" #757
- add support for STAC-like metadata sidecar files #753
- [RasterWriter] dump all metadata into the *.stac.json sidecar file on object destruction #768
- [Tools > Developers menu] add "Open Plugin Directory" button #666
- Plot variance vs. components in PCA #668
- [Data Sources panel] improve support for "Open in Explorer" option for vector sources #678
- [Spectral View] better support for vector-layers without proper QML sidecar file #755
- [Spectral View] add option/dialog for check/uncheck individual fields to be interpreted as SpectralProfile fields #758
- [Spectral View] find SpectralProfile attributes automatically #778
- [ClassificationWorkflowAlgorithm] make input raster optional #631
- add algorithm for deriving the bounding polygon of a raster layer #634
- [Import XYZ product] set default style to TrueColor #635
- implement processing algorithm for exporting classification dataset into FORCE text file formats #664
- [Sample raster layer values algo] add "Skip no data pixel" option #682
- [Class fraction layer from categorized vector layer] also support the raster case in the same algo #702
- add algorithm for scaling/converting raster data #765
- [Create classification dataset (from categorized spectral library)] add option for excluding bad bands #766
- [Spectral resampling (to wavelength)] add option for selecting the nearest wavelength #801
- [Classification layer accuracy and area report] add support for non-matching category names #845
- [Scripts/EnFireMAP] add script for sampling point data from data cube #681
- split and restructure the requirement.txt file by operating system and Python environment #701
Show all (39)
- [GEE Time Series Explorer] AttributeError: 'GeeTemporalProfileDockWidget' object has no attribute 'onDownloadLayerProfilesClicked' #691
- splash screen not showing up on EnMAP-Box startup #714
- Error in executing EnPT - EnMAP Processing Tool (v0.7.6) for Level-1B to Level-2A conversion #719
- trouble with numba>=0.57 #735
- [Data Views] spectral view layer legend not correctly updated #737
- [Spectral View] "Automatically pan to current feature" in isn't working in Form View #750
- [Layer Properties > GDAL Metadata] copy&paste wavelength values from ENVI Header to Band Metadata table isn't working #754
- error from decorrelationstretchdialog.py : MinMaxScaler must be an instance of 'tuple'. Got [0, 255] instead #771
- after stop vector editing, the "Add point feature" map tool is still shown #774
- [Cursor location values panel] category color and name isn't shown for last category #775
- [Classification layer accuracy and area report] layer styling is set back to default #776
- test runs locally but fails in CI #781
- [Spectral resampling] predefined sensors are not included in the plugin Zip #786
- typeguard.TypeCheckError: argument "maxValue" (None) is not an instance of int #789
- CatBoostClassifier #790
- ModuleNotFoundError:No module named 'llvmlite.llvmpy' #791
- [Spectral Processing] outputs aren't properly opened inside Data Sources panel and file locations aren't reported in the Log tab #798
- Spectral resampling (to Sentinel-2A and B) fails with "failed to open spectral library: 'NoneType' object has no attribute 'source'" #803
- macOS installation problem: installing the plugin starts a new QGIS instance #804
- Avoid checks on equality of float results, use almostEqual instead #813
- QGIS v.3-36 problem when enabling EnMap-Box #818
- SaveLibraryAsGeoJsonAlgorithm fails to save Speclibs with MAP field #823
- Select Features, AsdsertionError isinstance(mode, QgsMapToolSelectionHandler.SelectionMode) #827
- ensomap: ImportError:cannot import name 'docstring' from 'matplotlib' (/home/alobo/.local/lib/python3.10/site-packages/matplotlib/init.py) #836
- Missing Python Package(s) message is displayed at every start #837
- enpt is missing and cannot be installed #839
- macOS: ImportError: cannot import name 'DMD_CREATIONFIELDDATASUBTYPES' from 'osgeo.gdalconst' #843
- [EnmapBoxSettings] boolean values are not correctly handled #851
- Problem importing EnMAP data into QGIS 3.36 #862
- AttributeError: 'NoneType' object has no attribute 'highlightedVariables' #863
- [RasterReader] open a WMS layer with "openWithGdal=False" isn't working #865
- EnMAP L2A data isn't scaled correctly between 0 and 1 #879
- [Scale/truncate/convert raster layer] algo is placed in the wrong algo group #885
- Couldn't load plugin 'enmapboxplugin' due to an error when calling its classFactory() method #886
- [SpectralView] GeoJSON library with NaN values not correctly plotted #887
- [Classification layer accuracy and area report] issue with unclassified pixel inside map #900
- [Data Sources] right-click on nodes inside a model file (*.pkl) gives error #908
- Spectral library axis flipped #916
- [SpectralLibraryUtils] SpectralLibraryUtils.writeToSource is creating wrong CRS #936
This release was tested under QGIS 3.28 (LTR), 3.32 and 3.34 (latest release).
- [Profile Analytics] auto-select a layer if none is selected yet #122
- [GEE TSE] shortcut for opening the custom collections folder #395
- [Raster Band Stacking] add option for preventing duplicated output band names #468
- [Profile Analytics] link profiles into SpectralView as current profiles #530
- [Profile Analytics] add option for linking profiles from GEE Time Series Explorer #531
- add global option RAISE_ALL_EXCEPTIONS #598
- [Mambaforge/Conda installation] add YML file for QGIS Long Term Release (LTR) environment #605
- [Spectral resampling algos] introduce format for predefined sensors #579
- [Project Settings] add Project Open/Save buttons to EnMAP-Box main menu #307
- [Data Views panel] add context-menu shortcut for setting the layer name as map view name #387
- [Spectral View] better support for GeoJSON format #423
- [Project Settings] add Open Project button in Project menu #446
- FR: EnMAP-BoxContextMenuProvider #513
- [SpectralView] add distance xUnits #525
- [Data Views panel] add "Make Permanent..." option to layer context menu #660
- make feature name matching optional and not the default in ML predictions #297
- use direct assignment between band number and detector in EnMAP L2A product specified in the METADATA.XML #415
- [Spectral Index Creator] add support for formulars with input bands given by center wavelength #456
- [Import EnMAP L2A product] add "Exclude bad bands" option #461
- [Classification workflow algo] the default feature matching by name is causing problems in case of duplicated names #467
- implement algorithms for calculating spectral similarity between classes #469
- [Class fraction layer from categorized vector layer] add option to exclude border pixel #478
- [Raster math] add option for recoding input no data values #479
- short of spectral separability tests #494
- [Spectral resampling (to EnMAP)] update EnMAP sensor model #496
- [Import EnMAP L2A product] support band order by detector #515
- [Raster math] don't create empty band names by default #532
- [Edit raster source band properties] allow expressions using counter variables to derive value lists #539
- [Processing algorithms] add option for manual includes into auto-generated processing algo RST files #553
- [Create classification/regression/unsupervised dataset algos] add "Exclude bad bands/features" option #560
- [Spectral resampling (to spectral raster layer wavelength and FWHM)] allow to select non-raster files specifying center wavelength and fwhm #574
- [Spectral resampling algos] add option for linear interpolation #580
- implement random point-vector creation from raster layer value-ranges #593
- implement an algorithm that creates a classification layer from a rendered image #611
- [Spectral resampling] use a file output widget for writing the SRF #620
- [Convolution filter algos] mark output no data bands as bad bands #637
- [Subset raster layer bands] add "Derive and exclude additional bad bands" option #638
- [Spectral Index Optimizer] filter non-finite values before fitting #718
- [Spectral View] use @symbol_color by default for a new profile visualization #312
- make example datasets (berlin, potsdam) available via Menu > Tools > Developers > Example Datasets #561
- [Example Dataset] make the full EnMAP scene available for download #566
- [Example Dataset Potsdam] add library and continuous-vector-layer #576
- [Scripts] implement script for cutting EnMAP L2A scenes according to a given tiling scheme #583
Show all (62)
- [Profile Analytics] ignore or handle WMS layers properly #443
- [Scripts/create_plugin.py] can't build plugin (somehow related to Markdown) #452
- EnMAP-Box failing to load PRISMA data #455
- New error when starting EnMap-Box #459
- ValueError: ndarray is not C-contiguous #463
- Ubuntu 22.04: No module named 'PyQt5.pyrcc_main' #466
- [Classification workflow] temp files are written into the QGIS installation folder #477
- ValueError: Input contains NaN, infinity or a value too large for dtype('float32'). #495
- [Translate raster layer] data gain/offset is getting lost, when translation an EnMAP L2A VRT to GTiff format #501
- Regression-based unmixing does not allow to select Endmember dataset #503
- "Predict classification layer" can not use RFc model #504
- Bug in beta leaf angle distribution within IVVRM (EnMAP-box 3.12.1) #507
- FAILED tests/enmap-box/enmapboxprocessing/test_utils.py::TestUtils::test_gdalDataTypeToNumpyDataType #508
- [Data Views panel] opening the layer properties from the context menu not working #541
- Convolution Algorithm tests #542
- Plugin EnmapBox crashed QGIS #546
- Warning on startup: "Agricultural Applications already loaded" #568
- [Data Sources] Right-click list index out of range #569
- Can not open Map View #570
- [Map View] context menu content is shown twice #572
- [Spectral View] profiles not correctly displayed #581
- TypeError when running PRISMA L2D import in batch #584
- [Processing] clicking the "Run as Batch Process" button when running in PyCharm not working #585
- [Spectral convolution Ricker Wavelet filter] ValueError: Setting nan_treatment='interpolate' requires the kernel to be normalized #587
- ModuleNotFoundError: No module named 'enmapboxexampledata' #588
- [Raster math] broken link #591
- import L2A EnMAP data - error #595
- Raster Math IndexError: list index out of range #601
- AttributeError:module 'numpy' has no attribute 'float'. #604
- ValueError: node array from the pickle has an incompatible dtype #614
- [Raster math] make the default output optional #615
- [QPS readENVIHeader] reading header file fails if binary file isn't available #622
- classificationfromrenderedimagealgorithm.py: TypeError (Python 3.10) #626
- [Location Browser] gives requests.exceptions.JSONDecodeError #636
- [Location Browser] Geocoding search not working #639
- [Import Spectral Profiles dialog] Raster Layer imports are not correctly scaled und no-data values aren't correctly set to NaN #641
- [Spectral View] raster wavelength not recognized #642
- [Spectral Processing] progress bar indicates processing after algorithm finishes #643
- [Spectral Processing] after clicking on "Run" the dialog should be switching to the "Log" tab #644
- [Spectral Processing] Python crashes when selecting "Translate raster layer" #645
- [Spectral Processing] algo parameters not shown #647
- [Profile Analystics] Open within QGIS causes TypeError #649
- ERROR #654
- [Processing algorithm dialog] outdated link for the Help button #659
- [PIP Package Installer] is broken #671
- Documentation on Installation #672
- [Classification workflow] not working with testdataset #688
- EnMap installation - trouble with Python library #690
- Error loading 'Classification Workflow (Advanced) #694
- EnmapBox cannot be installed through flatpack #707
- AttributeError: type object 'QgsMapLayerProxyModel' has no attribute 'Filters' #713
- [Spectral View] collected pixel profiles aren't showing up inside a map view #720
- [Class separability report algo] output is printed into the QGIS Python Console instead of the algo log #722
- Link for requirements in docs not valid #725
- [Regression layer accuracy report] scatter plot figures not shown in report #727
- [Spectral View] GeoJSON library not correctly visualized #731
- [Map View] Setting QGIS Map center/extent does not work #738
- [Scatter Plot] funny behaviour on move houver event for empty plots #745
- [PIP Installer] subprocess.CalledProcessError: Command '...\Python39\python3.exe -m pip list' returned non-zero exit status 1. #760
- [Save raster layer as] Output options aren't applied #808
- Decorrelation stretch rendering does not work #811
- [Spectral View] import profiles from raster isn't working #819
This release was tested under QGIS 3.28 (LTR).
- implement a Raster Band Stacking (EO4Q) app #155
- Implement a Location Browser [EO4Q] app #200
- implement Sensor Product Import (EO4Q) app #211
- [Location Browser] support WKT geometries #218
- [Profile Analytics] add code editor widget #229
- connect to the QGIS Temporal Controller panel and add support for temporal raster stacks #245
- [Raster Layer Styling] add a range-slider for interactively masking values to be displayed #247
- [Temporal Raster Stack Controller] add support for QgsPalettedRasterRenderer #255
- [RasterReader API class] implement method that returns pixel-wise cover fractions of a polygon-geometry #263
- [Profile Analytics] implement temporal timeseries fitting UFUNC using RBF Ensemble approach #273
- [GEE TSE app] properly handle missing STAC files for custom collections #369
- [Spectral Index Creator] use full name as band name #390
- enmapboxtestdata.SensorProducts problems #318
- support NETCDF_DIM_time format as date time metadata #251
- allow to open/import external sensor products like Landsat via drag&drop of the products folder #124
- [Spectral Library View] use speclib default style #197
- allow to store project settings #201
- [Import EnMAP L2A product algorithm] add options for handling the detector overlap #216
- [Raster math] improve temp-variable handling #235
- [Regression-based unmixing] add option for sum of unmixing to 1 constraint #239
- implement a simple and interactive 3D spectral data cube visualization #272
- implement EMIT L2A sensor product import algorithm #278
- [Create spectral indices algorithm] result VRT shouldn't be dependent on _temp folder #292
- implement a MultipleRasterBandSelectionWidget #180
- implement a Resource Gallery dev-tool #193
- implement a custom BuildVrtStack function #217
- Reporting #258
- make typeguard optional #345
Show all (69)
- The setup for testing non-blocking-dependencies is gone. #176
- CatBootRegressor issue #189
- [Regression Workflow] TypeError: type of argument "meanAbsoluteError" must be either float or int #190
- [Create classification dataset (from categorized vector layer with attribute table) algo] can't select vector table as input #198
- [Raster Band Stacking] Toggle Selection is not working correctly #208
- [GEE TSE] data is not scaled before index calculation #210
- [Raster Layer Styling] error when changing from multiband to singleband raster #213
- [Sensor Product Import] cancelling the import algo will still open the metadata file #214
- glossary links are missing in algorithm descriptions #233
- [Raster math] using vector fields not working #236
- [GEE TSE] data stretch is not working in Composite Mode #244
- [Profile Analytics] problem with layers that have no CRS set #252
- [Temporal Raster Stack Controller] the toolbar button is toggeling all layers and not only the selected once #254
- [Sensor Product Import] panel is not showing up in QGIS when clicking the toolbar button #259
- improve EnMAP L2B product export to ENVI BSQ format #267
- [S2 Product Import] Dataset Metadata is dropped in the stacking #269
- [Spectral profile sources] Python error when selecting raster source #275
- [Data Sources] Opening vector sources with multiple layers (e.g. GPKG) #286
- ModuleNotFoundError: No module named 'enmapbox.settings' #287
- [Sensor Product Import] wrong PRISMA algorithm is triggered #289
- Spectral Convolution Savitsky-Golay Filter issue #306
- [Save raster layer as] error when saving to temp-file #310
- [Spectral View] when opening a library, the attribute table is shown, but the corresponding button isn't checked #311
- [Spectral View] Save Edits is messing up attribute table values #315
- Mac users: application "Soil applications -->Ensomap" not available #327
- TypeError: Subscripted generics cannot be used with class and instance checks #330
- [Location Browser] error in case of no map view available #335
- [GEE Time Series Explorer] panel is not showing up #337
- [Sensor data import] EnMAP L1C data import fails #338
- [GEE Time Series Explorer] Collections don't load #339
- [Create regression dataset (from continuous-valued vector layer and feature raster)] extent mismatch error #341
- Missing packages after upgrading 3.11.1 to 3.12alpha7. #351
- ModuleNotFoundError: No module named 'pkg_resources' #357
- RasterReader fails to read wavelength and wavelength units from QML #358
- [GEE TSE app] fix typo in collection #364
- AttributeError: type object 'SensorProducts' has no attribute 'Enmap' #365
- Several unit test errors #366
- Moving Spectral Library view causes AttributeError: 'NoneType' object has no attribute 'moveDock' #375
- syntax error within "Spectral Profiles Sources" window #376
- AttributeError: 'NoneType' object has no attribute 'dataSources' #377
- AttributeError: 'NoneType' object has no attribute 'floatDock' #379
- [Location Browser app] cleanup old boundary layer from the data sources panel #388
- [Import Sentinel-2 L2A product] data is not scaled between 0 and 1 #391
- Problems with Spectral Viewer #392
- Wrong GitHub clone URL #393
- [Spectral View] raster layer renderer bar not shown for SingleBandPseudocolor renderer #394
- [Data Sources] error when opening a vector layer in QGIS 3.30.0 #396
- [Convex hull and continuum-removal] incorrect output for EnMAP L2A products #397
- typeguard.TypeCheckError: mList is not an instance of PyQt5.QtWidgets.QListWidget #398
- QGIS crashes when activating the EnMAP-Box plugin #403
- "TypeError: 'NoneType' object is not subscriptable" when opening a saved project in QGIS #414
- [QPS] SpectralLibrary class is deprecated, replace usages with SpectralLibraryUtils #417
- [qps] Can not read HDF4 error while Box is not opened/used #418
- [Spectral View] content of GeoJSON file not correctly recognized #422
- several icons aren't available anymore #429
- ValueError: unsupported data type: int64 #433
- SpectralLibrary class was removed and replaced by QgsVectorLayer, which causes unittests to fail #434
- PytestCollectionWarning: cannot collect test class 'TestCase' because it has a init constructor #438
- OSError: [Errno 6] No such device or address, SensorProducts #439
- TestClassFractionRenderer: sklearn.utils._param_validation.InvalidParameterError #440
- TypeError: type of argument "value" must be one of (int, str); got numpy.int64 instead #448
- Couldn't load plugin 'enmapboxplugin' due to an error when calling its classFactory() method #453
- Import Spectral Profiles -> from Raster Layer dialog #454
- Incorrect geocoding of PRISMA L2D data imported via Import dialog #473
- Pixel Profile: Spectral Library Viewer does not open #488
- [Spectral resampling (to Landsat 4/5 TM)] resampling an EnMAP L2A to Landsat isn't working correctly #490
- IndexError when trying to import PRISMA L2D data #497
- AttributeError: module 'numpy' has no attribute 'float' #510
- TypeError: QgsMapToolAddFeature.init() got multiple values for argument 'mode' #516
This release was tested under QGIS 3.26.
- Interactive setting of bad bands in the Raster Layer Styling/Gray #31
- support spatial profile plotting #58
- add dual-band pseudocolor renderer #70
- implement 3-band HSV color model renderer #73
- implement 4-band CMYK color model renderer #74
- [Bivariate Color Raster Renderer app] make upper-right color optional #77
- [Bivariate Color Raster Renderer app] add user defined min/max settings #79
- implement a Profile Analytics app #81
- implement RGB renderer with bands from multiple raster sources #112
- reimplement Reclassify app and algorithm #15
- [Spectral Index Optimizer algorithm] make it a core algo and overhaul #19
Show all (49)
- link extraction from glossary.rst is broken #1
- temporal pixel profile from FORCE TSI raster not correctly displayed in SpectralView #5
- several exampledata files are missing #7
- fix DeprecationWarning: QgsMapLayer.saveDefaultStyle() is deprecated message, success = layer.saveDefaultStyle() #8
- 'there is no matching overloaded signal' error on identify cursor location value #12
- SVR errors #18
- Color Space Explorer becomes unresponsive after using Decorrelation Stretch Renderer #27
- Read and apply hdr field "default bands" if present for initial color composite display #28
- Impossible to add created vector to a new/existing map via data source context menu #32
- Attribute form doesn't appears on EnMAP-Box map #33
- [Data source tree] GEE Data Catalog Plugin color composition doesn't work #34
- Sample raster layer values error : "TypeError: type of argument "coverageMin" must be int; got float instead" #35
- dropping a Sentinel-2 product into the MapView area isn't triggering the correct import algorithm #42
- Replace or remove user specific / local file paths #45
- RasterReader: undefined name Qgis #46
- Error mouse move? #50
- Drag&drop EnMAP-Box source to QGIS will open the source twice #60
- [GEE TSE app] change from S2_SR collection to S2_SR_HARMONIZED #64
- bad behaviour when dropping a raster layer on a map view that has no default style #80
- [Spectral Profile Sources panel] using Source = "Last raster layer" not working #83
- SpectralProfile widget type is shown twice #86
- Process
ApplyMaskLayerToRasterLayer
fails with anAttributeError
#87 - SpatialPoint.toPixelPosition is broken #88
- Raster Math error #92
- [Apply mask layer to raster layer] cannot convert float NaN to integer #95
- [Raster layer styling panel] Remove style for defaut wms #96
- incorrect symbol in plot style widget #97
- dropping PRISMA product into EnMAP-Box is broken #100
- [EnGeoMAP] GUI does not start #101
- ModuleNotFoundError: No module named 'geetimeseriesexplorerapp' #105
- Blank red band when adding multiband raster layer in default colors (RGB) #106
- Missing test or example files #110
- [Processing] scipy ndimage filters "layers were not correctly generated" #116
- [Processing] Stack raster layers - 'RasterWriter' object has no attribute 'removeMetadata' #117
- [Classification layer accuracy report] TypeError #120
- [Create RGB from Class Probabilitiy / Fraction Layer algo] RuntimeError #133
- Error in "Class fraction layer from categorized vector layer" #135
- [About window] Licence "File not found" #136
- [Processing toolbox] Debugging algo in list #139
- [HSV Renderer] displayed image is all black #140
- QgsMapLayer menus are not created in case of ModuleNotFound exceptions in sub-applications #143
- [GDAL Metadata] editing metadata is broken (ENVI files only) #147
- remove "float" button for already floating views #157
- [Save raster layer as algo] fix algo description #168
- Create classification dataset (from categorized vector layer and feature raster) error #177
- location map tool is broken #242
- [Map View] 'QgsPointXY' object has no attribute 'toCrs' #243
- [GEE Time Series Explorer] fix problem with STAC format changes #283
- netCDF4 requirement blocks main GUI #401