- Fixed an issue where vector features with empty dataframes couldn't be saved to a Geopackage.
- Memory improvement in
EOPatch
merging procedure. - Added support for
aws_session_token
, contributed by @theirix. - Fixed an issue in
ImportFromTiffTask
. - Fixed a packaging issue where some new subpackage extensions didn't work in the version
1.0.0
that was released to PyPI. eo-learn
abstract package from now on requires fixed versions ofeo-learn
subpackages.- Applied
isort
formatting on the entire package. - Minor improvements in code and documentation.
-
EOPatch
changes:- IO for vectors and meta-info switched from
pickle
to Geopackage, GeoJSON, and JSON files. Objects saved withpickle
can be loaded but the format is deprecated. - Now supports the
in
keyword for checking whether anEOPatch
contains a given feature. - Major update to
EOPatch
plotting functionality, which now features a simplermatplotlib
back-end. See example notebook for more details. - Removed some outdated
EOPatch
methods such asget_feature
,rename_feature
, etc. - Representation (
EOPatch.__repr__
method) skips empty features.
- IO for vectors and meta-info switched from
-
EOTask
changes:EOTask
method_parse_features
replaced withget_feature_parser
and additional helper methods (parse_feature
,parse_renamed_feature
,parse_features
,parse_renamed_features
).- Removed
EOTask.__mul__
as task concatenation as it was unsound.
-
EONode
is a newly introduced object for specifying computational graphs. It replaces rawEOTask
objects when building anEOWorkflow
. -
EOWorkflow
changes:LinearWorkflow
is replaced withlinearly_connect_tasks
function that prepares nodes for a linear workflow.- No longer accepts tuples in execution arguments. In cases where this is required, passing arguments to a task can be done with the new
InputTask
. EONodes
form a tree-like structure of dependencies, hence the end-nodes of a workflow contain all information. AnEOWorkflow
object can be constructed from end-nodes viafrom_endnodes
method.
-
EOExecutor
changes:- Added
RayExecutor
as an extension ofEOExecutor
for working with theray
library. - Execution arguments are now given w.r.t.
EONode
objects instead ofEOTasks
. - Now always returns results, which by default only contain statistics. Other data (for instance the final EOPatch) can be added to results with the new
OutputTask
. - Additionally, supports a
filesystem
argument for saving logs and reports. - Reports now have the option to only link to logs, greatly reducing size in case of large numbers of EOPatches. Logs files are now also more informative.
- Added
-
FeatureParser
now supports fewer input formats but handles those better. It now returns lists instead of generators. See documentation for more information. -
WorkflowResults
are re-done. They now contain execution stats of nodes (start and end times) and the outputs ofOutputTask
s in the workflow. -
FeatureType
methodis_time_dependant
renamed tois_temporal
.
- Added
LinearFunctionTask
which applies a linear function to features. MorphologicalFilterTask
moved fromml_tools
tofeatures
module.- Sampling tasks moved
geometry
toml_tools
module. Sampling tasks have also been greatly upgraded, with the main being:FractionSamplingTask
for sampling random points in a class-balanced wayBlockSamplingTask
for randomly sampling larger blocks of data (can also be 1 pixel blocks)GridSamplingTask
for deterministically sampling according to a grid.
- Removed
feature_extractor
module. - Removed unused submodules of
ml_tools
(classifier
,postprocessing
, ...) - To reduce core dependencies some functionalities have been moved to
extra
modules. - Removed deprecated and outdated methods and tasks.
- Moved many examples to new repository. The rest were updated.
- Switched to github actions for CI.
- Code was reformatted with
black
and is now checked to be compliant with the standard. - Abstract base classes are now correctly enforced.
- Added utility functions for working with S3 and AWS.
- Various minor changes.
- Copying EOPatches no longer forces loading of features if the EOPatch was loaded with
lazy_loading=True
SentinelHubInputTask
now requests bands with correct units and should now work with more data collections. The parameterbands_dtype
is now by default set toNone
, which uses the default units of each band. Note: due to changes the task no longer normalizes the output whenbands_dtype=np.uint16
is used.- Minor fixes and improvements
EOWorkflow
now automatically makes a shallow copy of eachEOPatch
before passing it to anyEOTask
in the workflow.- Streamlined naming conventions of EOTasks - every name now ends with
Task
. Old names have been deprecated. - Improved functionality of merging EOPatches, particularly of merging time-dependent features.
- Removed support for Python 3.6 and added official support for Python 3.9.
- Implemented
EOPatch.copy
andEOPatch.__delitem__
methods. - Added
eolearn.io.MeteoblueRasterTask
andeolearn.io.MeteoblueVectorTask
for obtaining weather data. Joint effort with Meteoblue. VectorToRasterTask
now supports rasterization of time-dependant vector features. Contributed by @asylve.- Fixes in
SentinelHubInputTask
. BothSentinelHubInputTask
andSentinelHubEvalscriptTask
now return EOPatches with timestamps that don't have timezone information anymore. - Changed
rasterio
dependency torasterio>=1.2.7
- All but
eolearn.core
tests ported topytest
framework. - Switched from Travis CI to GitHub actions.
- Minor fixes and improvements.
- Minor fixes and improvements:
SaveTask
andLoadTask
don't automatically store a filesystem object anymore,- fix in
ImportFromTiff
about file extensions, contributed by @rpitonak, - fix in
SentinelHubInputTask
about data collection bands handling, - fix in
GeoDBVectorImportTask
, NormalizedDifferenceIndexTask
doesn't show division warnings anymore,- improvement in
PointSamplingTask
- improvements in LULC documentation notebook.
- Added new tasks
VectorImportTask
,GeopediaVectorImportTask
, andGeoDBVectorImportTask
toeo-learn-io
. - Code improvements in LULC classification documentation notebook.
- Minor improvements and fixes.
- Changes in
eo-learn-io
tasks that interact with Sentinel Hub services:- Added
SentinelHubEvalscriptTask
that downloads data given a user-defined evalscript. - Removed all tasks that interact with Sentinel Hub OGC services. They are fully replaced by
SentinelHubInputTask
andSentinelHubEvalscriptTask
which use Sentinel Hub Process API. - Renamed
AddSen2CorClassificationFeature
toSentinelHubSen2corTask
. Now it uses Process API instead of OGC.
- Added
- Changes in Sentinel-2 cloud-masking tasks:
- Renamed
AddMultiCloudMaskTask
toCloudMaskTask
. - Removed
AddCloudMaskTask
as it is superseded byCloudMaskTask
. - Fixed problems with incompatibility with the latest
scikit-learn
version.
- Renamed
- Updated all notebooks in
eo-learn
repository. - Minor fixes and improvements:
- better handling of
KeyboardInterrupt
inEOExecutor
, - fixed plotting of raster features with binary dtype,
- documentation fixes.
- better handling of
- Added example use-case about creating a timelapse with batch processing.
- Added example use-case about crop type classification. Contributed by @Gnilliw
- Updated code to be compatible with the latest releases
sentinelhub-py
3.2.0
ands2cloudless
1.5.0
. - Fixed an issue in
eolearn.coregistration.RegistrationTask
. - Fixed an issue in
eolearn.io.ExportToTiff
with paths on Windows. - Various minor improvements.
- Switched from "data source" to "data collection" terminology according to changes in
sentinelhub-py
and Sentinel Hub services. - Improvements in
SentinelHubInputTask
to better support any type of data collection. Using newDataCollection
class fromsentinelhub-py
. - Extended
ExportToTiff
andImportFromTiff
tasks to support writing and reading from AWS S3 buckets. Implemented in cooperation with @wouellette. - Implemented
EOPatch.merge
method andMergeEOPatchesTask
task for merging the content of any number of EOPatches. Implemented in cooperation with @wouellette. - Deprecated
EOPatch.concatenate
in favour ofEOPatch.merge
. - Added
eolearn.features.DoublyLogisticApproximationTask
, contributed by @bsircelj. - Optional parameter
config
forSaveTask
andLoadTask
to enable defining custom AWS credentials. - Fixed a bug in
eolearn.features.ValueFilloutTask
. - Started releasing
eo-learn
(sub)packages also as wheels. - Minor improvements and fixes.
- Support for
geopandas
version0.8.0
- Added a notebook with an end-to-end example on how to transform a ML-model into an evalscript and run it with Sentinel Hub service
- Added
eolearn.features.ClusteringTask
, contributed by @bsircelj - An option to define a custom log filter for
EOExecutor
- Data mask obtained by
SentinelHubInputTask
has now boolean type instead of uint8 - Updates of some example notebooks
- A few minor fixes
- Added eo-learn dockerfiles and deployed official eo-learn docker images to Docker Hub
- Added
compress
parameter toExportToTiff
, contributed by @atedstone - Minor fixes
- Updated example notebooks - replaced OGC service tasks with Processing API service tasks
- Deprecated tasks that download data from Sentinel Hub OGC service
- Minor fixes in
SentinelHubInputTask
andAddCloudMaskTask
- Updates of
SentinelHubInputTask
:- Support for new s2cloudless precomputed cloud mask (more info)
- Support for
config
parameter
- Updated
SI_LULC_pipeline
notebook.
- Added support for
geopandas
version0.7.0
. - Fixed a bug in
eolearn.core.eodata_io.save_eopatch
function. - Improvement in
eolearn.mask.MaskFeature
task - it now works also works with time independent feature types. - A minor improvement in
eolearn.io.SentinelHubInputTask
task.
- Support additional data in the Processing API input task (such as sunAzimuthAngles, sunZenithAngles, viewAzimuthMean, viewZenithMean)
- Compatibility with the
sentinelhub-py
3.0 - Removed support for python 3.5
- Multiprocessing Log filtering
eolearn.io.SentinelHubInputTask
: evalscript version was not passed to the sentinel-hub service.eolearn.core.EOWorkflow
: fixed generating task dependencies.
- Processing API docs generation.
- Introduced CHANGELOG.md.