source: TI02-CSML/trunk/services/3rdParty/pywps-1.0.0/doc/install.txt @ 2194

Subversion URL: http://proj.badc.rl.ac.uk/svn/ndg/TI02-CSML/trunk/services/3rdParty/pywps-1.0.0/doc/install.txt@2194
Revision 2194, 66.5 KB checked in by lawrence, 13 years ago (diff)

Adding various specs and 3rd party code of interest for the CSML
services development.

Line 
1
2   next_inactive up previous
3
4                Implementation of OGC's WPS standard: PyWPS
5
6                           Jáchym ÄŒepickÃœ
7
8     Copyright ©2006 Jáchym ÄŒepickÃœ Permission is granted to
9     copy, distribute and/or modify this document under the terms of the
10     GNU Free Documentation License, Version 1.2 or any later version
11     published by the Free Software Foundation; with no Invariant
12     Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of
13     the license is included in the section entitled "GNU Free
14     Documentation License".
15
16   In this file, you can found the description of installation and
17   configuration of PyWPS script. At the and, you can learn, how to add
18   your own process to the list of processes.
19
20   PyPWS project has been started on April 2006 with support of DBU -
21   Deutsche Bundesstiftung Umwelt (http://dbu.de) and with help of
22   GDF-Hannover (http://gdf-hannover.de) and Help Service Remote Sensing
23   (http:/bnhelp.cz) companies.
24
25   Source code can be found at http://Les-e(2,11)[t]35j315k?cat=pywps
26
27Contents
28
29     * [1]Bugs
30     * [2]Installation
31          + [3]Installation the quick 'n' dirty way
32          + [4]Installation the 'clean' way
33          + [5]Testing after installation
34     * [6]Configuration
35          + [7]etc/settings.py
36          + [8]etc/grass.py
37     * [9]Add your own processes
38          + [10]Process Configuration
39          + [11]Process Programming
40     * [12]Note to grass programming
41     * [13]Testing your new process
42     * [14]Using the PyWPS
43          + [15]Input
44          + [16]Output
45     * [17]Sample process: addvalue
46     * [18]KVP request encoding of addvalue
47     * [19]XML request encoding addvalue
48     * [20]Licence of PyWPS
49     * [21]Licence of this document
50
51                                     Bugs
52
53   Known bugs and limitations to 14.8.2006
54     * Process Inputs definition is made on very primitive way. But it
55       works.
56     * Sometimes, when there is e.g. SyntaxError in the process, teporary
57       file /tmp/pywps* is not deleted, which ledts to ServerBussy
58       exception and the files have to be removed by hand.
59
60   Please report all problems or unexpected handeling.
61
62                                 Installation
63
64   Required packages:
65
66     * Web Server (e.g. Apache)
67     * python
68     * python-xml
69
70   Recommended packages:
71
72     * GIS GRASS
73     * PROJ.4
74     * GDAL/OGR
75
76Installation the quick 'n' dirty way
77
78   For installing pywps to your server simply unzip the archive to the
79   directory, where cgi programs are allowed to run.
80
81Installation the 'clean' way
82
83   Unzip the package
84 $ tar -xzf pywps-VERSION.tar.gz
85
86   and run
87$ python setup.py install
88
89Testing after installation
90
91   For test, just run wps.py in your command line:
92
93\$ ./wps.py
94Content-type: text/xml
95
96<?xml version="1.0" ?>
97<ExceptionReport version="1.0.0" xmlns="http://www.opengis.net/ows"
98        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
99        <Exception exceptionCode="MissingParameterValue" locator="request"/>
100</ExceptionReport>
101
102   If you got some other message, like e.g.:
103
104Traceback (most recent call last):
105  File "trunk/index.py", line 53, in ?
106    from Wps import wpsexceptions
107  File "/home/jachym/prog/pywps/trunk/Wps/wpsexceptions.py", line 8, in ?
108    from xml.dom.minidom import Document
109ImportError: No module named xml.dom.minidom
110
111   Than something is wrong with your Python installation or with the
112   program. This message means, that the xml.dom.minidom package is not
113   installed in your system.
114
115                                 Configuration
116
117   Before you start to tune your pywps program, you should get your copy
118   of OpenGIS(R) Web Processing Service document (OGC 05-007r4) version
119   0.4.0 from http://www.opengeospatial.org/specs/?page=specs
120
121   NOTE: Note, that the configuration option are CASE SENSITIVE
122
123   Pywps configuration takes places in two files. The files are actually
124   python scripts, so it does not harm, if you have some experience in
125   python programming language. But you should be able to setup the
126   program without any python knowledge.
127
128   The first file is in etcsettings.py and (optional) the second file is
129   etcgrass.py. Some special "tuning" can be done in
130   processes/__init__.py file
131
132etc/settings.py
133
134   This file has got two sections: WPS and serverSettings
135
136   In the WPS section, the main configuration is set, which appears
137   mostly in GetCapabilities request. The mandatory parameters, which
138   should be set up are (with default/recommend values):
139
140    'version': "0.4.0",
141    'ServiceIdentification': {
142        'Title':"Jachym's WPS server",
143        'ServiceType':"WPS",
144        'ServiceTypeVersion':"0.1.0",
145        'Abstract':'Abstract to this WPS',
146    },
147    'ServiceProvider': {
148            'ProviderName' : "Your Company",
149            'IndividualName':"Your Name",
150            'PositionName':"Your Position",
151            'Role':"your role",
152            'DeliveryPoint': "Street",
153            'City': "City",
154            'PostalCode':"00000",
155            'Country': "Your country",
156            'ElectronicMailAddress':"your.email@address",
157    },
158
159    'OperationsMetadata': {
160        'ServerAddress' : "http://localhost/cgi-bin/wps/wps.py",
161    },
162    'Keywords' : ['GRASS','GIS','WPS'],
163
164   In the ServerSettings section, the variables are set, which have
165   impact on the whole server.
166
167# NOTE: You have to create this directory manually and set rights, so
168#       the program is able to store data in there
169'outputPath': '/var/www/wpsoutputs',
170
171#
172# 'outputUrl' - URL of the directory, where the outputs will be stored
173'outputUrl':  'http://192.168.1.31/wpsoutputs',
174
175#
176# tempPath - path to directory, where temporary data will be stored.
177# NOTE: the pywps has to have rights, to create directories and files
178#       in this directory
179'tempPath': '/tmp',
180
181#
182# maxOperations - maximum number of operations, which is allowed to low
183# on this server at ones
184# default = 1
185'maxOperations':1,
186
187#
188# maxSize: maximum input file size in bytes
189# NOTE: maximum file size is 5MB, no care, if this number is higher
190'maxSize':5242880, # 5 MB
191
192#
193# maxInputParamLength: maximal length of input values
194# NOTE: maximum length of input parameters is 256, no matter, how height
195#       is this number
196'maxInputParamLength':256,
197
198etc/grass.py
199
200   This file servers for configuration of GRASS GIS environment (if your
201   processes need one). Everything is stored in grassenv structure.
202
203# PATH in which your modules (processes) should be able the search.
204# Default value:
205'PATH': "/usr/local/grass-6.1.cvs/bin/:/usr/local/grass-6.1.cvs/scripts/:\
206/usr/bin/:/bin/:",
207
208# Add eventually some other path, in which should GRASS search for modules
209'GRASS_ADDON_PATH': "",
210
211# Version of GRASS, you are using
212'GRASS_VERSION': "6.1.cvs",
213
214# GRASS_PERL, where is your PERL bin installed
215'GRASS_PERL': "/usr/bin/perl",
216
217# GRASS_GUI should be always "text" unless you know, what you are doing
218'GRASS_GUI': "text",
219
220# GISBASE is place, where your GRASS installation is
221'GISBASE': "/usr/local/grass-6.1.cvs",
222
223# LD_LIBRARY_PATH
224'LD_LIBRARY_PATH':"/usr/local/grass-6.1.cvs/lib",
225
226# HOME has to be set
227'HOME':"/var/www",
228
229                            Add your own processes
230
231   All processes are stored in the processes directory. Put your file
232   e.g. myprocess.py in there.
233
234   Process is python class with two functions: __init__(self) and
235   execute(self). In the __init__(self) function, inputs, outputs and
236   other configuration values are set. The GIS operations are called in
237   execute(self) function. It is possible also to add as many your
238   functions, as you wish.
239
240Process Configuration
241
242   The configuration part belongs to the __init__ function of the Process
243   class.
244
245   Mandatory variables are
246
247# Myprocess name
248self.Identifier = "spearpath"
249
250# Myprocess version
251self.processVersion = "0.1"
252
253# Is it allowed, store the data on the server?
254self.storeSupported = "true"
255
256# Do not wait, till the calculation is done -> return XML with status
257# immediately
258self.statusSupported = "true"
259
260# Myprocess Title
261self.Title="Find the shortest path on the roads map on Spearfish dataset"
262
263   Eventually optional attributes can be found in the table 38 - "Parts
264   of ExecuteResponse data structure"
265
266   If your process should happen in existing GRASS-Location, and you just
267   need the input parameters for GRASS modules, you can specify it's name
268   by grassLocation variable:
269
270grassLocation="/var/grassdata/spearfish57/"
271
272   If this variable is not set, new temporary GRASS Location && mapset
273   will be generated and you can work in there. The projection of the
274   location will be XY.
275
276  Data Inputs
277
278   Data inputs are defined in self.Inputs array. Each input is an
279   dictionary with several (mostly mandatory) parameters. Each input type
280   (LiteralValue, ComplexValue, ComplexValueReference, BoundingBoxValue)
281   must be a Python's dictionary ("{}") structure, which can be filled
282   with aditional attributes.
283
284     * Example of LiteralInput: LiteralValues are used for individual
285       text entry. Your process can either support any text entry or the
286       entry must be from list of allowed values. LiteralValues of types
287       AnyValue and AllowedValues are supported. Range of values is not
288       yet implemented.
289       Allowed values are set by array of values. If there is no values
290       arry or it contains "*" in the array, AnyValue is assumed:
291    {   # example of "AnyValue" case with centimeters as default unit
292
293        'Identifier': 'my_input_value',
294        'Title': 'This is my input value',
295        'LiteralValue': {'UOMs':["cm"]},
296        # alternative for any value:
297        # 'LiteralValue': {'values':["*"]},
298        'dataType': type(0.0)
299    },
300    {   # example of "AllowedValues case with default units (meters)
301
302        'Identifier': 'my_input_value',
303        'Title': 'This is my input value',
304        'LiteralValue': {values:[250, "300", '40', "a"]},
305        # the default value:
306        'value': 250,
307    },
308     * Example of ComplexValueReference input: ComplexValueReference is
309       URL to some raster/vector/text file, which can be later imported
310       (e.g. to GRASS) and processed. PyWPS will be dowload the file for
311       you and store it's name to self.Inputs[NUMBER]['value'] variable.
312    {
313        'Identifier':'input_map_file',
314        'Title': 'Input raster map',
315        'ComplexValueReference': {
316                'Formats': [ "image/tiff" ]
317            },
318    },
319     * Example of ComplexValue input: ComplexValue provides possibility
320       to embed input (XML) file (e.g. GML) to input ExecuteResponce XML
321       file. PyWPS will store this input in file on server's harddisk, so
322       you can later handle it just like ComplexValueReference.
323    {
324        'Identifier':'vector',
325        'Title': 'Input vector map',
326        'Abstract':
327            "This vector map must be part of the input XML document",
328        'ComplexValue': {
329            'Formats': [ "text/xml" ]
330        },
331    },
332     * Example of BoundingBoxValue input: BoundingBoxValue provides
333       possibility define your region borders. You can input this only to
334       your Execute responce XML file.
335    {
336        'Identifier':'bbox',
337        'Title': 'Bounding box',
338        'Abstract':
339            "Bounding box",
340        'BoundingBoxValue': {},
341    },
342       Resulting value in your self.Input[NUMBER]['value'] will be array
343       of four values in form [Lower East, Lower North, Upper East, Upper
344       North].
345
346   Default values can be set like follows: 'value':"Default value",
347
348   NOTE: If the 'dataType' attribute is not set, control of the input
349   value will not be possible, which could endanger your system
350
351   For more details look in the table 33 "Parts of ValueFormChoice data
352   structure"
353
354  Data Outputs
355
356   The self.Outputs structure defines the look of the outputs from your
357   process. The definition is not much different from the Input
358   structure:
359
360    {
361        'Identifier': 'output',
362        'Title': 'Resulting output map',
363        'ComplexValue': {
364            'Formats':["text/xml"],
365            }
366    },
367    {
368        'Identifier': 'text',
369        'Title': 'Some text',
370        'Abstract': 'Some informative text',
371        'LiteralValue': {
372             {'UOMs':["none"]},
373        }
374    }
375
376    BoundingBox Output
377
378   BoundingBoxValue is defined by two coordinates pairs: LowerCorner and
379   UpperCorner. For creating BoundingBoxValue output, you have to make
380   output array with this values:
381    {
382        'Identifier': 'mybbox',
383        'Title': 'Bounding Box of resulting map',
384        'BoundingBoxValue': {},
385         'value' : [0, 0, 10, 10],
386    },
387
388Process Programming
389
390   The process must be defined in the execute(self) function. To each
391   element in self.Inputs array, 'value' option will be added. Input
392   variables are accessible via 'value' attribute of each element of the
393   self.Inputs array.
394
395   Another way, how to access input values it to do so via new hash
396   self.DataInputs. This way is more intiutive and less confusing. If
397   order of Inputs will change, their identificators in DataInputs
398   structure remain same.
399
400   Also new variable self.grassenv will be in your process at your
401   service.
402
403   Output values can be stored either directly to
404   self.Outputs[index]['value'] variable or to
405   self.DataOutputs['identifier'] hash on similar way, how DataInputs are
406   used. This makes the usage again more intuitive.
407
408    def execute(self):
409        if os.system("""g.region -d >&2"""):
410            return "Could not set region to default"
411
412        os.system("r.in.gdal -o in=%s out=my_map >&2" %\
413                                    (self.Inputs[0]['value']))
414        os.system("r.mapcalc my_output=my_map+%d >&2" %\
415                                    (self.DataInputs['value']))
416
417        if os.system("r.out.gdal type=Float32 out=map.tif in=my_output >&2"):
418            return "Could not export resulting raster map [map.tif]"
419
420        self.Outputs[0]['value'] = "map.tif"
421        self.DataOutputs['location'] = self.grassenv['LOCATION_NAME']
422        return
423
424   That is all, folks!
425
426  Error handling
427
428   At the end of the execute function, None value should be returned. Any
429   other value means, that the calculation will be stopped and error
430   report will be returned back to the client.
431
432                           Note to grass programming
433
434   The simplest way, how to call GRASS's (and other shell) commands is
435   via python's os.system() or os.popen() function. Before you do so, it
436   is important to import the os python package (usually one of the first
437   lines in the file). This approach might not be the best, but it is the
438   simplest one. Feel free to use any other low-end functions.
439
440   Unfortunately, the GRASS modules are very verbose. Some messages are
441   written to STDOUT, some to STDERR. The STDERR will be stored in the
442   error file of your web server. But you have to "catch" the messages,
443   sent to STDOUT. This can be done e.g. by using "1>&2" statement
444   (redirecting STDOUT to STDERR in shell):
445
446    os.system("""
447        echo "Rekni jim drazi, tatko, za to nic nedas."  >&2
448    """)
449
450                           Testing your new process
451
452     * GetCapabilities request:
453    wget -nv -q -O - --post-data="version=0.4.0&service=Wps&\
454        request=getcapabilities" "http://localhost/cgi-bin/wps.py"
455     * DescribeProcess request:
456    wget -nv -q -O - --post-data="version=0.4.0&service=Wps&\
457        request=DescribeProcess&Identifier=your_process" \
458        "http://localhost/cgi-bin/wps.py"
459     * Execute request:
460    wget -nv -q -O - --post-data="version=0.4.0&service=Wps&\
461        request=Execute&Identifier=your_process&\
462        datainputs=input1,value1,input2,value2" \
463        "http://localhost/cgi-bin/wps.py"
464
465                                Using the PyWPS
466
467Input
468
469   To get response from PyWPS you have to formulate appropriate query
470   string first. You can use HTTP GET style or HTTP POST style.
471
472   HTTP GET style is standard URL, with all parameters in one line. You
473   can not set any ComplexValue data in your process via HTTP GET.
474   Example:
475
476    wget -nv -q -O - --post-data="version=0.4.0&service=Wps&\
477            request=Execute&Identifier=your_process&\
478            datainputs=input1,value1,input2,value2"\
479            "http://localhost/cgi-bin/wps.py"
480
481   In HTTP POST style, you send one "request" parameter, which contains
482   XML input. The XML file can contain also included ComplexValue data,
483   e.g. GML file. Example:
484
485    wget --post-file=execute-post.txt \
486            "http://localhost/pywps/wps.py" -O - -nv -q
487
488   The execute-post.txt file can look like follows:
489request=<?xml version="1.0" encoding="utf-8"?>
490<Execute service="WPS" version="0.4.0" store="false" status="false"
491xmlns="http://www.opengeospatial.net/wps"
492xmlns:ows="http://www.opengeospatial.net/ows"
493xmlns:xlink="http://www.w3.org/1999/xlink"
494xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
495xsi:schemaLocation="http://www.opengeospatial.net/wps/wpsDescribeProcess.xsd">
496    <ows:Identifier>searchpath</ows:Identifier>
497    <DataInputs>
498        <Input>
499            <ows:Identifier>streetmap</ows:Identifier>
500            <ows:Title>The map</ows:Title>
501            <ows:ComplexValue>
502                <Value>
503<ogr:FeatureCollection
504     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
505     xsi:schemaLocation="http://ogr.maptools.org/ donut.xsd"
506     xmlns:ogr="http://ogr.maptools.org/"
507     xmlns:gml="http://www.opengis.net/gml">
508  <gml:boundedBy>
509    <gml:Box>
510      <gml:coord><gml:X>4.263256414560601e-14</gml:X>
511        <gml:Y>-70.71067811865474</gml:Y></gml:coord>
512      <gml:coord><gml:X>141.4213562373095</gml:X>
513      <gml:Y>70.71067811865474</gml:Y></gml:coord>
514    </gml:Box>
515  </gml:boundedBy>
516  <gml:featureMember>
517    <ogr:donut fid="F0">
518      <ogr:geometryProperty><gml:LineString><gml:coordinates>
519      70.710678118654755,70.710678118654741,0 141.42135623730951,0.0,
520      0 70.710678118654741,-70.710678118654741,0 0.000000000000043,
521      0.000000000000057,0 70.710678118654755,
522      70.710678118654741,0</gml:coordinates>
523      </gml:LineString></ogr:geometryProperty>
524    </ogr:donut>
525  </gml:featureMember>
526  <gml:featureMember>
527    <ogr:donut fid="F0">
528      <ogr:geometryProperty><gml:LineString><gml:coordinates>50.000000000000014
529,
530      0.000000000000021,0 71.213203435596427,-21.213203435596419,0
531      92.426406871192853,0.0,0 71.213203435596427,21.213203435596423,0
532      50.000000000000014,0.000000000000021,0</gml:coordinates>
533      </gml:LineString></ogr:geometryProperty>
534    </ogr:donut>
535  </gml:featureMember>
536</ogr:FeatureCollection>
537                </Value>
538            </ows:ComplexValue>
539        </Input>
540
541        <Input>
542            <ows:Identifier>x1</ows:Identifier>
543            <ows:LiteralValue>591679.31</ows:LiteralValue>
544        </Input>
545        <Input>
546            <ows:Identifier>y1</ows:Identifier>
547            <ows:LiteralValue>4927205.07</ows:LiteralValue>
548        </Input>
549        <Input>
550            <ows:Identifier>x2</ows:Identifier>
551            <ows:LiteralValue>608642.625</ows:LiteralValue>
552        </Input>
553        <Input>
554            <ows:Identifier>y2</ows:Identifier>
555            <ows:LiteralValue>4915876.31</ows:LiteralValue>
556        </Input>
557    </DataInputs>
558</Execute>
559
560   You can see, that there are 4 inputs in this process:
561
562    1. ComplexValue GML File
563    2. x1 coordinate
564    3. y1 coordinate
565    4. x2 coordinate
566    5. y2 coordinate
567
568Output
569
570   The output from PyWPS can be either XML file or results of processes
571   directly. In default configuration, no files are stored on the server,
572   resulting values (maps) are returned to the client. If you want to
573   return XML file with outputs encoding, you have to enable it in you
574   process configuration with option storeSupported:
575
576    self.storeSupported = "true"
577
578   And you have to call the PyWPS with "store=true" option:
579
580    version=0.4.0&service=Wps&request=Execute&Identifier=your_process&\
581                    datainputs=input1,value1,input2,value2&store=true
582
583   Or in XML input:
584
585request=<?xml version="1.0" encoding="utf-8"?>
586<Execute service="WPS" version="0.4.0" store="true" status="false"
587xmlns="http://www.opengeospatial.net/wps"
588xmlns:ows="http://www.opengeospatial.net/ows"
589xmlns:xlink="http://www.w3.org/1999/xlink"
590xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
591xsi:schemaLocation="http://www.opengeospatial.net/wps/wpsDescribeProcess.xsd">
592
593...
594
595   This will cause PyWPS to look after self.status array in your process
596   in form form
597    self.status = ["Message", Percent_Done]
598
599   and generate XML file in statusLocation with this embed message. E.g.
600    self.status = ["Generating raster map", 50]
601
602   will become
603
604    ...
605     <Status>
606                <ProcessStarted message="Generating raster map" percentComplete
607d="50"/>
608    </Status>
609    ...
610
611                           Sample process: addvalue
612
613   This sample process describes how to made your own WPS processes.
614   Purpose of this process is:
615     * Download input raster map from some server
616     * Convert it to integer values
617     * Add input value to each raster cell
618     * Convert raster to vector
619     * Export raster to TIFF and vector to GML. Vector file will be embed
620       ot output XML file.
621
622"""
623pywps process example:
624
625addvalue: Adds some value to raster map
626"""
627# Author:       Jachym Cepicky
628#               http://les-ejk.cz
629
630import os,time,string,sys
631
632class Process:
633    def __init__(self):
634
635        #
636        # Mandatory parameters
637        #
638
639        # Identifier - name of this process
640        self.Identifier = "addvalue"
641
642        # processVersion - version of this process
643        self.processVersion = "0.1"
644
645        # Title - title for this process
646        self.Title="Add some value to raster map"
647
648        #
649        # Inputs
650        # Inputs = [ {input1},{input2},{...} ]
651        #
652        self.Inputs = [
653                # This module has 2 inputs:
654                # 1) Input raster map
655                # 2) Value to be added
656
657                # 0
658                    {
659                        'Identifier':'input',
660                        'Title': 'Input raster map',
661                        'ComplexValueReference': {
662                            'Formats': [ "image/tiff" ]
663                        },
664                        'value':None
665                    },
666
667                # 1
668                    {
669                        'Identifier': 'value',
670                        'Title': 'Value to be added',
671                        'LiteralValue': {"values":["*"]}, # will cause "AnyValu
672e"
673                        'dataType' : type(0.0),
674                        'value':None
675                    },
676                ]
677
678        #
679        # Output
680        # The structure is not much different from the input structure
681        #
682        self.Outputs = [
683                # 0
684                {
685                    'Identifier': 'vector',
686                    'Title': 'Resulting vector map',
687                    'ComplexValue': {
688                        'Formats':["text/xml"],
689                        },
690                    'value':None
691                },
692                # 1
693                {
694                    'Identifier': 'raster',
695                    'Title': 'Resulting raster map',
696                    'ComplexValueReference': {
697                        'Formats':["image/tiff"],
698                        },
699                    'value':None
700                }
701                # 2
702                {
703                    'Identifier': 'bbox',
704                    'Title': 'Resulting map bbox',
705                    'BoundingBoxValue': {}
706                }
707
708
709            ]
710
711        #
712        # Optional attributes
713        #
714        #
715        # storeSupported = "true" or "false"
716        # should the resulting map be stored on our disk?
717        self.storeSupported = "true"
718
719        #
720        # statusSupported = "true" or "false" - run asynchronous
721        self.statusSupported = "true"
722
723    ##############################################################
724    # Execute part of the process
725    def execute(self):
726        """
727        This function
728            1) Imports the raster map
729            2) runs r.mapcalc out=in+value
730            3) Exports the raster map
731            4) Sets the bounding box of resulting map
732            5) runs r.to.vect
733            6) Exports the vector map
734        """
735
736        # for asynchronous process:
737        self.status=["Importing the raster map", 5]
738
739        # 1) import
740        if os.system("r.in.gdal -o in=%s out=input >&2" %\
741                (self.DataInputs['input'])):
742            return "Could not import raster map
743
744        # check for more than one channel
745        for gdalinfoln in os.popen("gdalinfo %s" % \
746                (self.DataInputs['input'])):
747            if gdalinfoln.split()[0] == "Band" and gdalinfoln.split()[1] == "3"
748:
749                return "This module can work only with ONE channel raster maps"
750
751        # set right region
752        os.system("""g.region rast=input >&2""")
753
754        # for asynchronous process:
755        self.status=["Adding input value to raster map", 30]
756
757        # 2) add the value, convert to int
758        os.system("""r.mapcalc output="int(input+%f)" """ % \
759                (float(self.DataInputs['value'])))
760
761        # for asynchronous process:
762        self.status=["Exporting TIFF image", 50]
763
764        # 3) export the tiff
765        if os.system("r.out.gdal type=Int32 in=output out=%s 1>&2" %\
766            "output.tif"):
767            return "Could not export raster map"
768
769        # for asynchronous process:
770        self.status=["Converting raster to vector", 75]
771
772        # 4) seting the bounding box
773        region = {}
774        for b in os.popen("g.region -g"):
775            b = b.strip()
776            key,val = b.split("=")
777            region[key] = val
778        self.DataOutputs['bbox'] = [region['s'],region['e'],region['n'],region[
779'w']]
780
781        # 5) convert to vector
782        if os.system("r.to.vect in=output out=output feature=area >&2"):
783            return "Could not convert raster to vector"
784
785        # for asynchronous process:
786        self.status=["Exporting GML file", 95]
787
788        # 6) export of vector map to GML
789        if os.system(
790            """v.out.ogr format=GML  in=output dsn=output.gml olayer=output >&2
791"""):
792            return "Could not export vector to GML"
793
794        # setting output variables
795        self.DataOutputs['vector'] = "output.gml"
796        self.DataOutputs['raster'] = "output.tif"
797
798        # end
799        return
800
801                       KVP request encoding of addvalue
802
803   This process can be lunched with URL:
804   http://localhost/cgi-bin/wps.py?service=wps&version=0.4.0&identifier=a
805   ddvalue&request=execute& $\backslash$
806   datainputs=input,http://localhost/data/raster.tif,value,250&status=tru
807   e&store=true
808
809                         XML request encoding addvalue
810
811request=<?xml version='1.0' encoding='UTF-8' standalone='yes'?>
812<Execute service='wps' version='0.4.0' store='true' status='false'
813    xmlns="http://www.opengeospatial.net/wps"
814    xmlns:ows="http://www.opengeospatial.net/ows">
815<ows:Identifier>addvalue</ows:Identifier>
816<DataInputs>
817    <Input>
818        <ows:Identifier>input</ows:Identifier>
819        <ComplexValueReference reference='http://localhost/wps/data/soils.tif'
820/>
821    </Input>
822    <Input>
823        <ows:Identifier>value</ows:Identifier>
824        <LiteralValue>250</LiteralValue>
825    </Input>
826    <!-- Input>
827        <ows:Identifier>bbox</ows:Identifier>
828        <BoundingBoxValue>
829            <BoundingBox>
830                <LowerCorner>-1 -1</LowerCorner>
831                <UpperCorner>10 10</UpperCorner>
832            </BoundingBox>
833        </BoundingBoxValue>
834    </Input -->
835</DataInputs>
836</Execute>
837
838                               Licence of PyWPS
839
840                       The GNU General Public License
841
842                            Version 2, June 1991
843
844           Copyright © 1989, 1991 Free Software Foundation, Inc.
845
846          51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
847
848    Everyone is permitted to copy and distribute verbatim copies of this
849             license document, but changing it is not allowed.
850
851  Preamble:
852
853   The licenses for most software are designed to take away your freedom
854   to share and change it. By contrast, the GNU General Public License is
855   intended to guarantee your freedom to share and change free
856   software--to make sure the software is free for all its users. This
857   General Public License applies to most of the Free Software
858   Foundation's software and to any other program whose authors commit to
859   using it. (Some other Free Software Foundation software is covered by
860   the GNU Library General Public License instead.) You can apply it to
861   your programs, too.
862
863   When we speak of free software, we are referring to freedom, not
864   price. Our General Public Licenses are designed to make sure that you
865   have the freedom to distribute copies of free software (and charge for
866   this service if you wish), that you receive source code or can get it
867   if you want it, that you can change the software or use pieces of it
868   in new free programs; and that you know you can do these things.
869
870   To protect your rights, we need to make restrictions that forbid
871   anyone to deny you these rights or to ask you to surrender the rights.
872   These restrictions translate to certain responsibilities for you if
873   you distribute copies of the software, or if you modify it.
874
875   For example, if you distribute copies of such a program, whether
876   gratis or for a fee, you must give the recipients all the rights that
877   you have. You must make sure that they, too, receive or can get the
878   source code. And you must show them these terms so they know their
879   rights.
880
881   We protect your rights with two steps: (1) copyright the software, and
882   (2) offer you this license which gives you legal permission to copy,
883   distribute and/or modify the software.
884
885   Also, for each author's protection and ours, we want to make certain
886   that everyone understands that there is no warranty for this free
887   software. If the software is modified by someone else and passed on,
888   we want its recipients to know that what they have is not the
889   original, so that any problems introduced by others will not reflect
890   on the original authors' reputations.
891
892   Finally, any free program is threatened constantly by software
893   patents. We wish to avoid the danger that redistributors of a free
894   program will individually obtain patent licenses, in effect making the
895   program proprietary. To prevent this, we have made it clear that any
896   patent must be licensed for everyone's free use or not licensed at
897   all.
898
899   The precise terms and conditions for copying, distribution and
900   modification follow.
901
902                         GNU GENERAL PUBLIC LICENSE
903      TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
904
905    1. This License applies to any program or other work which contains a
906       notice placed by the copyright holder saying it may be distributed
907       under the terms of this General Public License. The ``Program'',
908       below, refers to any such program or work, and a ``work based on
909       the Program'' means either the Program or any derivative work
910       under copyright law: that is to say, a work containing the Program
911       or a portion of it, either verbatim or with modifications and/or
912       translated into another language. (Hereinafter, translation is
913       included without limitation in the term ``modification''.) Each
914       licensee is addressed as ``you''.
915       Activities other than copying, distribution and modification are
916       not covered by this License; they are outside its scope. The act
917       of running the Program is not restricted, and the output from the
918       Program is covered only if its contents constitute a work based on
919       the Program (independent of having been made by running the
920       Program). Whether that is true depends on what the Program does.
921    2. You may copy and distribute verbatim copies of the Program's
922       source code as you receive it, in any medium, provided that you
923       conspicuously and appropriately publish on each copy an
924       appropriate copyright notice and disclaimer of warranty; keep
925       intact all the notices that refer to this License and to the
926       absence of any warranty; and give any other recipients of the
927       Program a copy of this License along with the Program.
928       You may charge a fee for the physical act of transferring a copy,
929       and you may at your option offer warranty protection in exchange
930       for a fee.
931    3. You may modify your copy or copies of the Program or any portion
932       of it, thus forming a work based on the Program, and copy and
933       distribute such modifications or work under the terms of Section 1
934       above, provided that you also meet all of these conditions:
935         1. You must cause the modified files to carry prominent notices
936            stating that you changed the files and the date of any
937            change.
938         2. You must cause any work that you distribute or publish, that
939            in whole or in part contains or is derived from the Program
940            or any part thereof, to be licensed as a whole at no charge
941            to all third parties under the terms of this License.
942         3. If the modified program normally reads commands interactively
943            when run, you must cause it, when started running for such
944            interactive use in the most ordinary way, to print or display
945            an announcement including an appropriate copyright notice and
946            a notice that there is no warranty (or else, saying that you
947            provide a warranty) and that users may redistribute the
948            program under these conditions, and telling the user how to
949            view a copy of this License. (Exception: if the Program
950            itself is interactive but does not normally print such an
951            announcement, your work based on the Program is not required
952            to print an announcement.)
953       These requirements apply to the modified work as a whole. If
954       identifiable sections of that work are not derived from the
955       Program, and can be reasonably considered independent and separate
956       works in themselves, then this License, and its terms, do not
957       apply to those sections when you distribute them as separate
958       works. But when you distribute the same sections as part of a
959       whole which is a work based on the Program, the distribution of
960       the whole must be on the terms of this License, whose permissions
961       for other licensees extend to the entire whole, and thus to each
962       and every part regardless of who wrote it.
963       Thus, it is not the intent of this section to claim rights or
964       contest your rights to work written entirely by you; rather, the
965       intent is to exercise the right to control the distribution of
966       derivative or collective works based on the Program.
967       In addition, mere aggregation of another work not based on the
968       Program with the Program (or with a work based on the Program) on
969       a volume of a storage or distribution medium does not bring the
970       other work under the scope of this License.
971    4. You may copy and distribute the Program (or a work based on it,
972       under Section 2) in object code or executable form under the terms
973       of Sections 1 and 2 above provided that you also do one of the
974       following:
975         1. Accompany it with the complete corresponding machine-readable
976            source code, which must be distributed under the terms of
977            Sections 1 and 2 above on a medium customarily used for
978            software interchange; or,
979         2. Accompany it with a written offer, valid for at least three
980            years, to give any third party, for a charge no more than
981            your cost of physically performing source distribution, a
982            complete machine-readable copy of the corresponding source
983            code, to be distributed under the terms of Sections 1 and 2
984            above on a medium customarily used for software interchange;
985            or,
986         3. Accompany it with the information you received as to the
987            offer to distribute corresponding source code. (This
988            alternative is allowed only for noncommercial distribution
989            and only if you received the program in object code or
990            executable form with such an offer, in accord with Subsection
991            b above.)
992       The source code for a work means the preferred form of the work
993       for making modifications to it. For an executable work, complete
994       source code means all the source code for all modules it contains,
995       plus any associated interface definition files, plus the scripts
996       used to control compilation and installation of the executable.
997       However, as a special exception, the source code distributed need
998       not include anything that is normally distributed (in either
999       source or binary form) with the major components (compiler,
1000       kernel, and so on) of the operating system on which the executable
1001       runs, unless that component itself accompanies the executable.
1002       If distribution of executable or object code is made by offering
1003       access to copy from a designated place, then offering equivalent
1004       access to copy the source code from the same place counts as
1005       distribution of the source code, even though third parties are not
1006       compelled to copy the source along with the object code.
1007    5. You may not copy, modify, sublicense, or distribute the Program
1008       except as expressly provided under this License. Any attempt
1009       otherwise to copy, modify, sublicense or distribute the Program is
1010       void, and will automatically terminate your rights under this
1011       License. However, parties who have received copies, or rights,
1012       from you under this License will not have their licenses
1013       terminated so long as such parties remain in full compliance.
1014    6. You are not required to accept this License, since you have not
1015       signed it. However, nothing else grants you permission to modify
1016       or distribute the Program or its derivative works. These actions
1017       are prohibited by law if you do not accept this License.
1018       Therefore, by modifying or distributing the Program (or any work
1019       based on the Program), you indicate your acceptance of this
1020       License to do so, and all its terms and conditions for copying,
1021       distributing or modifying the Program or works based on it.
1022    7. Each time you redistribute the Program (or any work based on the
1023       Program), the recipient automatically receives a license from the
1024       original licensor to copy, distribute or modify the Program
1025       subject to these terms and conditions. You may not impose any
1026       further restrictions on the recipients' exercise of the rights
1027       granted herein. You are not responsible for enforcing compliance
1028       by third parties to this License.
1029    8. If, as a consequence of a court judgment or allegation of patent
1030       infringement or for any other reason (not limited to patent
1031       issues), conditions are imposed on you (whether by court order,
1032       agreement or otherwise) that contradict the conditions of this
1033       License, they do not excuse you from the conditions of this
1034       License. If you cannot distribute so as to satisfy simultaneously
1035       your obligations under this License and any other pertinent
1036       obligations, then as a consequence you may not distribute the
1037       Program at all. For example, if a patent license would not permit
1038       royalty-free redistribution of the Program by all those who
1039       receive copies directly or indirectly through you, then the only
1040       way you could satisfy both it and this License would be to refrain
1041       entirely from distribution of the Program.
1042       If any portion of this section is held invalid or unenforceable
1043       under any particular circumstance, the balance of the section is
1044       intended to apply and the section as a whole is intended to apply
1045       in other circumstances.
1046       It is not the purpose of this section to induce you to infringe
1047       any patents or other property right claims or to contest validity
1048       of any such claims; this section has the sole purpose of
1049       protecting the integrity of the free software distribution system,
1050       which is implemented by public license practices. Many people have
1051       made generous contributions to the wide range of software
1052       distributed through that system in reliance on consistent
1053       application of that system; it is up to the author/donor to decide
1054       if he or she is willing to distribute software through any other
1055       system and a licensee cannot impose that choice.
1056       This section is intended to make thoroughly clear what is believed
1057       to be a consequence of the rest of this License.
1058    9. If the distribution and/or use of the Program is restricted in
1059       certain countries either by patents or by copyrighted interfaces,
1060       the original copyright holder who places the Program under this
1061       License may add an explicit geographical distribution limitation
1062       excluding those countries, so that distribution is permitted only
1063       in or among countries not thus excluded. In such case, this
1064       License incorporates the limitation as if written in the body of
1065       this License.
1066   10. The Free Software Foundation may publish revised and/or new
1067       versions of the General Public License from time to time. Such new
1068       versions will be similar in spirit to the present version, but may
1069       differ in detail to address new problems or concerns.
1070       Each version is given a distinguishing version number. If the
1071       Program specifies a version number of this License which applies
1072       to it and ``any later version'', you have the option of following
1073       the terms and conditions either of that version or of any later
1074       version published by the Free Software Foundation. If the Program
1075       does not specify a version number of this License, you may choose
1076       any version ever published by the Free Software Foundation.
1077   11. If you wish to incorporate parts of the Program into other free
1078       programs whose distribution conditions are different, write to the
1079       author to ask for permission. For software which is copyrighted by
1080       the Free Software Foundation, write to the Free Software
1081       Foundation; we sometimes make exceptions for this. Our decision
1082       will be guided by the two goals of preserving the free status of
1083       all derivatives of our free software and of promoting the sharing
1084       and reuse of software generally.
1085
1086                                NO WARRANTY
1087   12. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO
1088       WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE
1089       LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS
1090       AND/OR OTHER PARTIES PROVIDE THE PROGRAM ``AS IS'' WITHOUT
1091       WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT
1092       NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
1093       FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE
1094       QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
1095       PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY
1096       SERVICING, REPAIR OR CORRECTION.
1097   13. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
1098       WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY
1099       MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE
1100       LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL,
1101       INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR
1102       INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
1103       DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU
1104       OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY
1105       OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN
1106       ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
1107
1108                        END OF TERMS AND CONDITIONS
1109
1110                           Licence of this document
1111
1112                       GNU Free Documentation License
1113
1114                         Version 1.2, November 2002
1115
1116          Copyright ©2000,2001,2002 Free Software Foundation, Inc.
1117
1118           51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
1119
1120    Everyone is permitted to copy and distribute verbatim copies of this
1121             license document, but changing it is not allowed.
1122
1123                                  Preamble
1124
1125   The purpose of this License is to make a manual, textbook, or other
1126   functional and useful document "free" in the sense of freedom: to
1127   assure everyone the effective freedom to copy and redistribute it,
1128   with or without modifying it, either commercially or noncommercially.
1129   Secondarily, this License preserves for the author and publisher a way
1130   to get credit for their work, while not being considered responsible
1131   for modifications made by others.
1132
1133   This License is a kind of "copyleft", which means that derivative
1134   works of the document must themselves be free in the same sense. It
1135   complements the GNU General Public License, which is a copyleft
1136   license designed for free software.
1137
1138   We have designed this License in order to use it for manuals for free
1139   software, because free software needs free documentation: a free
1140   program should come with manuals providing the same freedoms that the
1141   software does. But this License is not limited to software manuals; it
1142   can be used for any textual work, regardless of subject matter or
1143   whether it is published as a printed book. We recommend this License
1144   principally for works whose purpose is instruction or reference.
1145
1146                      1. APPLICABILITY AND DEFINITIONS
1147
1148   This License applies to any manual or other work, in any medium, that
1149   contains a notice placed by the copyright holder saying it can be
1150   distributed under the terms of this License. Such a notice grants a
1151   world-wide, royalty-free license, unlimited in duration, to use that
1152   work under the conditions stated herein. The "Document", below, refers
1153   to any such manual or work. Any member of the public is a licensee,
1154   and is addressed as "you". You accept the license if you copy, modify
1155   or distribute the work in a way requiring permission under copyright
1156   law.
1157
1158   A "Modified Version" of the Document means any work containing the
1159   Document or a portion of it, either copied verbatim, or with
1160   modifications and/or translated into another language.
1161
1162   A "Secondary Section" is a named appendix or a front-matter section of
1163   the Document that deals exclusively with the relationship of the
1164   publishers or authors of the Document to the Document's overall
1165   subject (or to related matters) and contains nothing that could fall
1166   directly within that overall subject. (Thus, if the Document is in
1167   part a textbook of mathematics, a Secondary Section may not explain
1168   any mathematics.) The relationship could be a matter of historical
1169   connection with the subject or with related matters, or of legal,
1170   commercial, philosophical, ethical or political position regarding
1171   them.
1172
1173   The "Invariant Sections" are certain Secondary Sections whose titles
1174   are designated, as being those of Invariant Sections, in the notice
1175   that says that the Document is released under this License. If a
1176   section does not fit the above definition of Secondary then it is not
1177   allowed to be designated as Invariant. The Document may contain zero
1178   Invariant Sections. If the Document does not identify any Invariant
1179   Sections then there are none.
1180
1181   The "Cover Texts" are certain short passages of text that are listed,
1182   as Front-Cover Texts or Back-Cover Texts, in the notice that says that
1183   the Document is released under this License. A Front-Cover Text may be
1184   at most 5 words, and a Back-Cover Text may be at most 25 words.
1185
1186   A "Transparent" copy of the Document means a machine-readable copy,
1187   represented in a format whose specification is available to the
1188   general public, that is suitable for revising the document
1189   straightforwardly with generic text editors or (for images composed of
1190   pixels) generic paint programs or (for drawings) some widely available
1191   drawing editor, and that is suitable for input to text formatters or
1192   for automatic translation to a variety of formats suitable for input
1193   to text formatters. A copy made in an otherwise Transparent file
1194   format whose markup, or absence of markup, has been arranged to thwart
1195   or discourage subsequent modification by readers is not Transparent.
1196   An image format is not Transparent if used for any substantial amount
1197   of text. A copy that is not "Transparent" is called "Opaque".
1198
1199   Examples of suitable formats for Transparent copies include plain
1200   ASCII without markup, Texinfo input format, LaTeX input format, SGML
1201   or XML using a publicly available DTD, and standard-conforming simple
1202   HTML, PostScript or PDF designed for human modification. Examples of
1203   transparent image formats include PNG, XCF and JPG. Opaque formats
1204   include proprietary formats that can be read and edited only by
1205   proprietary word processors, SGML or XML for which the DTD and/or
1206   processing tools are not generally available, and the
1207   machine-generated HTML, PostScript or PDF produced by some word
1208   processors for output purposes only.
1209
1210   The "Title Page" means, for a printed book, the title page itself,
1211   plus such following pages as are needed to hold, legibly, the material
1212   this License requires to appear in the title page. For works in
1213   formats which do not have any title page as such, "Title Page" means
1214   the text near the most prominent appearance of the work's title,
1215   preceding the beginning of the body of the text.
1216
1217   A section "Entitled XYZ" means a named subunit of the Document whose
1218   title either is precisely XYZ or contains XYZ in parentheses following
1219   text that translates XYZ in another language. (Here XYZ stands for a
1220   specific section name mentioned below, such as "Acknowledgements",
1221   "Dedications", "Endorsements", or "History".) To "Preserve the Title"
1222   of such a section when you modify the Document means that it remains a
1223   section "Entitled XYZ" according to this definition.
1224
1225   The Document may include Warranty Disclaimers next to the notice which
1226   states that this License applies to the Document. These Warranty
1227   Disclaimers are considered to be included by reference in this
1228   License, but only as regards disclaiming warranties: any other
1229   implication that these Warranty Disclaimers may have is void and has
1230   no effect on the meaning of this License.
1231
1232                            2. VERBATIM COPYING
1233
1234   You may copy and distribute the Document in any medium, either
1235   commercially or noncommercially, provided that this License, the
1236   copyright notices, and the license notice saying this License applies
1237   to the Document are reproduced in all copies, and that you add no
1238   other conditions whatsoever to those of this License. You may not use
1239   technical measures to obstruct or control the reading or further
1240   copying of the copies you make or distribute. However, you may accept
1241   compensation in exchange for copies. If you distribute a large enough
1242   number of copies you must also follow the conditions in section 3.
1243
1244   You may also lend copies, under the same conditions stated above, and
1245   you may publicly display copies.
1246
1247                           3. COPYING IN QUANTITY
1248
1249   If you publish printed copies (or copies in media that commonly have
1250   printed covers) of the Document, numbering more than 100, and the
1251   Document's license notice requires Cover Texts, you must enclose the
1252   copies in covers that carry, clearly and legibly, all these Cover
1253   Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on
1254   the back cover. Both covers must also clearly and legibly identify you
1255   as the publisher of these copies. The front cover must present the
1256   full title with all words of the title equally prominent and visible.
1257   You may add other material on the covers in addition. Copying with
1258   changes limited to the covers, as long as they preserve the title of
1259   the Document and satisfy these conditions, can be treated as verbatim
1260   copying in other respects.
1261
1262   If the required texts for either cover are too voluminous to fit
1263   legibly, you should put the first ones listed (as many as fit
1264   reasonably) on the actual cover, and continue the rest onto adjacent
1265   pages.
1266
1267   If you publish or distribute Opaque copies of the Document numbering
1268   more than 100, you must either include a machine-readable Transparent
1269   copy along with each Opaque copy, or state in or with each Opaque copy
1270   a computer-network location from which the general network-using
1271   public has access to download using public-standard network protocols
1272   a complete Transparent copy of the Document, free of added material.
1273   If you use the latter option, you must take reasonably prudent steps,
1274   when you begin distribution of Opaque copies in quantity, to ensure
1275   that this Transparent copy will remain thus accessible at the stated
1276   location until at least one year after the last time you distribute an
1277   Opaque copy (directly or through your agents or retailers) of that
1278   edition to the public.
1279
1280   It is requested, but not required, that you contact the authors of the
1281   Document well before redistributing any large number of copies, to
1282   give them a chance to provide you with an updated version of the
1283   Document.
1284
1285                              4. MODIFICATIONS
1286
1287   You may copy and distribute a Modified Version of the Document under
1288   the conditions of sections 2 and 3 above, provided that you release
1289   the Modified Version under precisely this License, with the Modified
1290   Version filling the role of the Document, thus licensing distribution
1291   and modification of the Modified Version to whoever possesses a copy
1292   of it. In addition, you must do these things in the Modified Version:
1293
1294   A.
1295          Use in the Title Page (and on the covers, if any) a title
1296          distinct from that of the Document, and from those of previous
1297          versions (which should, if there were any, be listed in the
1298          History section of the Document). You may use the same title as
1299          a previous version if the original publisher of that version
1300          gives permission.
1301   B.
1302          List on the Title Page, as authors, one or more persons or
1303          entities responsible for authorship of the modifications in the
1304          Modified Version, together with at least five of the principal
1305          authors of the Document (all of its principal authors, if it
1306          has fewer than five), unless they release you from this
1307          requirement.
1308   C.
1309          State on the Title page the name of the publisher of the
1310          Modified Version, as the publisher.
1311   D.
1312          Preserve all the copyright notices of the Document.
1313   E.
1314          Add an appropriate copyright notice for your modifications
1315          adjacent to the other copyright notices.
1316   F.
1317          Include, immediately after the copyright notices, a license
1318          notice giving the public permission to use the Modified Version
1319          under the terms of this License, in the form shown in the
1320          Addendum below.
1321   G.
1322          Preserve in that license notice the full lists of Invariant
1323          Sections and required Cover Texts given in the Document's
1324          license notice.
1325   H.
1326          Include an unaltered copy of this License.
1327   I.
1328          Preserve the section Entitled "History", Preserve its Title,
1329          and add to it an item stating at least the title, year, new
1330          authors, and publisher of the Modified Version as given on the
1331          Title Page. If there is no section Entitled "History" in the
1332          Document, create one stating the title, year, authors, and
1333          publisher of the Document as given on its Title Page, then add
1334          an item describing the Modified Version as stated in the
1335          previous sentence.
1336   J.
1337          Preserve the network location, if any, given in the Document
1338          for public access to a Transparent copy of the Document, and
1339          likewise the network locations given in the Document for
1340          previous versions it was based on. These may be placed in the
1341          "History" section. You may omit a network location for a work
1342          that was published at least four years before the Document
1343          itself, or if the original publisher of the version it refers
1344          to gives permission.
1345   K.
1346          For any section Entitled "Acknowledgements" or "Dedications",
1347          Preserve the Title of the section, and preserve in the section
1348          all the substance and tone of each of the contributor
1349          acknowledgements and/or dedications given therein.
1350   L.
1351          Preserve all the Invariant Sections of the Document, unaltered
1352          in their text and in their titles. Section numbers or the
1353          equivalent are not considered part of the section titles.
1354   M.
1355          Delete any section Entitled "Endorsements". Such a section may
1356          not be included in the Modified Version.
1357   N.
1358          Do not retitle any existing section to be Entitled
1359          "Endorsements" or to conflict in title with any Invariant
1360          Section.
1361   O.
1362          Preserve any Warranty Disclaimers.
1363
1364   If the Modified Version includes new front-matter sections or
1365   appendices that qualify as Secondary Sections and contain no material
1366   copied from the Document, you may at your option designate some or all
1367   of these sections as invariant. To do this, add their titles to the
1368   list of Invariant Sections in the Modified Version's license notice.
1369   These titles must be distinct from any other section titles.
1370
1371   You may add a section Entitled "Endorsements", provided it contains
1372   nothing but endorsements of your Modified Version by various
1373   parties-for example, statements of peer review or that the text has
1374   been approved by an organization as the authoritative definition of a
1375   standard.
1376
1377   You may add a passage of up to five words as a Front-Cover Text, and a
1378   passage of up to 25 words as a Back-Cover Text, to the end of the list
1379   of Cover Texts in the Modified Version. Only one passage of
1380   Front-Cover Text and one of Back-Cover Text may be added by (or
1381   through arrangements made by) any one entity. If the Document already
1382   includes a cover text for the same cover, previously added by you or
1383   by arrangement made by the same entity you are acting on behalf of,
1384   you may not add another; but you may replace the old one, on explicit
1385   permission from the previous publisher that added the old one.
1386
1387   The author(s) and publisher(s) of the Document do not by this License
1388   give permission to use their names for publicity for or to assert or
1389   imply endorsement of any Modified Version.
1390
1391                           5. COMBINING DOCUMENTS
1392
1393   You may combine the Document with other documents released under this
1394   License, under the terms defined in section 4 above for modified
1395   versions, provided that you include in the combination all of the
1396   Invariant Sections of all of the original documents, unmodified, and
1397   list them all as Invariant Sections of your combined work in its
1398   license notice, and that you preserve all their Warranty Disclaimers.
1399
1400   The combined work need only contain one copy of this License, and
1401   multiple identical Invariant Sections may be replaced with a single
1402   copy. If there are multiple Invariant Sections with the same name but
1403   different contents, make the title of each such section unique by
1404   adding at the end of it, in parentheses, the name of the original
1405   author or publisher of that section if known, or else a unique number.
1406   Make the same adjustment to the section titles in the list of
1407   Invariant Sections in the license notice of the combined work.
1408
1409   In the combination, you must combine any sections Entitled "History"
1410   in the various original documents, forming one section Entitled
1411   "History"; likewise combine any sections Entitled "Acknowledgements",
1412   and any sections Entitled "Dedications". You must delete all sections
1413   Entitled "Endorsements".
1414
1415                        6. COLLECTIONS OF DOCUMENTS
1416
1417   You may make a collection consisting of the Document and other
1418   documents released under this License, and replace the individual
1419   copies of this License in the various documents with a single copy
1420   that is included in the collection, provided that you follow the rules
1421   of this License for verbatim copying of each of the documents in all
1422   other respects.
1423
1424   You may extract a single document from such a collection, and
1425   distribute it individually under this License, provided you insert a
1426   copy of this License into the extracted document, and follow this
1427   License in all other respects regarding verbatim copying of that
1428   document.
1429
1430                   7. AGGREGATION WITH INDEPENDENT WORKS
1431
1432   A compilation of the Document or its derivatives with other separate
1433   and independent documents or works, in or on a volume of a storage or
1434   distribution medium, is called an "aggregate" if the copyright
1435   resulting from the compilation is not used to limit the legal rights
1436   of the compilation's users beyond what the individual works permit.
1437   When the Document is included in an aggregate, this License does not
1438   apply to the other works in the aggregate which are not themselves
1439   derivative works of the Document.
1440
1441   If the Cover Text requirement of section 3 is applicable to these
1442   copies of the Document, then if the Document is less than one half of
1443   the entire aggregate, the Document's Cover Texts may be placed on
1444   covers that bracket the Document within the aggregate, or the
1445   electronic equivalent of covers if the Document is in electronic form.
1446   Otherwise they must appear on printed covers that bracket the whole
1447   aggregate.
1448
1449                               8. TRANSLATION
1450
1451   Translation is considered a kind of modification, so you may
1452   distribute translations of the Document under the terms of section 4.
1453   Replacing Invariant Sections with translations requires special
1454   permission from their copyright holders, but you may include
1455   translations of some or all Invariant Sections in addition to the
1456   original versions of these Invariant Sections. You may include a
1457   translation of this License, and all the license notices in the
1458   Document, and any Warranty Disclaimers, provided that you also include
1459   the original English version of this License and the original versions
1460   of those notices and disclaimers. In case of a disagreement between
1461   the translation and the original version of this License or a notice
1462   or disclaimer, the original version will prevail.
1463
1464   If a section in the Document is Entitled "Acknowledgements",
1465   "Dedications", or "History", the requirement (section 4) to Preserve
1466   its Title (section 1) will typically require changing the actual
1467   title.
1468
1469                               9. TERMINATION
1470
1471   You may not copy, modify, sublicense, or distribute the Document
1472   except as expressly provided for under this License. Any other attempt
1473   to copy, modify, sublicense or distribute the Document is void, and
1474   will automatically terminate your rights under this License. However,
1475   parties who have received copies, or rights, from you under this
1476   License will not have their licenses terminated so long as such
1477   parties remain in full compliance.
1478
1479                    10. FUTURE REVISIONS OF THIS LICENSE
1480
1481   The Free Software Foundation may publish new, revised versions of the
1482   GNU Free Documentation License from time to time. Such new versions
1483   will be similar in spirit to the present version, but may differ in
1484   detail to address new problems or concerns. See
1485   http://www.gnu.org/copyleft/.
1486
1487   Each version of the License is given a distinguishing version number.
1488   If the Document specifies that a particular numbered version of this
1489   License "or any later version" applies to it, you have the option of
1490   following the terms and conditions either of that specified version or
1491   of any later version that has been published (not as a draft) by the
1492   Free Software Foundation. If the Document does not specify a version
1493   number of this License, you may choose any version ever published (not
1494   as a draft) by the Free Software Foundation.
1495
1496                            About this document ...
1497
1498   Implementation of OGC's WPS standard: PyWPS
1499
1500   This document was generated using the [22]LaTeX2HTML translator
1501   Version 2002-2-1 (1.71)
1502
1503   Copyright © 1993, 1994, 1995, 1996, [23]Nikos Drakos, Computer Based
1504   Learning Unit, University of Leeds.
1505   Copyright © 1997, 1998, 1999, [24]Ross Moore, Mathematics Department,
1506   Macquarie University, Sydney.
1507
1508   The command line arguments were:
1509   latex2html -split 0 install.tex
1510
1511   The translation was initiated by Jachym Cepicky on 2006-10-11
1512     _________________________________________________________________
1513
1514   next_inactive up previous
1515
1516
1517    Jachym Cepicky 2006-10-11
1518
1519Reference
1520
1521   1. file://localhost/home/jachym/prog/pywps/trunk/doc/install.html#SECTION00020000000000000000
1522   2. file://localhost/home/jachym/prog/pywps/trunk/doc/install.html#SECTION00030000000000000000
1523   3. file://localhost/home/jachym/prog/pywps/trunk/doc/install.html#SECTION00031000000000000000
1524   4. file://localhost/home/jachym/prog/pywps/trunk/doc/install.html#SECTION00032000000000000000
1525   5. file://localhost/home/jachym/prog/pywps/trunk/doc/install.html#SECTION00033000000000000000
1526   6. file://localhost/home/jachym/prog/pywps/trunk/doc/install.html#SECTION00040000000000000000
1527   7. file://localhost/home/jachym/prog/pywps/trunk/doc/install.html#SECTION00041000000000000000
1528   8. file://localhost/home/jachym/prog/pywps/trunk/doc/install.html#SECTION00042000000000000000
1529   9. file://localhost/home/jachym/prog/pywps/trunk/doc/install.html#SECTION00050000000000000000
1530  10. file://localhost/home/jachym/prog/pywps/trunk/doc/install.html#SECTION00051000000000000000
1531  11. file://localhost/home/jachym/prog/pywps/trunk/doc/install.html#SECTION00052000000000000000
1532  12. file://localhost/home/jachym/prog/pywps/trunk/doc/install.html#SECTION00060000000000000000
1533  13. file://localhost/home/jachym/prog/pywps/trunk/doc/install.html#SECTION00070000000000000000
1534  14. file://localhost/home/jachym/prog/pywps/trunk/doc/install.html#SECTION00080000000000000000
1535  15. file://localhost/home/jachym/prog/pywps/trunk/doc/install.html#SECTION00081000000000000000
1536  16. file://localhost/home/jachym/prog/pywps/trunk/doc/install.html#SECTION00082000000000000000
1537  17. file://localhost/home/jachym/prog/pywps/trunk/doc/install.html#SECTION00090000000000000000
1538  18. file://localhost/home/jachym/prog/pywps/trunk/doc/install.html#SECTION000100000000000000000
1539  19. file://localhost/home/jachym/prog/pywps/trunk/doc/install.html#SECTION000110000000000000000
1540  20. file://localhost/home/jachym/prog/pywps/trunk/doc/install.html#SECTION000120000000000000000
1541  21. file://localhost/home/jachym/prog/pywps/trunk/doc/install.html#SECTION000130000000000000000
1542  22. http://www.latex2html.org/
1543  23. http://cbl.leeds.ac.uk/nikos/personal.html
1544  24. http://www.maths.mq.edu.au/~ross/
Note: See TracBrowser for help on using the repository browser.