Skip to content

Intro

Create a full Earth Observation API with Metadata, Raster, and Vector services.


Earth Observation API

eoAPI combines several state-of-the-art projects to create a full Earth Observation API. Each service can be used and deployed independently, but eoAPI creates the interconnections between each service:


ūüĆć eoAPI: An Open-Source Community Project

eoAPI is proudly open-source and driven by a dedicated community of contributors. We believe in the power of open collaboration and welcome anyone to contribute, discuss, and grow this tool. Join the conversations on GitHub Discussions and make a difference in the Earth Observation realm.


Why should you use eoAPI

  • Focus on your use case:¬†eoAPI¬†is used for large-scale data processing, building geographic information systems (GIS), creating real-time data applications, climate research and environmental monitoring, machine learning model training, and more.

  • Unified Repository:¬†eoAPI¬†provides a single, unified repository for several state-of-the-art Earth Observation (EO) data services, including Metadata search (STAC), Raster, and Vector services. This can simplify the process of accessing and working with these services.

  • Interoperability:¬†eoAPI¬†is designed to enable interoperability among its included services. This can make building complex applications that leverage different types of EO data easier.

  • Open Source and Community Support:¬†As an open-source project,¬†eoAPI¬†allows developers to inspect its code, contribute to its development, and use it as a base for custom solutions. It also benefits from the support and innovation of a community of developers and EO data users.

  • Scalability and Flexibility:¬†Each service in¬†eoAPI¬†can be used or deployed independently, which provides a lot of flexibility. If a developer's application only requires one or two of eoAPI's services, they don't need to deploy the entire suite.

  • Facilitate Earth Observation Tasks:¬†eoAPI¬†includes specialized tools for working with EO data, such as dynamic tiling, metadata searching, and features/vector tiles API. These can significantly facilitate EO data processing, analysis, and visualization.

  • Ease of Deployment:¬†eoAPI¬†supports containerized deployment using Docker, making it easier to set up, scale, and maintain applications built on it. Spin up the demo locally and start experimenting in minutes.


Services Overview

  • STAC Metadata: Built with stac-fastapi.pgstac to enable data discovery. See the specifications core, search and features for API details.

  • STAC browser : Built with the Radiant Earth STAC browser to provide a simple user-friendly interface for searching the STAC metadata.

  • Raster Tiles: Built with titiler-pgstac and pgstac to enable large scale mosaic based on results of STAC searches queries. See docs for API details.

  • OGC Features & Vector Tiles: Built with tipg to create a lightweight OGC Features and Tiles API with a PostGIS database. See docs for API details.

See service details for more information.


Getting started

The easiest way to start exploring the different eoAPI services is with Docker. Clone this repository and start the multi-container Docker applications using Compose:

git clone https://github.com/developmentseed/eoAPI.git
cd eoAPI
docker compose up

Once the applications are up, you'll need to add STAC Collections and Items to the PgSTAC database. If you don't have, you can use the follow the MAXAR open data demo (or get inspired by the other demos).

Then you can start exploring your dataset with:

Info

If you've added vector datasets to the public schema in the Postgres database, they will be available through the Vector service at http://localhost:8083.

Alternatively, you may install and launch applications locally:

python -m pip install --upgrade virtualenv
virtualenv .venv
source .venv/bin/activate

export DATABASE_URL=postgresql://username:password@0.0.0.0:5439/postgis  # Connect to the database of your choice

python -m pip install uvicorn

###############################################################################
# Install and launch the application
# Select one of the following

###############################################################################
# STAC
python -m pip install "psycopg[binary,pool]" stac-fastapi-pgstac
python -m uvicorn stac_fastapi.pgstac.app:app --port 8081 --reload

###############################################################################
# RASTER
python -m pip install "psycopg[binary,pool]" titiler-pgstac
python -m uvicorn titiler.pgstac.main:app --port 8082 --reload

###############################################################################
# VECTOR
python -m pip install tipg
python -m uvicorn tipg.main:app --port 8083 --reload

Danger

Python applications might have incompatible dependencies, which you can resolve by using a virtual environment per application