project logo OSGeo Labs

Guida rapida PyWPS

PyWPS è un server che implementa lo standard OGC WPS scritto in Python.

PyWPS permette di eseguire operazioni geospaziali (chiamandoli processi).

PyWPS è Open Source, rilasciato sotto una licenza GNU/GPL, ed è possibile farlo girare su tutte le maggiori piattaforme (Windows, Linux, Mac OS X).

PyWPS è installato di default sul DVD di OSGeo-Live. Questo tutorial descrive come:

  • eseguire una nuova installazione di PyWPS
  • testare l’installazione di PyWPS
  • configurazione base di PyWPS
  • creare e spiegare processi in PyWPS
  • eseguire le operazioni GetCapabilities, DescribeProcess e Execute

Installazione

Richieste di sistema

PyWPS è scritto in Python, e funziona con (testato) le versioni 2.6 e 2.7

PyWPS richiede le seguenti librerie:

  • lxml (version >= 2.2.3) per il supporto XML

Installando da sorgente

Scaricare pywps l’ultima versione o clone da GitHub:

$ git clone https://github.com/geopython/PyWPS.git pywps

Assicurarsi che CGI è abilitato per la vostra directory di installazione.

Testare l’applicazione

Per eseguire i test PyWPS, utilizzare l’eseguibile PyWPS dal gruppo del Web Services, o aprire Firefox e navigare in http://localhost/cgi-bin/pywps:

Dal menu Application, avviare l’applicazione Terminal e testare la richiesta GetCapabilities

$ wget -O - "http://localhost/cgi-bin/pywps?service=wps&request=GetCapabilities"

<wps:Capabilities service="WPS"
...
</wps:Capabilities>

Dovreste vedere il documento intero della risposta WPS Capabilites. È possibile anche vedere la stessa risposta usanto un browser

Selezionare un processo dalla lista, per esempio ultimatequestionprocess, e visualizzare la sua descrizione chiamando l’operazione DescribeProcess.:

$ wget -O - "http://localhost/cgi-bin/pywps?service=wps&version=1.0.0&request=DescribeProcess&identifier=ultimatequestionprocess"

<wps:ProcessDescriptions
...
</wps:ProcessDescriptions>

Di nuovo, dovreste vedere il documento di risposta di WPS DescribeProcess. È possibile anche vedere la stessa risposta usanto un browser

Ora eseguite ultimatequestionprocess, sul server. Il processo è, secondo la sua descrizione, in grado di Answer to Life, the Universe and Everything. Nessun input è richiesto.:

$ wget -O - "http://localhost/cgi-bin/pywps?service=wps&version=1.0.0&request=Execute&identifier=ultimatequestionprocess"

# wait about 10s

<wps:ExecuteResponse
...
     <wps:Data>
            <wps:LiteralData dataType="integer">42</wps:LiteralData>
    </wps:Data>
...
</wps:ExecuteResponse>

Come dovreste sapere, impiega un po’, prima che il processo è calcolato. Nel nostro caso, circa 10s. Alla fine, è possibile vedere la risposta alla vita, universo e tutto.

Configurazione

È possibile configurare PyWPS nel file di configurazione che si trova in /usr/local/share/pywps/pywps.cfg. I valori sono spiegati, ma si può fare sempre riferimento a standard documentation

Processi

È possibile trovare alcuni esempi di processi nella directory /usr/local/share/pywps/processes. Ogni processo è solitamente archiviato in un file separato ed è rappresentato dalla classe Python, con constructor e metodo execute():

# Example of PyWPS process (shorten)
from pywps.Process import WPSProcess
class Process(WPSProcess):
 def __init__(self):
     WPSProcess.__init__(self,
                         identifier="ultimatequestionprocess", #the same as the file name
                         ....

 def execute(self):
     import time
     self.status.set("Preparing....", 0)
     for i in xrange(1, 11):
         time.sleep(2)
         self.status.set("Thinking.....", i*10)
     #The final answer
     self.Answer.setValue("42")

La directory del processo sviluppato è configurato in file pywps all’interno della directory cgi-bin, nella variable d’ambiente PYWPS_PROCESSES.

Per maggiori informazioni su pywps, consultare la documentazione sul sito internet di pywps.