| 1 | .. _tutorialintro: |
|---|
| 2 | |
|---|
| 3 | Introduction |
|---|
| 4 | ============ |
|---|
| 5 | |
|---|
| 6 | What is ZOO? |
|---|
| 7 | ------------ |
|---|
| 8 | |
|---|
| 9 | ZOO is a WPS (Web Processing Service) open source project recently released under a MIT/X-11 |
|---|
| 10 | style license. It provides an OGC WPS compliant developer-friendly framework to create and |
|---|
| 11 | chain WPS Web services. ZOO is made of three parts: |
|---|
| 12 | |
|---|
| 13 | ZOO Kernel |
|---|
| 14 | A powerful server-side C Kernel which makes it possible to manage and chain Web services |
|---|
| 15 | coded in different programming languages. |
|---|
| 16 | |
|---|
| 17 | ZOO Services |
|---|
| 18 | A growing suite of example Web Services based on various open source libraries. |
|---|
| 19 | |
|---|
| 20 | ZOO API |
|---|
| 21 | A server-side JavaScript API able to call and chain the ZOO Services, which makes the |
|---|
| 22 | development and chaining processes easier. |
|---|
| 23 | |
|---|
| 24 | ZOO is designed to make the WPS server-side development easier by providing a powerful system |
|---|
| 25 | able to understand and execute WPS compliant queries. It supports several programming languages, |
|---|
| 26 | thus allowing you to create Web Services in your favorite language and from existing code. |
|---|
| 27 | Further information on the project is available on the |
|---|
| 28 | `ZOO Project official website <http://www.zoo-project.org/>`__. |
|---|
| 29 | |
|---|
| 30 | How does ZOO work? |
|---|
| 31 | ------------------ |
|---|
| 32 | |
|---|
| 33 | ZOO is based on a 'WPS Service Kernel' which constitutes the ZOO's core system (aka ZOO Kernel). |
|---|
| 34 | The latter is able to load dynamic libraries and to handle them as on-demand Web services. |
|---|
| 35 | The ZOO Kernel is written in C language, but supports several common programming languages |
|---|
| 36 | for creating ZOO Services. |
|---|
| 37 | |
|---|
| 38 | A :ref:`ZOO Service <services>` is a link composed of a ZOO metadata file (.zcfg) and the code |
|---|
| 39 | for the corresponding implementation. The metadata file describes all the available functions |
|---|
| 40 | which can be called using a WPS Exec Request, as well as the desired input/output. Services |
|---|
| 41 | contain the algorithms and functions, and can now be implemented in C/C++, Fortran, Java, |
|---|
| 42 | Python, PHP and JavaScript. |
|---|
| 43 | |
|---|
| 44 | :ref:`ZOO Kernel <kernel>` works with Apache and can communicate with cartographic engines |
|---|
| 45 | and Web mapping clients. It simply adds the WPS support to your spatial data infrastructure |
|---|
| 46 | and your Web mapping application. It can use every GDAL/OGR supported formats as input data |
|---|
| 47 | and create suitable vector or raster output for your cartographic engine and/or your |
|---|
| 48 | web-mapping client application. |
|---|
| 49 | |
|---|
| 50 | What are we going to do in this workshop? |
|---|
| 51 | ----------------------------------------- |
|---|
| 52 | |
|---|
| 53 | This workshop aims to present the ZOO Project and its features, and to explain its capabilities |
|---|
| 54 | regarding the WPS 1.0.0 specification. The participants will learn in 3 hours how to use ZOO |
|---|
| 55 | Kernel, how to create ZOO Services and their configuration files and finally how to link |
|---|
| 56 | the created Service with a client-side webmapping application. |
|---|
| 57 | |
|---|
| 58 | A pre-compiled ZOO 1.0 version is provided inside OSGeoLive, the OSGeo official Live DVD. |
|---|
| 59 | For the sack of simplicity, an OSGeoLive Virtual Machine image disk is already installed |
|---|
| 60 | on your computers. This will be used during this workshop, so the participants won't have |
|---|
| 61 | to compile and install ZOO Kernel manually. Running and testing ZOO Kernel from this |
|---|
| 62 | OSGeoLive image disk is thus the first step of the workshop, and every participants should |
|---|
| 63 | get a working ZOO Kernel in less than 30 minutes. |
|---|
| 64 | |
|---|
| 65 | Once ZOO Kernel will be tested from a Web browser using GetCapabilities requests, |
|---|
| 66 | participants will be invited to create an OGR based ZOO Service Provider aiming to enable |
|---|
| 67 | simple spatial operations on vector data. Participants will first have to choose whether |
|---|
| 68 | they will create the service using C or Python language. Every programming step of the ZOO |
|---|
| 69 | Service Provider and the related Services will be each time detailed in C and Python. |
|---|
| 70 | |
|---|
| 71 | Once the ZOO Services will be ready and callable by ZOO Kernel, participants will finally |
|---|
| 72 | learn how to use its different functions from an OpenLayers simple application. A sample |
|---|
| 73 | dataset from Geoserver will be displayed on a simple map using WMS/WFS standards and used as |
|---|
| 74 | input data by the ZOO Services. Then, some specific selection and execution controls will be |
|---|
| 75 | added in the JavaScript code in order to execute single and multiple geometries on the displayed |
|---|
| 76 | polygons. |
|---|
| 77 | |
|---|
| 78 | Once again, the whole procedure will be organized step-by-step and detailed with numerous code |
|---|
| 79 | snippets and their respective explanations. The instructors will check the ZOO Kernel functioning |
|---|
| 80 | on each machine and will assist you while coding. Technical questions are of course welcome |
|---|
| 81 | during the workshop. |
|---|
| 82 | |
|---|
| 83 | Usefull tips for reading |
|---|
| 84 | ------------------------ |
|---|
| 85 | |
|---|
| 86 | Codes snipets are included in yellow blocks |
|---|
| 87 | |
|---|
| 88 | Code changes are included in grey blocks |
|---|
| 89 | |
|---|
| 90 | Code snipets included in sentences are displayed this way |
|---|
| 91 | |
|---|
| 92 | HTTP and XML Requests are included in blue blocks |
|---|
| 93 | |
|---|
| 94 | |
|---|
| 95 | |
|---|
| 96 | *Let's go !* |
|---|
| 97 | |
|---|