Étude comparative de serveurs open source conformes WPS : GeoServer, ZooWPS, Deegree et 52 North Kaboro SAMASSE Encadré par: -Dr. Tierry Badard -Dr. Frédéric Hubert GMT6006 – Automne 2012
Plan de l’exposé Introduction Objectifs Serveur WPS Description des serveurs Critères de comparaison Réalisation des tests Tableau de synthèse Conclusion
Introduction OGC=Open Geospatial Consertium 483 membres (OGC,2012) Interopérabilité des SIG Spécifications des interfaces de services Web interopérables OWS (OGC Web Services) Architecture type d’un service Web OGC. Source=http://geoconnexions.rncan.gc.ca/1022
Introduction Exemples de OGC Web Services WMS: Web Map Service WFS: Web Feature Service WCS: Web Coverage Service WPS: Web Processing Service
Objectifs Décrire les caractéristiques des serveurs GeoServer, Deegree, 52 North et ZooWPS Vérifier la conformité des serveurs pré-cités à la spécification OGC WPS Établir une grille des forces et des faiblesses dans l’utilisation du service WPS à partir de ces serveurs
Serveur WPS Rôle: Distributeur des fonctionnalités de traitements géospatiaux (Process) Exemples de Process: Calcul de distance, Fonction d’interpolation IDW, Buffer, Contour… Possède 3 opérations GetCapabilities DescribeProcess Execute
Serveur WPS Échange entre Serveur et Client WPS: http://www.rencontres-sig-la-lettre.fr/wp-content/uploads/2012/01/R2012-WPS-Cauchy.pdf
Description des serveurs GeoServer: Certifié conforme OGC Implémente les services WMS, WFS, WCS et WPS comme une extension Développé en Java avec GeoTools
Description des serveurs Deegree: Plateforme de service web développée en Java JTS Topology Suite pour le WPS Implémente WMS, WFS… www.deegree.org
Description des serveurs 52 North: Basé sur une plateforme Java Possède une communauté 52 North Geoprocessing Plug-in WPS pour uDig et JUMP JTS Topology Suite pour les Process
Description des serveurs ZooWPS: Projet orienté uniquement vers WPS Composé de 3 parties: http://zoo-project.org/
Critères de comparaison Récupération et installation des serveurs Disponibilité de documentation et de support Type de licence Maturité du serveur WPS Systèmes d’exploitation supportés Test de conformité au standard WPS Support de plusieurs langages de programmation Traitement asynchrone Complexité de déploiement des traitements spatiaux Intégration dans des applications SIG
Réalisation des tests Ordinateur utilisé: Données géographiques Processeur Dual Core Windows 7 RAM= 3Go Disque dur = 500 Go Données géographiques Linéaire: route.gml Ponctuelle: village.gml Surfacique: parcelle.gml
Réalisation des tests Récupération et installation des serveurs GeoServer: http://sourceforge.net/projects/geoserver/files/GeoServer/2.2.2/geoserver-2.2.2.exe/download?use_mirror=garr Prérequis: JAVA6 ou plus récent
Réalisation des tests Récupération et installation des serveurs Deegree: http://www.deegree.org/Download Pas de prérequis
Réalisation des tests Récupération et installation des serveurs 52 North WPS: http://52north.org/downloads/geoprocessing/wps Prérequis: JAVA6 ou plus récent
Réalisation des tests Récupération et installation des serveurs ZooWPS: http://zoo-project.org/site/Downloads Prérequis: Autoconf, cgic, cURL, FastCGI, Flex et Bison, libxml2, OpenSSL, Python. Installé à partir de OsGeo Live DVD5.5
Réalisation des tests Test de conformité au standard WPS Exigences selon le document OGC 05-007r7 http://portal.opengeospatial.org/files/?artifact_id=24151
Réalisation des tests Test de conformité au standard WPS GeoServer: GetCapabilities Requête: http://localhost:8083/geoserver/ows?service=wps&version=1.0.0&request=GetCapabilities Réponse du serveur:
Réalisation des tests Test de conformité au standard WPS GeoServer: DescribeProcess Requête: http://localhost:8083/geoserver/ows?service=WPS&version=1.0.0&request=DescribeProcess&Identifier=JTS:buffer Réponse du serveur:
Réalisation des tests Test de conformité au standard WPS GeoServer: Execute Requête et Réponse
<. xml version="1. 0" encoding="UTF-8" <?xml version="1.0" encoding="UTF-8"?><wps:Execute version="1.0.0" service="WPS" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.opengis.net/wps/1.0.0" xmlns:wfs="http://www.opengis.net/wfs" xmlns:wps="http://www.opengis.net/wps/1.0.0" xmlns:ows="http://www.opengis.net/ows/1.1" xmlns:gml="http://www.opengis.net/gml" xmlns:ogc="http://www.opengis.net/ogc" xmlns:wcs="http://www.opengis.net/wcs/1.1.1" xmlns:xlink="http://www.w3.org/1999/xlink" xsi:schemaLocation="http://www.opengis.net/wps/1.0.0 http://schemas.opengis.net/wps/1.0.0/wpsAll.xsd"> <ows:Identifier>JTS:buffer</ows:Identifier> <wps:DataInputs> <wps:Input> <ows:Identifier>geom</ows:Identifier> <wps:Data> <wps:ComplexData mimeType="text/xml; subtype=gml/3.1.1"><![CDATA[LINESTRING(-139.0542539399907 59.99968406467396, - 139.0954933825154 60.02169517499379, -139.1406646325113 60.05079987316714, -139.178418355588 60.07506760268618, -139.1990047524417 60.08827870457464)]]></wps:ComplexData> </wps:Data> </wps:Input> <ows:Identifier>distance</ows:Identifier> <wps:LiteralData>0.1</wps:LiteralData> <ows:Identifier>capStyle</ows:Identifier> <wps:LiteralData>Round</wps:LiteralData> </wps:DataInputs> <wps:ResponseForm> <wps:RawDataOutput mimeType="text/xml; subtype=gml/3.1.1"> <ows:Identifier>result</ows:Identifier> </wps:RawDataOutput> </wps:ResponseForm> </wps:Execute>
Réalisation des tests Test de conformité au standard WPS Deegree: GetCapabilities Requête: http://localhost:8082/services?service=wps&version=1.0.0&request=GetCapabilities Réponse du serveur:
Réalisation des tests Test de conformité au standard WPS Deegree: DescribeProcess Requête: http://localhost:8082/services?service=wps&version=1.0.0&request=DescribeProcess&Identifier=Buffer Réponse du serveur:
Réalisation des tests Test de conformité au standard WPS Deegree: Execute Requête et Réponse
<wps:Execute xmlns:wps="http://www. opengis. net/wps/1 <wps:Execute xmlns:wps="http://www.opengis.net/wps/1.0.0" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ows="http://www.opengis.net/ows/1.1" service="WPS" version="1.0.0" xsi:schemaLocation="http://www.opengis.net/wps/1.0.0 http://schemas.opengis.net/wps/1.0.0/wpsExecute_request.xsd"> <ows:Identifier>Buffer</ows:Identifier> <wps:DataInputs> <wps:Input> <ows:Identifier>GMLInput</ows:Identifier> <wps:Reference xlink:href="http://192.168.1.161:8084/geoserver/ipr/wfs?service=WFS&version=1.1.0&request=GetFeature&TypeName=ipr:routes&Format=GML"/> </wps:Input> <ows:Identifier>BufferDistance</ows:Identifier> <wps:Data> <wps:LiteralData uom="unity" dataType="double">0.1</wps:LiteralData> </wps:Data> </wps:DataInputs> </wps:Execute>
<gml:Polygon srsName="urn:x-ogc:def:crs:EPSG:4326"> <gml:exterior> <gml:LinearRing srsName="urn:x-ogc:def:crs:EPSG:4326"> <gml:posList>60.107982 -139.044783 60.134862 -139.086502 60.134920 -139.086593 60.159188 -139.124347 60.159228 -139.124409 60.172439 -139.144996 60.181359 -139.162452 60.186701 -139.181314 60.188262 -139.200855 60.185980 -139.220325 60.179943 -139.238976 60.170384 -139.256091 60.157669 -139.271012 60.142288 -139.283165 60.124831 -139.292085 60.105970 -139.297427 60.086429 -139.298988 60.066958 -139.296706 60.048308 -139.290669 60.031193 -139.281110 60.016272 -139.268395 60.004118 -139.253014 59.990943 -139.232484 59.937607 -139.149615 59.933475 -139.142580 59.911464 -139.101341 59.903973 -139.083225 59.900160 -139.063996 59.900171 -139.044392 59.904007 -139.025168 59.911520 -139.007061 59.922421 -138.990768 59.936291 -138.976915 59.952597 -138.966034 59.970713 -138.958542 59.989942 -138.954730 60.009546 -138.954741 60.028770 -138.958577 60.046877 -138.966090 60.063170 -138.976991 60.077023 -138.990861 60.087904 -139.007167 60.107982 -139.044783 </gml:posList> </gml:LinearRing> </gml:exterior> </gml:Polygon>
Réalisation des tests Test de conformité au standard WPS 52North WPS: GetCapabilities Requête: http://localhost:8080/wps/WebProcessingService?Request=GetCapabilities&Service=WPS Réponse du serveur:
Réalisation des tests Test de conformité au standard WPS 52North WPS: DescribeProcess Requête: http://localhost:8080/wps/WebProcessingService?Request=DescribeProcess&Service=WPS&Version=1.0.0&Identifier=org.n52.wps.server.algorithm.SimpleBufferAlgorithm Réponse du serveur:
Réalisation des tests Test de conformité au standard WPS 52North WPS: Execute Requête et Réponse du serveur:
Réalisation des tests Test de conformité au standard WPS ZooWPS: Getcapabilities: Requête: http://localhost/zoo/?Request=GetCapabilities&service=WPS&version=1.0.0 Réponse du serveur:
Réalisation des tests Test de conformité au standard WPS ZooWPS: DescribeProcess: Requête: http://localhost/zoo/?Request=DescribeProcess&service=WPS&version=1.0.0&Identifier=Buffer Réponse du serveur:
Tableau de synthèse Critères GeoServer Deegree 52° North Zoo WPS Récupération et installation des serveurs -Téléchargement disponible sur Internet -Possède un installateur -Facile à installer - Interface d’administration web avancée et en français - Téléchargement disponible sur Internet - Installation très simple -Possède une interface web avancée - Installation simple -Possède une interface web pour la configuration moins avancée -Installation très complexe mais disponible en démos sur DVD. Disponibilité de documentation et de support -Documentation très disponible et communauté d’utilisateurs et développeurs dynamiques
Tableau de synthèse Critères GeoServer Deegree 52° North Zoo WPS Type de licence -GNU GPL 2 -GNU LGPL - licence de type MIT/X-11 Maturité du serveur WPS - WPS en 2008 - WPS en 2004 -WPS en 2008. -ZooWPS créé en 2008 Systèmes d’exploitation supportés -Windows, MacOS X, Linux -Windows, MacOS X, Linux, Solaris -Windows, linux, MacOS X -Linux, Windows, MacOS X, Unix Test de conformité au standard WPS Conforme Support de plusieurs langages de programmation -Moins riche : JAVA (JTS, Geotools), XML -Moins riche : JAVA, XML -Moins riche : JAVA (JTS, Geotools, xmlBeans, servlet API, derby), XML -Très riche: C/C++, Fortran, JAVA, Python, PHP, Perl, JavaScript
Tableau de synthèse Critères GeoServer Deegree 52° North Zoo WPS Traitement asynchrone Supporte les modes synchrone et asynchrone Complexité de déploiement des traitements spatiaux -Outil WPS Request Builder pour créer et tester des Process. -Process personnalisé nécessite une base de connaissance en programmation JAVA et XML. -Workspace avec des traitements WPS déjà définis - Nécessite la programmation JAVA et des connaissances en XML. -Kit de développement de Process composé d’un projet Eclipse (52North WPS SDK). -Espace de test pour Process -Un service peut se programmer en Python, PHP, JAVA ou JavaScript. -Il faut créer un fichier .zcfg pour les codes programmés. Intégration dans des applications SIG RAS Plug-in pour les clients uDig et JUMP ZooWPS peut être intégré dans le SIG Grass
Conclusion 1) Les quatre plateformes GeoServer, Deegree, 52°North et ZOOWPS ont l’avantage d’être distribuées sous licence open source et facilement téléchargeables sur Internet
Conclusion 2) Les tests des opérations GetCapabilities, DescribeProcess et Execute ont montré que les serveurs sont conformes à la spécification WPS
Conclusion 3) Le deploiement d’un Process ou encore fonction de traitement est plus facile dans GeoServer et Deegree, complexe dans 52 North et très complexe dans ZooWPS
Conclusion 4) Le serveur ZooWPS est plus intéressant pour les programmeurs, il offre plusieurs possibilités de langage de programmation (C/C++, JAVA, Python, Perl, PHP, JavaScript)
Conclusion 5) 52 North est en avance dans le developpement de plug-in client WPS (uDig, JUMP, suivi de ZooWPS (GRASS)
MERCI