Metadata-Version: 2.1
Name: pygeoapi
Version: 0.6.0
Summary: pygeoapi provides an API to geospatial data
Home-page: https://pygeoapi.io
Author: Tom Kralidis
Author-email: tomkralidis@gmail.com
Maintainer: Tom Kralidis
Maintainer-email: tomkralidis@gmail.com
License: MIT
Keywords: geospatial data api
Platform: all
Classifier: Development Status :: 4 - Beta
Classifier: Environment :: Console
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: Science/Research
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python
Classifier: Topic :: Scientific/Engineering :: GIS
Requires-Dist: click
Requires-Dist: Flask
Requires-Dist: PyYAML
Requires-Dist: unicodecsv

pygeoapi
========

|Build Status|

pygeoapi provides an API to geospatial data

Installation
------------

.. code:: bash

   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
   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

.. code:: bash

   # 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
-------------------------

.. code:: bash

   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 <https://cloud.docker.com/u/geopython/repository/docker/geopython/pygeoapi>`__
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 <https://demo.pygeoapi.io/master>`__. So the chain is:

::

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

Please read the
`docker/README <https://github.com/geopython/pygeoapi/blob/master/docker/README.md>`__
for details of the Docker implementation. To get started quickly
`several
examples <https://github.com/geopython/pygeoapi/blob/master/docker/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 <pytest.ini>`__.

.. |Build Status| image:: https://travis-ci.org/geopython/pygeoapi.png
   :target: https://travis-ci.org/geopython/pygeoapi


