Inicio Rápido PyWPS¶
PyWPS es una implementación de servidor OGC WPS (Web Processing Service 1.0.0) ecrita en Python.
La biblioteca PyWPS 4.0.0 se instala de manera predeterminada en OSGeoLive. Esta es una biblioteca central que no está destinada a ejecutarse directamente, sino a utilizarse en el desarrollo de servicios WPS. Un ejemplo de servicio basado en Flask está disponible en GitHub para facilitar un primer contacto con PyWPS.
Esta Guía de Inicio Rápido describe cómo:
Instalar y configurar el servicio de ejemplo de pywps-flask
Realizar requerimientos de
GetCapabilities
,DescribeProcess
yExecute
Desarrollar sus propios procesos WPS
Contenidos
Instalación de pywps-flask¶
Dado que el servicio de ejemplo depende de Flask, asegúrese de que esté instalado en su OSGeoLive:
sudo apt install python-flask
Luego clonar el repositorio de GitHub:
git clone https://github.com/geopython/pywps-flask.git
Ahora muévase a la carpeta del repositorio y edite el archivo de configuración. Esto se puede hacer con un programa como nano:
nano pywps.cfg
Lo único crítico para verificar es la ubicación de la base de datos de registro. Pywps-flask proporciona una base de datos SQLite de muestra que se puede utilizar para este propósito. Asegúrese de que la configuración de la` base de datos` se lea como:
database=sqlite:////home/user/pywps-flask/logs/pywps-logs.sqlite3
Guardar el archivo de configuración y salir de nano ahora puede ejecutar el servicio:
python demo.py
Si todo sale bien usted recibirá nuevamente un mensaje como:
* Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
Pruebas de procesos disponibles¶
Abra un navegador web y diríjase a la dirección donde escuche el servicio de ejemplo: http://127.0.0.1:5000/ y se le presentará la siguiente página:
Use los botones verdes para explorar el servicio. Emitir una solicitud GetCapabilities para obtener una descripción general del servicio; emitir una solicitud DescribeProcess para conocer los detalles de un proyecto en particular. Observe la URL de solicitud en la dirección del navegador.
hora es el momento de probar una solicitud de Execute . Puede probar el proceso say_hello , que es bastante simple. Dirija su navegador web a la siguiente dirección:
http://localhost:5000/wps?service=WPS&version=1.0.0&request=Execute&identifier=say_hello&dataInputs=name=OSGeo-Live
El proceso simplemente responde con un mensaje de «Hello OSGeo», codificado en un documento de respuesta WPS estándar. Su navegador debería mostrar algo como:
Desarrollo de procesos de WPS¶
Para desarrollar nuevos procesos, todo lo que necesita hacer es crear nuevos módulos de Python dentro de la carpeta de procesos . Use los procesos existentes como plantillas para ayudarlo a estructurar su código. Una mirada más cercana al proceso say_hello muestra la característica principal de un proceso 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')]
Invocar el constructor del padre, pasando en los metadatos del proceso:
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
Lo que sigue¶
PyWPS le da la libertad y flexibilidad para escribir sus propios procesos de Python y exponerlos en consecuencia.
Documentación oficial - Para obtener más información sobre la configuración de PyWPS y la API, consulte la documentación en el sitio web de PyWPS.
Tutorial - Pruebe el workshop, un tutorial utilizado en talleres para introducir nuevos usuarios a PyWPS 4.
Despliegue de producción - El servicio pywps-flask es solo un ejemplo y no está diseñado para la producción. Una alternativa posible es un servicio basado en Django, pywps-django. La documentación proporciona más detalles sobre cómo configurar un servicio de producción con Apache o nginx y Gunicorn.