* Bump gdal to v3 * Fix query duplicates with bbox for PG * Add backward compatibility for axis order * Move travis to bionic dist Fix gdal version 3 on travis by pinning latest ubuntu unstable release Fix ubuntugis sources on travis Remove pinned python gdal version Add mongodb start Enable mongod service Fix package name Install mongo from official community repos Add mongo enable and start commands * Fix wrong axis mapping strategy Add author * Move base image to bullseye for docker build * Fix remaining unchanged places for #364 * Make image size smaller * Add docker build and cite tests Fix python version Move steps after docker build elsewhere Fix uppercase characters Fix internal port Daemonize the run process * Check logs and run test command from the entrypoint * Remove the execution of mongo tests for test command Remove the execution of mongo tests for test command Fix failed command * Add delay and move build to install step Remove grep command for now Use single quote
pygeoapi
pygeoapi is a Python server implementation of the OGC API suite of standards. The project emerged as part of the next generation OGC API efforts in 2018 and provides the capability for organizations to deploy a RESTful OGC API endpoint using OpenAPI, GeoJSON, and HTML. pygeoapi is open source and released under an MIT license.
Installation
virtualenv -p python pygeoapi
cd pygeoapi
. bin/activate
git clone https://github.com/geopython/pygeoapi.git
cd pygeoapi
pip install -r requirements.txt
pip install -r requirements-dev.txt
# install provider requirements accordingly from requirements-provider.txt
# install starlette requirements accordingly from requirements-starlette.txt
pip install -e .
cp pygeoapi-config.yml local.config.yml
vi local.config.yml
# TODO: what is most important to edit?
export PYGEOAPI_CONFIG=$(pwd)/local.config.yml
# generate OpenAPI Document
pygeoapi generate-openapi-document -c local.config.yml > openapi.yml
export PYGEOAPI_OPENAPI=$(pwd)/openapi.yml
pygeoapi serve
Example requests
Try the swagger ui at http://localhost:5000/ui
or
# feature collection metadata
curl http://localhost:5000/
# conformance
curl http://localhost:5000/conformance
# feature collection
curl http://localhost:5000/collections/countries
# feature collection limit 100
curl http://localhost:5000/collections/countries/items?limit=100
# feature
curl http://localhost:5000/collections/countries/items/1
# number of hits
curl http://localhost:5000/collections/countries/items?resulttype=hits
Exploring with Swagger UI
docker pull swaggerapi/swagger-ui
docker run -p 80:8080 swaggerapi/swagger-ui
# go to http://localhost
# enter http://localhost:5000/openapi and click 'Explore'
Demo Server
There is a demo server on https://demo.pygeoapi.io running the latest (Docker) version
from the master branch of this repo. pygeoapi runs there at https://demo.pygeoapi.io/master.
The demo server setup and config is maintained within a seperate GH repo: https://github.com/geopython/demo.pygeoapi.io.
Docker
Best/easiest way to run pygeoapi is to use Docker. On DockerHub pygeoapi Docker Images are available.
Please read the docker/README for details of the Docker implementation.
Unit Testing
Unit tests are run using pytest from the top project folder:
pytest tests
NB beware that some tests require Provider dependencies (libraries) to be available and that the ElasticSearch and Postgres tests require their respective backend servers running.
Environment variables are set in the file pytest.ini.
