* The json_serial function needs to be provided in order to dump decimal.Decimal values correctly. * Added ability to filter on property values * Added allow_property_filters config parameter. * Added tests for ability to filter on properties * Add comment to describe fields attribute * Fixed PEP8 issues * Missed a PEP8 lint error * Added name to authors list * Consistent string formatting * Remove config parameter allow_property_filtering * Revert logging statement
pygeoapi
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
# 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.
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.
