Git Product home page Git Product logo

eoapi's Introduction

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

Test Downloads


Documentation: https://eoapi.dev

Source Code: https://github.com/developmentseed/eoAPI


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.


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:

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

Deployment with standard runtimes

This repository has current runtimes that are consistently updated with new functionality.

Local deployment

The services can be deployed altogether locally with docker compose up.

Alternatively, you may install the libraries and launch the applications manually :

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

export DATABASE_URL=postgresql://username:[email protected]: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
.venv/bin/uvicorn stac_fastapi.pgstac.app:app --port 8081 --reload

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

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

Note: python libraries might have incompatible dependencies, which you can resolve by using a virtual environment for each ones

Deployment on the cloud

Kubernetes

eoapi-k8s contains IaC and Helm charts for deploying eoAPI services on AWS and GCP.

AWS CDK

eoapi-cdk defines a set of AWS CDK constructs that can be used to deploy eoAPI services on AWS. This repository itself makes use of these in infrastructure/aws. An official example usage of these constructs can be found at eoapi-template.

Deployment with custom runtimes

The eoAPI repository hosts customized versions of each base service which can work in parallel or in combination with each other.

eoAPI custom runtimes can be launched with docker

docker compose -f docker-compose.custom.yml --profile gunicorn up

Alternatively, you may launch the application locally:

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

python -m pip install "psycopg[binary,pool]" uvicorn
python -m pip install runtime/eoapi/{SERVICE}  # SERVICE should be one of `raster, vector, stac.`

export DATABASE_URL=postgresql://username:[email protected]:5439/postgis  # Connect to the database of your choice

.venv/bin/uvicorn eoapi.{SERVICE}.app:app --port 8000 --reload

Note: services might have incompatible dependencies, which you can resolve by using a virtual environment for each service

Contribution & Development

We highly value and rely on our community! You can make a difference whether you're an expert or just getting started. Here's how:

  • Contribute: Check out our CONTRIBUTING.md guide to understand how you can contribute.
  • Engage in Discussions: Share your ideas, ask questions, or provide feedback through GitHub Discussions. This is where most of our project conversations take place.
  • Report Issues: Found a bug or have a feature request? Raise it on our issues page.

License

At Development Seed, we believe in open collaboration and making tools and data more accessible. In line with this ethos, we've explicitly chosen a MIT license for eoAPI.

For full license details, see LICENSE.

Authors

Nurtured by Development Seed

See contributors for a listing of individual contributors.

Changes

See CHANGES.md.

eoapi's People

Contributors

abarciauskas-bgse avatar bitner avatar charalamm avatar drnextgis avatar emileten avatar hrodmn avatar j08lue avatar lanesgood avatar leothomas avatar rbavery avatar sharkinsspatial avatar tylere avatar vincentsarago avatar zacharydez avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.