1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139
|
# PyWPS
PyWPS is an implementation of the Web Processing Service standard from
the Open Geospatial Consortium. PyWPS is written in Python.
[](https://pywps.readthedocs.io/en/latest/?badge=latest)
[](https://github.com/geopython/pywps/actions/workflows/main.yml)
[](https://coveralls.io/github/geopython/pywps?branch=main)
[](https://pypi.org/project/pywps/)
[](https://anaconda.org/channels/conda-forge/packages/pywps/overview)
[]()
[](https://gitter.im/geopython/pywps?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
## License
As of PyWPS 4.0.0, PyWPS is released under an
[MIT](https://en.wikipedia.org/wiki/MIT_License) license
(see [LICENSE.txt](LICENSE.txt)).
## Dependencies
See [requirements.txt](requirements.txt) file
## Install
Install it from GitHub:
```bash
$ git clone https://github.com/geopython/pywps.git
$ cd pywps/
$ pip install .
```
## Run tests
```bash
pip install -r requirements-dev.txt
# run unit tests
python -m pytest tests
# run code coverage
python -m coverage run --source=pywps -m unittest tests
python -m coverage report -m
```
## Quick Guide with Conda
Checkout source from GitHub:
```bash
$ git clone https://github.com/geopython/pywps.git
$ cd pywps/
```
Build conda environment:
```bash
conda env create -f environment.yml
```
Install pywps:
```bash
make install
```
Or the development version:
```bash
make develop
```
Run tests:
```bash
make tests
```
## Run web application
### Example service
Clone the example service after having installed PyWPS:
```bash
git clone git://github.com/geopython/pywps-flask.git pywps-flask
cd pywps-flask
python demo.py
```
Access example service: http://localhost:5000
### Apache configuration
1. Enable WSGI extension
2. Add configuration:
```apache
WSGIDaemonProcess pywps user=user group=group processes=2 threads=5
WSGIScriptAlias /pywps /path/to/www/htdocs/wps/pywps.wsgi
<Directory /path/to/www/htdocs/wps/>
WSGIProcessGroup group
WSGIApplicationGroup %{GLOBAL}
Order deny,allow
Allow from all
</Directory>
```
3. Create wsgi file:
```python
#!/usr/bin/env python3
import sys
sys.path.append('/path/to/src/pywps/')
import pywps
from pywps.app import Service, WPS, Process
def pr1():
"""This is the execute method of the process
"""
pass
application = Service(processes=[Process(pr1)])
```
4. Run via web browser
`http://localhost/pywps/?service=WPS&request=GetCapabilities&version=1.0.0`
5. Run in command line:
```bash
curl 'http://localhost/pywps/?service=WPS&request=GetCapabilities&version=1.0.0'
```
## Issues
On Windows PyWPS does not support multiprocessing which is used when making
requests storing the response document and updating the status to displaying
to the user the progression of a process.
|