Home

Awesome

ogcapi

OGC API building blocks implemented in Rust

Project Outline

The code is organized in four modules, respectively crates:

Module / CrateDescription
ogcapi-typesTypes as defined in various OGC API standards as well as STAC with serde support.
ogcapi-clientClient to access HTTP endpoints of OGC API services as well as STAC wrapping reqwest
ogcapi-servicesServer implementation of various OGC API services based on axum.
ogcapi-driversDrivers for different data provider backends, currently mainly PostgreSQL with PostGIS through sqlx.

These modules are reexported within the ogcapi crate.

Quick Start

This will take a while and use quite some disk space

# Setup the database
docker compose up

# Import administrative bounaries
docker exec -ti ogcapi cargo run -- import \
        --input data/ne_110m_admin_0_countries.geojson \
        --collection countries

# Run app
docker exec -ti ogcapi cargo run -- serve

Open http://localhost:8484/ were you will find the Landing Page.

Developing

Prerequisites

# Install SQLx CLI
cargo install sqlx-cli --no-default-features --features postgres,rustls

Setup

# Run services
docker compose up db minio minio-mc -d

# Import administrative bounaries
cargo run -- import --input data/ne_110m_admin_0_countries.geojson --collection countries

# Start service 
cargo run -- serve

# Run tests
cargo test --workspace --all-features

# Open Documentation
cargo doc --workspace --all-features --no-deps --open

Format / Lint

# Format
cargo fmt

# Clippy
cargo clippy --workspace --all-features --tests

Teamengine

docker run --network host ogccite/ets-ogcapi-features10
# docker run --network host ogccite/ets-ogcapi-edr10

Navigate to http://localhost:8080/teamengine/ to execute the test suite. For documentation and more info see https://cite.opengeospatial.org/teamengine/about/ogcapi-features-1.0/1.0/site.

Example Project

Based on this project, a STAC enabled OGC API Features service has successfully been setup. You can find the code from the prove of concept here

License

Licensed under either of

at your option.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.