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

PyWPS snabbstart

PyWPS är en OGC WPS (Web Processing Service 1.0.0) serverimplementering skriven i Python.

PyWPS 4.0.0-biblioteket är installerat som standard på OSGeo-Live. Detta är ett kärnbibliotek som inte är avsett att köras direkt, utan snarare att användas vid utveckling av WPS-tjänster. En ”exempeltjänst” <https://github.com/geopython/pywps-flask>`_ baserad på ”Flask” <https://flask.palletsprojects.com>`_ finns tillgänglig på GitHub för att underlätta en första kontakt med PyWPS.

Denna snabbstart beskriver hur du gör:

  • Installera och konfigurera exempeltjänsten pywps-flask

  • Utföra GetCapabilities, DescribeProcess och Execute förfrågningar

  • Utveckla dina egna WPS-processer

Installera pywps-flask

Eftersom exempeltjänsten är beroende av Flask måste du se till att den är installerad på ditt OSGeo-Live:

sudo apt install python-flask

Klona sedan förvaret från GitHub:

git clone https://github.com/geopython/pywps-flask.git

Gå nu till mappen Repository och redigera konfigurationsfilen. Detta kan göras med ett program som nano:

nano pywps.cfg

Det enda kritiska som måste verifieras är platsen för loggningsdatabasen. Pywps-flask tillhandahåller en SQLite-databas som kan användas för detta ändamål. Se till att inställningen database lyder som:

database=sqlite:////home/user/pywps-flask/logs/pywps-logs.sqlite3

Spara konfigurationsfilen och avsluta nano du kan nu köra tjänsten:

python demo.py

Om allt går bra kommer du att få tillbaka ett meddelande som:

* Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)

Testning av tillgängliga processer

Öppna en webbläsare och rikta den mot den adress där exempeltjänsten lyssnar: http://127.0.0.1:5000/ Du kommer att se följande sida:

../_images/pywps-4.0.0_example.png

Använd de gröna knapparna för att utforska tjänsten. Gör en GetCapabilities-begäran för att få en översikt över tjänsten; gör en DescribeProcess-begäran för att få veta mer om ett visst projekt. Notera URL:en för begäran i webbläsarens adress.

Nu är det dags att testa en Execute-begäran. Du kan prova say_hello-processen, som är ganska enkel. Rikta din webbläsare till följande adress:

http://localhost:5000/wps?service=WPS&version=1.0.0&request=Execute&identifier=say_hello&dataInputs=name=OSGeo-Live

Processen svarar helt enkelt tillbaka med ett ”Hello OSGeo”-meddelande, kodat i ett standardiserat WPS-svarsdokument. Din webbläsare bör visa något liknande:

../_images/pywps-4.0.0_response.png

Utveckling av WPS-processer

För att utveckla nya processer behöver du bara skapa nya Python-moduler i mappen processes. Använd de befintliga processerna som mallar för att strukturera din kod. En närmare titt på say_hello-processen visar huvuddragen i en PyWPS-process:

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. Anropar den överordnade konstruktören och överför metadata för processen:

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 ger dig friheten och flexibiliteten att skriva dina egna Python-processer och exponera dem i enlighet med detta.

  • Officiell dokumentation - För ytterligare information om PyWPS-konfigurationen och API:et, se documentation på PyWPS webbplats.

  • Tutorial - Prova workshop, en tutorial som används i workshops för att introducera nya användare till 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.