FORCE v. 3.7.0

Release: 26.07.2021

  • General changes

    • Code of Conduct was added.

    • Contribution guidelines were added.

    • Makefile: The check for the successful installation has been reworked. Thanks to Willi Weber for help on this topic.

    • commandline usage: FORCE is progressing towards a stricter usage of Unix-style commandline calls. This has been implemented for all programs, some are still outstanding. As an example, force -v prints the version. Please adjust your routines if necessary. Some new features were introduced by this, too. This also solves this issue that some users experienced.

  • FORCE L1AS

    • Added nanoseconds to the temporary folder and metadata generated by force-level1-csd. This helps if the program is called from a parallel loop. Thanks to Pablo Rodríguez-Sánchez for suggesting this feature.

    • force-level1-csd is now aware of the FORCE_CREDENTIALS environment variable

    • Stefan Ernst fixed a bug when -n was given as first option.

    • Stefan Ernst added an option -l, which checks against logs from FORCE L2PS, and only downloads images that weren’t processed already.

  • FORCE L2PS

    • new program: force-level2-report. The new program allows to generate an html report of the Level 2 Processing.

    • fixed an inconsistency in the use of the MAX_CLOUD_COVER parameters. MAX_CLOUD_COVER_FRAME considered clouds and cloud shadows. MAX_CLOUD_COVER_TILE considered clouds, cloud shadows, and snow. The latter caused unexpected results, thus MAX_CLOUD_COVER_TILE now drops the snow evaluation. Thanks to Marco Wolsza for bringing up this issue.

    • force-lut-modis has new options, that specify whether the daily tables and/or climatology should be generated or not.

  • FORCE HLPS

    • in force-higher-level, ARD submodules: Added an additional exit when the date or product of datasets could not have been retrieved. This can e.g. happen when users are renaming ARD. Thanks to Fabian Lehmann for highlighting this issue.

    • in force-higher-level, all sub-modules: Implemented a material-specific spectral adjustment (Scheffler et al. 2020). A new parameter SPECTRAL_ADJUST was added. If TRUE, Landsat reflectance is adjusted to Sentinel-2. This also enables usage of Red-Edge indices for Landsat. Note that this method increases I/O as all input bands are needed to perform the adjustment. Thanks to Daniel Scheffler for discussion and help on porting.

    • in force-higher-level, TSA sub-module: Fixed a coredump that occured when using OUTPUT_FB* = FALSE AND OUTPUT_CA* = TRUE. Thanks to Matt Clark for reporting this issue.

    • in force-higher-level, TSA sub-module: Daniel Scheffler added a whole bunch of new red edge indices, see tsa-param-index.

    • in force-higher-level, TSA sub-module: Reworked some aspects of the CAT transformation. Thanks to Franz Schug for discussion and testing.

      • Mean and number of observations are also written (instead of nodata) if one segment (total/before/after) had less than 3 observations; all trend parameters remain nodata however.

      • Added a new parameter CHANGE_PENALTY that puts a penalty on change candidates, where the subsequent index value is high. If this parameter is TRUE, the change is detected as the point in time with maximum (pre - now)*(pre-post). If FALSE, the change is detected as the point in time with maximum (pre - now); this is the same as before.

      • The offsets are now reported at the beginning of each segment. Before, the offsets were reported at the beginning of the time series, which was especially disadvantagous for the “after change” segment.

    • in force-higher-level, TSA sub-module: Reworked some aspects of the Trend analysis and CAT transformation.

      • Added new layers for the absolute gain, which is the slope * length of the times series.

      • Added new layers for the length of the time series.

      • The relative change (slope * length of time series / offset) is now reported in percent. Also, this layer is 0 if offset <= 0.

    • in force-higher-level, TSA sub-module: Fixed an issue when computing kNDVI.

    • A new submodule is available: UDF plug-in, enabled by a lot of support by Andreas Rabe. This submodule is an extension of the plug-in functionality introduced in v3.6.0. Python UDFs can now be simply plugged into FORCE, thus running custom Python code without re-compiling FORCE. The UDF submodule acts on the ARD input type (see Input type). Two types of UDFs are supported:

      1. pixel-based UDF: the user only has to write a pixel-function, FORCE takes care of everything else.

      2. block-based UDF: the user has to write a function that receives a block of data. Useful for numpy-stype functions.

      A tutorial is planned to showcase the usage.

    • The usage of the previous UDF functionality within the TSA submodule was harmonized with the new UDF submodule. You will need to slightly adapt your existing UDF to work with the new version. Both UDF types are supported in the TSA submodule, too.

      A tutorial is planned to showcase the usage.

      There is a new repository that holds a collection of UDFs. Users are encouraged to upload their UDFs there for broad user uptake. The UDFs are also cloned into the FORCE docker images.

    • in force-higher-level, LSM sub-module:

      Franz Schug added two new features. 1) The submodule now takes the minimum size of a patch to be considered for metrics calculation as a parameter; new parameter: LSM_MIN_PATCHSIZE. 2) force-lsm now offers greater than or equal to (GE) and lower than or equal to (LE) as additional threshold definitions (LSM_THRESHOLD_TYPE).

  • FORCE AUX

    • force-pyramid takes levels and resampling method as additional arguments.

    • force-parameter allows to specify the parameter file name.

    • force-mosaic has new options: output folder relative to the input data (default: mosaic), and number of parallel jobs.

    • force cube thas new options: attribute name for vector data to be burned into the raster; input layername; output nodata; output datatype; output basename; number of parallel jobs.