Guide de démarrage avec PyWPS¶
PyWPS est une implémentation de serveur OGC WPS (Web Processing Service 1.0.0) écrite dans Python.
La bibliothèque PyWPS 4.0.0 est installée par défaut sur OSGeo-Live. Il s’agit d’une bibliothèque de base qui n’est pas destinée à être exécutée directement, mais plutôt à être utilisée dans le développement de services WPS. Un service d’exemple basé sur Flask est disponible sur GitHub pour faciliter un premier contact avec PyWPS.
Ce guide de démarrage rapide décrit comment :
Installer et configurer le service d’exemple pywps-flask
Effectuez des demandes
GetCapabilities
,DescribeProcess
etExecute
Développez vos propres processus WPS
Contenu
Installer pywps-flask¶
Étant donné que le service d’exemple dépend de Flask, assurez-vous qu’il est installé sur votre OSGeoLive :
sudo apt install python-flask
Puis clonez le dépot à partir GitHub :
git clone https://github.com/geopython/pywps-flask.git
Maintenant, déplacez-vous dans le dépôt et modifiez le fichier de configuration. Cela peut être fait avec un programme comme nano :
nano pywps.cfg
La seule chose essentielle à vérifier est l’emplacement de la base de données de journalisation.`Pywps-flask` fournit un exemple de base de données SQLite qui peut être utilisé à cette fin. Assurez-vous que le paramètre database se lit comme suit :
database=sqlite:////home/user/pywps-flask/logs/pywps-logs.sqlite3
Enregistrez le fichier de configuration et sortez de nano, vous pouvez maintenant exécuter le service :
python demo.py
Si tout va bien, vous recevrez un message comme ceci :
* Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
Tester les processus disponibles¶
Ouvrez un navigateur Web et pointez-le vers l’adresse où le service d’exemple est à l’écoute: http://127.0.0.1:5000/ La page suivante vous sera présenté :
Utilisez les boutons verts pour explorer le service. Émettre une demande de GetCapabilities pour un aperçu du service; émettre une demande de DescribeProcess pour connaître les détails d’un projet particulier. Notez l’URL de la demande dans l’adresse du navigateur.
Il est maintenant temps de tester une demande Execute Vous pouvez essayer le processus say_hello, qui est assez simple. Dirigez votre navigateur Web vers l’adresse suivante :
http://localhost:5000/wps?service=WPS&version=1.0.0&request=Execute&identifier=say_hello&dataInputs=name=OSGeo-Live
Le processus répond simplement par un message « Hello OSGeo », codé dans un document de réponse WPS standard. Votre navigateur devrait montrer quelque chose comme:
Développement de processus WPS¶
Pour développer de nouveaux processus, il vous suffit de créer de nouveaux modules Python à l’intérieur du dossier processes . Utilisez les processus existants comme modèles pour vous aider à structurer votre code. Un examen plus étroit du processus say_hello montre la principale caractéristique d’un processus PyWPS :
1. Import the necessary assets and create a class inheriting from the PyWPS Process class. In the constructor create the necessary objects for inputs and outputs:
from pywps import Process, LiteralInput, LiteralOutput, UOM
class SayHello(Process):
def __init__(self):
inputs = [LiteralInput('name', 'Input name', data_type='string')]
outputs = [LiteralOutput('response',
'Output response', data_type='string')]
Invoquez le constructeur parent, en transmettant les métadonnées du processus :
super(SayHello, self).__init__(
self._handler,
identifier='say_hello',
title='Process Say Hello',
abstract='Returns a literal string output\
with Hello plus the inputed name',
version='1.3.3.7',
inputs=inputs,
outputs=outputs,
store_supported=True,
status_supported=True
)
3. Create the handler method, that will be invoked to handle Execute requests. Use the request and response objects to retrieve inputs and set outputs.
def _handler(self, request, response):
response.outputs['response'].data = 'Hello ' + \
request.inputs['name'][0].data
response.outputs['response'].uom = UOM('unity')
return response
What next?¶
PyWPS vous donne la liberté et la flexibilité d’écrire vos propres processus Python et de les exposer de la même manière.
Documentation officielle - Pour plus d’informations sur la configuration de PyWPS et l’API, consultez la documentation sur le site Web de PyWPS.
Tutoriel - Essayez le workshop, un tutoriel utilisé dans les ateliers pour initier les nouveaux utilisateurs à PyWPS 4.
Deployment to production - The pywps-flask service is just an example and not designed for production. One possible alternative is a Django based service, pywps-django. The documentation provides further details on how to set up a production service with Apache or nginx and Gunicorn.