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 | |
---|