embrio e wuiw due interfaccie web per...

29
Embrio e Wuiw Embrio e Wuiw due interfaccie web per WPS due interfaccie web per WPS Lorenzo Becchi ( ominiverdi.org ) Lorenzo Becchi ( ominiverdi.org ) Luca Casagrande ( ominiverdi.org ) Luca Casagrande ( ominiverdi.org ) Jachym Cepicky ( ITC - IRST ) Jachym Cepicky ( ITC - IRST ) 15 Febbraio 2007 15 Febbraio 2007 Adattamento libero da Jachym Cepický (GRASS goes web: PyWPS 0.1) Adattamento libero da Jachym Cepický (GRASS goes web: PyWPS 0.1) http://Les-ejk.cz http://Les-ejk.cz

Upload: others

Post on 17-Oct-2020

6 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Embrio e Wuiw due interfaccie web per WPSgislab.dirap.unipa.it/grass_meeting/present/grass_goes_web.pdf · PyWPS 0.4 PyWPS nasce come connettore dedicato a GRASS CLI più di 300 moduli

Embrio e WuiwEmbrio e Wuiwdue interfaccie web per WPSdue interfaccie web per WPS

Lorenzo Becchi ( ominiverdi.org )Lorenzo Becchi ( ominiverdi.org )Luca Casagrande ( ominiverdi.org )Luca Casagrande ( ominiverdi.org )

Jachym Cepicky ( ITC - IRST )Jachym Cepicky ( ITC - IRST )

15 Febbraio 200715 Febbraio 2007

Adattamento libero da Jachym Cepický (GRASS goes web: PyWPS 0.1)Adattamento libero da Jachym Cepický (GRASS goes web: PyWPS 0.1)http://Les-ejk.czhttp://Les-ejk.cz

Page 2: Embrio e Wuiw due interfaccie web per WPSgislab.dirap.unipa.it/grass_meeting/present/grass_goes_web.pdf · PyWPS 0.4 PyWPS nasce come connettore dedicato a GRASS CLI più di 300 moduli

2006-06-01 2

Open Geospatial Consortium, Inc (OGC)

International voluntar y consensus standards organizationSviluppo e implementazione di standard per contenuti e servizi geospazialiMembri attivi: 321 (21.8.2006) – University of Minnesota, US National Oceanic and Atmospheric Administration (NOAA) Coastal Service Center, ESRI, Autodesk Inc., MIT, . . . http://www.opengeospatial.org/

Page 3: Embrio e Wuiw due interfaccie web per WPSgislab.dirap.unipa.it/grass_meeting/present/grass_goes_web.pdf · PyWPS 0.4 PyWPS nasce come connettore dedicato a GRASS CLI più di 300 moduli

2006-06-01 3

Web service

Un sistema software progettato per supportare l'interoperabilità tra diversi elaboratori su di una medesima rete (Wikipedia)

Nella terminologia OGC, "Service" si referisce ad un processo che è richiesto da un client e eseguito da un server, normalmente attraverso una rete.

Le specifiche OpenGIS che rendono questo possibile sono definite "OGC Web Services"

OpenGIS Web Service (OWS):

OpenGIS Catalog Service (CAT)

OpenGIS Web Coverage Service (WCS)

OpenGIS Web Feature Service (WFS)

OpenGIS Web Map Service (WMS)

. . .

Web Processing Service (WPS) (draft)

Page 4: Embrio e Wuiw due interfaccie web per WPSgislab.dirap.unipa.it/grass_meeting/present/grass_goes_web.pdf · PyWPS 0.4 PyWPS nasce come connettore dedicato a GRASS CLI più di 300 moduli

2006-06-01 4

OpenGIS Web Processing Service

Document OGC 05-007r4, version 0.4.0 non ancora un OGC standard ma un "Discussion Paper", una bozza.per offrire ogni tipo di funzionalità GIS ai client attraverso una rete.

Es: http://pywps.ominiverdi.org/cgi-bin/wps?service=WPS&version=0.4.0&request=...

Page 5: Embrio e Wuiw due interfaccie web per WPSgislab.dirap.unipa.it/grass_meeting/present/grass_goes_web.pdf · PyWPS 0.4 PyWPS nasce come connettore dedicato a GRASS CLI più di 300 moduli

2006-06-01 5

WPS request=GetCapabilities

http://www.bnhelp.cz/cgi-bin/wps?service=WPS&version=0.4.0&request=GetCapabilities ---------------------------------------------------------------------------------------<?xml version="1.0" ?>

<Capabilities version="0.4.0" ... > <ows:ServiceIdentification> <ows:Title>Sample WPS server</ows:Title> <ows:Abstract>WPS for Lausanne</ows:Abstract> <ows:ServiceType>WPS</ows:ServiceType> <ows:Fees>free</ows:Fees> </ows:ServiceIdentification> <ows:ServiceProvider>

<ows:ProviderName>GDF</ows:ProviderName> <ows:ServiceContact>

<ows:IndividualName>Jachym Cepicky</ows:IndividualName> <ows:PositionName>Student</ows:PositionName> ...

</ows:ServiceContact> </ows:ServiceProvider>

...

Page 6: Embrio e Wuiw due interfaccie web per WPSgislab.dirap.unipa.it/grass_meeting/present/grass_goes_web.pdf · PyWPS 0.4 PyWPS nasce come connettore dedicato a GRASS CLI più di 300 moduli

2006-06-01 6

WPS request=GetCapabilities

...<ProcessOfferings>

<Process processVersion="0.1"> <ows:Identifier>addvalue</ows:Identifier> <ows:Title>Add some value to raster map</ows:Title>

</Process> <Process processVersion="0.1">

<ows:Identifier>classify</ows:Identifier> <ows:Title>Image classification</ows:Title> <ows:Abstract>

GRASS processed imagery classification. Only unsupervised is supported at the moment.

</ows:Abstract> </Process> <Process processVersion="0.1">

<ows:Identifier>shortestpath</ows:Identifier> <ows:Title>Shortest path</ows:Title>

</Process> </ProcessOfferings>

Page 7: Embrio e Wuiw due interfaccie web per WPSgislab.dirap.unipa.it/grass_meeting/present/grass_goes_web.pdf · PyWPS 0.4 PyWPS nasce come connettore dedicato a GRASS CLI più di 300 moduli

2006-06-01 7

WPS request=DescribeProcess

http://www.bnhelp.cz/cgi-bin/wps.py?service=WPS&version=0.4.0&request=DescribeProcess&identifier=addvalue ---------------------------------------------------------------------------------------<?xml version="1.0" ?>

<ProcessDescriptions ...> <ProcessDescription ...>

<ows:Identifier>addvalue</ows:Identifier> <ows:Title>Add value</ows:Title> <ows:Abstract>Adds some value to each cell of input raster map</ows:Abstract> <DataInputs>

<Input> <ows:Identifier>value</ows:Identifier> <ows:Title>Value to be added</ows:Title> <LiteralData>

<AllowedValues> <Value>1</Value> ...

</AllowedValues> <ows:DefaultValue>10</ows:DefaultValue>

</LiteralData> </Input>

...

Page 8: Embrio e Wuiw due interfaccie web per WPSgislab.dirap.unipa.it/grass_meeting/present/grass_goes_web.pdf · PyWPS 0.4 PyWPS nasce come connettore dedicato a GRASS CLI più di 300 moduli

2006-06-01 8

WPS request=DescribeProcess

<Input> <ows:Identifier>map</ows:Identifier> <ows:Title>Input raster map</ows:Title> <ComplexData defaultFormat="image/tiff"> </ComplexData>

</input></DataInputs> <ProcessOutputs>

<Output> <ows:Identifier>value</ows:Identifier> <ows:Title>literal value + 1</ows:Title> <LiteralOutput> ... </LiteralOutput>

</Output> <Output>

<ows:Identifier>map</ows:Identifier> <ows:Title>Resulting output map</ows:Title> <ComplexOutput defaultFormat="image/tiff">

... </ComplexOutput>

</Output> </ProcessOutputs>

</ProcessDescription> </ProcessDescriptions>

Page 9: Embrio e Wuiw due interfaccie web per WPSgislab.dirap.unipa.it/grass_meeting/present/grass_goes_web.pdf · PyWPS 0.4 PyWPS nasce come connettore dedicato a GRASS CLI più di 300 moduli

2006-06-01 9

WPS request=Execute

http://www.bnhelp.cz/cgi-bin/wps.py?service=WPS&version=0.4.0& request=Execute&identifier=addvalue&DataInputs=value,5,map,http://localhost/data/soils.tif ---------------------------------------------------------------------------------------<?xml version="1.0" encoding="UTF-8" standalone="yes"?>

<Execute service="wps" version="0.4.0" store="true" status="false" xmlns="http://www.opengeospatial.net/wps" xmlns:ows="http://www.opengeospatial.net/ows">

<ows:Identifier>addvalue</ows:Identifier> <DataInputs>

<Input> <ows:Identifier>value</ows:Identifier> <LiteralValue>5</LiteralValue>

</Input> <Input>

<ows:Identifier>map</ows:Identifier> <ComplexValueReference reference="http://localhost/data/soils.tif” />

</Input> ...

</DataInputs> </Execute>

Page 10: Embrio e Wuiw due interfaccie web per WPSgislab.dirap.unipa.it/grass_meeting/present/grass_goes_web.pdf · PyWPS 0.4 PyWPS nasce come connettore dedicato a GRASS CLI più di 300 moduli

2006-06-01 10

WPS Response XML

<?xml version="1.0" ?> <ExecuteResponse ...>

<ows:Identifier>addvalue</ows:Identifier> <Status>

<ProcessSucceeded/> </Status> <ProcessOutputs>

<Output> <ows:Identifier>value</ows:Identifier> <ows:Title>literal value + 1</ows:Title> <LiteralValue>6</LiteralValue>

</Output> <Output>

<ows:Identifier>value</ows:Identifier> <ows:Title>Resulting output map</ows:Title> <ComplexValueReference format="image/tiff"

ows:reference="http://www.bnhelp.cz/wpsoutputs/output2-2006-8-21-14-54-42.tif" />

</Output> </ProcessOutputs>

</ExecuteResponse>

Page 11: Embrio e Wuiw due interfaccie web per WPSgislab.dirap.unipa.it/grass_meeting/present/grass_goes_web.pdf · PyWPS 0.4 PyWPS nasce come connettore dedicato a GRASS CLI più di 300 moduli

2006-06-01 11

PyWPS 0.4

Implementatione dello standard WPS di OGC (90-95 %) CGI Application Linguaggio di programmazione usato: Python

Page 12: Embrio e Wuiw due interfaccie web per WPSgislab.dirap.unipa.it/grass_meeting/present/grass_goes_web.pdf · PyWPS 0.4 PyWPS nasce come connettore dedicato a GRASS CLI più di 300 moduli

2006-06-01 12

PyWPS 0.4

PyWPS nasce come connettore dedicato a GRASSCLIpiù di 300 moduli per analisi raster e vettorialeGNU/GPLLe funzionalità di GRASS offerte in internet via PyWPS

L'utente non ha più bisogno di un Desktop-GIS (GRASS, ESRI, Idrisi, . . . ) ‚ il Web browser diventa GISE' possibile utilizzare anche altri programmi da CLI (PROJ.4, GDAL, R, . . . )

Page 13: Embrio e Wuiw due interfaccie web per WPSgislab.dirap.unipa.it/grass_meeting/present/grass_goes_web.pdf · PyWPS 0.4 PyWPS nasce come connettore dedicato a GRASS CLI più di 300 moduli

2006-06-01 13

PyWPS 0.4 – Execute - come funziona

Controlla i dati di input e tutti i parametri necessari (Identifier, DataInputs, ... ) Carica il processo. Per ogni input:

LiteralValue: Controlla se l'input coincide con l'array AllowedValues ComplexValue: I file embeded vengono estratti dall'XML Request e salvati come file indipendenti. ComplexValueReference: tentativo di scaricare i dati esterni e salvarli in un nuovo file.BoundingBoxValue

Se qualche DataInput manca si cerca il valore di default.

Page 14: Embrio e Wuiw due interfaccie web per WPSgislab.dirap.unipa.it/grass_meeting/present/grass_goes_web.pdf · PyWPS 0.4 PyWPS nasce come connettore dedicato a GRASS CLI più di 300 moduli

2006-06-01 14

PyWPS 0.4 – Execute - come funziona

Crea un location temporanea di GRASS o solo un Mapset temporaneo nella location esistente. A fine processo verrà rimossa.Chiama la funzione execute() del processo Crea il file XML per l'outputelimina i file temporanei (location, mapset, pid file)Restituisce al client l'XML di output o il file di mappa (TIFF, GML)Il processo può essere lanciato in modo asincrono: Dopo che la richiesta è stata accettata, il response XML viene immediatamente reso con l'ememento <ProcessAccepted /> e il calcolo passa in background.

Page 15: Embrio e Wuiw due interfaccie web per WPSgislab.dirap.unipa.it/grass_meeting/present/grass_goes_web.pdf · PyWPS 0.4 PyWPS nasce come connettore dedicato a GRASS CLI più di 300 moduli

2006-06-01 15

PyWPS 0.4 - Addvalue – processo di esempio

Inputs Literal input: il valore da aggiungere ComplexValueReference input: una mappa raster

Outputs Literal output: Input+1 ComplexValueReference: la mappa risultante (GeoTIFF)

Page 16: Embrio e Wuiw due interfaccie web per WPSgislab.dirap.unipa.it/grass_meeting/present/grass_goes_web.pdf · PyWPS 0.4 PyWPS nasce come connettore dedicato a GRASS CLI più di 300 moduli

2006-06-01 16

PyWPS 0.4 – processo di esempio

01 class Process: 02 def __init__(self): 03 self.Identifier = "addvalue" 04 self.Title="Sample process for demonstration purposes" 05 self.Inputs = [ { # 0 06 ’Identifier’:’value’, 07 ’Title’: ’Value to added’, 08 ’LiteralValue’: {’values’:[0,1,2,3,4,5]}, 09 ’dataType’: type(0), 10 ’value’:0, # default}, 11 { #1 12 ’Identifier’: ’map’, 13 ’Title’: ’The raster map’, 14 ’ComplexValueReference’: {’Formats’:["image/tiff 15 }... ]16 self.Outputs = [ { # 0 17 ’Identifier’: ’value’, 18 ’Title’: ’Input value + 1’, 19 ’LiteralValue’: {}, 20 ’value’:1 },... ]

Page 17: Embrio e Wuiw due interfaccie web per WPSgislab.dirap.unipa.it/grass_meeting/present/grass_goes_web.pdf · PyWPS 0.4 PyWPS nasce come connettore dedicato a GRASS CLI più di 300 moduli

2006-06-01 17

PyWPS 0.4 – processo di esempio

29 def execute(self): 30 self.status = ["The start", 5] 31 self.Outputs[0][’value’] = self.Inputs[0][’value’]+1 32 self.status = ["LiteralValue set", 20] 33 34 self.status = ["Data import", 25] 35 os.system("r.in.gdal in=%s out=map" % (self.Inputs[1][’value’ 36 37 self.status = ["Creating output map", 50] 38 os.system("r.mapcalc map=map+%d" % (self.Inputs[0][’value’])) 39 40 self.status = ["Exporting map", 75] 41 if os.system("r.out.gdal in=map out=output.tif type=UInt16 > 42 return "Could not export map" 43 else: # ok44 return

Page 18: Embrio e Wuiw due interfaccie web per WPSgislab.dirap.unipa.it/grass_meeting/present/grass_goes_web.pdf · PyWPS 0.4 PyWPS nasce come connettore dedicato a GRASS CLI più di 300 moduli

2006-06-01 18

PyWPS in action - WPS Demo

http://pywps.ominiverdi.org/Repository di applicazioni dimostrative sviluppate da ominiverdi.orgSviluppatori:

Lorenzo Becchi (ominiverdi)Luca Casagrande (doktoreas)

Le applicazioni sono in fase iniziale di sviluppo. Eventuali bug possono essere segnalati sulla mailing list di PyWPS ( [email protected] ).

Page 19: Embrio e Wuiw due interfaccie web per WPSgislab.dirap.unipa.it/grass_meeting/present/grass_goes_web.pdf · PyWPS 0.4 PyWPS nasce come connettore dedicato a GRASS CLI più di 300 moduli

2006-06-01 19

Embrio & Wuiw

EmbrioTecnologie: DHTML + AJAX + PHP/MapscriptScopo: offrire una interfaccia basata su UMN Mapserver per accedere a funzioni di GRASS su dati locali (Mapserver e WPS sullo stesso server).Stato di sviluppo: alpha

WuiwTecnologie: DHTML + AJAXScopo: offrire una interfaccia che operi da intermediario fra un server WPS e altri server OWS (WCS, WFS) accoppiando risorse remote per il calcolo e i dati.Stato di sviluppo: 0

Page 20: Embrio e Wuiw due interfaccie web per WPSgislab.dirap.unipa.it/grass_meeting/present/grass_goes_web.pdf · PyWPS 0.4 PyWPS nasce come connettore dedicato a GRASS CLI più di 300 moduli

2006-06-01 20

Embrio su pywps.ominiverdi.org

Page 21: Embrio e Wuiw due interfaccie web per WPSgislab.dirap.unipa.it/grass_meeting/present/grass_goes_web.pdf · PyWPS 0.4 PyWPS nasce come connettore dedicato a GRASS CLI più di 300 moduli

2006-06-01 21

Embrio - V.Buffer

Page 22: Embrio e Wuiw due interfaccie web per WPSgislab.dirap.unipa.it/grass_meeting/present/grass_goes_web.pdf · PyWPS 0.4 PyWPS nasce come connettore dedicato a GRASS CLI più di 300 moduli

2006-06-01 22

Embrio - R.Los

Page 23: Embrio e Wuiw due interfaccie web per WPSgislab.dirap.unipa.it/grass_meeting/present/grass_goes_web.pdf · PyWPS 0.4 PyWPS nasce come connettore dedicato a GRASS CLI più di 300 moduli

2006-06-01 23

Embrio - V.Net.Path

Page 24: Embrio e Wuiw due interfaccie web per WPSgislab.dirap.unipa.it/grass_meeting/present/grass_goes_web.pdf · PyWPS 0.4 PyWPS nasce come connettore dedicato a GRASS CLI più di 300 moduli

2006-06-01 24

Embrio – R.Walk

Page 25: Embrio e Wuiw due interfaccie web per WPSgislab.dirap.unipa.it/grass_meeting/present/grass_goes_web.pdf · PyWPS 0.4 PyWPS nasce come connettore dedicato a GRASS CLI più di 300 moduli

2006-06-01 25

Embrio + ka-Map - R.Los

Page 26: Embrio e Wuiw due interfaccie web per WPSgislab.dirap.unipa.it/grass_meeting/present/grass_goes_web.pdf · PyWPS 0.4 PyWPS nasce come connettore dedicato a GRASS CLI più di 300 moduli

2006-06-01 26

Embrio + ka-Map + Winman - R.Los

Page 27: Embrio e Wuiw due interfaccie web per WPSgislab.dirap.unipa.it/grass_meeting/present/grass_goes_web.pdf · PyWPS 0.4 PyWPS nasce come connettore dedicato a GRASS CLI più di 300 moduli

2006-06-01 27

Conclusioni

WPS standard implementato in maniera accessibile grazie a PyWPS.Offrire script di GRASS attraverso una web interface non è mai stato così facile.E' relativamente semplice connettere UMN Mapserver (o ArcIMS) a GRASS via PyWPS. I futuri sviluppi di GRASS renderanno la cosa anche più semplice.

Page 28: Embrio e Wuiw due interfaccie web per WPSgislab.dirap.unipa.it/grass_meeting/present/grass_goes_web.pdf · PyWPS 0.4 PyWPS nasce come connettore dedicato a GRASS CLI più di 300 moduli

2006-06-01 28

Sviluppi futuri

PyWPSLa Process definition (inputs e outputs di dati) è ancora primitiva. E' previsto lo sviluppo di un set di classi per la definizione dei processi.

GRASS Implementazione di una nuova interfaccia GRASS-python (Alessandro Frigeri aka ’geoalf ’) 3D views via VTK (Sören Gebbert aka ’huhabla’)

Embrio & WuiwSviluppo verso una versione stabile delle due interfaccie.

Page 29: Embrio e Wuiw due interfaccie web per WPSgislab.dirap.unipa.it/grass_meeting/present/grass_goes_web.pdf · PyWPS 0.4 PyWPS nasce come connettore dedicato a GRASS CLI più di 300 moduli

2006-06-01 29

Attribution-NonCommercial-ShareAlike 2.5