Skip to content
pygeoapi provides an API to geospatial data
Branch: master
Clone or download
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.github/ISSUE_TEMPLATE Update issue templates (#167) Jun 5, 2019
aws-lambda Update README.md Jun 4, 2019
debian Reverting default to Trusty Jun 10, 2019
docker
pygeoapi Add support for title and description to root JSON. (#183) Jun 14, 2019
tests Add support for title and description to root JSON. (#183) Jun 14, 2019
.gitignore #114 first version official pygeoapi Dockerfile and related assets May 22, 2019
.travis.yml split out provider requirements (#153) May 30, 2019
CONTRIBUTING.md Adding contribution guidelines (#162) (#164) Jun 4, 2019
Dockerfile address OSGeo incubation committee comments Jun 4, 2019
LICENSE.md address OSGeo incubation committee comments Jun 4, 2019
MANIFEST.in address OSGeo incubation committee comments Jun 4, 2019
README.md split out provider requirements (#153) May 30, 2019
pygeoapi-config.yml address OSGeo incubation committee comments Jun 4, 2019
pytest.ini add travis setup (#20) Apr 2, 2018
requirements-dev.txt split out provider requirements (#153) May 30, 2019
requirements-provider.txt split out provider requirements (#153) May 30, 2019
requirements.txt add support for CSV output (#52) Jul 4, 2018
setup.py

README.md

pygeoapi

Build Status

pygeoapi provides an API to geospatial data

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
pip install -e .
cp pygeoapi-config.yml local.config.yml
vi local.config.yml
# TODO: what is most important to edit?
export PYGEOAPI_CONFIG=/path/to/local.config.yml
# generate OpenAPI Document
pygeoapi generate-openapi-document -c local.config.yml > openapi.yml
export PYGEOAPI_OPENAPI=/path/to/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/api 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.

The version tagged latest is automatically built whenever code in the master branch of this GitHub repo changes (autobuild). This also cascades to updating the pygeoapi demo service. So the chain is:

 (git push to master) --> (DockerHub Image autobuild) --> (demo server redeploy)

Please read the docker/README for details of the Docker implementation. To get started quickly several examples will get you up and running.

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.

You can’t perform that action at this time.