SlideShare a Scribd company logo
1 of 18
ZOO project : An Open WPS Platform Gérald FENOY, GeoLabs SARL Nicolas BOZON, 3LIZ SARL Venkatesh RAGHAVAN, Osaka City Univ.
Welcome to the ZOO Tribe
What is ZOO ? OSGeo softwares are useful for many GIS projects but used in many different ways >  Many services available online >  Many specific Javascript API Is that really sustainable ? Let's build  standardised OSGeo  ecosystem using WPS and also other OGC Web Services
Platform Overview
Which Programming Language ? ZOO Babel ZOO Kernel is able to support any language  you want it to support ! This way we don't force anybody to code in a specific language !  Currently support for Services from Service Provider in  JAVA ,  Python ,  PHP  and  C .
Mapserver  (WMS, WFS,WCS,SOS) +  Apache Server (HTTP) +  ZOO OWS Platform Open Office Server  (ODF)   + ZOO Kernel  (WPS)   OGC  ® OGC  ®
How does it work ? A  ZOO service  is made of: A .zcfg metadata file (Title, Metadata, Inputs, Output...) A Service Provider, a « Service Shared Object »  ( Dynamic library, Python modules, JAVA Class, PHP script ...) WPS GetCapabilities  and  DescribeProcess  requests are resolved only by parsing the .zcfg file metadata (Flex+Bison) The ZOO Kernel is able to dynamicaly load SSO, extract then run specific functions to respond to  WPS Execute  requests.
KISS ! (Keep it simple stupid !) ZOO Kernel  make it simple for the end-developer to implement any kind of services.  - Zoo Kernel uses KVP to treat the parameters coming from a GET method request.  - For the POST method, Zoo Kernel will use the request parameter sent as an XML file containing a specific operation request document (GetCapabilities, DescribeProcess or Execute).
Hello World test_service.py (  link  )   def HelloPy(conf,inputs,outputs): outputs[&quot;output1&quot;]={&quot;value&quot;: &quot;hello from the python world !&quot;,&quot;datatype&quot;: &quot;string&quot;} return SERVICE_SUCCEEDED HelloPy.zcfg [HelloPy] Title = Get the HelloWorld string. serviceProvider = test_service serviceType = Python <DataOutputs> [output1] Title = HelloString <LiteralData> DataType = string </LiteralData> </DataOutputs>
ZOO Sample Services DescribeProcess and Execute for: Multiply  (samples  12 x 10 ) Buffer Distance Boundary ConvexHull
ZOO Sample Service Provider OGR based
ZOO Sample Service Provider CGAL based
ZOO Sample Service Provider Drift-X based
ZOO and Processes  Chaining Since WPS already support service chaining, therefor ZOO is also able to use the output of one process as an input for another process. Moreover, as ZOO Kernel support the XML POST Request (mandatory) you could even easily store your requests for a future use, to re-execute a process on demand. We didn't provide the storage of your XML request currently, please do it by yourself !
ZOO Kernel next steps Get some more services running ! - GRASS and/or SEXTANTE service - St atistical service using R - SOS implementation (Zoo Box demo in FOSS4G Osaka)  - OpenOffice reporting service Developer guide to be written  by March 2010
ZOO Client plans Mozilla Desktop GIS Client - XULRunner hybrid GIS application - Implementation of ZOO Kernel in the heart of the Mozilla platform (ZOO Kernel as an XPCOM component) ZOO Client Javascript API  - GeoExt Web GIS client - Automated Toolbar creation  (ZooSkins)
ZOO Asia Pacific tour Oct 14 th  2009: ZOO Tshirt printing in Hanoi Oct 15 th  2009 : ZOO presentation at Asian Institue of Technology (Bangkok) Oct 16 th  2009: ZOO presentation at OSGeo-Thai Chapter meeting held in Chulalongkorn University (Bangkok) Oct 20 th  to 23 rd  : ZOO Poster at FOSS4G 2009 (Drift-X WPS)   ZOO Project : an open WPS platform   Canaweb Client, a base for ZOO Desktop Client Nov 1 st  and  2 nd  2009:  ZOO @  Today : ZOO was introduced here
www.zoo-project.org Thank you for your time ! Thanks to Frank Warmerdam for his great GDAL /OGR and constant support !

More Related Content

What's hot

Vancouver Erlang Meetup cferl & Mule Transport Plug
Vancouver Erlang Meetup cferl & Mule Transport PlugVancouver Erlang Meetup cferl & Mule Transport Plug
Vancouver Erlang Meetup cferl & Mule Transport Plug
David Dossot
 
How to start using Scala
How to start using ScalaHow to start using Scala
How to start using Scala
Ngoc Dao
 
What make Swift Awesome
What make Swift AwesomeWhat make Swift Awesome
What make Swift Awesome
Sokna Ly
 
"Lego Programming" with Lorzy
"Lego Programming" with Lorzy"Lego Programming" with Lorzy
"Lego Programming" with Lorzy
clkao
 

What's hot (20)

Super combinators
Super combinatorsSuper combinators
Super combinators
 
Luigi future
Luigi futureLuigi future
Luigi future
 
Declarative JavaScript concepts and implemetation
Declarative JavaScript concepts and implemetationDeclarative JavaScript concepts and implemetation
Declarative JavaScript concepts and implemetation
 
Simple ETL in python 3.5+ with Bonobo - PyParis 2017
Simple ETL in python 3.5+ with Bonobo - PyParis 2017Simple ETL in python 3.5+ with Bonobo - PyParis 2017
Simple ETL in python 3.5+ with Bonobo - PyParis 2017
 
Pollyfills in JavaScript
Pollyfills in JavaScriptPollyfills in JavaScript
Pollyfills in JavaScript
 
Vancouver Erlang Meetup cferl & Mule Transport Plug
Vancouver Erlang Meetup cferl & Mule Transport PlugVancouver Erlang Meetup cferl & Mule Transport Plug
Vancouver Erlang Meetup cferl & Mule Transport Plug
 
Async queue-transaction
Async queue-transaction Async queue-transaction
Async queue-transaction
 
Javascript asynchronous
Javascript asynchronousJavascript asynchronous
Javascript asynchronous
 
Developer-friendly taskqueues: What you should ask yourself before choosing one
Developer-friendly taskqueues: What you should ask yourself before choosing oneDeveloper-friendly taskqueues: What you should ask yourself before choosing one
Developer-friendly taskqueues: What you should ask yourself before choosing one
 
Functional Programming in JavaScript
Functional Programming in JavaScriptFunctional Programming in JavaScript
Functional Programming in JavaScript
 
How to start using Scala
How to start using ScalaHow to start using Scala
How to start using Scala
 
用 OPENRNDR 將 Chatbot 訊息視覺化
用 OPENRNDR 將 Chatbot 訊息視覺化用 OPENRNDR 將 Chatbot 訊息視覺化
用 OPENRNDR 將 Chatbot 訊息視覺化
 
Intro to Clojure 4 Developers
Intro to Clojure 4 DevelopersIntro to Clojure 4 Developers
Intro to Clojure 4 Developers
 
RubyMotion Introduction
RubyMotion IntroductionRubyMotion Introduction
RubyMotion Introduction
 
Wrapping java in awesomeness aka condensator
Wrapping java in awesomeness aka condensatorWrapping java in awesomeness aka condensator
Wrapping java in awesomeness aka condensator
 
What make Swift Awesome
What make Swift AwesomeWhat make Swift Awesome
What make Swift Awesome
 
PlantUML
PlantUMLPlantUML
PlantUML
 
Async await
Async awaitAsync await
Async await
 
Model with actors and implement with Akka
Model with actors and implement with AkkaModel with actors and implement with Akka
Model with actors and implement with Akka
 
"Lego Programming" with Lorzy
"Lego Programming" with Lorzy"Lego Programming" with Lorzy
"Lego Programming" with Lorzy
 

Viewers also liked (6)

Marketing in a Green Economy
Marketing in a Green EconomyMarketing in a Green Economy
Marketing in a Green Economy
 
Restructuring pas 37
Restructuring pas 37Restructuring pas 37
Restructuring pas 37
 
Social Media Tools for Self Promotion
Social Media Tools for Self PromotionSocial Media Tools for Self Promotion
Social Media Tools for Self Promotion
 
Socialmedia Business
Socialmedia BusinessSocialmedia Business
Socialmedia Business
 
All About laura b creative
All About laura b creativeAll About laura b creative
All About laura b creative
 
Internal control 1_ricc_revised
Internal control 1_ricc_revisedInternal control 1_ricc_revised
Internal control 1_ricc_revised
 

Similar to Zoo Overview

PyWPS at COST WPS Workshop
PyWPS at COST WPS WorkshopPyWPS at COST WPS Workshop
PyWPS at COST WPS Workshop
Jachym Cepicky
 
ONLINE IMAGE PROCESSING WITH ORFEOTOOLBOX WPS
ONLINE IMAGE PROCESSING WITH ORFEOTOOLBOX WPSONLINE IMAGE PROCESSING WITH ORFEOTOOLBOX WPS
ONLINE IMAGE PROCESSING WITH ORFEOTOOLBOX WPS
otb
 
Laurens Van Den Oever Xopus Presentation
Laurens Van Den Oever Xopus PresentationLaurens Van Den Oever Xopus Presentation
Laurens Van Den Oever Xopus Presentation
Ajax Experience 2009
 
The future of server side JavaScript
The future of server side JavaScriptThe future of server side JavaScript
The future of server side JavaScript
Oleg Podsechin
 
Webdevcon Keynote hh-2012-09-18
Webdevcon Keynote hh-2012-09-18Webdevcon Keynote hh-2012-09-18
Webdevcon Keynote hh-2012-09-18
Pierre Joye
 

Similar to Zoo Overview (20)

Foss4g2009tokyo Gerald Zoo
Foss4g2009tokyo Gerald ZooFoss4g2009tokyo Gerald Zoo
Foss4g2009tokyo Gerald Zoo
 
Zoo Presentation Cumtb 2010
Zoo Presentation Cumtb 2010Zoo Presentation Cumtb 2010
Zoo Presentation Cumtb 2010
 
PyWPS at COST WPS Workshop
PyWPS at COST WPS WorkshopPyWPS at COST WPS Workshop
PyWPS at COST WPS Workshop
 
ONLINE IMAGE PROCESSING WITH ORFEOTOOLBOX WPS
ONLINE IMAGE PROCESSING WITH ORFEOTOOLBOX WPSONLINE IMAGE PROCESSING WITH ORFEOTOOLBOX WPS
ONLINE IMAGE PROCESSING WITH ORFEOTOOLBOX WPS
 
Introduction to Apache Beam
Introduction to Apache BeamIntroduction to Apache Beam
Introduction to Apache Beam
 
CocoaConf DC - Automate with Swift - Tony Ingraldi
CocoaConf DC -  Automate with Swift - Tony IngraldiCocoaConf DC -  Automate with Swift - Tony Ingraldi
CocoaConf DC - Automate with Swift - Tony Ingraldi
 
Python Streaming Pipelines on Flink - Beam Meetup at Lyft 2019
Python Streaming Pipelines on Flink - Beam Meetup at Lyft 2019Python Streaming Pipelines on Flink - Beam Meetup at Lyft 2019
Python Streaming Pipelines on Flink - Beam Meetup at Lyft 2019
 
Running High-Speed Serverless with nuclio
Running High-Speed Serverless with nuclioRunning High-Speed Serverless with nuclio
Running High-Speed Serverless with nuclio
 
Cytoscape and External Data Analysis Tools
Cytoscape and External Data Analysis ToolsCytoscape and External Data Analysis Tools
Cytoscape and External Data Analysis Tools
 
node.js - Fast event based web application development
node.js - Fast event based web application developmentnode.js - Fast event based web application development
node.js - Fast event based web application development
 
Javascript, DOM, browsers and frameworks basics
Javascript, DOM, browsers and frameworks basicsJavascript, DOM, browsers and frameworks basics
Javascript, DOM, browsers and frameworks basics
 
PyQt Application Development On Maemo
PyQt Application Development On MaemoPyQt Application Development On Maemo
PyQt Application Development On Maemo
 
The Nuxeo RCP platform
The Nuxeo RCP platformThe Nuxeo RCP platform
The Nuxeo RCP platform
 
Deploying Your Favorite Web App To AWS Lambda with Apex up
Deploying Your Favorite Web App To AWS Lambda with Apex upDeploying Your Favorite Web App To AWS Lambda with Apex up
Deploying Your Favorite Web App To AWS Lambda with Apex up
 
Laurens Van Den Oever Xopus Presentation
Laurens Van Den Oever Xopus PresentationLaurens Van Den Oever Xopus Presentation
Laurens Van Den Oever Xopus Presentation
 
Nodejs a-practical-introduction-oredev
Nodejs a-practical-introduction-oredevNodejs a-practical-introduction-oredev
Nodejs a-practical-introduction-oredev
 
The future of server side JavaScript
The future of server side JavaScriptThe future of server side JavaScript
The future of server side JavaScript
 
Original slides from Ryan Dahl's NodeJs intro talk
Original slides from Ryan Dahl's NodeJs intro talkOriginal slides from Ryan Dahl's NodeJs intro talk
Original slides from Ryan Dahl's NodeJs intro talk
 
Webdevcon Keynote hh-2012-09-18
Webdevcon Keynote hh-2012-09-18Webdevcon Keynote hh-2012-09-18
Webdevcon Keynote hh-2012-09-18
 
Learn about Java framework for pen-based computing and the Livescribe Platfor...
Learn about Java framework for pen-based computing and the Livescribe Platfor...Learn about Java framework for pen-based computing and the Livescribe Platfor...
Learn about Java framework for pen-based computing and the Livescribe Platfor...
 

Zoo Overview

  • 1. ZOO project : An Open WPS Platform Gérald FENOY, GeoLabs SARL Nicolas BOZON, 3LIZ SARL Venkatesh RAGHAVAN, Osaka City Univ.
  • 2. Welcome to the ZOO Tribe
  • 3. What is ZOO ? OSGeo softwares are useful for many GIS projects but used in many different ways > Many services available online > Many specific Javascript API Is that really sustainable ? Let's build standardised OSGeo ecosystem using WPS and also other OGC Web Services
  • 5. Which Programming Language ? ZOO Babel ZOO Kernel is able to support any language you want it to support ! This way we don't force anybody to code in a specific language ! Currently support for Services from Service Provider in JAVA , Python , PHP and C .
  • 6. Mapserver (WMS, WFS,WCS,SOS) + Apache Server (HTTP) + ZOO OWS Platform Open Office Server (ODF) + ZOO Kernel (WPS) OGC ® OGC ®
  • 7. How does it work ? A ZOO service is made of: A .zcfg metadata file (Title, Metadata, Inputs, Output...) A Service Provider, a « Service Shared Object » ( Dynamic library, Python modules, JAVA Class, PHP script ...) WPS GetCapabilities and DescribeProcess requests are resolved only by parsing the .zcfg file metadata (Flex+Bison) The ZOO Kernel is able to dynamicaly load SSO, extract then run specific functions to respond to WPS Execute requests.
  • 8. KISS ! (Keep it simple stupid !) ZOO Kernel make it simple for the end-developer to implement any kind of services. - Zoo Kernel uses KVP to treat the parameters coming from a GET method request. - For the POST method, Zoo Kernel will use the request parameter sent as an XML file containing a specific operation request document (GetCapabilities, DescribeProcess or Execute).
  • 9. Hello World test_service.py ( link ) def HelloPy(conf,inputs,outputs): outputs[&quot;output1&quot;]={&quot;value&quot;: &quot;hello from the python world !&quot;,&quot;datatype&quot;: &quot;string&quot;} return SERVICE_SUCCEEDED HelloPy.zcfg [HelloPy] Title = Get the HelloWorld string. serviceProvider = test_service serviceType = Python <DataOutputs> [output1] Title = HelloString <LiteralData> DataType = string </LiteralData> </DataOutputs>
  • 10. ZOO Sample Services DescribeProcess and Execute for: Multiply (samples 12 x 10 ) Buffer Distance Boundary ConvexHull
  • 11. ZOO Sample Service Provider OGR based
  • 12. ZOO Sample Service Provider CGAL based
  • 13. ZOO Sample Service Provider Drift-X based
  • 14. ZOO and Processes Chaining Since WPS already support service chaining, therefor ZOO is also able to use the output of one process as an input for another process. Moreover, as ZOO Kernel support the XML POST Request (mandatory) you could even easily store your requests for a future use, to re-execute a process on demand. We didn't provide the storage of your XML request currently, please do it by yourself !
  • 15. ZOO Kernel next steps Get some more services running ! - GRASS and/or SEXTANTE service - St atistical service using R - SOS implementation (Zoo Box demo in FOSS4G Osaka) - OpenOffice reporting service Developer guide to be written by March 2010
  • 16. ZOO Client plans Mozilla Desktop GIS Client - XULRunner hybrid GIS application - Implementation of ZOO Kernel in the heart of the Mozilla platform (ZOO Kernel as an XPCOM component) ZOO Client Javascript API - GeoExt Web GIS client - Automated Toolbar creation (ZooSkins)
  • 17. ZOO Asia Pacific tour Oct 14 th 2009: ZOO Tshirt printing in Hanoi Oct 15 th 2009 : ZOO presentation at Asian Institue of Technology (Bangkok) Oct 16 th 2009: ZOO presentation at OSGeo-Thai Chapter meeting held in Chulalongkorn University (Bangkok) Oct 20 th to 23 rd : ZOO Poster at FOSS4G 2009 (Drift-X WPS) ZOO Project : an open WPS platform Canaweb Client, a base for ZOO Desktop Client Nov 1 st and 2 nd 2009: ZOO @ Today : ZOO was introduced here
  • 18. www.zoo-project.org Thank you for your time ! Thanks to Frank Warmerdam for his great GDAL /OGR and constant support !