../_images/logo_pywps.png ../_images/OSGeo_project.png

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

  • Desarrollar sus propios procesos WPS

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:

../_images/pywps-4.0.0_example.png

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:

../_images/pywps-4.0.0_response.png

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')]
  1. 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.