Skip to main content

Earth Observation Data Access Gateway

Project description

https://eodag.readthedocs.io/en/latest/_static/eodag_bycs.png

pypi-badge conda-badge rtd-badge gha-badge ghi-badge binder-badge

license-badge versions-badge


Checkout EODAG Jupyterlab extension: eodag-labextension! This will bring a friendly UI to your notebook and help you search and browse for EO products using eodag.

EODAG (Earth Observation Data Access Gateway) is a command line tool and a plugin-oriented Python framework for searching, aggregating results and downloading remote sensed images while offering a unified API for data access regardless of the data provider. The EODAG SDK is structured around three functions:

  • List product types: list of supported products and their description

  • Search products (by product type or uid): searches products according to the search criteria provided

  • Download products: download product “as is”

EODAG is developed in Python. It is structured according to a modular plugin architecture, easily extensible and able to integrate new data providers. Three types of plugins compose the tool:

  • Catalog search plugins, responsible for searching data (STAC, OpenSearch, OData, …), building paths, retrieving quicklook, combining results

  • Download plugins, allowing to download and retrieve data locally (via HTTP, S3, …), always with the same directory organization

  • Authentication plugins, which are used to authenticate the user on the external services used (JSON Token, Basic Auth, OAUTH, …).

Read the documentation for more insights.

EODAG overview

Installation

EODAG is available on PyPI:

python -m pip install eodag

And with conda from the conda-forge channel:

conda install -c conda-forge eodag

[!IMPORTANT]

Breaking change in v3.0.0: Please note that EODAG comes with a minimal set of dependencies. If you want more features, please install using one of the available extras.

Usage

For downloading you will need to fill your credentials for the desired providers in your eodag user configuration file. The file will automatically be created with empty values on the first run.

Python API

Example usage for interacting with the api in your Python code:

from eodag import EODataAccessGateway

dag = EODataAccessGateway()

search_results = dag.search(
    productType='S2_MSI_L1C',
    geom={'lonmin': 1, 'latmin': 43.5, 'lonmax': 2, 'latmax': 44}, # accepts WKT polygons, shapely.geometry, ...
    start='2021-01-01',
    end='2021-01-15'
)

product_paths = dag.download_all(search_results)

This will search for Sentinel 2 level-1C products on the default provider and return the found products first page and an estimated total number of products matching the search criteria. And then it will download these products. Please check the Python API User Guide for more details.

[!IMPORTANT]

Breaking change in v3.0.0: search() method now returns only a single SearchResult instead of a 2 values tuple.

STAC REST API

An eodag instance can be exposed through a STAC compliant REST api from the command line (eodag[server] needed):

$ eodag serve-rest --help
Usage: eodag serve-rest [OPTIONS]

  Start eodag HTTP server

  Set EODAG_CORS_ALLOWED_ORIGINS environment variable to configure Cross-
  Origin Resource Sharing allowed origins as comma-separated URLs (e.g.
  'http://somewhere,htttp://somewhere.else').

Options:
  -f, --config PATH   File path to the user configuration file with its
                      credentials, default is ~/.config/eodag/eodag.yml
  -l, --locs PATH     File path to the location shapefiles configuration file
  -d, --daemon        run in daemon mode
  -w, --world         run uvicorn using IPv4 0.0.0.0 (all network interfaces),
                      otherwise bind to 127.0.0.1 (localhost).
  -p, --port INTEGER  The port on which to listen  [default: 5000]
  --debug             Run in debug mode (for development purpose)
  --help              Show this message and exit.

# run server
$ eodag serve-rest

# list available product types for ``peps`` provider:
$ curl "http://127.0.0.1:5000/collections?provider=peps" | jq ".collections[].id"
"S1_SAR_GRD"
"S1_SAR_OCN"
"S1_SAR_SLC"
"S2_MSI_L1C"
"S2_MSI_L2A"

# search for items
$ curl "http://127.0.0.1:5000/search?collections=S2_MSI_L1C&bbox=0,43,1,44&datetime=2018-01-20/2018-01-25" \
| jq ".numberMatched"
6

# get download link
$ curl "http://127.0.0.1:5000/collections/S2_MSI_L1C/items" \
| jq ".features[0].assets.downloadLink.href"
"http://127.0.0.1:5002/collections/S2_MSI_L1C/items/S2B_MSIL1C_20240917T115259_N0511_R137_T21CWS_20240917T145134/download"

# download
$ wget "http://127.0.0.1:5002/collections/S2_MSI_L1C/items/S2B_MSIL1C_20240917T115259_N0511_R137_T21CWS_20240917T145134/download"

eodag-server is available on https://hub.docker.com/r/csspace/eodag-server:

docker run -p 5000:5000 --rm csspace/eodag-server:3.10.1

You can also browse over your STAC API server using STAC Browser. Simply run:

git clone https://github.com/CS-SI/eodag.git
cd eodag
docker-compose up
# or for a more verbose logging:
EODAG_LOGGING=3 docker-compose up

And browse http://127.0.0.1:5001:

STAC browser example

For more information, see STAC REST API usage.

Command line interface

Start playing with the CLI:

  • To search for some products:

    eodag search --productType S2_MSI_L1C --box 1 43 2 44 --start 2021-03-01 --end 2021-03-31

    The request above searches for S2_MSI_L1C product types in a given bounding box, in March 2021. It saves the results in a GeoJSON file (search_results.geojson by default).

    Results are paginated, you may want to get all pages at once with --all, or search products having 20% of maximum coud cover with --cloudCover 20. For more information on available options:

    eodag search --help
  • To download the result of the previous call to search:

    eodag download --search-results search_results.geojson
  • To download only the result quicklooks of the previous call to search:

    eodag download --quicklooks --search-results search_results.geojson
  • To list all available product types and supported providers:

    eodag list
  • To list available product types on a specified supported provider:

    eodag list -p creodias
  • To see all the available options and commands:

    eodag --help
  • To print log messages, add -v to eodag master command. e.g. eodag -v list. The more v given (up to 3), the more verbose the tool is. For a full verbose output, do for example: eodag -vvv list

Docker image

A Docker image is available via the GitHub Container Registry:

docker pull ghcr.io/cs-si/eodag:v3.10.x

Contribute

Have you spotted a typo in our documentation? Have you observed a bug while running EODAG? Do you have a suggestion for a new feature?

Don’t hesitate and open an issue or submit a pull request, contributions are most welcome!

For guidance on setting up a development environment and how to make a contribution to eodag, see the contributing guidelines.

License

EODAG is licensed under Apache License v2.0. See LICENSE file for details.

Authors

EODAG has been created by CS GROUP - France.

Credits

EODAG is built on top of amazingly useful open source projects. See NOTICE file for details about those projects and their licenses. Thank you to all the authors of these projects!

Project details


Release history Release notifications | RSS feed

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

eodag-3.10.1.tar.gz (10.5 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

eodag-3.10.1-py3-none-any.whl (1.6 MB view details)

Uploaded Python 3

File details

Details for the file eodag-3.10.1.tar.gz.

File metadata

  • Download URL: eodag-3.10.1.tar.gz
  • Upload date:
  • Size: 10.5 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for eodag-3.10.1.tar.gz
Algorithm Hash digest
SHA256 8bda8316835bea676086ff3d289f3c6eb4e4c206d9fe91ce43889ca08028f4b6
MD5 77972035afc0ff6c874c8214661a7360
BLAKE2b-256 ced4c124c182a7a8c56c930518d9766001675bcbc57e3ff32e62749e79d6d37f

See more details on using hashes here.

File details

Details for the file eodag-3.10.1-py3-none-any.whl.

File metadata

  • Download URL: eodag-3.10.1-py3-none-any.whl
  • Upload date:
  • Size: 1.6 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for eodag-3.10.1-py3-none-any.whl
Algorithm Hash digest
SHA256 82f1ca8878bd44b36013c83ddb8bec8bc7535bfbc6af787fb1cad605b2452ffe
MD5 4de03c956ca708d6c32b47e79646eef2
BLAKE2b-256 2fffddb01783479c4f881b61659f96eaaf877132e537272b6a000a0ae6bc3268

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page