• Stars
    star
    1,111
  • Rank 41,794 (Top 0.9 %)
  • Language
    Python
  • License
    MIT License
  • Created over 6 years ago
  • Updated 5 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Earth observation processing framework for machine learning in Python

Package version Conda version Supported Python versions Build Status Docs status License Overall downloads Last month downloads Docker pulls Code coverage DOI

eo-learn

eo-learn makes extraction of valuable information from satellite imagery easy.

The availability of open Earth observation (EO) data through the Copernicus and Landsat programs represents an unprecedented resource for many EO applications, ranging from ocean and land use and land cover monitoring, disaster control, emergency services and humanitarian relief. Given the large amount of high spatial resolution data at high revisit frequency, techniques able to automatically extract complex patterns in such spatio-temporal data are needed.

eo-learn is a collection of open source Python packages that have been developed to seamlessly access and process spatio-temporal image sequences acquired by any satellite fleet in a timely and automatic manner. eo-learn is easy to use, it's design modular, and encourages collaboration -- sharing and reusing of specific tasks in a typical EO-value-extraction workflows, such as cloud masking, image co-registration, feature extraction, classification, etc. Everyone is free to use any of the available tasks and is encouraged to improve the, develop new ones and share them with the rest of the community.

eo-learn makes extraction of valuable information from satellite imagery as easy as defining a sequence of operations to be performed on satellite imagery. Image below illustrates a processing chain that maps water in satellite imagery by thresholding the Normalised Difference Water Index in user specified region of interest.

eo-learn library acts as a bridge between Earth observation/Remote sensing field and Python ecosystem for data science and machine learning. The library is written in Python and uses NumPy arrays to store and handle remote sensing data. Its aim is to make entry easier for non-experts to the field of remote sensing on one hand and bring the state-of-the-art tools for computer vision, machine learning, and deep learning existing in Python ecosystem to remote sensing experts.

Package Overview

eo-learn is divided into several subpackages according to different functionalities and external package dependencies. Therefore it is not necessary for user to install entire package but only the parts that he needs.

At the moment there are the following subpackages:

  • eo-learn-core - The main subpackage which implements basic building blocks (EOPatch, EOTask and EOWorkflow) and commonly used functionalities.
  • eo-learn-coregistration - The subpackage that deals with image co-registration.
  • eo-learn-features - A collection of utilities for extracting data properties and feature manipulation.
  • eo-learn-geometry - Geometry subpackage used for geometric transformation and conversion between vector and raster data.
  • eo-learn-io - Input/output subpackage that deals with obtaining data from Sentinel Hub services or saving and loading data locally.
  • eo-learn-mask - The subpackage used for masking of data and calculation of cloud masks.
  • eo-learn-ml-tools - Various tools that can be used before or after the machine learning process.
  • eo-learn-visualization - Visualization tools for core elements of eo-learn.

Installation

PyPi distribution

The package requires Python version >=3.8 . It can be installed with:

pip install eo-learn

In order to avoid heavy package dependencies it is possible to install each subpackage separately:

pip install eo-learn-core
pip install eo-learn-coregistration
pip install eo-learn-features
pip install eo-learn-geometry
pip install eo-learn-io
pip install eo-learn-mask
pip install eo-learn-ml-tools
pip install eo-learn-visualization

Before installing eo-learn on Linux it is recommended to install the following system libraries:

sudo apt-get install gcc libgdal-dev graphviz proj-bin libproj-dev libspatialindex-dev

Before installing eo-learn on Windows it is recommended to install the following packages from Unofficial Windows wheels repository:

gdal
rasterio
shapely
fiona

One of dependencies of eo-learn-mask subpackage is lightgbm package. On Windows it requires 64 bit Python distribution. If having problems during installation please check LightGBM installation guide.

Some subpackages contain extension modules under extra subfolder. Those modules typically require additional package dependencies which don't get installed by default.

Conda Forge distribution

The package requires a Python environment >=3.8.

Thanks to the maintainers of the conda forge feedstock (@benhuff, @dcunn, @mwilson8, @oblute, @rluria14), eo-learn can be installed using conda-forge as follows:

conda config --add channels conda-forge

conda install eo-learn

In order to avoid heavy package dependencies it is possible to install each subpackage separately:

conda install eo-learn-core
conda install eo-learn-coregistration
conda install eo-learn-features
conda install eo-learn-geometry
conda install eo-learn-io
conda install eo-learn-mask
conda install eo-learn-ml-tools
conda install eo-learn-visualization

Run with Docker

A docker image with the latest released version of eo-learn is available at Docker Hub. It provides a full installation of eo-learn together with a Jupyter notebook environment. You can pull and run it with:

docker pull sentinelhub/eolearn:latest
docker run -p 8888:8888 sentinelhub/eolearn:latest

An extended version of the latest image additionally contains all example notebooks and data to get you started with eo-learn. Run it with:

docker pull sentinelhub/eolearn:latest-examples
docker run -p 8888:8888 sentinelhub/eolearn:latest-examples

Both docker images can also be built manually from GitHub repository:

docker build -f docker/eolearn.dockerfile . --tag=sentinelhub/eolearn:latest
docker build -f docker/eolearn-examples.dockerfile . --tag=sentinelhub/eolearn:latest-examples

Documentation

For more information on the package content, visit readthedocs.

More Examples

Examples and introductions to the package can be found here. A large collection of examples is available at the eo-learn-examples repository. While the examples there are not always up-to-date they can be a great source of ideas.

Contributions

The list of all eo-learn contributors can be found here. If you would like to contribute to eo-learn, please check our contribution guidelines.

Blog posts and papers

Questions and Issues

Feel free to ask questions about the package and its use cases at Sentinel Hub forum or raise an issue on GitHub.

You are welcome to send your feedback to the package authors, EO Research team, through any of Sentinel Hub communication channel.

License

See LICENSE.

Acknowledgements

This project has received funding from the European Unionโ€™s Horizon 2020 research and innovation programme under grant agreements No. 776115 and No. 101004112.

More Repositories

1

sentinelhub-py

Download and process satellite imagery in Python using Sentinel Hub services.
Python
804
star
2

custom-scripts

A repository of custom scripts to be used with Sentinel Hub
JavaScript
651
star
3

sentinel2-cloud-detector

Sentinel Hub Cloud Detector for Sentinel-2 images in Python
Python
422
star
4

field-delineation

Field delineation with Sentinel-2 data from Sentinel-Hub and a ResUnet-a architecture.
Jupyter Notebook
149
star
5

eo-flow

Collection of TensorFlow 2.0 code for Earth Observation applications
Python
91
star
6

water-observatory-backend

Monitoring water levels of lakes and reservoirs using satellite imagery
Jupyter Notebook
79
star
7

EOBrowser

The Earth Observation Browser is a search tool for Sentinel-1, -2, -3, Landsat 5, 7, 8, Modis and Envisat satellite imagery
JavaScript
78
star
8

SentinelPlayground

Simple application for using Sentinel-2 WMS service
JavaScript
73
star
9

multi-temporal-super-resolution

Multi-temporal Super-Resolution on Sentinel-2 Imagery using Deimos
Jupyter Notebook
57
star
10

time-lapse

Python scripts for creating time lapse videos and gifs from Sentinel-2 images
Jupyter Notebook
55
star
11

sentinelhub-js

Download and process satellite imagery in JavaScript or TypeScript using Sentinel Hub services.
TypeScript
52
star
12

eo-learn-workshop

Bridging Earth Observation data and Machine Learning in Python
Jupyter Notebook
42
star
13

sentinelhub-qgis-plugin

QGIS Plugin for Sentinel Hub
Python
37
star
14

eo-grow

Earth observation framework for scaled-up processing in Python
Python
37
star
15

eo-learn-examples

Examples of Earth observation workflows that extract valuable information from satellite imagery, giving you hints and ideas how to use the EO data.
Jupyter Notebook
36
star
16

natural-color

Natural color representation of Sentinel-2 data
JavaScript
29
star
17

water-observatory-frontend

Frontend React app for https://water.blue-dot-observatory.com/
JavaScript
27
star
18

collections

Repository with information about openly available collections
JavaScript
26
star
19

example-notebooks

Miscellaneous notebooks to use with Sentinel Hub
Jupyter Notebook
18
star
20

education

Worked out examples for common eo topics, meant to facilitate learning and encourage curiosity.
Jupyter Notebook
16
star
21

hiector

A Python package for hierarchical building detection developed under Query Planet CCN3
Python
13
star
22

code-snippets

Jupyter Notebook
12
star
23

byoc-tool

Tool that prepares your data for use in Sentinel Hub
Java
7
star
24

cv4a-iclr-2020-starter-notebooks

Starter notebooks using eo-learn for the CV4A workshop at ICLR 2020
Jupyter Notebook
6
star
25

pin-library

HTML
5
star
26

classification-app-frontend

JavaScript
5
star
27

global-timelapse

Interact with our planet and observe global-level data in the form of different layers
JavaScript
4
star
28

odc-sh

Sentinel plugin for Open data cube https://www.opendatacube.org/
Jupyter Notebook
3
star
29

classification-app-backend

Code to reproduce the back-end service for ClassificationApp
Python
3
star
30

requests-builder

JavaScript
2
star
31

digital-twin-of-news

Jupyter Notebook
2
star
32

eo-grow-examples

Earth Observation framework for scaled-up processing `eo-grow` in action.
Jupyter Notebook
2
star
33

bids-cdse-jupyter

Workshop content for using Jupyter Notebooks on the Copernicus Data Space Ecosystem. Workshop held at the Big Data from Space 2023 conference.
Jupyter Notebook
2
star
34

sentinel-hub-code-editor

JavaScript
1
star
35

stac-ml-example

A repository demonstrating an example ML workflow with the usage of STAC
Jupyter Notebook
1
star