[Pywps-commits] r373 - trunk/doc
scm-commit@wald.intevation.org
scm-commit at wald.intevation.org
Tue Jun 12 10:35:41 CEST 2007
Author: jachym
Date: 2007-06-12 10:35:41 +0200 (Tue, 12 Jun 2007)
New Revision: 373
Added:
trunk/doc/pywps-howto.html
trunk/doc/pywps-howto.pdf
trunk/doc/pywps-howto.tex
trunk/doc/pywps-howto.txt
Removed:
trunk/doc/install.html
trunk/doc/install.pdf
trunk/doc/install.tex
trunk/doc/install.txt
Log:
renaming documentation files
Deleted: trunk/doc/install.html
===================================================================
--- trunk/doc/install.html 2007-06-12 08:34:48 UTC (rev 372)
+++ trunk/doc/install.html 2007-06-12 08:35:41 UTC (rev 373)
@@ -1,2545 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-
-<!--Converted with LaTeX2HTML 2002-2-1 (1.71)
-original version by: Nikos Drakos, CBLU, University of Leeds
-* revised and updated by: Marcus Hennecke, Ross Moore, Herb Swan
-* with significant contributions from:
- Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
-<HTML>
-<HEAD>
-<TITLE>Implementation of OGC's WPS standard: PyWPS</TITLE>
-<META NAME="description" CONTENT="Implementation of OGC's WPS standard: PyWPS">
-<META NAME="keywords" CONTENT="install">
-<META NAME="resource-type" CONTENT="document">
-<META NAME="distribution" CONTENT="global">
-
-<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8">
-<META NAME="Generator" CONTENT="LaTeX2HTML v2002-2-1">
-<META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
-
-<LINK REL="STYLESHEET" HREF="install.css">
-
-</HEAD>
-
-<BODY >
-
-<DIV CLASS="navigation"><!--Navigation Panel-->
-<IMG WIDTH="81" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next_inactive"
- SRC="/usr/share/latex2html/icons/nx_grp_g.png">
-<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
- SRC="/usr/share/latex2html/icons/up_g.png">
-<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
- SRC="/usr/share/latex2html/icons/prev_g.png">
-<BR>
-<BR>
-<BR></DIV>
-<!--End of Navigation Panel-->
-<H1 ALIGN="CENTER">Implementation of OGC's WPS standard: PyWPS</H1>
-<DIV CLASS="author_info">
-
-<P ALIGN="CENTER"><STRONG>Jachym Cepicky</STRONG></P>
-</DIV>
-
-<P>
-
-<P><P>
-<BR>
-<BLOCKQUOTE>
-Copyright ©2006 PyWPS Development Team
- Permission is granted to copy, distribute and/or modify this document
- under the terms of the GNU Free Documentation License, Version 1.2
- or any later version published by the Free Software Foundation;
- with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
- A copy of the license is included in the section entitled "GNU
- Free Documentation License".
-
-</BLOCKQUOTE>
-
-<P><P>
-<BR>
-
-<P>
-In this file, you can found the description of installation and
-configuration of PyWPS script. At the and, you can learn, how to add
-your own process to the list of processes. The file describes most recent
-version of PyWPS (<SPAN CLASS="textit">2.0.0</SPAN>), available in subversion respository.
-
-<P>
-PyPWS project has been started on April 2006 with support of DBU -
-Deutsche Bundesstiftung Umwelt (<TT><A NAME="tex2html1"
- HREF="http://dbu.de">http://dbu.de</A></TT>) and with help of
-GDF-Hannover (<TT><A NAME="tex2html2"
- HREF="http://gdf-hannover.de">http://gdf-hannover.de</A></TT>) and Help Service Remote
-Sensing (<TT><A NAME="tex2html3"
- HREF="http://www.bnhelp.cz">http://www.bnhelp.cz</A></TT>) companies. Initial author is Jachym
-Cepicky (<TT><A NAME="tex2html4"
- HREF="http://les-ejk.cz">http://les-ejk.cz</A></TT>).
-
-<P>
-<BR>
-
-<H2><A NAME="SECTION00010000000000000000">
-Contents</A>
-</H2>
-<!--Table of Contents-->
-
-<UL CLASS="TofC">
-<LI><A NAME="tex2html59"
- HREF="install.html#SECTION00020000000000000000">Introduction</A>
-<UL>
-<LI><A NAME="tex2html60"
- HREF="install.html#SECTION00021000000000000000">How it works</A>
-</UL>
-<BR>
-<LI><A NAME="tex2html61"
- HREF="install.html#SECTION00030000000000000000">Bugs</A>
-<LI><A NAME="tex2html62"
- HREF="install.html#SECTION00040000000000000000">Installation</A>
-<UL>
-<LI><A NAME="tex2html63"
- HREF="install.html#SECTION00041000000000000000">Installation the quick 'n' dirty way</A>
-<LI><A NAME="tex2html64"
- HREF="install.html#SECTION00042000000000000000">Installation the 'clean' way</A>
-<LI><A NAME="tex2html65"
- HREF="install.html#SECTION00043000000000000000">Testing after installation</A>
-</UL>
-<BR>
-<LI><A NAME="tex2html66"
- HREF="install.html#SECTION00050000000000000000">Configuration</A>
-<UL>
-<LI><A NAME="tex2html67"
- HREF="install.html#SECTION00051000000000000000">etc/settings.py</A>
-<LI><A NAME="tex2html68"
- HREF="install.html#SECTION00052000000000000000">etc/grass.py</A>
-</UL>
-<BR>
-<LI><A NAME="tex2html69"
- HREF="install.html#SECTION00060000000000000000">Add your own processes</A>
-<UL>
-<LI><A NAME="tex2html70"
- HREF="install.html#SECTION00061000000000000000">Process Initialization and Configuration</A>
-<LI><A NAME="tex2html71"
- HREF="install.html#SECTION00062000000000000000">Process Programming</A>
-<LI><A NAME="tex2html72"
- HREF="install.html#SECTION00063000000000000000">GRASS specific notes</A>
-</UL>
-<BR>
-<LI><A NAME="tex2html73"
- HREF="install.html#SECTION00070000000000000000">Testing your new process</A>
-<LI><A NAME="tex2html74"
- HREF="install.html#SECTION00080000000000000000">Using PyWPS</A>
-<UL>
-<LI><A NAME="tex2html75"
- HREF="install.html#SECTION00081000000000000000">Input</A>
-<LI><A NAME="tex2html76"
- HREF="install.html#SECTION00082000000000000000">Output</A>
-</UL>
-<BR>
-<LI><A NAME="tex2html77"
- HREF="install.html#SECTION00090000000000000000">Example process: addvalue</A>
-<LI><A NAME="tex2html78"
- HREF="install.html#SECTION000100000000000000000">KVP request encoding of addvalue</A>
-<LI><A NAME="tex2html79"
- HREF="install.html#SECTION000110000000000000000">XML request encoding addvalue</A>
-<LI><A NAME="tex2html80"
- HREF="install.html#SECTION000120000000000000000">Licence of PyWPS</A>
-<LI><A NAME="tex2html81"
- HREF="install.html#SECTION000130000000000000000">Licence of this document</A>
-</UL>
-<!--End of Table of Contents-->
-<P>
-
-<P>
-
-<H1><A NAME="SECTION00020000000000000000">
-Introduction</A>
-</H1>
-PyWPS (Python Web Processing Service) is implementation of Web
-Processing Service standard from Open Geospatial Consortium.
-
-<P>
-It has been started on Mai 2006 as project supported by DBU. It offers
-environment for programming own process (geofunctions or models) which can
-be accessed from the public. The main advantage of PyWPS is, that it has
-been written with native support for GRASS. Access GRASS modules via web
-interace should be as easy as possible.
-
-<P>
-Processes can be written using GRASS GIS, but usage of other programs is
-also possible. Usage together with R package or GDAL or PROJ tools.
-
-<P>
-PyWPS is written in Python programming language, your processes must use
-this language too.
-
-<P>
-PyWPS Homepage can be found at <TT><A NAME="tex2html5"
- HREF="http://pywps.wald.intevation.org">http://pywps.wald.intevation.org</A></TT>.
-PyWPS Wiki is hosted on <TT><A NAME="tex2html6"
- HREF="http://pywps.ominiverdi.org">http://pywps.ominiverdi.org</A></TT>.
-
-<P>
-
-<H2><A NAME="SECTION00021000000000000000">
-How it works</A>
-</H2>
-PyWPS is an translator application between client (Web Browser, Desktop
-GIS, command line tool, ...) and working tool installed on the server.
-PyWPS does no work by it self. As working tool, GRASS GIS, GDAL, PROJ, R
-and other programs can be used.
-
-<P>
-
-<DIV ALIGN="CENTER"><A NAME="pic:pywps"></A><A NAME="43"></A>
-<TABLE>
-<CAPTION ALIGN="BOTTOM"><STRONG>Figure 1:</STRONG>
-How does PyWPS work: GRASS GIS is in this case working tool</CAPTION>
-<TR><TD>
-<DIV ALIGN="CENTER">
-<IMG
- WIDTH="827" HEIGHT="273" ALIGN="BOTTOM" BORDER="0"
- SRC="./pywps-schema.png"
- ALT="Image pywps-schema">
-
-</DIV></TD></TR>
-</TABLE>
-</DIV>
-
-<P>
-
-<H1><A NAME="SECTION00030000000000000000">
-Bugs</A>
-</H1>
-Known bugs and limitations to UL>
-<LI>Sometimes, when there is e.g. SyntaxError in the process, teporary file <TT>/tmp/pywps*</TT> is not deleted, which ledts to <TT>ServerBussy</TT> exception and the files have to be removed by hand.
-</LI>
-<LI>If inputs are of type <TT>LiteralValue</TT> and it's type is
-string, it is not controlled properly. Take care on your inputs and do
-not use it directly in scripts to avoid your server to be hacked.
-</LI>
-</UL>
-
-<P>
-Please report all problems or unexpected handeling either via pywps mailing
-list<A NAME="tex2html8"
- HREF="#foot357"><SUP><SPAN CLASS="arabic">1</SPAN></SUP></A>or using PyWPS
-bugtracker<A NAME="tex2html9"
- HREF="#foot358"><SUP><SPAN CLASS="arabic">2</SPAN></SUP></A>.
-
-<P>
-
-<H1><A NAME="SECTION00040000000000000000">
-Installation</A>
-</H1>
-
-<P>
-Required packages:
-
-<P>
-
-<UL>
-<LI>python
-</LI>
-<LI>python-xml
-</LI>
-</UL>
-
-<P>
-Recommended packages:
-
-<P>
-
-<UL>
-<LI>Web Server (e.g. Apache) - <TT><A NAME="tex2html10"
- HREF="http://httpd.apache.org">http://httpd.apache.org</A></TT> - You
- will need an web server, to be able to execute processes from remote
- computers.
-
-<P>
-</LI>
-<LI>GIS GRASS - <TT><A NAME="tex2html11"
- HREF="http://grass.itc.it">http://grass.itc.it</A></TT> - Geographical Resources
- Analysis Support System (GRASS) is Open Source GIS, which provides more
- then 350 modules for raster and vector (2D, 3D) data analysis. PyWPS is
- written with native support for GRASS and it's functions.
-
-<P>
-</LI>
-<LI>PROJ.4 - <TT><A NAME="tex2html12"
- HREF="http://proj.maptools.org">http://proj.maptools.org</A></TT> - Cartographic
- Projections library used in various Open Source projects, such as
- GRASS, UMN MapServer, QGIS and others. It can be used e.g. for data
- transformation.
-
-<P>
-</LI>
-<LI>GDAL/OGR - <TT><A NAME="tex2html13"
- HREF="http://gdal.org">http://gdal.org</A></TT> - translator library for
- raster geospatial data formats, is used in various projects for
- importing, exporting and transformation between various raster and vector
- data formats.
-
-<P>
-</LI>
-<LI>R - <TT><A NAME="tex2html14"
- HREF="http://www.r-project.org">http://www.r-project.org</A></TT> - is a language and environment
- for statistical computing and graphics.
-
-<P>
-</LI>
-</UL>
-
-<P>
-
-<H2><A NAME="SECTION00041000000000000000">
-Installation the quick 'n' dirty way</A>
-</H2>
-For installing pywps to your server simply unzip the archive to the
-directory, where cgi programs are allowed to run. You can also use current
-repository version.
-
-<P>
-<PRE>
-$ cd /usr/lib/cgi-bin/
-$ tar xvzf /tmp/pywps-VERSION.tar.gz
-$ pywps/wps.py
-</PRE>
-
-<P>
-
-<H2><A NAME="SECTION00042000000000000000">
-Installation the 'clean' way</A>
-</H2>
-Unzip the package
-<PRE>
-$ tar -xzf pywps-VERSION.tar.gz
-</PRE>
-and run
-<PRE>
-$ python setup.py install
-</PRE>
-
-<P>
-Several binary packages for Linux distributios are also avaliable on PyWPS
-site<A NAME="tex2html15"
- HREF="#foot75"><SUP><SPAN CLASS="arabic">3</SPAN></SUP></A>.
-
-<P>
-
-<H2><A NAME="SECTION00043000000000000000">
-Testing after installation</A>
-</H2>
-For test, just run
-<TT>wps.py</TT> in your command line:
-
-<P>
-<PRE>
-$ ./wps.py
-Content-type: text/xml
-
-<?xml version="1.0" ?>
-<ExceptionReport version="1.0.0" xmlns="http://www.opengis.net/ows"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
- <Exception exceptionCode="MissingParameterValue" locator="request"/>
-</ExceptionReport>
-</PRE>
-
-<P>
-If you got some other message, like e.g.:
-
-<P>
-<PRE>
-Traceback (most recent call last):
- File "trunk/index.py", line 53, in ?
- from Wps import wpsexceptions
- File "/home/jachym/prog/pywps/trunk/Wps/wpsexceptions.py", line 8, in ?
- from xml.dom.minidom import Document
-ImportError: No module named xml.dom.minidom
-</PRE>
-
-<P>
-Than something is wrong with your Python installation or with the program.
-This message means, that the xml.dom.minidom package is not installed in
-your system.
-
-<P>
-
-<H1><A NAME="SECTION00050000000000000000">
-Configuration</A>
-</H1>
-
-<P>
-Before you start to tune your pywps program, you should get your copy of
-OpenGIS(R) Web Processing Service document (OGC 05-007r4) version 0.4.0
-from
-<BR><TT><A NAME="tex2html17"
- HREF="http://www.opengeospatial.org/specs/?page=specs">http://www.opengeospatial.org/specs/?page=specs</A></TT>
-<P>
-
-<P>
-<BR>
-NOTE: Note, that the configuration option are CASE SENSITIVE
-<P>
-<BR>
-
-
-<P>
-Pywps configuration takes places in two files. The files are actually python
-scripts, so it does not harm, if you have some experience in python
-programming language. But you should be able to setup the program without
-any python knowledge.
-
-<P>
-The first file is in <TT>etc/settings.py</TT> and (optional) the second file is
-<TT>etc/grass.py</TT> which has to be setuped if you do want to use
-GRASS GIS modules in your scripts. Some special "tuning" can be done in <TT>processes/__init__.py</TT>
-file. You can allways obtain original configuration files from
-<TT>Wps/default_settings.py</TT> and <TT>Wps/default_grass.py</TT>.
-
-<P>
-
-<H2><A NAME="SECTION00051000000000000000">
-<TT>etc/settings.py</TT></A>
-</H2>
-
-<P>
-This file has got two sections: WPS and serverSettings
-
-<P>
-In the <TT>WPS</TT> section, the main configuration is set, which appears mostly in
-GetCapabilities request. The <SPAN CLASS="textit">mandatory</SPAN> parameters, which should be set up
-are (with default/recommend values):
-
-<P>
-<PRE>
-WPS = {
- 'version': "0.4.0",
- 'ServiceIdentification': {
- 'Title':"Jachym's WPS server",
- 'ServiceType':"WPS",
- 'ServiceTypeVersion':"0.1.0",
- 'Abstract':'Abstract to this WPS',
- },
- 'ServiceProvider': {
- 'ProviderName' : "Your Company",
- 'IndividualName':"Your Name",
- 'PositionName':"Your Position",
- 'Role':"your role",
- 'DeliveryPoint': "Street",
- 'City': "City",
- 'PostalCode':"00000",
- 'Country': "Your country",
- 'ElectronicMailAddress':"your.email at address",
- },
-
- 'OperationsMetadata': {
- 'ServerAddress' : "http://localhost/cgi-bin/wps/wps.py",
- },
- 'Keywords' : ['GRASS','GIS','WPS'],
-}
-</PRE>
-
-<P>
-In the <TT>ServerSettings</TT> section, the variables are set, which have impact on
-the whole server.
-
-<P>
-<PRE>
-ServerSettings = {
- # NOTE: You have to create this directory manually and set rights, so
- # the program is able to store data in there
- 'outputPath': '/var/www/wpsoutputs',
-
- #
- # 'outputUrl' - URL of the directory, where the outputs will be stored
- 'outputUrl': 'http://192.168.1.31/wpsoutputs',
-
- #
- # tempPath - path to directory, where temporary data will be stored.
- # NOTE: the pywps has to have rights, to create directories and files
- # in this directory
- 'tempPath': '/tmp',
-
- #
- # maxOperations - maximum number of operations, which is allowed to low
- # on this server at ones
- # default = 1
- 'maxOperations':1,
-
- #
- # maxSize: maximum input file size in bytes
- # NOTE: maximum file size is 5MB, no care, if this number is higher
- 'maxSize':5242880, # 5 MB
-
- #
- # maxInputParamLength: maximal length of input values
- # NOTE: maximum length of input parameters is 256, no matter, how height
- # is this number
- 'maxInputParamLength':256,
-}
-</PRE>
-
-<P>
-
-<H2><A NAME="SECTION00052000000000000000">
-<TT>etc/grass.py</TT></A>
-</H2>
-
-<P>
-This file servers for configuration of GRASS GIS environment (if your
-processes need one). Everything is stored in <TT>grassenv</TT> structure.
-
-<P>
-<PRE>
-grassenv = {
- # PATH in which your modules (processes) should be able the search.
- # Default value:
- 'PATH': "/usr/local/grass-6.1.cvs/bin/:/usr/local/grass-6.1.cvs/scripts/:\
- /usr/bin/:/bin/:",
-
- # Add eventually some other path, in which should GRASS search for modules
- 'GRASS_ADDON_PATH': "",
-
- # Version of GRASS, you are using
- 'GRASS_VERSION': "6.1.cvs",
-
- # GRASS_PERL, where is your PERL bin installed
- 'GRASS_PERL': "/usr/bin/perl",
-
- # GRASS_GUI should be always "text" unless you know, what you are doing
- 'GRASS_GUI': "text",
-
- # GISBASE is place, where your GRASS installation is
- 'GISBASE': "/usr/local/grass-6.1.cvs",
-
- # LD_LIBRARY_PATH
- 'LD_LIBRARY_PATH':"/usr/local/grass-6.1.cvs/lib",
-
- # HOME has to be set
- 'HOME':"/var/www",
-}
-</PRE>
-
-<P>
-
-<H1><A NAME="SECTION00060000000000000000">
-Add your own processes</A>
-</H1>
-
-<P>
-<BR>
-NOTE: This section has changed from previous stable 1.0.0 version. The
-processes, you defined for 1.0.0 branch should work for 2.0.0 branch too.
-<P>
-<BR>
-
-
-<P>
-All processes are stored in the <TT>processes</TT> directory. Put your file
-e.g. <TT>myprocess.py</TT> in there. Several example processes are
-distributed along with PyWPS source code.
-
-<P>
-Process is python class derived from prepared <TT>WPSProcess</TT> class in
-<TT>pywps.Wps</TT> package. In it <TT>__init__(self)</TT> method,
-process metadata, inputs and outpus are defined and in
-<TT>execute(self)</TT> method, own computation is performed.
-
-<P>
-It is possible also to add as many your functions, as you wish.
-
-<P>
-
-<H2><A NAME="SECTION00061000000000000000">
-Process Initialization and Configuration</A>
-</H2>
-
-<P>
-<PRE>
-01 # importing necessary files
-02 import pywps.Wps.WPSProcess
-03
-04 class Process(WPSProcess):
-05 def __init__(self):
-06 WPSProcess.__init__(self,
-07 Identifier="ogr2ogr",
-18 Title="ogr2ogr interface",
-19 Abstract="Convert vector file to another format",
-10 processVersion = "0.2",
-11 statusSupported="true",
-12 storeSupported="true")
-</PRE>
-
-<P>
-We defined new process called <TT>ogr2ogr</TT>. The process is allowed to
-store it's output data on the server (<TT>storeSupported</TT>) and it is also possible to run it in
-asynchronous mode (<TT>statusSupported</TT>).
-
-<P>
-Eventually optional attributes can be found in the table 38 - "Parts of
-ExecuteResponse data structure" in the WPS reference
-document<A NAME="tex2html18"
- HREF="#foot361"><SUP><SPAN CLASS="arabic">4</SPAN></SUP></A>. It is also possible to redefine some
-variable later, after initialization:
-
-<P>
-<PRE>
-13
-14 self.Title="ogr2ogr interface"
-15
-</PRE>
-
-<P>
-
-<H4><A NAME="SECTION00061010000000000000">
-Metadata defition</A>
-</H4> is stored in array <TT>self.Metadata</TT> in
-<TT>__init__</TT> method. You can add new Medatada using
-<TT>self.AddMetadata()</TT> method:
-<PRE>
- self.AddMetadata(Identifier="point",type="point",
- textContent="Click in the map")
-</PRE>
-
-<P>
-This code will produce in DescribeProcess responce document following
-element:
-<PRE>
-...
-<ows:Metadata Identifier="point" type="point">
- Click in the map
-</ows:Metadata>
-...
-</PRE>
-
-<P>
-
-<H3><A NAME="SECTION00061100000000000000">
-Data Inputs</A>
-</H3>
-Data inputs are stored in <TT>self.Inputs</TT> array. To add inputs to
-your process, you should use methods defined in <TT>WPSProcess</TT> class.
-
-<P>
-Four types of data inputs are defined:
-
-<UL>
-<LI>Literal Input - Basic literal input - single number or text
- value
-</LI>
-<LI>ComplexValue Input - Mostly vector file embded in input XML
- request
-</LI>
-<LI>ComplexValueReference Input - URL to location, where the process
- is supposed to get the input data.
-</LI>
-<LI>BoundingBox Input - Coordinates for lower-left and upper-right
- corner.
-</LI>
-</UL>
-
-<P>
-ComplexValue and ComplexValueReference defined on the same way - PyWPS is
-able to guess, if the input data are reference (link) to some map or raw
-data directly.
-
-<P>
-
-<H4><A NAME="SECTION00061110000000000000">
-LiteralInput</A>
-</H4>
-
-<P>
-Basic type of data input is <TT>LiteralInput</TT> type. To define
-LiteralInput the easy way, you should use <TT>AddLiteralInput</TT> method:
-
-<P>
-<PRE>
-20
-21 self.AddLiteralInput(Identifier="value",
- Title="Value to be added",
- type=type(0))
-</PRE>
-
-<P>
-Above example will add new input with identifier <TT>value</TT> of type
-integer. Examples of other possibilities of LiteralInputs and resulting
-part of XML are folowing:
-
-<P>
-
-<H5><A NAME="SECTION00061111000000000000">
-Example of any allowed input value (default)</A>
-</H5>
-<PRE>
-self.AddLiteralInput(Identifier="someinput",
- Title="Some Input",
- allowedvalues='*')
-
-...
- <Input>
- <ows:Identifier>someinput</ows:Identifier>
- <ows:Title>Some Input</ows:Title>
- <ows:Abstract/>
- <LiteralData>
- <SupportedUOMs defaultUOM="m">
- <ows:UOM>m</ows:UOM>
- </SupportedUOMs>
- <ows:AnyValue/>
- </LiteralData>
- <MinimumOccurs>1</MinimumOccurs>
- </Input>
-...
-</PRE>
-
-<P>
-
-<H5><A NAME="SECTION00061112000000000000">
-Example of specified list (with range) of allowed inputs</A>
-</H5>
-
-<P>
-Following example will define input with specified list of values: Only
-values 20, 30, everything between 40-100 and 110 will be accepted:
-<PRE>
-self.AddLiteralInput(Identifier="someinput",
- Title="Some Input",
- allowedvalues=[20,30,[40,100],110])
-
-...
- <Input>
- <ows:Identifier>someinput</ows:Identifier>
- <ows:Title>Some Input</ows:Title>
- <ows:Abstract/>
- <LiteralData>
- <SupportedUOMs defaultUOM="m">
- <ows:UOM>m</ows:UOM>
- </SupportedUOMs>
- <AllowedValues>
- <Value>20</Value>
- <Value>30</Value>
- <Range>
- <MinimumValue>40</MinimumValue>
- <MaximumValue>100</MaximumValue>
- </Range>
- <Value>110</Value>
- </AllowedValues>
- </LiteralData>
- <MinimumOccurs>1</MinimumOccurs>
- </Input>
-...
-</PRE>
-
-<P>
-For further documentation, refere example processes distributed with the
-source code as well as <TT>pydoc pywps/wps/process.py</TT>. This help is
-also available in
-<TT>process.html</TT><A NAME="tex2html20"
- HREF="#foot362"><SUP><SPAN CLASS="arabic">5</SPAN></SUP></A> file distributed along with PyWPS
-source code.
-
-<P>
-
-<H4><A NAME="SECTION00061120000000000000">
-ComplexInput</A>
-</H4>
-If the request comes as HTTP GET, it is assumed, that the input is only
-reference to some map. If it comes as HTTP POST, PyWPS tryes to guess, if
-the client is sending URL to source of the data or if the input data are
-part of input XML request (e.g. as GML file). So, you, as a process coder
-do not have to take care on this:
-
-<P>
-<PRE>
-self.AddComplexInput(Indentifier="inputmap",
- Title="Input map, which should be processed",
- Formats=["text/xml","image/tiff"])
-...
- <Input>
- <ows:Identifier>input</ows:Identifier>
- <ows:Title>Input raster map</ows:Title>
- <ows:Abstract/>
- <ComplexData defaultFormat="image/tiff">
- <SupportedComplexData>
- <Format>image/tiff</Format>
- <Format>text/xml</Format>
- </SupportedComplexData>
- </ComplexData>
- <MinimumOccurs>1</MinimumOccurs>
- </Input>
-</PRE>
-
-<P>
-
-<H4><A NAME="SECTION00061130000000000000">
-BoundingBox Input</A>
-</H4>
-With bounding box, you can define two coordinate pairs, if you have to.
-
-<P>
-<PRE>
-self.AddBondingBoxInput(Identifier="bbox",
- Title="BBox input")
-</PRE>
-
-<P>
-
-<H3><A NAME="SECTION00061200000000000000">
-Data Outputs</A>
-</H3>
-Again four types of output are defined:
-
-<UL>
-<LI>Literal Output
-</LI>
-<LI>ComplexValue Output
-</LI>
-<LI>ComplexValue Reference
-</LI>
-<LI>BoundingBox Output
-</LI>
-</UL>
-
-<P>
-Data outputs can be defined on similar way, using similar methods:
-
-<P>
-
-<H4><A NAME="SECTION00061210000000000000">
-LiteralOutput</A>
-</H4>
-<PRE>
-self.AddLiteralOutput(Identifier="litoutput",
- Title="Resulting output value")
-
-...
- <Output>
- <ows:Identifier>litoutput</ows:Identifier>
- <ows:Title>Resulting output value</ows:Title>
- <ows:Abstract/>
- <LiteralOutput>
- <SupportedUOMs defaultUOM="m">
- <ows:UOM>m</ows:UOM>
- </SupportedUOMs>
- </LiteralOutput>
- </Output>
-...
-</PRE>
-
-<P>
-
-<H4><A NAME="SECTION00061220000000000000">
-ComplexValue and ComplexValueReference Output</A>
-</H4>
-To the oposite of data Inputs, Outputs can distinguish between ComplexValue
-output and ComplexValueReference. ComplexValue is directly embed into the
-output XML document and ComplexValueReference is stored on the server and
-only URL pointing the the file is refering to it. In general, vector files
-in GML format can be easy embed to the output XML, TIFF raster files is
-better to leave on the server.
-
-<P>
-<PRE>
-self.AddComplexReferenceOutput(Identifier="output",
- Title="Resulting output map",
- Formats=["image/tiff"])
-
-...
- <Output>
- <ows:Identifier>output</ows:Identifier>
- <ows:Title>Resulting output map</ows:Title>
- <ows:Abstract/>
- <ComplexOutput defaultFormat="image/tiff">
- <SupportedComplexData>
- <Format>image/tiff</Format>
- </SupportedComplexData>
- </ComplexOutput>
- </Output>
-...
-</PRE>
-
-<P>
-
-<H4><A NAME="SECTION00061230000000000000">
-BoundingBox Output</A>
-</H4>
-Beside LiteralValue and ComplexValue, BoundingBoxValue is also defined.
-The coordinates are stored in array of four members:
-
-<P>
-<PRE>
-self.GetInputValue("bboxinput")
-[0,0,100,100]
-</PRE>
-
-<P>
-
-<P><P>
-<BR>
-
-<P>
-So on our <TT>ogr2ogr</TT> process, we have to define three types of input:
-<TT>ComplexValue</TT> of input vector file and EPSG codes of target and
-source files:
-
-<P>
-<PRE>
-16 self.AddComplexInput(Identifier="inputmap",
-17 Title ="Input vector file",
-18 Abstract = "Input vector file to be converted",
-19 Formats=["text/xml"])
-20
-21 self.AddLiteralInput(Identifier="sepsg",
-22 Title="Source EPSG",
-23 Abstract="Source EPSG code",
-24 value=4326)
-</PRE>
-
-<P>
-And we also define two outputs: ComplexValueReference and ComplexValue
-type.
-
-<P>
-<PRE>
-25 self.AddComplexOutput(Identifier="outputmap",
-26 Title ="Input vector file",
-27 Abstract = "Input vector file to be converted",
-28
-29 self.LiteralOutput(Identifier="sepsg",
-30 Title="Source EPSG",
-31 Abstract="Source EPSG code",
-32 value=4326)
-</PRE>
-
-<P>
-
-<H2><A NAME="SECTION00062000000000000000">
-Process Programming</A>
-</H2>
-
-<P>
-The process must be defined in the <TT>execute(self)</TT> function. You can
-access the input values via <TT>self.GetInputValue(Identifier)</TT> method.
-
-<P>
-
-<P>
-<BR>
-NOTE: Usage of the old method, accessing the values via
-<TT>self.Inputs[index]['value']</TT> or via <TT>self.DataInputs</TT> array
-is possible, but should not be used.
-<P>
-<BR>
-
-
-<P>
-Also variable <TT>self.grassenv</TT> will be in your process at your
-service. This dictionary stores environment variables used by GRASS GIS,
-such se <TT>LOCATION_NAME</TT> or <TT>MAPSET</TT>.
-
-<P>
-Output values should be set using <TT>self.SetOutputValue(Identifier,
-value)</TT> method.
-
-<P>
-
-<P>
-<BR>
-NOTE: Usage of the old methods of output values setting, directly to
-<TT>self.Outputs[index]['value']</TT> variable or to
-<TT>self.DataOutputs['identifier']</TT> dictionary, is possible, but should
-better not be used.
-<P>
-<BR>
-
-
-<P>
-If you need to execute some shell command, you should use
-<TT>self.Cmd(command,["string for standard input"])</TT> instead of e.g.
-<TT>os.system()</TT> or <TT>os.popen()</TT> functions.
-
-<P>
-<PRE>
-33
-35 def execute(self):
-36
-37 #
-38 # calculation
-39 #
-30 self.Cmd("""ogr2ogr -s_srs "+init=epsg:4326" -t_srs \
-31 "+init=epsg:2065" %s output.file""" % (self.GetInputValue("inputmap")))
-32 #
-43 # setting results
-44 #
-45 self.SetOutputValue("outputmap","output.file")
-46 self.SetOutputValue("sepsg","4326")
-47
-48 return
-</PRE>
-
-<P>
-
-<H3><A NAME="SECTION00062100000000000000">
-Error handling</A>
-</H3>
-
-<P>
-At the end of the <TT>execute</TT> function, <TT>None</TT> value should be returned. Any other
-value means, that the calculation will be stopped and error report will be returned back to the client.
-
-<P>
-
-<H3><A NAME="SECTION00062200000000000000">
-Using standard in- and output with external commands</A>
-</H3>
-The <TT>self.Cmd()</TT> accepts <TT>input</TT> parameter, wich is a text
-string, which is directred to standard input of the command:
-
-<P>
-<PRE>
- result = self.Cmd(cmd="wc -c",
- input="calculate number of characters for this sentence")
-
- # result[0].split()
-</PRE>
-
-<P>
-<TT>self.Cmd()</TT> returns list of lines from the programms standard
-output to the process:
-
-<P>
-<PRE>
- for line in self.Cmd("ls -l"):
- # do some operations of list of files
- pass
-</PRE>
-
-<P>
-
-<H2><A NAME="SECTION00063000000000000000">
-GRASS specific notes</A>
-</H2>
-
-<P>
-Special class for GRASS GIS is defined too, which has functions and
-variables specific to this program. The process, in which should use GRASS
-modules should be defined as follows:
-
-<P>
-<PRE>
-# importing necessary files
-import pywps.Wps.GRASSWPSProcess
-
-class Process(GRASSWPSProcess):
- def __init__(self):
- GRASSWPSProcess.__init__(self,
- Identifier="spearpath",
- Title="Spearfish path searching",
- Abstract="Find the shortest path on the roads map on Spearfish dataset",
- processVersion = "0.2",
- statusSupported="true",
- storeSupported="true",
- # grassLocation="/var/www/spearfish60/" # work on existing location)
-</PRE>
-
-<P>
-By default, <TT>self.grassLocation</TT><A NAME="tex2html21"
- HREF="#foot365"><SUP><SPAN CLASS="arabic">6</SPAN></SUP></A>
- variable is set to <TT>None</TT>,
-which means, that temporary location will be created and after the
-calculation is done, it will be deleted again. You can set this while
-process initialization or
-later<A NAME="tex2html22"
- HREF="#foot366"><SUP><SPAN CLASS="arabic">7</SPAN></SUP></A>.
-
-<P>
-<TT>WPSProcess</TT> class provides special method
-<TT>self.GCmd(command_string)</TT>, which tryes to catch output from GRASS
-modules, especially progress information inidcated by percent done. Method
-<TT>GCmd()</TT> stores the output of GRASS modules to <TT>self.status</TT>
-variable, so if the process is running assynchronously, client application
-can track the progress of each module directly.
-
-<P>
-<PRE>
- def execute(self):
- """
- This function serves like simple GRASS - python script
-
- It returns None, if process succeed or String if process failed
- """
- self.GCmd("g.region -d")
-
-
- # v.net.path reads from standard input
- self.GCmd("v.net.path in=roads out=path","0 %s %s %s %s" % (self.GetInputValue('x1'),
- self.GetInputValue('y1'),
- self.GetInputValue('x2'),
- self.GetInputValue('y2')))
-
- self.GCmd("v.out.ogr format=GML input=path dsn=out.xml olayer=path.xml")
-
- if "out.xml" in os.listdir(os.curdir):
- shutil.copy("out.xml","out2.xml")
- self.SetOutputValue('outputReference',"out.xml")
- self.SetOutputValue('outputData',"out2.xml")
- return
- else:
- return "Ouput file not created!"
-</PRE>
-
-<P>
-It is also possible to run GRASS modules using python's
-<TT>os.system()</TT> or <TT>os.popen()</TT> function. Before you do so, it
-is important to import the <TT>os</TT> python package (usually one of the
-first lines in the file). This approach might not be the best, but it is
-the simplest one. Feel free to use any other low-end functions.
-
-<P>
-Unfortunately, the GRASS modules are very verbose. Some messages are
-written to STDOUT, some to STDERR. The STDERR will be stored in the error
-file of your web server. But you have to "catch" the messages, sent to
-STDOUT. This can be done e.g. by using "<SPAN CLASS="MATH"><IMG
- WIDTH="59" HEIGHT="34" ALIGN="MIDDLE" BORDER="0"
- SRC="img1.png"
- ALT="$1>\&2$"></SPAN>" statement (redirecting
-STDOUT to STDERR in shell):
-
-<P>
-<PRE>
-os.system("""
- echo "Rekni jim drazi, tatko, za to nic nedas." >&2
-""")
-</PRE>
-
-<P>
-You can avoid this problem using formentioned <TT>self.GCmd()</TT> method.
-
-<P>
-
-<H1><A NAME="SECTION00070000000000000000">
-Testing your new process</A>
-</H1>
-
-<P>
-To test your PyWPS installation, you run it either as Webserver
-cgi-application or in the command line directly. It is always good to start
-with the command line test, so do not have to check <TT>error.log</TT> of
-the web server.
-
-<P>
-
-<UL>
-<LI>GetCapabilities request (webserver)
-<PRE>
-./wps.py "service=wps&request=getcapabilities"
-
-wget -nv -q -O - "http://localhost/cgi-bin/wps.py?\
- service=Wps&request=getcapabilities"
-</PRE>
-
-<P>
-</LI>
-<LI>DescribeProcess request:
-<PRE>
-./wps.py "version=0.4.0&service=Wps&request=DescribeProcess&\
- Identifier=your_process"
-
-wget -nv -q -O - "http://localhost/cgi-bin/wps.py?\
- version=0.4.0&service=Wps&request=DescribeProcess&\
- Identifier=your_process"
-</PRE>
-
-<P>
-</LI>
-<LI>Execute request:
-<PRE>
-./wps.py "version=0.4.0&service=Wps&\
- request=Execute&Identifier=your_process&\
- datainputs=input1,value1,input2,value2"
-
-wget -nv -q -O - "http://localhost/cgi-bin/wps.py?\
- version=0.4.0&service=Wps&\
- request=Execute&Identifier=your_process&\
- datainputs=input1,value1,input2,value2" \
-</PRE>
-
-<P>
-</LI>
-</UL>
-
-<P>
-
-<H1><A NAME="SECTION00080000000000000000">
-Using PyWPS</A>
-</H1>
-
-<H2><A NAME="SECTION00081000000000000000">
-Input</A>
-</H2>
-
-<P>
-To get response from PyWPS you have to formulate appropriate query string first. You can use HTTP GET style or HTTP POST style.
-
-<P>
-HTTP GET style is standard URL, with all parameters in one line. You can not set any <TT>ComplexValue</TT> data in your process via HTTP GET. Example:
-
-<P>
-<PRE>
-wget -nv -q -O - --post-data="version=0.4.0&service=Wps&\
- request=Execute&Identifier=your_process&\
- datainputs=input1,value1,input2,value2"\
- "http://localhost/cgi-bin/wps.py"
-</PRE>
-
-<P>
-In HTTP POST style, you send one "request" parameter, which contains XML input. The XML file can contain also included ComplexValue data, e.g. GML file. Example:
-
-<P>
-<PRE>
-wget --post-file=execute-post.txt \
- "http://localhost/pywps/wps.py" -O - -nv -q
-</PRE>
-
-<P>
-The <TT>execute-post.txt</TT> file can look like follows:
-<PRE>
-<?xml version="1.0" encoding="utf-8"?>
-<Execute service="WPS" version="0.4.0" store="false" status="false"
-xmlns="http://www.opengeospatial.net/wps"
-xmlns:ows="http://www.opengeospatial.net/ows"
-xmlns:xlink="http://www.w3.org/1999/xlink"
-xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-xsi:schemaLocation="http://www.opengeospatial.net/wps/wpsDescribeProcess.xsd">
- <ows:Identifier>searchpath</ows:Identifier>
- <DataInputs>
- <Input>
- <ows:Identifier>streetmap</ows:Identifier>
- <ows:Title>The map</ows:Title>
- <ows:ComplexValue>
- <Value>
-<ogr:FeatureCollection
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://ogr.maptools.org/ donut.xsd"
- xmlns:ogr="http://ogr.maptools.org/"
- xmlns:gml="http://www.opengis.net/gml">
- <gml:boundedBy>
- <gml:Box>
- <gml:coord><gml:X>4.263256414560601e-14</gml:X>
- <gml:Y>-70.71067811865474</gml:Y></gml:coord>
- <gml:coord><gml:X>141.4213562373095</gml:X>
- <gml:Y>70.71067811865474</gml:Y></gml:coord>
- </gml:Box>
- </gml:boundedBy>
- <gml:featureMember>
- <ogr:donut fid="F0">
- <ogr:geometryProperty><gml:LineString><gml:coordinates>
- 70.710678118654755,70.710678118654741,0 141.42135623730951,0.0,
- 0 70.710678118654741,-70.710678118654741,0 0.000000000000043,
- 0.000000000000057,0 70.710678118654755,
- 70.710678118654741,0</gml:coordinates>
- </gml:LineString></ogr:geometryProperty>
- </ogr:donut>
- </gml:featureMember>
- <gml:featureMember>
- <ogr:donut fid="F0">
- <ogr:geometryProperty><gml:LineString><gml:coordinates>50.000000000000014,
- 0.000000000000021,0 71.213203435596427,-21.213203435596419,0
- 92.426406871192853,0.0,0 71.213203435596427,21.213203435596423,0
- 50.000000000000014,0.000000000000021,0</gml:coordinates>
- </gml:LineString></ogr:geometryProperty>
- </ogr:donut>
- </gml:featureMember>
-</ogr:FeatureCollection>
- </Value>
- </ows:ComplexValue>
- </Input>
-
- <Input>
- <ows:Identifier>x1</ows:Identifier>
- <ows:LiteralValue>591679.31</ows:LiteralValue>
- </Input>
- <Input>
- <ows:Identifier>y1</ows:Identifier>
- <ows:LiteralValue>4927205.07</ows:LiteralValue>
- </Input>
- <Input>
- <ows:Identifier>x2</ows:Identifier>
- <ows:LiteralValue>608642.625</ows:LiteralValue>
- </Input>
- <Input>
- <ows:Identifier>y2</ows:Identifier>
- <ows:LiteralValue>4915876.31</ows:LiteralValue>
- </Input>
- </DataInputs>
-</Execute>
-</PRE>
-
-<P>
-You can see, that there are 4 inputs in this process:
-
-<P>
-
-<OL>
-<LI>ComplexValue GML File
-</LI>
-<LI>x1 coordinate
-</LI>
-<LI>y1 coordinate
-</LI>
-<LI>x2 coordinate
-</LI>
-<LI>y2 coordinate
-
-</LI>
-</OL>
-<H2><A NAME="SECTION00082000000000000000">
-Output</A>
-</H2>
-
-<P>
-The output from PyWPS can be either XML file or results of processes directly. In default configuration, no files are stored on the server, resulting values (maps) are
- returned to the client. If you want to return XML file with outputs
- encoding, you have to enable it in you process configuration with
- option <TT>storeSupported</TT>:
-
-<P>
-<PRE>
- self.storeSupported = "true"
-</PRE>
-
-<P>
-And you have to call the PyWPS with "store=true" option:
-
-<P>
-<PRE>
- version=0.4.0&service=Wps&request=Execute&Identifier=your_process&\
- datainputs=input1,value1,input2,value2&store=true
-</PRE>
-
-<P>
-Or in XML input:
-
-<P>
-<PRE>
-request=<?xml version="1.0" encoding="utf-8"?>
-<Execute service="WPS" version="0.4.0" store="true" status="false"
-xmlns="http://www.opengeospatial.net/wps"
-xmlns:ows="http://www.opengeospatial.net/ows"
-xmlns:xlink="http://www.w3.org/1999/xlink"
-xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-xsi:schemaLocation="http://www.opengeospatial.net/wps/wpsDescribeProcess.xsd">
-
-...
-</PRE>
-
-<P>
-This will cause PyWPS to look after <TT>self.status</TT> array in your process in form form
-<PRE>
- self.status = ["Message", Percent_Done]
-</PRE>
-and generate XML file in statusLocation with this embed message. E.g.
-
-<P>
-<PRE>
- self.status = ["Generating raster map", 50]
-</PRE>
-or better
-<PRE>
- self.SetStatus("Generarting raster map", 50_Done)
-</PRE>
-
-<P>
-will become
-
-<P>
-<PRE>
-...
- <Status>
- <ProcessStarted message="Generating raster map" percentCompleted="50"/>
- </Status>
-...
-</PRE>
-
-<P>
-
-<P>
-
-<H1><A NAME="SECTION00090000000000000000">
-Example process: <TT>addvalue</TT></A>
-</H1>
- This sample process describes how to made your own WPS processes. Purpose of this process is:
-
-<UL>
-<LI>Download input raster map from some server
-</LI>
-<LI>Convert it to integer values
-</LI>
-<LI>Add input value to each raster cell
-</LI>
-<LI>Convert raster to vector
-</LI>
-<LI>Export raster to TIFF and vector to GML. Vector file will be embed ot output XML file.
-
-</LI>
-</UL>
- <PRE>
-"""
-
-pywps process example:
-
-addvalue: Adds some value to raster map
-"""
-# Author: Jachym Cepicky
-# http://les-ejk.cz
-# Lince: GNU/GPL
-#
-# Copyright (C) 2006 Jachym Cepicky
-
-import os,time,string,sys,shutil
-from pywps.Wps.process import GRASSWPSProcess
-
-class Process (GRASSWPSProcess):
- #
- # Initialization
- #
- def __init__(self):
- GRASSWPSProcess.__init__(self,
- Identifier="Addvalue",
- Title="Add some value to input raster map",
- processVersion = "0.2",
- statusSupported="true",
- storeSupported="true",
- grassLocation = None)
-
-
- #
- # Inputs
- self.AddComplexInput(Identifier="input",
- Title="Input raster map",
- Formats=["image/tiff"])
- self.AddLiteralInput(Identifier="value",
- Title="Value to be added",
- type=type(0))
-
- #
- # Outputs
- self.AddComplexReferenceOutput(Identifier="output",
- Title="Resulting output map",
- Formats=["image/tiff"])
- #
- # Execute part of the process
- #
- def execute(self):
- """
- This function
- 1) Imports the raster map
- 2) runs r.mapcalc out=in+value
- 3) Exports the raster map
- 4) returns the new file name or 'None' if something went wrong
- """
-
- # import of the data
- self.SetStatus("Importing data")
- if not self.GCmd("r.in.gdal -o in=%s out=input" %\
- (self.GetInputValue("input"))):
- return "Could not import raster file"
- self.SetStatus("Importing data",10)
-
- # compositing 3 bands to one raster file
- for gdalinfoln in os.popen("gdalinfo %s" %\
- (self.GetInputValue("input"))):
- if gdalinfoln.split()[0] == "Band" and gdalinfoln.split()[1] == "3":
- self.GCmd("""g.region rast=input.red """)
- self.GCmd("r.composite r=input.red b=input.blue g=input.green out=input")
-
- # region setting
- self.GCmd("""g.region rast=input""")
-
- # adding the value
- self.SetStatus("Adding new value to raster map",50)
- self.GCmd("r.mapcalc output='input+%f'" % float(self.GetInputValue('value')))
-
- # output
- self.SetStatus("Raster file export", 90)
- self.GCmd("r.out.gdal type=Int32 in=output out=%s" % "output.tif")
-
- # setting output values
- self.SetOutputValue("output","output.tif")
- if "output.tif" in os.listdir(os.curdir):
- return # OK
- else:
- return "Output file not created!" # FAILED
- """
-</PRE>
-
-<P>
-
-<H1><A NAME="SECTION000100000000000000000">
-KVP request encoding of <TT>addvalue</TT></A>
-</H1>
- This process can be lunched with URL:
-<BR>
-http://localhost/cgi-bin/wps.py?service=wps&version=0.4.0&identifier=addvalue&request=execute&<SPAN CLASS="MATH"><IMG
- WIDTH="13" HEIGHT="36" ALIGN="MIDDLE" BORDER="0"
- SRC="img2.png"
- ALT="$\backslash$"></SPAN>
-<BR>
-datainputs=input,http://localhost/data/raster.tif,value,250&status=true&store=true
-
-<P>
-
-<H1><A NAME="SECTION000110000000000000000">
-XML request encoding <TT>addvalue</TT></A>
-</H1>
-<PRE>
-request=<?xml version='1.0' encoding='UTF-8' standalone='yes'?>
-<Execute service='wps' version='0.4.0' store='true' status='false'
- xmlns="http://www.opengeospatial.net/wps"
- xmlns:ows="http://www.opengeospatial.net/ows">
-<ows:Identifier>addvalue</ows:Identifier>
-<DataInputs>
- <Input>
- <ows:Identifier>input</ows:Identifier>
- <ComplexValueReference reference='http://localhost/wps/data/soils.tif' />
- </Input>
- <Input>
- <ows:Identifier>value</ows:Identifier>
- <LiteralValue>250</LiteralValue>
- </Input>
- <!-- Input>
- <ows:Identifier>bbox</ows:Identifier>
- <BoundingBoxValue>
- <BoundingBox>
- <LowerCorner>-1 -1</LowerCorner>
- <UpperCorner>10 10</UpperCorner>
- </BoundingBox>
- </BoundingBoxValue>
- </Input -->
-</DataInputs>
-</Execute>
-</PRE>
-
-<P>
-
-<P>
-
-<H1><A NAME="SECTION000120000000000000000">
-Licence of PyWPS</A>
-</H1>
-
-<P>
-<DIV ALIGN="CENTER">
-<BIG CLASS="XLARGE">The GNU General Public License</BIG>
-</DIV>
-<P>
-<DIV ALIGN="CENTER"></DIV>
-<P>
-<DIV ALIGN="CENTER">Version 2, June 1991
-</DIV>
-<P>
-<DIV ALIGN="CENTER">Copyright © 1989, 1991 Free Software Foundation, Inc.
-</DIV>
-<P>
-<DIV ALIGN="CENTER"></DIV>
-<P><P>
-<BR>
-<DIV ALIGN="CENTER"></DIV>
-<P>
-<DIV ALIGN="CENTER">51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
-</DIV>
-<P>
-<DIV ALIGN="CENTER"></DIV>
-<P><P>
-<BR>
-<DIV ALIGN="CENTER"></DIV>
-<P>
-<DIV ALIGN="CENTER">Everyone is permitted to copy and distribute verbatim copies
-of this license document, but changing it is not allowed.
-
-
-</DIV>
-
-<P>
-
-<H3>Preamble:</H3>
-<DIV CLASS="ABSTRACT">
-The licenses for most software are designed to take away your freedom to
-share and change it. By contrast, the GNU General Public License is
-intended to guarantee your freedom to share and change free software--to
-make sure the software is free for all its users. This General Public
-License applies to most of the Free Software Foundation's software and to
-any other program whose authors commit to using it. (Some other Free
-Software Foundation software is covered by the GNU Library General Public
-License instead.) You can apply it to your programs, too.
-
-<P>
-When we speak of free software, we are referring to freedom, not price.
-Our General Public Licenses are designed to make sure that you have the
-freedom to distribute copies of free software (and charge for this service
-if you wish), that you receive source code or can get it if you want it,
-that you can change the software or use pieces of it in new free programs;
-and that you know you can do these things.
-
-<P>
-To protect your rights, we need to make restrictions that forbid anyone to
-deny you these rights or to ask you to surrender the rights. These
-restrictions translate to certain responsibilities for you if you
-distribute copies of the software, or if you modify it.
-
-<P>
-For example, if you distribute copies of such a program, whether gratis or
-for a fee, you must give the recipients all the rights that you have. You
-must make sure that they, too, receive or can get the source code. And
-you must show them these terms so they know their rights.
-
-<P>
-We protect your rights with two steps: (1) copyright the software, and (2)
-offer you this license which gives you legal permission to copy,
-distribute and/or modify the software.
-
-<P>
-Also, for each author's protection and ours, we want to make certain that
-everyone understands that there is no warranty for this free software. If
-the software is modified by someone else and passed on, we want its
-recipients to know that what they have is not the original, so that any
-problems introduced by others will not reflect on the original authors'
-reputations.
-
-<P>
-Finally, any free program is threatened constantly by software patents.
-We wish to avoid the danger that redistributors of a free program will
-individually obtain patent licenses, in effect making the program
-proprietary. To prevent this, we have made it clear that any patent must
-be licensed for everyone's free use or not licensed at all.
-
-<P>
-The precise terms and conditions for copying, distribution and
-modification follow.
-</DIV>
-<P>
-
-<P>
-<DIV ALIGN="CENTER">
-<BIG CLASS="XLARGE">GNU G<SMALL>ENERAL </SMALL>P<SMALL>UBLIC </SMALL>L<SMALL>ICENSE
-
-<BR></SMALL>
-<BR>
-T<SMALL>ERMS AND </SMALL>C<SMALL>ONDITIONS </SMALL>F<SMALL>OR </SMALL>C<SMALL>OPYING, </SMALL>D<SMALL>ISTRIBUTION AND </SMALL>M<SMALL>ODIFICATION</SMALL></BIG>
-
-</DIV>
-
-<P>
-
-<OL>
-<LI><P>
-This License applies to any program or other work which contains a notice
-placed by the copyright holder saying it may be distributed under the
-terms of this General Public License. The ``Program'', below, refers to
-any such program or work, and a ``work based on the Program'' means either
-the Program or any derivative work under copyright law: that is to say, a
-work containing the Program or a portion of it, either verbatim or with
-modifications and/or translated into another language. (Hereinafter,
-translation is included without limitation in the term ``modification''.)
-Each licensee is addressed as ``you''.
-
-<P>
-Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope. The act of
-running the Program is not restricted, and the output from the Program
-is covered only if its contents constitute a work based on the
-Program (independent of having been made by running the Program).
-Whether that is true depends on what the Program does.
-
-<P>
-</LI>
-<LI>You may copy and distribute verbatim copies of the Program's source
- code as you receive it, in any medium, provided that you conspicuously
- and appropriately publish on each copy an appropriate copyright notice
- and disclaimer of warranty; keep intact all the notices that refer to
- this License and to the absence of any warranty; and give any other
- recipients of the Program a copy of this License along with the Program.
-
-<P>
-You may charge a fee for the physical act of transferring a copy, and you
-may at your option offer warranty protection in exchange for a fee.
-
-<P>
-</LI>
-<LI><P>
-You may modify your copy or copies of the Program or any portion
-of it, thus forming a work based on the Program, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
-<P>
-
-<OL>
-<LI><P>
-You must cause the modified files to carry prominent notices stating that
-you changed the files and the date of any change.
-
-<P>
-</LI>
-<LI><P>
-You must cause any work that you distribute or publish, that in
-whole or in part contains or is derived from the Program or any
-part thereof, to be licensed as a whole at no charge to all third
-parties under the terms of this License.
-
-<P>
-</LI>
-<LI>If the modified program normally reads commands interactively
-when run, you must cause it, when started running for such
-interactive use in the most ordinary way, to print or display an
-announcement including an appropriate copyright notice and a
-notice that there is no warranty (or else, saying that you provide
-a warranty) and that users may redistribute the program under
-these conditions, and telling the user how to view a copy of this
-License. (Exception: if the Program itself is interactive but
-does not normally print such an announcement, your work based on
-the Program is not required to print an announcement.)
-
-<P>
-</LI>
-</OL>
-
-<P>
-These requirements apply to the modified work as a whole. If
-identifiable sections of that work are not derived from the Program,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works. But when you
-distribute the same sections as part of a whole which is a work based
-on the Program, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote it.
-
-<P>
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Program.
-
-<P>
-In addition, mere aggregation of another work not based on the Program
-with the Program (or with a work based on the Program) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
-<P>
-</LI>
-<LI>You may copy and distribute the Program (or a work based on it,
-under Section 2) in object code or executable form under the terms of
-Sections 1 and 2 above provided that you also do one of the following:
-
-<P>
-
-<OL>
-<LI><P>
-Accompany it with the complete corresponding machine-readable
-source code, which must be distributed under the terms of Sections
-1 and 2 above on a medium customarily used for software interchange; or,
-
-<P>
-</LI>
-<LI><P>
-Accompany it with a written offer, valid for at least three
-years, to give any third party, for a charge no more than your
-cost of physically performing source distribution, a complete
-machine-readable copy of the corresponding source code, to be
-distributed under the terms of Sections 1 and 2 above on a medium
-customarily used for software interchange; or,
-
-<P>
-</LI>
-<LI><P>
-Accompany it with the information you received as to the offer
-to distribute corresponding source code. (This alternative is
-allowed only for noncommercial distribution and only if you
-received the program in object code or executable form with such
-an offer, in accord with Subsection b above.)
-
-<P>
-</LI>
-</OL>
-
-<P>
-The source code for a work means the preferred form of the work for
-making modifications to it. For an executable work, complete source
-code means all the source code for all modules it contains, plus any
-associated interface definition files, plus the scripts used to
-control compilation and installation of the executable. However, as a
-special exception, the source code distributed need not include
-anything that is normally distributed (in either source or binary
-form) with the major components (compiler, kernel, and so on) of the
-operating system on which the executable runs, unless that component
-itself accompanies the executable.
-
-<P>
-If distribution of executable or object code is made by offering
-access to copy from a designated place, then offering equivalent
-access to copy the source code from the same place counts as
-distribution of the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
-<P>
-</LI>
-<LI>You may not copy, modify, sublicense, or distribute the Program
-except as expressly provided under this License. Any attempt
-otherwise to copy, modify, sublicense or distribute the Program is
-void, and will automatically terminate your rights under this License.
-However, parties who have received copies, or rights, from you under
-this License will not have their licenses terminated so long as such
-parties remain in full compliance.
-
-<P>
-</LI>
-<LI>You are not required to accept this License, since you have not
-signed it. However, nothing else grants you permission to modify or
-distribute the Program or its derivative works. These actions are
-prohibited by law if you do not accept this License. Therefore, by
-modifying or distributing the Program (or any work based on the
-Program), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Program or works based on it.
-
-<P>
-</LI>
-<LI>Each time you redistribute the Program (or any work based on the
-Program), the recipient automatically receives a license from the
-original licensor to copy, distribute or modify the Program subject to
-these terms and conditions. You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties to
-this License.
-
-<P>
-</LI>
-<LI>If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License. If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Program at all. For example, if a patent
-license would not permit royalty-free redistribution of the Program by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Program.
-
-<P>
-If any portion of this section is held invalid or unenforceable under
-any particular circumstance, the balance of the section is intended to
-apply and the section as a whole is intended to apply in other
-circumstances.
-
-<P>
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system, which is
-implemented by public license practices. Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-<P>
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-
-<P>
-</LI>
-<LI>If the distribution and/or use of the Program is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Program under this License
-may add an explicit geographical distribution limitation excluding
-those countries, so that distribution is permitted only in or among
-countries not thus excluded. In such case, this License incorporates
-the limitation as if written in the body of this License.
-
-<P>
-</LI>
-<LI>The Free Software Foundation may publish revised and/or new versions
-of the General Public License from time to time. Such new versions will
-be similar in spirit to the present version, but may differ in detail to
-address new problems or concerns.
-
-<P>
-Each version is given a distinguishing version number. If the Program
-specifies a version number of this License which applies to it and ``any
-later version'', you have the option of following the terms and conditions
-either of that version or of any later version published by the Free
-Software Foundation. If the Program does not specify a version number of
-this License, you may choose any version ever published by the Free Software
-Foundation.
-
-<P>
-</LI>
-<LI>If you wish to incorporate parts of the Program into other free
-programs whose distribution conditions are different, write to the author
-to ask for permission. For software which is copyrighted by the Free
-Software Foundation, write to the Free Software Foundation; we sometimes
-make exceptions for this. Our decision will be guided by the two goals
-of preserving the free status of all derivatives of our free software and
-of promoting the sharing and reuse of software generally.
-
-<P>
-<DIV ALIGN="CENTER">
-<BIG CLASS="XLARGE">
-N<SMALL>O </SMALL>W<SMALL>ARRANTY
-</SMALL></BIG>
-
-</DIV>
-
-<P>
-</LI>
-<LI>B<SMALL>ECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
-FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. </SMALL>E<SMALL>XCEPT WHEN
-OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
-PROVIDE THE PROGRAM ``AS IS'' WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
-OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. </SMALL>T<SMALL>HE ENTIRE RISK AS
-TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. </SMALL>S<SMALL>HOULD THE
-PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
-REPAIR OR CORRECTION.</SMALL>
-
-<P>
-</LI>
-<LI>I<SMALL>N NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
-WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
-REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
-INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
-OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
-TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
-YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
-PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGES.</SMALL>
-
-<P>
-</LI>
-</OL>
-
-<P>
-<DIV ALIGN="CENTER">
-<BIG CLASS="XLARGE">E<SMALL>ND OF </SMALL>T<SMALL>ERMS AND </SMALL>C<SMALL>ONDITIONS</SMALL></BIG>
-
-</DIV>
-
-<P>
-
-<H1><A NAME="SECTION000130000000000000000">
-Licence of this document</A>
-</H1>
-
-<P>
-<DIV ALIGN="CENTER">
-</DIV>
-<P>
-<DIV ALIGN="CENTER"><BIG CLASS="XLARGE">GNU Free Documentation License</BIG>
-</DIV>
-<P>
-<DIV ALIGN="CENTER">Version 1.2, November 2002
-</DIV>
-<P>
-<DIV ALIGN="CENTER">Copyright ©2000,2001,2002 Free Software Foundation, Inc.
-</DIV>
-<P>
-<DIV ALIGN="CENTER"></DIV>
-<P><P>
-<BR>
-<DIV ALIGN="CENTER"></DIV>
-<P>
-<DIV ALIGN="CENTER">51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-</DIV>
-<P>
-<DIV ALIGN="CENTER"></DIV>
-<P><P>
-<BR>
-<DIV ALIGN="CENTER"></DIV>
-<P>
-<DIV ALIGN="CENTER">Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
-</DIV>
-
-<P>
-<DIV ALIGN="CENTER">
-<B><BIG CLASS="LARGE">Preamble</BIG></B>
-
-</DIV>
-
-<P>
-The purpose of this License is to make a manual, textbook, or other
-functional and useful document "free" in the sense of freedom: to
-assure everyone the effective freedom to copy and redistribute it,
-with or without modifying it, either commercially or noncommercially.
-Secondarily, this License preserves for the author and publisher a way
-to get credit for their work, while not being considered responsible
-for modifications made by others.
-
-<P>
-This License is a kind of "copyleft", which means that derivative
-works of the document must themselves be free in the same sense. It
-complements the GNU General Public License, which is a copyleft
-license designed for free software.
-
-<P>
-We have designed this License in order to use it for manuals for free
-software, because free software needs free documentation: a free
-program should come with manuals providing the same freedoms that the
-software does. But this License is not limited to software manuals;
-it can be used for any textual work, regardless of subject matter or
-whether it is published as a printed book. We recommend this License
-principally for works whose purpose is instruction or reference.
-
-<P>
-<DIV ALIGN="CENTER">
-<BIG CLASS="XLARGE"><B>1. APPLICABILITY AND DEFINITIONS</B></BIG>
-
-</DIV>
-
-<P>
-This License applies to any manual or other work, in any medium, that
-contains a notice placed by the copyright holder saying it can be
-distributed under the terms of this License. Such a notice grants a
-world-wide, royalty-free license, unlimited in duration, to use that
-work under the conditions stated herein. The <SPAN CLASS="textbf">"Document"</SPAN>, below,
-refers to any such manual or work. Any member of the public is a
-licensee, and is addressed as <SPAN CLASS="textbf">"you"</SPAN>. You accept the license if you
-copy, modify or distribute the work in a way requiring permission
-under copyright law.
-
-<P>
-A <SPAN CLASS="textbf">"Modified Version"</SPAN> of the Document means any work containing the
-Document or a portion of it, either copied verbatim, or with
-modifications and/or translated into another language.
-
-<P>
-A <SPAN CLASS="textbf">"Secondary Section"</SPAN> is a named appendix or a front-matter section of
-the Document that deals exclusively with the relationship of the
-publishers or authors of the Document to the Document's overall subject
-(or to related matters) and contains nothing that could fall directly
-within that overall subject. (Thus, if the Document is in part a
-textbook of mathematics, a Secondary Section may not explain any
-mathematics.) The relationship could be a matter of historical
-connection with the subject or with related matters, or of legal,
-commercial, philosophical, ethical or political position regarding
-them.
-
-<P>
-The <SPAN CLASS="textbf">"Invariant Sections"</SPAN> are certain Secondary Sections whose titles
-are designated, as being those of Invariant Sections, in the notice
-that says that the Document is released under this License. If a
-section does not fit the above definition of Secondary then it is not
-allowed to be designated as Invariant. The Document may contain zero
-Invariant Sections. If the Document does not identify any Invariant
-Sections then there are none.
-
-<P>
-The <SPAN CLASS="textbf">"Cover Texts"</SPAN> are certain short passages of text that are listed,
-as Front-Cover Texts or Back-Cover Texts, in the notice that says that
-the Document is released under this License. A Front-Cover Text may
-be at most 5 words, and a Back-Cover Text may be at most 25 words.
-
-<P>
-A <SPAN CLASS="textbf">"Transparent"</SPAN> copy of the Document means a machine-readable copy,
-represented in a format whose specification is available to the
-general public, that is suitable for revising the document
-straightforwardly with generic text editors or (for images composed of
-pixels) generic paint programs or (for drawings) some widely available
-drawing editor, and that is suitable for input to text formatters or
-for automatic translation to a variety of formats suitable for input
-to text formatters. A copy made in an otherwise Transparent file
-format whose markup, or absence of markup, has been arranged to thwart
-or discourage subsequent modification by readers is not Transparent.
-An image format is not Transparent if used for any substantial amount
-of text. A copy that is not "Transparent" is called <SPAN CLASS="textbf">"Opaque"</SPAN>.
-
-<P>
-Examples of suitable formats for Transparent copies include plain
-ASCII without markup, Texinfo input format, LaTeX input format, SGML
-or XML using a publicly available DTD, and standard-conforming simple
-HTML, PostScript or PDF designed for human modification. Examples of
-transparent image formats include PNG, XCF and JPG. Opaque formats
-include proprietary formats that can be read and edited only by
-proprietary word processors, SGML or XML for which the DTD and/or
-processing tools are not generally available, and the
-machine-generated HTML, PostScript or PDF produced by some word
-processors for output purposes only.
-
-<P>
-The <SPAN CLASS="textbf">"Title Page"</SPAN> means, for a printed book, the title page itself,
-plus such following pages as are needed to hold, legibly, the material
-this License requires to appear in the title page. For works in
-formats which do not have any title page as such, "Title Page" means
-the text near the most prominent appearance of the work's title,
-preceding the beginning of the body of the text.
-
-<P>
-A section <SPAN CLASS="textbf">"Entitled XYZ"</SPAN> means a named subunit of the Document whose
-title either is precisely XYZ or contains XYZ in parentheses following
-text that translates XYZ in another language. (Here XYZ stands for a
-specific section name mentioned below, such as <SPAN CLASS="textbf">"Acknowledgements"</SPAN>,
-<SPAN CLASS="textbf">"Dedications"</SPAN>, <SPAN CLASS="textbf">"Endorsements"</SPAN>, or <SPAN CLASS="textbf">"History"</SPAN>.)
-To <SPAN CLASS="textbf">"Preserve the Title"</SPAN>
-of such a section when you modify the Document means that it remains a
-section "Entitled XYZ" according to this definition.
-
-<P>
-The Document may include Warranty Disclaimers next to the notice which
-states that this License applies to the Document. These Warranty
-Disclaimers are considered to be included by reference in this
-License, but only as regards disclaiming warranties: any other
-implication that these Warranty Disclaimers may have is void and has
-no effect on the meaning of this License.
-
-<P>
-<DIV ALIGN="CENTER">
-<BIG CLASS="XLARGE"><B>2. VERBATIM COPYING</B></BIG>
-
-</DIV>
-
-<P>
-You may copy and distribute the Document in any medium, either
-commercially or noncommercially, provided that this License, the
-copyright notices, and the license notice saying this License applies
-to the Document are reproduced in all copies, and that you add no other
-conditions whatsoever to those of this License. You may not use
-technical measures to obstruct or control the reading or further
-copying of the copies you make or distribute. However, you may accept
-compensation in exchange for copies. If you distribute a large enough
-number of copies you must also follow the conditions in section 3.
-
-<P>
-You may also lend copies, under the same conditions stated above, and
-you may publicly display copies.
-
-<P>
-<DIV ALIGN="CENTER">
-<BIG CLASS="XLARGE"><B>3. COPYING IN QUANTITY</B></BIG>
-
-</DIV>
-
-<P>
-If you publish printed copies (or copies in media that commonly have
-printed covers) of the Document, numbering more than 100, and the
-Document's license notice requires Cover Texts, you must enclose the
-copies in covers that carry, clearly and legibly, all these Cover
-Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on
-the back cover. Both covers must also clearly and legibly identify
-you as the publisher of these copies. The front cover must present
-the full title with all words of the title equally prominent and
-visible. You may add other material on the covers in addition.
-Copying with changes limited to the covers, as long as they preserve
-the title of the Document and satisfy these conditions, can be treated
-as verbatim copying in other respects.
-
-<P>
-If the required texts for either cover are too voluminous to fit
-legibly, you should put the first ones listed (as many as fit
-reasonably) on the actual cover, and continue the rest onto adjacent
-pages.
-
-<P>
-If you publish or distribute Opaque copies of the Document numbering
-more than 100, you must either include a machine-readable Transparent
-copy along with each Opaque copy, or state in or with each Opaque copy
-a computer-network location from which the general network-using
-public has access to download using public-standard network protocols
-a complete Transparent copy of the Document, free of added material.
-If you use the latter option, you must take reasonably prudent steps,
-when you begin distribution of Opaque copies in quantity, to ensure
-that this Transparent copy will remain thus accessible at the stated
-location until at least one year after the last time you distribute an
-Opaque copy (directly or through your agents or retailers) of that
-edition to the public.
-
-<P>
-It is requested, but not required, that you contact the authors of the
-Document well before redistributing any large number of copies, to give
-them a chance to provide you with an updated version of the Document.
-
-<P>
-<DIV ALIGN="CENTER">
-<BIG CLASS="XLARGE"><B>4. MODIFICATIONS</B></BIG>
-
-</DIV>
-
-<P>
-You may copy and distribute a Modified Version of the Document under
-the conditions of sections 2 and 3 above, provided that you release
-the Modified Version under precisely this License, with the Modified
-Version filling the role of the Document, thus licensing distribution
-and modification of the Modified Version to whoever possesses a copy
-of it. In addition, you must do these things in the Modified Version:
-
-<P>
-<DL COMPACT>
-<DT>A.</DT>
-<DD>Use in the Title Page (and on the covers, if any) a title distinct
- from that of the Document, and from those of previous versions
- (which should, if there were any, be listed in the History section
- of the Document). You may use the same title as a previous version
- if the original publisher of that version gives permission.
-
-<P>
-</DD>
-<DT>B.</DT>
-<DD>List on the Title Page, as authors, one or more persons or entities
- responsible for authorship of the modifications in the Modified
- Version, together with at least five of the principal authors of the
- Document (all of its principal authors, if it has fewer than five),
- unless they release you from this requirement.
-
-<P>
-</DD>
-<DT>C.</DT>
-<DD>State on the Title page the name of the publisher of the
- Modified Version, as the publisher.
-
-<P>
-</DD>
-<DT>D.</DT>
-<DD>Preserve all the copyright notices of the Document.
-
-<P>
-</DD>
-<DT>E.</DT>
-<DD>Add an appropriate copyright notice for your modifications
- adjacent to the other copyright notices.
-
-<P>
-</DD>
-<DT>F.</DT>
-<DD>Include, immediately after the copyright notices, a license notice
- giving the public permission to use the Modified Version under the
- terms of this License, in the form shown in the Addendum below.
-
-<P>
-</DD>
-<DT>G.</DT>
-<DD>Preserve in that license notice the full lists of Invariant Sections
- and required Cover Texts given in the Document's license notice.
-
-<P>
-</DD>
-<DT>H.</DT>
-<DD>Include an unaltered copy of this License.
-
-<P>
-</DD>
-<DT>I.</DT>
-<DD>Preserve the section Entitled "History", Preserve its Title, and add
- to it an item stating at least the title, year, new authors, and
- publisher of the Modified Version as given on the Title Page. If
- there is no section Entitled "History" in the Document, create one
- stating the title, year, authors, and publisher of the Document as
- given on its Title Page, then add an item describing the Modified
- Version as stated in the previous sentence.
-
-<P>
-</DD>
-<DT>J.</DT>
-<DD>Preserve the network location, if any, given in the Document for
- public access to a Transparent copy of the Document, and likewise
- the network locations given in the Document for previous versions
- it was based on. These may be placed in the "History" section.
- You may omit a network location for a work that was published at
- least four years before the Document itself, or if the original
- publisher of the version it refers to gives permission.
-
-<P>
-</DD>
-<DT>K.</DT>
-<DD>For any section Entitled "Acknowledgements" or "Dedications",
- Preserve the Title of the section, and preserve in the section all
- the substance and tone of each of the contributor acknowledgements
- and/or dedications given therein.
-
-<P>
-</DD>
-<DT>L.</DT>
-<DD>Preserve all the Invariant Sections of the Document,
- unaltered in their text and in their titles. Section numbers
- or the equivalent are not considered part of the section titles.
-
-<P>
-</DD>
-<DT>M.</DT>
-<DD>Delete any section Entitled "Endorsements". Such a section
- may not be included in the Modified Version.
-
-<P>
-</DD>
-<DT>N.</DT>
-<DD>Do not retitle any existing section to be Entitled "Endorsements"
- or to conflict in title with any Invariant Section.
-
-<P>
-</DD>
-<DT>O.</DT>
-<DD>Preserve any Warranty Disclaimers.
-</DD>
-</DL>
-
-<P>
-If the Modified Version includes new front-matter sections or
-appendices that qualify as Secondary Sections and contain no material
-copied from the Document, you may at your option designate some or all
-of these sections as invariant. To do this, add their titles to the
-list of Invariant Sections in the Modified Version's license notice.
-These titles must be distinct from any other section titles.
-
-<P>
-You may add a section Entitled "Endorsements", provided it contains
-nothing but endorsements of your Modified Version by various
-parties-for example, statements of peer review or that the text has
-been approved by an organization as the authoritative definition of a
-standard.
-
-<P>
-You may add a passage of up to five words as a Front-Cover Text, and a
-passage of up to 25 words as a Back-Cover Text, to the end of the list
-of Cover Texts in the Modified Version. Only one passage of
-Front-Cover Text and one of Back-Cover Text may be added by (or
-through arrangements made by) any one entity. If the Document already
-includes a cover text for the same cover, previously added by you or
-by arrangement made by the same entity you are acting on behalf of,
-you may not add another; but you may replace the old one, on explicit
-permission from the previous publisher that added the old one.
-
-<P>
-The author(s) and publisher(s) of the Document do not by this License
-give permission to use their names for publicity for or to assert or
-imply endorsement of any Modified Version.
-
-<P>
-<DIV ALIGN="CENTER">
-<BIG CLASS="XLARGE"><B>5. COMBINING DOCUMENTS</B></BIG>
-
-</DIV>
-
-<P>
-You may combine the Document with other documents released under this
-License, under the terms defined in section 4 above for modified
-versions, provided that you include in the combination all of the
-Invariant Sections of all of the original documents, unmodified, and
-list them all as Invariant Sections of your combined work in its
-license notice, and that you preserve all their Warranty Disclaimers.
-
-<P>
-The combined work need only contain one copy of this License, and
-multiple identical Invariant Sections may be replaced with a single
-copy. If there are multiple Invariant Sections with the same name but
-different contents, make the title of each such section unique by
-adding at the end of it, in parentheses, the name of the original
-author or publisher of that section if known, or else a unique number.
-Make the same adjustment to the section titles in the list of
-Invariant Sections in the license notice of the combined work.
-
-<P>
-In the combination, you must combine any sections Entitled "History"
-in the various original documents, forming one section Entitled
-"History"; likewise combine any sections Entitled "Acknowledgements",
-and any sections Entitled "Dedications". You must delete all sections
-Entitled "Endorsements".
-
-<P>
-<DIV ALIGN="CENTER">
-<BIG CLASS="XLARGE"><B>6. COLLECTIONS OF DOCUMENTS</B></BIG>
-
-</DIV>
-
-<P>
-You may make a collection consisting of the Document and other documents
-released under this License, and replace the individual copies of this
-License in the various documents with a single copy that is included in
-the collection, provided that you follow the rules of this License for
-verbatim copying of each of the documents in all other respects.
-
-<P>
-You may extract a single document from such a collection, and distribute
-it individually under this License, provided you insert a copy of this
-License into the extracted document, and follow this License in all
-other respects regarding verbatim copying of that document.
-
-<P>
-<DIV ALIGN="CENTER">
-<BIG CLASS="XLARGE"><B>7. AGGREGATION WITH INDEPENDENT WORKS</B></BIG>
-
-</DIV>
-
-<P>
-A compilation of the Document or its derivatives with other separate
-and independent documents or works, in or on a volume of a storage or
-distribution medium, is called an "aggregate" if the copyright
-resulting from the compilation is not used to limit the legal rights
-of the compilation's users beyond what the individual works permit.
-When the Document is included in an aggregate, this License does not
-apply to the other works in the aggregate which are not themselves
-derivative works of the Document.
-
-<P>
-If the Cover Text requirement of section 3 is applicable to these
-copies of the Document, then if the Document is less than one half of
-the entire aggregate, the Document's Cover Texts may be placed on
-covers that bracket the Document within the aggregate, or the
-electronic equivalent of covers if the Document is in electronic form.
-Otherwise they must appear on printed covers that bracket the whole
-aggregate.
-
-<P>
-<DIV ALIGN="CENTER">
-<BIG CLASS="XLARGE"><B>8. TRANSLATION</B></BIG>
-
-</DIV>
-
-<P>
-Translation is considered a kind of modification, so you may
-distribute translations of the Document under the terms of section 4.
-Replacing Invariant Sections with translations requires special
-permission from their copyright holders, but you may include
-translations of some or all Invariant Sections in addition to the
-original versions of these Invariant Sections. You may include a
-translation of this License, and all the license notices in the
-Document, and any Warranty Disclaimers, provided that you also include
-the original English version of this License and the original versions
-of those notices and disclaimers. In case of a disagreement between
-the translation and the original version of this License or a notice
-or disclaimer, the original version will prevail.
-
-<P>
-If a section in the Document is Entitled "Acknowledgements",
-"Dedications", or "History", the requirement (section 4) to Preserve
-its Title (section 1) will typically require changing the actual
-title.
-
-<P>
-<DIV ALIGN="CENTER">
-<BIG CLASS="XLARGE"><B>9. TERMINATION</B></BIG>
-
-</DIV>
-
-<P>
-You may not copy, modify, sublicense, or distribute the Document except
-as expressly provided for under this License. Any other attempt to
-copy, modify, sublicense or distribute the Document is void, and will
-automatically terminate your rights under this License. However,
-parties who have received copies, or rights, from you under this
-License will not have their licenses terminated so long as such
-parties remain in full compliance.
-
-<P>
-<DIV ALIGN="CENTER">
-<BIG CLASS="XLARGE"><B>10. FUTURE REVISIONS OF THIS LICENSE</B></BIG>
-
-</DIV>
-
-<P>
-The Free Software Foundation may publish new, revised versions
-of the GNU Free Documentation License from time to time. Such new
-versions will be similar in spirit to the present version, but may
-differ in detail to address new problems or concerns. See
-http://www.gnu.org/copyleft/.
-
-<P>
-Each version of the License is given a distinguishing version number.
-If the Document specifies that a particular numbered version of this
-License "or any later version" applies to it, you have the option of
-following the terms and conditions either of that specified version or
-of any later version that has been published (not as a draft) by the
-Free Software Foundation. If the Document does not specify a version
-number of this License, you may choose any version ever published (not
-as a draft) by the Free Software Foundation.
-
-<P>
-
-<H1><A NAME="SECTION000140000000000000000">
-About this document ...</A>
-</H1>
- <STRONG>Implementation of OGC's WPS standard: PyWPS</STRONG><P>
-This document was generated using the
-<A HREF="http://www.latex2html.org/"><STRONG>LaTeX</STRONG>2<tt>HTML</tt></A> translator Version 2002-2-1 (1.71)
-<P>
-Copyright © 1993, 1994, 1995, 1996,
-Nikos Drakos,
-Computer Based Learning Unit, University of Leeds.
-<BR>
-Copyright © 1997, 1998, 1999,
-<A HREF="http://www.maths.mq.edu.au/~ross/">Ross Moore</A>,
-Mathematics Department, Macquarie University, Sydney.
-<P>
-The command line arguments were: <BR>
- <STRONG>latex2html</STRONG> <TT>-split 0 install.tex</TT>
-<P>
-The translation was initiated by Jachym Cepicky on 2007-06-12
-<BR><HR><H4>Footnotes</H4>
-<DL>
-<DT><A NAME="foot357">...
-list</A><A
- HREF="install.html#tex2html8"><SUP><SPAN CLASS="arabic">1</SPAN></SUP></A></DT>
-<DD>http://wald.intevation.org/mailman/listinfo/pywps-develPyWPS
-- development list
-
-</DD>
-<DT><A NAME="foot358">...
-bugtracker</A><A
- HREF="install.html#tex2html9"><SUP><SPAN CLASS="arabic">2</SPAN></SUP></A></DT>
-<DD>http://wald.intevation.org/tracker/?atid=174&group_id=22&func=browsePyWPS
-Bug tracker
-
-</DD>
-<DT><A NAME="foot75">...
-site</A><A
- HREF="install.html#tex2html15"><SUP><SPAN CLASS="arabic">3</SPAN></SUP></A></DT>
-<DD><TT><A NAME="tex2html16"
- HREF="http://pywps.wald.intevation.org">http://pywps.wald.intevation.org</A></TT>
-
-</DD>
-<DT><A NAME="foot361">...
-document</A><A
- HREF="install.html#tex2html18"><SUP><SPAN CLASS="arabic">4</SPAN></SUP></A></DT>
-<DD><TT><A NAME="tex2html19"
- HREF="http://www.opengeospatial.org/standards/requests/28">http://www.opengeospatial.org/standards/requests/28</A></TT>
-
-</DD>
-<DT><A NAME="foot362">...process.html</A><A
- HREF="install.html#tex2html20"><SUP><SPAN CLASS="arabic">5</SPAN></SUP></A></DT>
-<DD>http://wald.intevation.org/plugins/scmsvn/viewcvs.php/*checkout*/trunk/doc/process.html?rev=369&root=pywpsDocumentation
-to process.py module
-
-</DD>
-<DT><A NAME="foot365">...self.grassLocation</A><A
- HREF="install.html#tex2html21"><SUP><SPAN CLASS="arabic">6</SPAN></SUP></A></DT>
-<DD>See e.g.
-http://grass.itc.it/grass63/manuals/html63_user/helptext.htmlGRASS
-manual for details
-
-</DD>
-<DT><A NAME="foot366">...
-later</A><A
- HREF="install.html#tex2html22"><SUP><SPAN CLASS="arabic">7</SPAN></SUP></A></DT>
-<DD><TT>self.grassLocation="/path/to/location"</TT>
-
-</DD>
-</DL>
-<DIV CLASS="navigation"><HR>
-<!--Navigation Panel-->
-<IMG WIDTH="81" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next_inactive"
- SRC="/usr/share/latex2html/icons/nx_grp_g.png">
-<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
- SRC="/usr/share/latex2html/icons/up_g.png">
-<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
- SRC="/usr/share/latex2html/icons/prev_g.png">
-<BR></DIV>
-<!--End of Navigation Panel-->
-<ADDRESS>
-Jachym Cepicky
-2007-06-12
-</ADDRESS>
-</BODY>
-</HTML>
Deleted: trunk/doc/install.pdf
===================================================================
(Binary files differ)
Deleted: trunk/doc/install.tex
===================================================================
--- trunk/doc/install.tex 2007-06-12 08:34:48 UTC (rev 372)
+++ trunk/doc/install.tex 2007-06-12 08:35:41 UTC (rev 373)
@@ -1,1935 +0,0 @@
-\documentclass[a4paper,11pt]{article}
-\usepackage{layout}
-\usepackage{lscape}
-\usepackage[utf8]{inputenc}
-\usepackage{a4wide}
-\usepackage[dvips]{graphicx}
-\usepackage{url}
-\usepackage[colorlinks=true]{hyperref}
-\usepackage[table,dvipsnames]{xcolor}[2004/07/04]
-
-\author{Jachym Cepicky}
-
-\title{Implementation of OGC's WPS standard: PyWPS}
-
-\makeatletter
-%\Lesejk
-\def\Lesejk{{\tt{}Les-e\makebox(2,11)[t]{\rotatebox{35}{j}}\kern-.1667em\lower.5ex\hbox{\rotatebox{315}{k}}\kern-.125em\@}}
-
-
-\newcommand{\link}[1]{\texttt{<\url{#1}>}}
-\newcommand{\pywpssite}{\url{http://pywps.wald.intevation.org}}
-\newcommand{\pywpswiki}{\url{http://pywps.ominiverdi.org}}
-\newcommand{\note}[1]{\medskip{}\noindent{}NOTE: #1\medskip{}}
-\newcommand{\version}{\emph{2.0.0}}
-\makeatother
-
-
-\pagestyle{plain}
-
-\begin{document}
-\maketitle{}
-
-\bigskip
-\begin{quote}
- Copyright \copyright 2006 PyWPS Development Team
- Permission is granted to copy, distribute and/or modify this document
- under the terms of the GNU Free Documentation License, Version 1.2
- or any later version published by the Free Software Foundation;
- with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
- A copy of the license is included in the section entitled "GNU
- Free Documentation License".
-\end{quote}
-\bigskip
-
-
-In this file, you can found the description of installation and
-configuration of PyWPS script. At the and, you can learn, how to add
-your own process to the list of processes. The file describes most recent
-version of PyWPS (\version), available in subversion respository.
-
-PyPWS project has been started on April 2006 with support of DBU --
-Deutsche Bundesstiftung Umwelt (\url{http://dbu.de}) and with help of
-GDF-Hannover (\url{http://gdf-hannover.de}) and Help Service Remote
-Sensing (\url{http://www.bnhelp.cz}) companies. Initial author is Jachym
-Cepicky (\url{http://les-ejk.cz}).
-
-
- \tableofcontents
-
-\newpage
-
-%---------------------------------------------------------------------
-\section{Introduction}
-PyWPS (Python Web Processing Service) is implementation of Web
-Processing Service standard from Open Geospatial Consortium.
-
-It has been started on Mai 2006 as project supported by DBU. It offers
-environment for programming own process (geofunctions or models) which can
-be accessed from the public. The main advantage of PyWPS is, that it has
-been written with native support for GRASS. Access GRASS modules via web
-interace should be as easy as possible.
-
-Processes can be written using GRASS GIS, but usage of other programs is
-also possible. Usage together with R package or GDAL or PROJ tools.
-
-PyWPS is written in Python programming language, your processes must use
-this language too.
-
-PyWPS Homepage can be found at \pywpssite.
-PyWPS Wiki is hosted on \pywpswiki.
-
-\subsection{How it works}
-PyWPS is an translator application between client (Web Browser, Desktop
-GIS, command line tool, \dots) and working tool installed on the server.
-PyWPS does no work by it self. As working tool, GRASS GIS, GDAL, PROJ, R
-and other programs can be used.
-
-\begin{figure}[ht]
-\begin{center}
-\includegraphics[width=1\textwidth]{pic/pywps-schema}
-\caption{How does PyWPS work: GRASS GIS is in this case working tool}
-\label{pic:pywps}
-\end{center}
-\end{figure}
-
-%---------------------------------------------------------------------
-\section{Bugs}
-Known bugs and limitations to \date
-\begin{itemize}
-\item Sometimes, when there is e.g. SyntaxError in the process, teporary file \texttt{/tmp/pywps*} is not deleted, which ledts to \texttt{ServerBussy} exception and the files have to be removed by hand.
-\item If inputs are of type \texttt{LiteralValue} and it's type is
-string, it is not controlled properly. Take care on your inputs and do
-not use it directly in scripts to avoid your server to be hacked.
-\end{itemize}
-
-Please report all problems or unexpected handeling either via pywps mailing
-list\footnote{\href{http://wald.intevation.org/mailman/listinfo/pywps-devel}{PyWPS
-- development list}}
-or using PyWPS
-bugtracker\footnote{\href{http://wald.intevation.org/tracker/?atid=174&group\_id=22&func=browse}{PyWPS
-Bug tracker}}.
-
-%---------------------------------------------------------------------
-\section{Installation}
-
-Required packages:
-
-\begin{itemize}
- \item python
- \item python-xml
-\end{itemize}
-
-Recommended packages:
-
-\begin{itemize}
- \item Web Server (e.g. Apache) -- \url{http://httpd.apache.org} - You
- will need an web server, to be able to execute processes from remote
- computers.
-
- \item GIS GRASS -- \url{http://grass.itc.it} - Geographical Resources
- Analysis Support System (GRASS) is Open Source GIS, which provides more
- then 350 modules for raster and vector (2D, 3D) data analysis. PyWPS is
- written with native support for GRASS and it's functions.
-
- \item PROJ.4 -- \url{http://proj.maptools.org} - Cartographic
- Projections library used in various Open Source projects, such as
- GRASS, UMN MapServer, QGIS and others. It can be used e.g. for data
- transformation.
-
- \item GDAL/OGR -- \url{http://gdal.org} - translator library for
- raster geospatial data formats, is used in various projects for
- importing, exporting and transformation between various raster and vector
- data formats.
-
- \item R -- \url{http://www.r-project.org} - is a language and environment
- for statistical computing and graphics.
-
-\end{itemize}
-
-\subsection{Installation the quick 'n' dirty way}
-For installing pywps to your server simply unzip the archive to the
-directory, where cgi programs are allowed to run. You can also use current
-repository version.
-
-\begin{verbatim}
-$ cd /usr/lib/cgi-bin/
-$ tar xvzf /tmp/pywps-VERSION.tar.gz
-$ pywps/wps.py
-\end{verbatim}
-
-\subsection{Installation the 'clean' way}
-Unzip the package
-\begin{verbatim}
-$ tar -xzf pywps-VERSION.tar.gz
-\end{verbatim}
-and run
-\begin{verbatim}
-$ python setup.py install
-\end{verbatim}
-
-Several binary packages for Linux distributios are also avaliable on PyWPS
-site\footnote{\pywpssite}.
-
-\subsection{Testing after installation}
-For test, just run
-\texttt{wps.py} in your command line:
-
-\begin{verbatim}
-$ ./wps.py
-Content-type: text/xml
-
-<?xml version="1.0" ?>
-<ExceptionReport version="1.0.0" xmlns="http://www.opengis.net/ows"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
- <Exception exceptionCode="MissingParameterValue" locator="request"/>
-</ExceptionReport>
- \end{verbatim}
-
-
-If you got some other message, like e.g.:
-
-
- \begin{verbatim}
-Traceback (most recent call last):
- File "trunk/index.py", line 53, in ?
- from Wps import wpsexceptions
- File "/home/jachym/prog/pywps/trunk/Wps/wpsexceptions.py", line 8, in ?
- from xml.dom.minidom import Document
-ImportError: No module named xml.dom.minidom
- \end{verbatim}
-
-
-Than something is wrong with your Python installation or with the program.
-This message means, that the xml.dom.minidom package is not installed in
-your system.
-
-
-
-
-%---------------------------------------------------------------------
-\section{Configuration}
-
-Before you start to tune your pywps program, you should get your copy of
-OpenGIS(R) Web Processing Service document (OGC 05-007r4) version 0.4.0
-from\\ \url{http://www.opengeospatial.org/specs/?page=specs}
-
-\note{Note, that the configuration option are CASE SENSITIVE}
-
-Pywps configuration takes places in two files. The files are actually python
-scripts, so it does not harm, if you have some experience in python
-programming language. But you should be able to setup the program without
-any python knowledge.
-
-The first file is in \texttt{etc/settings.py} and (optional) the second file is
-\texttt{etc/grass.py} which has to be setuped if you do want to use
-GRASS GIS modules in your scripts. Some special "tuning" can be done in \texttt{processes/\_\_init\_\_.py}
-file. You can allways obtain original configuration files from
-\texttt{Wps/default\_settings.py} and \texttt{Wps/default\_grass.py}.
-
-\subsection{\texttt{etc/settings.py}}
-
-This file has got two sections: WPS and serverSettings
-
-In the \texttt{WPS} section, the main configuration is set, which appears mostly in
-GetCapabilities request. The \emph{mandatory} parameters, which should be set up
-are (with default/recommend values):
-
-
-\begin{verbatim}
-WPS = {
- 'version': "0.4.0",
- 'ServiceIdentification': {
- 'Title':"Jachym's WPS server",
- 'ServiceType':"WPS",
- 'ServiceTypeVersion':"0.1.0",
- 'Abstract':'Abstract to this WPS',
- },
- 'ServiceProvider': {
- 'ProviderName' : "Your Company",
- 'IndividualName':"Your Name",
- 'PositionName':"Your Position",
- 'Role':"your role",
- 'DeliveryPoint': "Street",
- 'City': "City",
- 'PostalCode':"00000",
- 'Country': "Your country",
- 'ElectronicMailAddress':"your.email at address",
- },
-
- 'OperationsMetadata': {
- 'ServerAddress' : "http://localhost/cgi-bin/wps/wps.py",
- },
- 'Keywords' : ['GRASS','GIS','WPS'],
-}
-\end{verbatim}
-
-
-In the \texttt{ServerSettings} section, the variables are set, which have impact on
-the whole server.
-
-
-\begin{verbatim}
-ServerSettings = {
- # NOTE: You have to create this directory manually and set rights, so
- # the program is able to store data in there
- 'outputPath': '/var/www/wpsoutputs',
-
- #
- # 'outputUrl' - URL of the directory, where the outputs will be stored
- 'outputUrl': 'http://192.168.1.31/wpsoutputs',
-
- #
- # tempPath - path to directory, where temporary data will be stored.
- # NOTE: the pywps has to have rights, to create directories and files
- # in this directory
- 'tempPath': '/tmp',
-
- #
- # maxOperations - maximum number of operations, which is allowed to low
- # on this server at ones
- # default = 1
- 'maxOperations':1,
-
- #
- # maxSize: maximum input file size in bytes
- # NOTE: maximum file size is 5MB, no care, if this number is higher
- 'maxSize':5242880, # 5 MB
-
- #
- # maxInputParamLength: maximal length of input values
- # NOTE: maximum length of input parameters is 256, no matter, how height
- # is this number
- 'maxInputParamLength':256,
-}
-\end{verbatim}
-
-
-\subsection{\texttt{etc/grass.py}}
-
-This file servers for configuration of GRASS GIS environment (if your
-processes need one). Everything is stored in \texttt{grassenv} structure.
-
-
-\begin{verbatim}
-grassenv = {
- # PATH in which your modules (processes) should be able the search.
- # Default value:
- 'PATH': "/usr/local/grass-6.1.cvs/bin/:/usr/local/grass-6.1.cvs/scripts/:\
- /usr/bin/:/bin/:",
-
- # Add eventually some other path, in which should GRASS search for modules
- 'GRASS_ADDON_PATH': "",
-
- # Version of GRASS, you are using
- 'GRASS_VERSION': "6.1.cvs",
-
- # GRASS_PERL, where is your PERL bin installed
- 'GRASS_PERL': "/usr/bin/perl",
-
- # GRASS_GUI should be always "text" unless you know, what you are doing
- 'GRASS_GUI': "text",
-
- # GISBASE is place, where your GRASS installation is
- 'GISBASE': "/usr/local/grass-6.1.cvs",
-
- # LD_LIBRARY_PATH
- 'LD_LIBRARY_PATH':"/usr/local/grass-6.1.cvs/lib",
-
- # HOME has to be set
- 'HOME':"/var/www",
-}
-\end{verbatim}
-
-
-%---------------------------------------------------------------------
-\section{Add your own processes}
-\note{This section has changed from previous stable 1.0.0 version. The
-processes, you defined for 1.0.0 branch should work for 2.0.0 branch too.}
-
-All processes are stored in the \texttt{processes} directory. Put your file
-e.g. \texttt{myprocess.py} in there. Several example processes are
-distributed along with PyWPS source code.
-
-Process is python class derived from prepared \texttt{WPSProcess} class in
-\texttt{pywps.Wps} package. In it \texttt{\_\_init\_\_(self)} method,
-process metadata, inputs and outpus are defined and in
-\texttt{execute(self)} method, own computation is performed.
-
-
-It is possible also to add as many your functions, as you wish.
-
-\subsection{Process Initialization and Configuration}
-
-\begin{verbatim}
-01 # importing necessary files
-02 import pywps.Wps.WPSProcess
-03
-04 class Process(WPSProcess):
-05 def __init__(self):
-06 WPSProcess.__init__(self,
-07 Identifier="ogr2ogr",
-18 Title="ogr2ogr interface",
-19 Abstract="Convert vector file to another format",
-10 processVersion = "0.2",
-11 statusSupported="true",
-12 storeSupported="true")
-\end{verbatim}
-
-We defined new process called \texttt{ogr2ogr}. The process is allowed to
-store it's output data on the server (\texttt{storeSupported}) and it is also possible to run it in
-asynchronous mode (\texttt{statusSupported}).
-
-Eventually optional attributes can be found in the table 38 - "Parts of
-ExecuteResponse data structure" in the WPS reference
-document\footnote{\url{http://www.opengeospatial.org/standards/requests/28}}. It is also possible to redefine some
-variable later, after initialization:
-
-\begin{verbatim}
-13
-14 self.Title="ogr2ogr interface"
-15
-\end{verbatim}
-
-
-\paragraph{Metadata defition} is stored in array \texttt{self.Metadata} in
-\texttt{\_\_init\_\_} method. You can add new Medatada using
-\texttt{self.AddMetadata()} method:
-\begin{verbatim}
- self.AddMetadata(Identifier="point",type="point",
- textContent="Click in the map")
-\end{verbatim}
-
-This code will produce in DescribeProcess responce document following
-element:
-\begin{verbatim}
-...
-<ows:Metadata Identifier="point" type="point">
- Click in the map
-</ows:Metadata>
-...
-\end{verbatim}
-
-\subsubsection{Data Inputs}
-Data inputs are stored in \texttt{self.Inputs} array. To add inputs to
-your process, you should use methods defined in \texttt{WPSProcess} class.
-
-Four types of data inputs are defined:
-\begin{itemize}
- \item Literal Input -- Basic literal input -- single number or text
- value
- \item ComplexValue Input -- Mostly vector file embded in input XML
- request
- \item ComplexValueReference Input -- URL to location, where the process
- is supposed to get the input data.
- \item BoundingBox Input -- Coordinates for lower-left and upper-right
- corner.
-\end{itemize}
-
-ComplexValue and ComplexValueReference defined on the same way -- PyWPS is
-able to guess, if the input data are reference (link) to some map or raw
-data directly.
-
-\paragraph{LiteralInput}
-
-Basic type of data input is \texttt{LiteralInput} type. To define
-LiteralInput the easy way, you should use \texttt{AddLiteralInput} method:
-
-\begin{verbatim}
-20
-21 self.AddLiteralInput(Identifier="value",
- Title="Value to be added",
- type=type(0))
-\end{verbatim}
-
-Above example will add new input with identifier \texttt{value} of type
-integer. Examples of other possibilities of LiteralInputs and resulting
-part of XML are folowing:
-
-\subparagraph{Example of any allowed input value (default)}
-\begin{verbatim}
-self.AddLiteralInput(Identifier="someinput",
- Title="Some Input",
- allowedvalues='*')
-
-...
- <Input>
- <ows:Identifier>someinput</ows:Identifier>
- <ows:Title>Some Input</ows:Title>
- <ows:Abstract/>
- <LiteralData>
- <SupportedUOMs defaultUOM="m">
- <ows:UOM>m</ows:UOM>
- </SupportedUOMs>
- <ows:AnyValue/>
- </LiteralData>
- <MinimumOccurs>1</MinimumOccurs>
- </Input>
-...
-\end{verbatim}
-
-\subparagraph{Example of specified list (with range) of allowed inputs}
-
-Following example will define input with specified list of values: Only
-values 20, 30, everything between 40-100 and 110 will be accepted:
-\begin{verbatim}
-self.AddLiteralInput(Identifier="someinput",
- Title="Some Input",
- allowedvalues=[20,30,[40,100],110])
-
-...
- <Input>
- <ows:Identifier>someinput</ows:Identifier>
- <ows:Title>Some Input</ows:Title>
- <ows:Abstract/>
- <LiteralData>
- <SupportedUOMs defaultUOM="m">
- <ows:UOM>m</ows:UOM>
- </SupportedUOMs>
- <AllowedValues>
- <Value>20</Value>
- <Value>30</Value>
- <Range>
- <MinimumValue>40</MinimumValue>
- <MaximumValue>100</MaximumValue>
- </Range>
- <Value>110</Value>
- </AllowedValues>
- </LiteralData>
- <MinimumOccurs>1</MinimumOccurs>
- </Input>
-...
-\end{verbatim}
-
-For further documentation, refere example processes distributed with the
-source code as well as \texttt{pydoc~pywps/wps/process.py}. This help is
-also available in
-\texttt{process.html}\footnote{\href{http://wald.intevation.org/plugins/scmsvn/viewcvs.php/*checkout*/trunk/doc/process.html?rev=369&root=pywps}{Documentation
-to process.py module}} file distributed along with PyWPS
-source code.
-
-\paragraph{ComplexInput}
-If the request comes as HTTP GET, it is assumed, that the input is only
-reference to some map. If it comes as HTTP POST, PyWPS tryes to guess, if
-the client is sending URL to source of the data or if the input data are
-part of input XML request (e.g. as GML file). So, you, as a process coder
-do not have to take care on this:
-
-\begin{verbatim}
-self.AddComplexInput(Indentifier="inputmap",
- Title="Input map, which should be processed",
- Formats=["text/xml","image/tiff"])
-...
- <Input>
- <ows:Identifier>input</ows:Identifier>
- <ows:Title>Input raster map</ows:Title>
- <ows:Abstract/>
- <ComplexData defaultFormat="image/tiff">
- <SupportedComplexData>
- <Format>image/tiff</Format>
- <Format>text/xml</Format>
- </SupportedComplexData>
- </ComplexData>
- <MinimumOccurs>1</MinimumOccurs>
- </Input>
-\end{verbatim}
-
-\paragraph{BoundingBox Input}
-With bounding box, you can define two coordinate pairs, if you have to.
-
-\begin{verbatim}
-self.AddBondingBoxInput(Identifier="bbox",
- Title="BBox input")
-\end{verbatim}
-
-\subsubsection{Data Outputs}
-Again four types of output are defined:
-\begin{itemize}
- \item Literal Output
- \item ComplexValue Output
- \item ComplexValue Reference
- \item BoundingBox Output
-\end{itemize}
-
-Data outputs can be defined on similar way, using similar methods:
-
-\paragraph{LiteralOutput}
-\begin{verbatim}
-self.AddLiteralOutput(Identifier="litoutput",
- Title="Resulting output value")
-
-...
- <Output>
- <ows:Identifier>litoutput</ows:Identifier>
- <ows:Title>Resulting output value</ows:Title>
- <ows:Abstract/>
- <LiteralOutput>
- <SupportedUOMs defaultUOM="m">
- <ows:UOM>m</ows:UOM>
- </SupportedUOMs>
- </LiteralOutput>
- </Output>
-...
-\end{verbatim}
-
-\paragraph{ComplexValue and ComplexValueReference Output}
-To the oposite of data Inputs, Outputs can distinguish between ComplexValue
-output and ComplexValueReference. ComplexValue is directly embed into the
-output XML document and ComplexValueReference is stored on the server and
-only URL pointing the the file is refering to it. In general, vector files
-in GML format can be easy embed to the output XML, TIFF raster files is
-better to leave on the server.
-
-\begin{verbatim}
-self.AddComplexReferenceOutput(Identifier="output",
- Title="Resulting output map",
- Formats=["image/tiff"])
-
-...
- <Output>
- <ows:Identifier>output</ows:Identifier>
- <ows:Title>Resulting output map</ows:Title>
- <ows:Abstract/>
- <ComplexOutput defaultFormat="image/tiff">
- <SupportedComplexData>
- <Format>image/tiff</Format>
- </SupportedComplexData>
- </ComplexOutput>
- </Output>
-...
-\end{verbatim}
-
-\paragraph{BoundingBox Output}
-Beside LiteralValue and ComplexValue, BoundingBoxValue is also defined.
-The coordinates are stored in array of four members:
-
-\begin{verbatim}
-self.GetInputValue("bboxinput")
-[0,0,100,100]
-\end{verbatim}
-
-\bigskip
-
-So on our \texttt{ogr2ogr} process, we have to define three types of input:
-\texttt{ComplexValue} of input vector file and EPSG codes of target and
-source files:
-
-\begin{verbatim}
-16 self.AddComplexInput(Identifier="inputmap",
-17 Title ="Input vector file",
-18 Abstract = "Input vector file to be converted",
-19 Formats=["text/xml"])
-20
-21 self.AddLiteralInput(Identifier="sepsg",
-22 Title="Source EPSG",
-23 Abstract="Source EPSG code",
-24 value=4326)
-\end{verbatim}
-
-
-And we also define two outputs: ComplexValueReference and ComplexValue
-type.
-
-
-\begin{verbatim}
-25 self.AddComplexOutput(Identifier="outputmap",
-26 Title ="Input vector file",
-27 Abstract = "Input vector file to be converted",
-28
-29 self.LiteralOutput(Identifier="sepsg",
-30 Title="Source EPSG",
-31 Abstract="Source EPSG code",
-32 value=4326)
-\end{verbatim}
-
-
-\subsection{Process Programming}
-
-The process must be defined in the \texttt{execute(self)} function. You can
-access the input values via \texttt{self.GetInputValue(Identifier)} method.
-
-\note{Usage of the old method, accessing the values via
-\texttt{self.Inputs[index]['value']} or via \texttt{self.DataInputs} array
-is possible, but should not be used.}
-
-Also variable \texttt{self.grassenv} will be in your process at your
-service. This dictionary stores environment variables used by GRASS GIS,
-such se \texttt{LOCATION\_NAME} or \texttt{MAPSET}.
-
-Output values should be set using \texttt{self.SetOutputValue(Identifier,
-value)} method.
-
-\note{Usage of the old methods of output values setting, directly to
-\texttt{self.Outputs[index]['value']} variable or to
-\texttt{self.DataOutputs['identifier']} dictionary, is possible, but should
-better not be used.}
-
-If you need to execute some shell command, you should use
-\texttt{self.Cmd(command,["string for standard input"])} instead of e.g.
-\texttt{os.system()} or \texttt{os.popen()} functions.
-
-
-\begin{verbatim}
-33
-35 def execute(self):
-36
-37 #
-38 # calculation
-39 #
-30 self.Cmd("""ogr2ogr -s_srs "+init=epsg:4326" -t_srs \
-31 "+init=epsg:2065" %s output.file""" % (self.GetInputValue("inputmap")))
-32 #
-43 # setting results
-44 #
-45 self.SetOutputValue("outputmap","output.file")
-46 self.SetOutputValue("sepsg","4326")
-47
-48 return
-\end{verbatim}
-
-\subsubsection{Error handling}
-
-At the end of the \texttt{execute} function, \texttt{None} value should be returned. Any other
-value means, that the calculation will be stopped and error report will be returned back to the client.
-
-
-\subsubsection{Using standard in- and output with external commands}
-The \texttt{self.Cmd()} accepts \texttt{input} parameter, wich is a text
-string, which is directred to standard input of the command:
-
-\begin{verbatim}
- result = self.Cmd(cmd="wc -c",
- input="calculate number of characters for this sentence")
-
- # result[0].split()
-\end{verbatim}
-
-\texttt{self.Cmd()} returns list of lines from the programms standard
-output to the process:
-
-\begin{verbatim}
-
- for line in self.Cmd("ls -l"):
- # do some operations of list of files
- pass
-\end{verbatim}
-
-
-\subsection{GRASS specific notes}
-
-Special class for GRASS GIS is defined too, which has functions and
-variables specific to this program. The process, in which should use GRASS
-modules should be defined as follows:
-
-\begin{verbatim}
-# importing necessary files
-import pywps.Wps.GRASSWPSProcess
-
-class Process(GRASSWPSProcess):
- def __init__(self):
- GRASSWPSProcess.__init__(self,
- Identifier="spearpath",
- Title="Spearfish path searching",
- Abstract="Find the shortest path on the roads map on Spearfish dataset",
- processVersion = "0.2",
- statusSupported="true",
- storeSupported="true",
- # grassLocation="/var/www/spearfish60/" # work on existing location)
-\end{verbatim}
-
-By default, \texttt{self.grassLocation}\footnote{See e.g.
-\href{http://grass.itc.it/grass63/manuals/html63\_user/helptext.html}{GRASS
-manual} for details}
- variable is set to \texttt{None},
-which means, that temporary location will be created and after the
-calculation is done, it will be deleted again. You can set this while
-process initialization or
-later\footnote{\texttt{self.grassLocation="/path/to/location"}}.
-
-
-\texttt{WPSProcess} class provides special method
-\texttt{self.GCmd(command\_string)}, which tryes to catch output from GRASS
-modules, especially progress information inidcated by percent done. Method
-\texttt{GCmd()} stores the output of GRASS modules to \texttt{self.status}
-variable, so if the process is running assynchronously, client application
-can track the progress of each module directly.
-
-\begin{verbatim}
- def execute(self):
- """
- This function serves like simple GRASS - python script
-
- It returns None, if process succeed or String if process failed
- """
- self.GCmd("g.region -d")
-
-
- # v.net.path reads from standard input
- self.GCmd("v.net.path in=roads out=path","0 %s %s %s %s" % (self.GetInputValue('x1'),
- self.GetInputValue('y1'),
- self.GetInputValue('x2'),
- self.GetInputValue('y2')))
-
- self.GCmd("v.out.ogr format=GML input=path dsn=out.xml olayer=path.xml")
-
- if "out.xml" in os.listdir(os.curdir):
- shutil.copy("out.xml","out2.xml")
- self.SetOutputValue('outputReference',"out.xml")
- self.SetOutputValue('outputData',"out2.xml")
- return
- else:
- return "Ouput file not created!"
-\end{verbatim}
-
-%---------------------------------------------------------------------
-
-It is also possible to run GRASS modules using python's
-\texttt{os.system()} or \texttt{os.popen()} function. Before you do so, it
-is important to import the \texttt{os} python package (usually one of the
-first lines in the file). This approach might not be the best, but it is
-the simplest one. Feel free to use any other low-end functions.
-
-
-Unfortunately, the GRASS modules are very verbose. Some messages are
-written to STDOUT, some to STDERR. The STDERR will be stored in the error
-file of your web server. But you have to "catch" the messages, sent to
-STDOUT. This can be done e.g. by using "$1>\&2$" statement (redirecting
-STDOUT to STDERR in shell):
-
-\begin{verbatim}
-os.system("""
- echo "Rekni jim drazi, tatko, za to nic nedas." >&2
-""")
-\end{verbatim}
-
-You can avoid this problem using formentioned \texttt{self.GCmd()} method.
-
-
-%---------------------------------------------------------------------
-\section{Testing your new process}
-
-To test your PyWPS installation, you run it either as Webserver
-cgi-application or in the command line directly. It is always good to start
-with the command line test, so do not have to check \texttt{error.log} of
-the web server.
-
-\begin{itemize}
- \item GetCapabilities request (webserver)
-\begin{verbatim}
-./wps.py "service=wps&request=getcapabilities"
-
-wget -nv -q -O - "http://localhost/cgi-bin/wps.py?\
- service=Wps&request=getcapabilities"
-\end{verbatim}
-
- \item DescribeProcess request:
-\begin{verbatim}
-./wps.py "version=0.4.0&service=Wps&request=DescribeProcess&\
- Identifier=your_process"
-
-wget -nv -q -O - "http://localhost/cgi-bin/wps.py?\
- version=0.4.0&service=Wps&request=DescribeProcess&\
- Identifier=your_process"
-\end{verbatim}
-
- \item Execute request:
-\begin{verbatim}
-./wps.py "version=0.4.0&service=Wps&\
- request=Execute&Identifier=your_process&\
- datainputs=input1,value1,input2,value2"
-
-wget -nv -q -O - "http://localhost/cgi-bin/wps.py?\
- version=0.4.0&service=Wps&\
- request=Execute&Identifier=your_process&\
- datainputs=input1,value1,input2,value2" \
-\end{verbatim}
-
-\end{itemize}
-
-
-%---------------------------------------------------------------------
-\section{Using PyWPS}
-\subsection{Input}
-
-To get response from PyWPS you have to formulate appropriate query string first. You can use HTTP GET style or HTTP POST style.
-
-
-HTTP GET style is standard URL, with all parameters in one line. You can not set any \texttt{ComplexValue} data in your process via HTTP GET. Example:
-
-\begin{verbatim}
-wget -nv -q -O - --post-data="version=0.4.0&service=Wps&\
- request=Execute&Identifier=your_process&\
- datainputs=input1,value1,input2,value2"\
- "http://localhost/cgi-bin/wps.py"
-\end{verbatim}
-
-In HTTP POST style, you send one "request" parameter, which contains XML input. The XML file can contain also included ComplexValue data, e.g. GML file. Example:
-
-\begin{verbatim}
-wget --post-file=execute-post.txt \
- "http://localhost/pywps/wps.py" -O - -nv -q
-\end{verbatim}
-
-The \texttt{execute-post.txt} file can look like follows:
-\begin{verbatim}
-<?xml version="1.0" encoding="utf-8"?>
-<Execute service="WPS" version="0.4.0" store="false" status="false"
-xmlns="http://www.opengeospatial.net/wps"
-xmlns:ows="http://www.opengeospatial.net/ows"
-xmlns:xlink="http://www.w3.org/1999/xlink"
-xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-xsi:schemaLocation="http://www.opengeospatial.net/wps/wpsDescribeProcess.xsd">
- <ows:Identifier>searchpath</ows:Identifier>
- <DataInputs>
- <Input>
- <ows:Identifier>streetmap</ows:Identifier>
- <ows:Title>The map</ows:Title>
- <ows:ComplexValue>
- <Value>
-<ogr:FeatureCollection
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://ogr.maptools.org/ donut.xsd"
- xmlns:ogr="http://ogr.maptools.org/"
- xmlns:gml="http://www.opengis.net/gml">
- <gml:boundedBy>
- <gml:Box>
- <gml:coord><gml:X>4.263256414560601e-14</gml:X>
- <gml:Y>-70.71067811865474</gml:Y></gml:coord>
- <gml:coord><gml:X>141.4213562373095</gml:X>
- <gml:Y>70.71067811865474</gml:Y></gml:coord>
- </gml:Box>
- </gml:boundedBy>
- <gml:featureMember>
- <ogr:donut fid="F0">
- <ogr:geometryProperty><gml:LineString><gml:coordinates>
- 70.710678118654755,70.710678118654741,0 141.42135623730951,0.0,
- 0 70.710678118654741,-70.710678118654741,0 0.000000000000043,
- 0.000000000000057,0 70.710678118654755,
- 70.710678118654741,0</gml:coordinates>
- </gml:LineString></ogr:geometryProperty>
- </ogr:donut>
- </gml:featureMember>
- <gml:featureMember>
- <ogr:donut fid="F0">
- <ogr:geometryProperty><gml:LineString><gml:coordinates>50.000000000000014,
- 0.000000000000021,0 71.213203435596427,-21.213203435596419,0
- 92.426406871192853,0.0,0 71.213203435596427,21.213203435596423,0
- 50.000000000000014,0.000000000000021,0</gml:coordinates>
- </gml:LineString></ogr:geometryProperty>
- </ogr:donut>
- </gml:featureMember>
-</ogr:FeatureCollection>
- </Value>
- </ows:ComplexValue>
- </Input>
-
- <Input>
- <ows:Identifier>x1</ows:Identifier>
- <ows:LiteralValue>591679.31</ows:LiteralValue>
- </Input>
- <Input>
- <ows:Identifier>y1</ows:Identifier>
- <ows:LiteralValue>4927205.07</ows:LiteralValue>
- </Input>
- <Input>
- <ows:Identifier>x2</ows:Identifier>
- <ows:LiteralValue>608642.625</ows:LiteralValue>
- </Input>
- <Input>
- <ows:Identifier>y2</ows:Identifier>
- <ows:LiteralValue>4915876.31</ows:LiteralValue>
- </Input>
- </DataInputs>
-</Execute>
- \end{verbatim}
-
- You can see, that there are 4 inputs in this process:
-
- \begin{enumerate}
- \item ComplexValue GML File
- \item x1 coordinate
- \item y1 coordinate
- \item x2 coordinate
- \item y2 coordinate
- \end{enumerate}
- \subsection{Output}
-
- The output from PyWPS can be either XML file or results of processes directly. In default configuration, no files are stored on the server, resulting values (maps) are
- returned to the client. If you want to return XML file with outputs
- encoding, you have to enable it in you process configuration with
- option \texttt{storeSupported}:
-
- \begin{verbatim}
- self.storeSupported = "true"
- \end{verbatim}
-
- And you have to call the PyWPS with "store=true" option:
-
- \begin{verbatim}
- version=0.4.0&service=Wps&request=Execute&Identifier=your_process&\
- datainputs=input1,value1,input2,value2&store=true
- \end{verbatim}
-
- Or in XML input:
-
- \begin{verbatim}
-request=<?xml version="1.0" encoding="utf-8"?>
-<Execute service="WPS" version="0.4.0" store="true" status="false"
-xmlns="http://www.opengeospatial.net/wps"
-xmlns:ows="http://www.opengeospatial.net/ows"
-xmlns:xlink="http://www.w3.org/1999/xlink"
-xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-xsi:schemaLocation="http://www.opengeospatial.net/wps/wpsDescribeProcess.xsd">
-
-...
-\end{verbatim}
-
-This will cause PyWPS to look after \texttt{self.status} array in your process in form form
-\begin{verbatim}
- self.status = ["Message", Percent_Done]
-\end{verbatim}
-and generate XML file in statusLocation with this embed message. E.g.
-
-\begin{verbatim}
- self.status = ["Generating raster map", 50]
-\end{verbatim}
-or better
-\begin{verbatim}
- self.SetStatus("Generarting raster map", 50_Done)
-\end{verbatim}
-
-will become
-
-\begin{verbatim}
-...
- <Status>
- <ProcessStarted message="Generating raster map" percentCompleted="50"/>
- </Status>
-...
-\end{verbatim}
-
-\appendix
-
- \section{Example process: \texttt{addvalue}}
- This sample process describes how to made your own WPS processes. Purpose of this process is:
- \begin{itemize}
- \item Download input raster map from some server
- \item Convert it to integer values
- \item Add input value to each raster cell
- \item Convert raster to vector
- \item Export raster to TIFF and vector to GML. Vector file will be embed ot output XML file.
- \end{itemize}
- \begin{verbatim}
-"""
-
-pywps process example:
-
-addvalue: Adds some value to raster map
-"""
-# Author: Jachym Cepicky
-# http://les-ejk.cz
-# Lince: GNU/GPL
-#
-# Copyright (C) 2006 Jachym Cepicky
-
-import os,time,string,sys,shutil
-from pywps.Wps.process import GRASSWPSProcess
-
-class Process (GRASSWPSProcess):
- #
- # Initialization
- #
- def __init__(self):
- GRASSWPSProcess.__init__(self,
- Identifier="Addvalue",
- Title="Add some value to input raster map",
- processVersion = "0.2",
- statusSupported="true",
- storeSupported="true",
- grassLocation = None)
-
-
- #
- # Inputs
- self.AddComplexInput(Identifier="input",
- Title="Input raster map",
- Formats=["image/tiff"])
- self.AddLiteralInput(Identifier="value",
- Title="Value to be added",
- type=type(0))
-
- #
- # Outputs
- self.AddComplexReferenceOutput(Identifier="output",
- Title="Resulting output map",
- Formats=["image/tiff"])
- #
- # Execute part of the process
- #
- def execute(self):
- """
- This function
- 1) Imports the raster map
- 2) runs r.mapcalc out=in+value
- 3) Exports the raster map
- 4) returns the new file name or 'None' if something went wrong
- """
-
- # import of the data
- self.SetStatus("Importing data")
- if not self.GCmd("r.in.gdal -o in=%s out=input" %\
- (self.GetInputValue("input"))):
- return "Could not import raster file"
- self.SetStatus("Importing data",10)
-
- # compositing 3 bands to one raster file
- for gdalinfoln in os.popen("gdalinfo %s" %\
- (self.GetInputValue("input"))):
- if gdalinfoln.split()[0] == "Band" and gdalinfoln.split()[1] == "3":
- self.GCmd("""g.region rast=input.red """)
- self.GCmd("r.composite r=input.red b=input.blue g=input.green out=input")
-
- # region setting
- self.GCmd("""g.region rast=input""")
-
- # adding the value
- self.SetStatus("Adding new value to raster map",50)
- self.GCmd("r.mapcalc output='input+%f'" % float(self.GetInputValue('value')))
-
- # output
- self.SetStatus("Raster file export", 90)
- self.GCmd("r.out.gdal type=Int32 in=output out=%s" % "output.tif")
-
- # setting output values
- self.SetOutputValue("output","output.tif")
- if "output.tif" in os.listdir(os.curdir):
- return # OK
- else:
- return "Output file not created!" # FAILED
- """
- \end{verbatim}
-
-\section{KVP request encoding of \texttt{addvalue}}
- This process can be lunched with URL:\\
- http://localhost/cgi-bin/wps.py?service=wps\&version=0.4.0\&identifier=addvalue\&request=execute\&$\backslash$\\
- datainputs=input,http://localhost/data/raster.tif,value,250\&status=true\&store=true
-
- \section{XML request encoding \texttt{addvalue}}
-\begin{verbatim}
-request=<?xml version='1.0' encoding='UTF-8' standalone='yes'?>
-<Execute service='wps' version='0.4.0' store='true' status='false'
- xmlns="http://www.opengeospatial.net/wps"
- xmlns:ows="http://www.opengeospatial.net/ows">
-<ows:Identifier>addvalue</ows:Identifier>
-<DataInputs>
- <Input>
- <ows:Identifier>input</ows:Identifier>
- <ComplexValueReference reference='http://localhost/wps/data/soils.tif' />
- </Input>
- <Input>
- <ows:Identifier>value</ows:Identifier>
- <LiteralValue>250</LiteralValue>
- </Input>
- <!-- Input>
- <ows:Identifier>bbox</ows:Identifier>
- <BoundingBoxValue>
- <BoundingBox>
- <LowerCorner>-1 -1</LowerCorner>
- <UpperCorner>10 10</UpperCorner>
- </BoundingBox>
- </BoundingBoxValue>
- </Input -->
-</DataInputs>
-</Execute>
-\end{verbatim}
-
-\clearpage
-
- \section{Licence of PyWPS}
-
-\begin{center}
-{\Large The GNU General Public License}
-
-{\parindent 0in
-
-Version 2, June 1991
-
-Copyright \copyright\ 1989, 1991 Free Software Foundation, Inc.
-
-\bigskip
-
-51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
-
-\bigskip
-
-Everyone is permitted to copy and distribute verbatim copies
-of this license document, but changing it is not allowed.
-}
-\end{center}
-
-\renewcommand{\abstractname}{Preamble}
-\begin{abstract}
-The licenses for most software are designed to take away your freedom to
-share and change it. By contrast, the GNU General Public License is
-intended to guarantee your freedom to share and change free software---to
-make sure the software is free for all its users. This General Public
-License applies to most of the Free Software Foundation's software and to
-any other program whose authors commit to using it. (Some other Free
-Software Foundation software is covered by the GNU Library General Public
-License instead.) You can apply it to your programs, too.
-
-When we speak of free software, we are referring to freedom, not price.
-Our General Public Licenses are designed to make sure that you have the
-freedom to distribute copies of free software (and charge for this service
-if you wish), that you receive source code or can get it if you want it,
-that you can change the software or use pieces of it in new free programs;
-and that you know you can do these things.
-
-To protect your rights, we need to make restrictions that forbid anyone to
-deny you these rights or to ask you to surrender the rights. These
-restrictions translate to certain responsibilities for you if you
-distribute copies of the software, or if you modify it.
-
-For example, if you distribute copies of such a program, whether gratis or
-for a fee, you must give the recipients all the rights that you have. You
-must make sure that they, too, receive or can get the source code. And
-you must show them these terms so they know their rights.
-
-We protect your rights with two steps: (1) copyright the software, and (2)
-offer you this license which gives you legal permission to copy,
-distribute and/or modify the software.
-
-Also, for each author's protection and ours, we want to make certain that
-everyone understands that there is no warranty for this free software. If
-the software is modified by someone else and passed on, we want its
-recipients to know that what they have is not the original, so that any
-problems introduced by others will not reflect on the original authors'
-reputations.
-
-Finally, any free program is threatened constantly by software patents.
-We wish to avoid the danger that redistributors of a free program will
-individually obtain patent licenses, in effect making the program
-proprietary. To prevent this, we have made it clear that any patent must
-be licensed for everyone's free use or not licensed at all.
-
-The precise terms and conditions for copying, distribution and
-modification follow.
-\end{abstract}
-
-\begin{center}
-{\Large \sc GNU General Public License
-\\\vspace{3mm}Terms and Conditions For Copying, Distribution and Modification}
-\end{center}
-
-
-\begin{enumerate}
-
-\addtocounter{enumi}{-1}
-
-\item
-
-This License applies to any program or other work which contains a notice
-placed by the copyright holder saying it may be distributed under the
-terms of this General Public License. The ``Program'', below, refers to
-any such program or work, and a ``work based on the Program'' means either
-the Program or any derivative work under copyright law: that is to say, a
-work containing the Program or a portion of it, either verbatim or with
-modifications and/or translated into another language. (Hereinafter,
-translation is included without limitation in the term ``modification''.)
-Each licensee is addressed as ``you''.
-
-Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope. The act of
-running the Program is not restricted, and the output from the Program
-is covered only if its contents constitute a work based on the
-Program (independent of having been made by running the Program).
-Whether that is true depends on what the Program does.
-
-\item You may copy and distribute verbatim copies of the Program's source
- code as you receive it, in any medium, provided that you conspicuously
- and appropriately publish on each copy an appropriate copyright notice
- and disclaimer of warranty; keep intact all the notices that refer to
- this License and to the absence of any warranty; and give any other
- recipients of the Program a copy of this License along with the Program.
-
-You may charge a fee for the physical act of transferring a copy, and you
-may at your option offer warranty protection in exchange for a fee.
-
-\item
-
-You may modify your copy or copies of the Program or any portion
-of it, thus forming a work based on the Program, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
-\begin{enumerate}
-
-\item
-
-You must cause the modified files to carry prominent notices stating that
-you changed the files and the date of any change.
-
-\item
-
-You must cause any work that you distribute or publish, that in
-whole or in part contains or is derived from the Program or any
-part thereof, to be licensed as a whole at no charge to all third
-parties under the terms of this License.
-
-\item
-If the modified program normally reads commands interactively
-when run, you must cause it, when started running for such
-interactive use in the most ordinary way, to print or display an
-announcement including an appropriate copyright notice and a
-notice that there is no warranty (or else, saying that you provide
-a warranty) and that users may redistribute the program under
-these conditions, and telling the user how to view a copy of this
-License. (Exception: if the Program itself is interactive but
-does not normally print such an announcement, your work based on
-the Program is not required to print an announcement.)
-
-\end{enumerate}
-
-
-These requirements apply to the modified work as a whole. If
-identifiable sections of that work are not derived from the Program,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works. But when you
-distribute the same sections as part of a whole which is a work based
-on the Program, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Program.
-
-In addition, mere aggregation of another work not based on the Program
-with the Program (or with a work based on the Program) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
-\item
-You may copy and distribute the Program (or a work based on it,
-under Section 2) in object code or executable form under the terms of
-Sections 1 and 2 above provided that you also do one of the following:
-
-\begin{enumerate}
-
-\item
-
-Accompany it with the complete corresponding machine-readable
-source code, which must be distributed under the terms of Sections
-1 and 2 above on a medium customarily used for software interchange; or,
-
-\item
-
-Accompany it with a written offer, valid for at least three
-years, to give any third party, for a charge no more than your
-cost of physically performing source distribution, a complete
-machine-readable copy of the corresponding source code, to be
-distributed under the terms of Sections 1 and 2 above on a medium
-customarily used for software interchange; or,
-
-\item
-
-Accompany it with the information you received as to the offer
-to distribute corresponding source code. (This alternative is
-allowed only for noncommercial distribution and only if you
-received the program in object code or executable form with such
-an offer, in accord with Subsection b above.)
-
-\end{enumerate}
-
-
-The source code for a work means the preferred form of the work for
-making modifications to it. For an executable work, complete source
-code means all the source code for all modules it contains, plus any
-associated interface definition files, plus the scripts used to
-control compilation and installation of the executable. However, as a
-special exception, the source code distributed need not include
-anything that is normally distributed (in either source or binary
-form) with the major components (compiler, kernel, and so on) of the
-operating system on which the executable runs, unless that component
-itself accompanies the executable.
-
-If distribution of executable or object code is made by offering
-access to copy from a designated place, then offering equivalent
-access to copy the source code from the same place counts as
-distribution of the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
-\item
-You may not copy, modify, sublicense, or distribute the Program
-except as expressly provided under this License. Any attempt
-otherwise to copy, modify, sublicense or distribute the Program is
-void, and will automatically terminate your rights under this License.
-However, parties who have received copies, or rights, from you under
-this License will not have their licenses terminated so long as such
-parties remain in full compliance.
-
-\item
-You are not required to accept this License, since you have not
-signed it. However, nothing else grants you permission to modify or
-distribute the Program or its derivative works. These actions are
-prohibited by law if you do not accept this License. Therefore, by
-modifying or distributing the Program (or any work based on the
-Program), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Program or works based on it.
-
-\item
-Each time you redistribute the Program (or any work based on the
-Program), the recipient automatically receives a license from the
-original licensor to copy, distribute or modify the Program subject to
-these terms and conditions. You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties to
-this License.
-
-\item
-If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License. If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Program at all. For example, if a patent
-license would not permit royalty-free redistribution of the Program by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Program.
-
-If any portion of this section is held invalid or unenforceable under
-any particular circumstance, the balance of the section is intended to
-apply and the section as a whole is intended to apply in other
-circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system, which is
-implemented by public license practices. Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-
-\item
-If the distribution and/or use of the Program is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Program under this License
-may add an explicit geographical distribution limitation excluding
-those countries, so that distribution is permitted only in or among
-countries not thus excluded. In such case, this License incorporates
-the limitation as if written in the body of this License.
-
-\item
-The Free Software Foundation may publish revised and/or new versions
-of the General Public License from time to time. Such new versions will
-be similar in spirit to the present version, but may differ in detail to
-address new problems or concerns.
-
-Each version is given a distinguishing version number. If the Program
-specifies a version number of this License which applies to it and ``any
-later version'', you have the option of following the terms and conditions
-either of that version or of any later version published by the Free
-Software Foundation. If the Program does not specify a version number of
-this License, you may choose any version ever published by the Free Software
-Foundation.
-
-\item
-If you wish to incorporate parts of the Program into other free
-programs whose distribution conditions are different, write to the author
-to ask for permission. For software which is copyrighted by the Free
-Software Foundation, write to the Free Software Foundation; we sometimes
-make exceptions for this. Our decision will be guided by the two goals
-of preserving the free status of all derivatives of our free software and
-of promoting the sharing and reuse of software generally.
-
-\begin{center}
-{\Large\sc
-No Warranty
-}
-\end{center}
-
-\item
-{\sc Because the program is licensed free of charge, there is no warranty
-for the program, to the extent permitted by applicable law. Except when
-otherwise stated in writing the copyright holders and/or other parties
-provide the program ``as is'' without warranty of any kind, either expressed
-or implied, including, but not limited to, the implied warranties of
-merchantability and fitness for a particular purpose. The entire risk as
-to the quality and performance of the program is with you. Should the
-program prove defective, you assume the cost of all necessary servicing,
-repair or correction.}
-
-\item
-{\sc In no event unless required by applicable law or agreed to in writing
-will any copyright holder, or any other party who may modify and/or
-redistribute the program as permitted above, be liable to you for damages,
-including any general, special, incidental or consequential damages arising
-out of the use or inability to use the program (including but not limited
-to loss of data or data being rendered inaccurate or losses sustained by
-you or third parties or a failure of the program to operate with any other
-programs), even if such holder or other party has been advised of the
-possibility of such damages.}
-
-\end{enumerate}
-
-
-\begin{center}
-{\Large\sc End of Terms and Conditions}
-\end{center}
-
- \section{Licence of this document}
-
- \begin{center}
-
-
-{\Large GNU Free Documentation License}
-
- Version 1.2, November 2002
-
- Copyright \copyright 2000,2001,2002 Free Software Foundation, Inc.
-
- \bigskip
-
- 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-
- \bigskip
-
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-\end{center}
-
-
-\begin{center}
-{\bf\large Preamble}
-\end{center}
-
-The purpose of this License is to make a manual, textbook, or other
-functional and useful document "free" in the sense of freedom: to
-assure everyone the effective freedom to copy and redistribute it,
-with or without modifying it, either commercially or noncommercially.
-Secondarily, this License preserves for the author and publisher a way
-to get credit for their work, while not being considered responsible
-for modifications made by others.
-
-This License is a kind of "copyleft", which means that derivative
-works of the document must themselves be free in the same sense. It
-complements the GNU General Public License, which is a copyleft
-license designed for free software.
-
-We have designed this License in order to use it for manuals for free
-software, because free software needs free documentation: a free
-program should come with manuals providing the same freedoms that the
-software does. But this License is not limited to software manuals;
-it can be used for any textual work, regardless of subject matter or
-whether it is published as a printed book. We recommend this License
-principally for works whose purpose is instruction or reference.
-
-
-\begin{center}
-{\Large\bf 1. APPLICABILITY AND DEFINITIONS}
-\end{center}
-
-This License applies to any manual or other work, in any medium, that
-contains a notice placed by the copyright holder saying it can be
-distributed under the terms of this License. Such a notice grants a
-world-wide, royalty-free license, unlimited in duration, to use that
-work under the conditions stated herein. The \textbf{"Document"}, below,
-refers to any such manual or work. Any member of the public is a
-licensee, and is addressed as \textbf{"you"}. You accept the license if you
-copy, modify or distribute the work in a way requiring permission
-under copyright law.
-
-A \textbf{"Modified Version"} of the Document means any work containing the
-Document or a portion of it, either copied verbatim, or with
-modifications and/or translated into another language.
-
-A \textbf{"Secondary Section"} is a named appendix or a front-matter section of
-the Document that deals exclusively with the relationship of the
-publishers or authors of the Document to the Document's overall subject
-(or to related matters) and contains nothing that could fall directly
-within that overall subject. (Thus, if the Document is in part a
-textbook of mathematics, a Secondary Section may not explain any
-mathematics.) The relationship could be a matter of historical
-connection with the subject or with related matters, or of legal,
-commercial, philosophical, ethical or political position regarding
-them.
-
-The \textbf{"Invariant Sections"} are certain Secondary Sections whose titles
-are designated, as being those of Invariant Sections, in the notice
-that says that the Document is released under this License. If a
-section does not fit the above definition of Secondary then it is not
-allowed to be designated as Invariant. The Document may contain zero
-Invariant Sections. If the Document does not identify any Invariant
-Sections then there are none.
-
-The \textbf{"Cover Texts"} are certain short passages of text that are listed,
-as Front-Cover Texts or Back-Cover Texts, in the notice that says that
-the Document is released under this License. A Front-Cover Text may
-be at most 5 words, and a Back-Cover Text may be at most 25 words.
-
-A \textbf{"Transparent"} copy of the Document means a machine-readable copy,
-represented in a format whose specification is available to the
-general public, that is suitable for revising the document
-straightforwardly with generic text editors or (for images composed of
-pixels) generic paint programs or (for drawings) some widely available
-drawing editor, and that is suitable for input to text formatters or
-for automatic translation to a variety of formats suitable for input
-to text formatters. A copy made in an otherwise Transparent file
-format whose markup, or absence of markup, has been arranged to thwart
-or discourage subsequent modification by readers is not Transparent.
-An image format is not Transparent if used for any substantial amount
-of text. A copy that is not "Transparent" is called \textbf{"Opaque"}.
-
-Examples of suitable formats for Transparent copies include plain
-ASCII without markup, Texinfo input format, LaTeX input format, SGML
-or XML using a publicly available DTD, and standard-conforming simple
-HTML, PostScript or PDF designed for human modification. Examples of
-transparent image formats include PNG, XCF and JPG. Opaque formats
-include proprietary formats that can be read and edited only by
-proprietary word processors, SGML or XML for which the DTD and/or
-processing tools are not generally available, and the
-machine-generated HTML, PostScript or PDF produced by some word
-processors for output purposes only.
-
-The \textbf{"Title Page"} means, for a printed book, the title page itself,
-plus such following pages as are needed to hold, legibly, the material
-this License requires to appear in the title page. For works in
-formats which do not have any title page as such, "Title Page" means
-the text near the most prominent appearance of the work's title,
-preceding the beginning of the body of the text.
-
-A section \textbf{"Entitled XYZ"} means a named subunit of the Document whose
-title either is precisely XYZ or contains XYZ in parentheses following
-text that translates XYZ in another language. (Here XYZ stands for a
-specific section name mentioned below, such as \textbf{"Acknowledgements"},
-\textbf{"Dedications"}, \textbf{"Endorsements"}, or \textbf{"History"}.)
-To \textbf{"Preserve the Title"}
-of such a section when you modify the Document means that it remains a
-section "Entitled XYZ" according to this definition.
-
-The Document may include Warranty Disclaimers next to the notice which
-states that this License applies to the Document. These Warranty
-Disclaimers are considered to be included by reference in this
-License, but only as regards disclaiming warranties: any other
-implication that these Warranty Disclaimers may have is void and has
-no effect on the meaning of this License.
-
-
-\begin{center}
-{\Large\bf 2. VERBATIM COPYING}
-\end{center}
-
-You may copy and distribute the Document in any medium, either
-commercially or noncommercially, provided that this License, the
-copyright notices, and the license notice saying this License applies
-to the Document are reproduced in all copies, and that you add no other
-conditions whatsoever to those of this License. You may not use
-technical measures to obstruct or control the reading or further
-copying of the copies you make or distribute. However, you may accept
-compensation in exchange for copies. If you distribute a large enough
-number of copies you must also follow the conditions in section 3.
-
-You may also lend copies, under the same conditions stated above, and
-you may publicly display copies.
-
-
-\begin{center}
-{\Large\bf 3. COPYING IN QUANTITY}
-\end{center}
-
-
-If you publish printed copies (or copies in media that commonly have
-printed covers) of the Document, numbering more than 100, and the
-Document's license notice requires Cover Texts, you must enclose the
-copies in covers that carry, clearly and legibly, all these Cover
-Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on
-the back cover. Both covers must also clearly and legibly identify
-you as the publisher of these copies. The front cover must present
-the full title with all words of the title equally prominent and
-visible. You may add other material on the covers in addition.
-Copying with changes limited to the covers, as long as they preserve
-the title of the Document and satisfy these conditions, can be treated
-as verbatim copying in other respects.
-
-If the required texts for either cover are too voluminous to fit
-legibly, you should put the first ones listed (as many as fit
-reasonably) on the actual cover, and continue the rest onto adjacent
-pages.
-
-If you publish or distribute Opaque copies of the Document numbering
-more than 100, you must either include a machine-readable Transparent
-copy along with each Opaque copy, or state in or with each Opaque copy
-a computer-network location from which the general network-using
-public has access to download using public-standard network protocols
-a complete Transparent copy of the Document, free of added material.
-If you use the latter option, you must take reasonably prudent steps,
-when you begin distribution of Opaque copies in quantity, to ensure
-that this Transparent copy will remain thus accessible at the stated
-location until at least one year after the last time you distribute an
-Opaque copy (directly or through your agents or retailers) of that
-edition to the public.
-
-It is requested, but not required, that you contact the authors of the
-Document well before redistributing any large number of copies, to give
-them a chance to provide you with an updated version of the Document.
-
-
-\begin{center}
-{\Large\bf 4. MODIFICATIONS}
-\end{center}
-
-You may copy and distribute a Modified Version of the Document under
-the conditions of sections 2 and 3 above, provided that you release
-the Modified Version under precisely this License, with the Modified
-Version filling the role of the Document, thus licensing distribution
-and modification of the Modified Version to whoever possesses a copy
-of it. In addition, you must do these things in the Modified Version:
-
-\begin{itemize}
-\item[A.]
- Use in the Title Page (and on the covers, if any) a title distinct
- from that of the Document, and from those of previous versions
- (which should, if there were any, be listed in the History section
- of the Document). You may use the same title as a previous version
- if the original publisher of that version gives permission.
-
-\item[B.]
- List on the Title Page, as authors, one or more persons or entities
- responsible for authorship of the modifications in the Modified
- Version, together with at least five of the principal authors of the
- Document (all of its principal authors, if it has fewer than five),
- unless they release you from this requirement.
-
-\item[C.]
- State on the Title page the name of the publisher of the
- Modified Version, as the publisher.
-
-\item[D.]
- Preserve all the copyright notices of the Document.
-
-\item[E.]
- Add an appropriate copyright notice for your modifications
- adjacent to the other copyright notices.
-
-\item[F.]
- Include, immediately after the copyright notices, a license notice
- giving the public permission to use the Modified Version under the
- terms of this License, in the form shown in the Addendum below.
-
-\item[G.]
- Preserve in that license notice the full lists of Invariant Sections
- and required Cover Texts given in the Document's license notice.
-
-\item[H.]
- Include an unaltered copy of this License.
-
-\item[I.]
- Preserve the section Entitled "History", Preserve its Title, and add
- to it an item stating at least the title, year, new authors, and
- publisher of the Modified Version as given on the Title Page. If
- there is no section Entitled "History" in the Document, create one
- stating the title, year, authors, and publisher of the Document as
- given on its Title Page, then add an item describing the Modified
- Version as stated in the previous sentence.
-
-\item[J.]
- Preserve the network location, if any, given in the Document for
- public access to a Transparent copy of the Document, and likewise
- the network locations given in the Document for previous versions
- it was based on. These may be placed in the "History" section.
- You may omit a network location for a work that was published at
- least four years before the Document itself, or if the original
- publisher of the version it refers to gives permission.
-
-\item[K.]
- For any section Entitled "Acknowledgements" or "Dedications",
- Preserve the Title of the section, and preserve in the section all
- the substance and tone of each of the contributor acknowledgements
- and/or dedications given therein.
-
-\item[L.]
- Preserve all the Invariant Sections of the Document,
- unaltered in their text and in their titles. Section numbers
- or the equivalent are not considered part of the section titles.
-
-\item[M.]
- Delete any section Entitled "Endorsements". Such a section
- may not be included in the Modified Version.
-
-\item[N.]
- Do not retitle any existing section to be Entitled "Endorsements"
- or to conflict in title with any Invariant Section.
-
-\item[O.]
- Preserve any Warranty Disclaimers.
-\end{itemize}
-
-If the Modified Version includes new front-matter sections or
-appendices that qualify as Secondary Sections and contain no material
-copied from the Document, you may at your option designate some or all
-of these sections as invariant. To do this, add their titles to the
-list of Invariant Sections in the Modified Version's license notice.
-These titles must be distinct from any other section titles.
-
-You may add a section Entitled "Endorsements", provided it contains
-nothing but endorsements of your Modified Version by various
-parties--for example, statements of peer review or that the text has
-been approved by an organization as the authoritative definition of a
-standard.
-
-You may add a passage of up to five words as a Front-Cover Text, and a
-passage of up to 25 words as a Back-Cover Text, to the end of the list
-of Cover Texts in the Modified Version. Only one passage of
-Front-Cover Text and one of Back-Cover Text may be added by (or
-through arrangements made by) any one entity. If the Document already
-includes a cover text for the same cover, previously added by you or
-by arrangement made by the same entity you are acting on behalf of,
-you may not add another; but you may replace the old one, on explicit
-permission from the previous publisher that added the old one.
-
-The author(s) and publisher(s) of the Document do not by this License
-give permission to use their names for publicity for or to assert or
-imply endorsement of any Modified Version.
-
-
-\begin{center}
-{\Large\bf 5. COMBINING DOCUMENTS}
-\end{center}
-
-
-You may combine the Document with other documents released under this
-License, under the terms defined in section 4 above for modified
-versions, provided that you include in the combination all of the
-Invariant Sections of all of the original documents, unmodified, and
-list them all as Invariant Sections of your combined work in its
-license notice, and that you preserve all their Warranty Disclaimers.
-
-The combined work need only contain one copy of this License, and
-multiple identical Invariant Sections may be replaced with a single
-copy. If there are multiple Invariant Sections with the same name but
-different contents, make the title of each such section unique by
-adding at the end of it, in parentheses, the name of the original
-author or publisher of that section if known, or else a unique number.
-Make the same adjustment to the section titles in the list of
-Invariant Sections in the license notice of the combined work.
-
-In the combination, you must combine any sections Entitled "History"
-in the various original documents, forming one section Entitled
-"History"; likewise combine any sections Entitled "Acknowledgements",
-and any sections Entitled "Dedications". You must delete all sections
-Entitled "Endorsements".
-
-\begin{center}
-{\Large\bf 6. COLLECTIONS OF DOCUMENTS}
-\end{center}
-
-You may make a collection consisting of the Document and other documents
-released under this License, and replace the individual copies of this
-License in the various documents with a single copy that is included in
-the collection, provided that you follow the rules of this License for
-verbatim copying of each of the documents in all other respects.
-
-You may extract a single document from such a collection, and distribute
-it individually under this License, provided you insert a copy of this
-License into the extracted document, and follow this License in all
-other respects regarding verbatim copying of that document.
-
-
-\begin{center}
-{\Large\bf 7. AGGREGATION WITH INDEPENDENT WORKS}
-\end{center}
-
-
-A compilation of the Document or its derivatives with other separate
-and independent documents or works, in or on a volume of a storage or
-distribution medium, is called an "aggregate" if the copyright
-resulting from the compilation is not used to limit the legal rights
-of the compilation's users beyond what the individual works permit.
-When the Document is included in an aggregate, this License does not
-apply to the other works in the aggregate which are not themselves
-derivative works of the Document.
-
-If the Cover Text requirement of section 3 is applicable to these
-copies of the Document, then if the Document is less than one half of
-the entire aggregate, the Document's Cover Texts may be placed on
-covers that bracket the Document within the aggregate, or the
-electronic equivalent of covers if the Document is in electronic form.
-Otherwise they must appear on printed covers that bracket the whole
-aggregate.
-
-
-\begin{center}
-{\Large\bf 8. TRANSLATION}
-\end{center}
-
-
-Translation is considered a kind of modification, so you may
-distribute translations of the Document under the terms of section 4.
-Replacing Invariant Sections with translations requires special
-permission from their copyright holders, but you may include
-translations of some or all Invariant Sections in addition to the
-original versions of these Invariant Sections. You may include a
-translation of this License, and all the license notices in the
-Document, and any Warranty Disclaimers, provided that you also include
-the original English version of this License and the original versions
-of those notices and disclaimers. In case of a disagreement between
-the translation and the original version of this License or a notice
-or disclaimer, the original version will prevail.
-
-If a section in the Document is Entitled "Acknowledgements",
-"Dedications", or "History", the requirement (section 4) to Preserve
-its Title (section 1) will typically require changing the actual
-title.
-
-
-\begin{center}
-{\Large\bf 9. TERMINATION}
-\end{center}
-
-
-You may not copy, modify, sublicense, or distribute the Document except
-as expressly provided for under this License. Any other attempt to
-copy, modify, sublicense or distribute the Document is void, and will
-automatically terminate your rights under this License. However,
-parties who have received copies, or rights, from you under this
-License will not have their licenses terminated so long as such
-parties remain in full compliance.
-
-
-\begin{center}
-{\Large\bf 10. FUTURE REVISIONS OF THIS LICENSE}
-\end{center}
-
-
-The Free Software Foundation may publish new, revised versions
-of the GNU Free Documentation License from time to time. Such new
-versions will be similar in spirit to the present version, but may
-differ in detail to address new problems or concerns. See
-http://www.gnu.org/copyleft/.
-
-Each version of the License is given a distinguishing version number.
-If the Document specifies that a particular numbered version of this
-License "or any later version" applies to it, you have the option of
-following the terms and conditions either of that specified version or
-of any later version that has been published (not as a draft) by the
-Free Software Foundation. If the Document does not specify a version
-number of this License, you may choose any version ever published (not
-as a draft) by the Free Software Foundation.
-
-
-%---------------------------------------------------------------------
-\end{document}
-
-\end{document}
Deleted: trunk/doc/install.txt
===================================================================
--- trunk/doc/install.txt 2007-06-12 08:34:48 UTC (rev 372)
+++ trunk/doc/install.txt 2007-06-12 08:35:41 UTC (rev 373)
@@ -1,1798 +0,0 @@
-
- next_inactive up previous
-
- Implementation of OGC's WPS standard: PyWPS
-
- Jachym Cepicky
-
- Copyright ©2006 PyWPS Development Team Permission is granted to
- copy, distribute and/or modify this document under the terms of the
- GNU Free Documentation License, Version 1.2 or any later version
- published by the Free Software Foundation; with no Invariant
- Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of
- the license is included in the section entitled "GNU Free
- Documentation License".
-
- In this file, you can found the description of installation and
- configuration of PyWPS script. At the and, you can learn, how to add
- your own process to the list of processes. The file describes most
- recent version of PyWPS (2.0.0), available in subversion respository.
-
- PyPWS project has been started on April 2006 with support of DBU -
- Deutsche Bundesstiftung Umwelt ([1]http://dbu.de) and with help of
- GDF-Hannover ([2]http://gdf-hannover.de) and Help Service Remote
- Sensing ([3]http://www.bnhelp.cz) companies. Initial author is Jachym
- Cepicky ([4]http://les-ejk.cz).
-
-Contents
-
- * [5]Introduction
- + [6]How it works
- * [7]Bugs
- * [8]Installation
- + [9]Installation the quick 'n' dirty way
- + [10]Installation the 'clean' way
- + [11]Testing after installation
- * [12]Configuration
- + [13]etc/settings.py
- + [14]etc/grass.py
- * [15]Add your own processes
- + [16]Process Initialization and Configuration
- + [17]Process Programming
- + [18]GRASS specific notes
- * [19]Testing your new process
- * [20]Using PyWPS
- + [21]Input
- + [22]Output
- * [23]Example process: addvalue
- * [24]KVP request encoding of addvalue
- * [25]XML request encoding addvalue
- * [26]Licence of PyWPS
- * [27]Licence of this document
-
- Introduction
-
- PyWPS (Python Web Processing Service) is implementation of Web
- Processing Service standard from Open Geospatial Consortium.
-
- It has been started on Mai 2006 as project supported by DBU. It offers
- environment for programming own process (geofunctions or models) which
- can be accessed from the public. The main advantage of PyWPS is, that
- it has been written with native support for GRASS. Access GRASS
- modules via web interace should be as easy as possible.
-
- Processes can be written using GRASS GIS, but usage of other programs
- is also possible. Usage together with R package or GDAL or PROJ tools.
-
- PyWPS is written in Python programming language, your processes must
- use this language too.
-
- PyWPS Homepage can be found at [28]http://pywps.wald.intevation.org.
- PyWPS Wiki is hosted on [29]http://pywps.ominiverdi.org.
-
-How it works
-
- PyWPS is an translator application between client (Web Browser,
- Desktop GIS, command line tool, ...) and working tool installed on the
- server. PyWPS does no work by it self. As working tool, GRASS GIS,
- GDAL, PROJ, R and other programs can be used.
-
- CAPTION: Figure 1: How does PyWPS work: GRASS GIS is in this case
- working tool
-
- Image pywps-schema
-
- Bugs
-
- Known bugs and limitations to UL>
-
- Sometimes, when there is e.g. SyntaxError in the process, teporary
- file /tmp/pywps* is not deleted, which ledts to ServerBussy exception
- and the files have to be removed by hand.
-
- If inputs are of type LiteralValue and it's type is string, it is
- not controlled properly. Take care on your inputs and do not use it
- directly in scripts to avoid your server to be hacked.
-
- Please report all problems or unexpected handeling either via pywps
- mailing list[30]^1or using PyWPS bugtracker[31]^2.
-
- Installation
-
- Required packages:
-
- * python
- * python-xml
-
- Recommended packages:
-
- * Web Server (e.g. Apache) - [32]http://httpd.apache.org - You will
- need an web server, to be able to execute processes from remote
- computers.
- * GIS GRASS - [33]http://grass.itc.it - Geographical Resources
- Analysis Support System (GRASS) is Open Source GIS, which provides
- more then 350 modules for raster and vector (2D, 3D) data
- analysis. PyWPS is written with native support for GRASS and it's
- functions.
- * PROJ.4 - [34]http://proj.maptools.org - Cartographic Projections
- library used in various Open Source projects, such as GRASS, UMN
- MapServer, QGIS and others. It can be used e.g. for data
- transformation.
- * GDAL/OGR - [35]http://gdal.org - translator library for raster
- geospatial data formats, is used in various projects for
- importing, exporting and transformation between various raster and
- vector data formats.
- * R - [36]http://www.r-project.org - is a language and environment
- for statistical computing and graphics.
-
-Installation the quick 'n' dirty way
-
- For installing pywps to your server simply unzip the archive to the
- directory, where cgi programs are allowed to run. You can also use
- current repository version.
-
-$ cd /usr/lib/cgi-bin/
-$ tar xvzf /tmp/pywps-VERSION.tar.gz
-$ pywps/wps.py
-
-Installation the 'clean' way
-
- Unzip the package
-$ tar -xzf pywps-VERSION.tar.gz
-
- and run
-$ python setup.py install
-
- Several binary packages for Linux distributios are also avaliable on
- PyWPS site[37]^3.
-
-Testing after installation
-
- For test, just run wps.py in your command line:
-
-$ ./wps.py
-Content-type: text/xml
-
-<?xml version="1.0" ?>
-<ExceptionReport version="1.0.0" xmlns="http://www.opengis.net/ows"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
- <Exception exceptionCode="MissingParameterValue" locator="request"/>
-</ExceptionReport>
-
- If you got some other message, like e.g.:
-
-Traceback (most recent call last):
- File "trunk/index.py", line 53, in ?
- from Wps import wpsexceptions
- File "/home/jachym/prog/pywps/trunk/Wps/wpsexceptions.py", line 8, in ?
- from xml.dom.minidom import Document
-ImportError: No module named xml.dom.minidom
-
- Than something is wrong with your Python installation or with the
- program. This message means, that the xml.dom.minidom package is not
- installed in your system.
-
- Configuration
-
- Before you start to tune your pywps program, you should get your copy
- of OpenGIS(R) Web Processing Service document (OGC 05-007r4) version
- 0.4.0 from
- [38]http://www.opengeospatial.org/specs/?page=specs
-
- NOTE: Note, that the configuration option are CASE SENSITIVE
-
- Pywps configuration takes places in two files. The files are actually
- python scripts, so it does not harm, if you have some experience in
- python programming language. But you should be able to setup the
- program without any python knowledge.
-
- The first file is in etc/settings.py and (optional) the second file is
- etc/grass.py which has to be setuped if you do want to use GRASS GIS
- modules in your scripts. Some special "tuning" can be done in
- processes/__init__.py file. You can allways obtain original
- configuration files from Wps/default_settings.py and
- Wps/default_grass.py.
-
-etc/settings.py
-
- This file has got two sections: WPS and serverSettings
-
- In the WPS section, the main configuration is set, which appears
- mostly in GetCapabilities request. The mandatory parameters, which
- should be set up are (with default/recommend values):
-
-WPS = {
- 'version': "0.4.0",
- 'ServiceIdentification': {
- 'Title':"Jachym's WPS server",
- 'ServiceType':"WPS",
- 'ServiceTypeVersion':"0.1.0",
- 'Abstract':'Abstract to this WPS',
- },
- 'ServiceProvider': {
- 'ProviderName' : "Your Company",
- 'IndividualName':"Your Name",
- 'PositionName':"Your Position",
- 'Role':"your role",
- 'DeliveryPoint': "Street",
- 'City': "City",
- 'PostalCode':"00000",
- 'Country': "Your country",
- 'ElectronicMailAddress':"your.email at address",
- },
-
- 'OperationsMetadata': {
- 'ServerAddress' : "http://localhost/cgi-bin/wps/wps.py",
- },
- 'Keywords' : ['GRASS','GIS','WPS'],
-}
-
- In the ServerSettings section, the variables are set, which have
- impact on the whole server.
-
-ServerSettings = {
- # NOTE: You have to create this directory manually and set rights, so
- # the program is able to store data in there
- 'outputPath': '/var/www/wpsoutputs',
-
- #
- # 'outputUrl' - URL of the directory, where the outputs will be stored
- 'outputUrl': 'http://192.168.1.31/wpsoutputs',
-
- #
- # tempPath - path to directory, where temporary data will be stored.
- # NOTE: the pywps has to have rights, to create directories and files
- # in this directory
- 'tempPath': '/tmp',
-
- #
- # maxOperations - maximum number of operations, which is allowed to low
- # on this server at ones
- # default = 1
- 'maxOperations':1,
-
- #
- # maxSize: maximum input file size in bytes
- # NOTE: maximum file size is 5MB, no care, if this number is higher
- 'maxSize':5242880, # 5 MB
-
- #
- # maxInputParamLength: maximal length of input values
- # NOTE: maximum length of input parameters is 256, no matter, how heigh
-t
- # is this number
- 'maxInputParamLength':256,
-}
-
-etc/grass.py
-
- This file servers for configuration of GRASS GIS environment (if your
- processes need one). Everything is stored in grassenv structure.
-
-grassenv = {
- # PATH in which your modules (processes) should be able the search.
- # Default value:
- 'PATH': "/usr/local/grass-6.1.cvs/bin/:/usr/local/grass-6.1.cvs/scripts/:\
- /usr/bin/:/bin/:",
-
- # Add eventually some other path, in which should GRASS search for modules
- 'GRASS_ADDON_PATH': "",
-
- # Version of GRASS, you are using
- 'GRASS_VERSION': "6.1.cvs",
-
- # GRASS_PERL, where is your PERL bin installed
- 'GRASS_PERL': "/usr/bin/perl",
-
- # GRASS_GUI should be always "text" unless you know, what you are doing
- 'GRASS_GUI': "text",
-
- # GISBASE is place, where your GRASS installation is
- 'GISBASE': "/usr/local/grass-6.1.cvs",
-
- # LD_LIBRARY_PATH
- 'LD_LIBRARY_PATH':"/usr/local/grass-6.1.cvs/lib",
-
- # HOME has to be set
- 'HOME':"/var/www",
-}
-
- Add your own processes
-
- NOTE: This section has changed from previous stable 1.0.0 version. The
- processes, you defined for 1.0.0 branch should work for 2.0.0 branch
- too.
-
- All processes are stored in the processes directory. Put your file
- e.g. myprocess.py in there. Several example processes are distributed
- along with PyWPS source code.
-
- Process is python class derived from prepared WPSProcess class in
- pywps.Wps package. In it __init__(self) method, process metadata,
- inputs and outpus are defined and in execute(self) method, own
- computation is performed.
-
- It is possible also to add as many your functions, as you wish.
-
-Process Initialization and Configuration
-
-01 # importing necessary files
-02 import pywps.Wps.WPSProcess
-03
-04 class Process(WPSProcess):
-05 def __init__(self):
-06 WPSProcess.__init__(self,
-07 Identifier="ogr2ogr",
-18 Title="ogr2ogr interface",
-19 Abstract="Convert vector file to another format",
-10 processVersion = "0.2",
-11 statusSupported="true",
-12 storeSupported="true")
-
- We defined new process called ogr2ogr. The process is allowed to store
- it's output data on the server (storeSupported) and it is also
- possible to run it in asynchronous mode (statusSupported).
-
- Eventually optional attributes can be found in the table 38 - "Parts
- of ExecuteResponse data structure" in the WPS reference
- document[39]^4. It is also possible to redefine some variable later,
- after initialization:
-
-13
-14 self.Title="ogr2ogr interface"
-15
-
- Metadata defition
-
- is stored in array self.Metadata in __init__ method. You can add new
- Medatada using self.AddMetadata() method:
- self.AddMetadata(Identifier="point",type="point",
- textContent="Click in the map")
-
- This code will produce in DescribeProcess responce document following
- element:
-...
-<ows:Metadata Identifier="point" type="point">
- Click in the map
-</ows:Metadata>
-...
-
- Data Inputs
-
- Data inputs are stored in self.Inputs array. To add inputs to your
- process, you should use methods defined in WPSProcess class.
-
- Four types of data inputs are defined:
- * Literal Input - Basic literal input - single number or text value
- * ComplexValue Input - Mostly vector file embded in input XML
- request
- * ComplexValueReference Input - URL to location, where the process
- is supposed to get the input data.
- * BoundingBox Input - Coordinates for lower-left and upper-right
- corner.
-
- ComplexValue and ComplexValueReference defined on the same way - PyWPS
- is able to guess, if the input data are reference (link) to some map
- or raw data directly.
-
- LiteralInput
-
- Basic type of data input is LiteralInput type. To define LiteralInput
- the easy way, you should use AddLiteralInput method:
-
-20
-21 self.AddLiteralInput(Identifier="value",
- Title="Value to be added",
- type=type(0))
-
- Above example will add new input with identifier value of type
- integer. Examples of other possibilities of LiteralInputs and
- resulting part of XML are folowing:
-
- Example of any allowed input value (default)
-
-self.AddLiteralInput(Identifier="someinput",
- Title="Some Input",
- allowedvalues='*')
-
-...
- <Input>
- <ows:Identifier>someinput</ows:Identifier>
- <ows:Title>Some Input</ows:Title>
- <ows:Abstract/>
- <LiteralData>
- <SupportedUOMs defaultUOM="m">
- <ows:UOM>m</ows:UOM>
- </SupportedUOMs>
- <ows:AnyValue/>
- </LiteralData>
- <MinimumOccurs>1</MinimumOccurs>
- </Input>
-...
-
- Example of specified list (with range) of allowed inputs
-
- Following example will define input with specified list of values:
- Only values 20, 30, everything between 40-100 and 110 will be
- accepted:
-self.AddLiteralInput(Identifier="someinput",
- Title="Some Input",
- allowedvalues=[20,30,[40,100],110])
-
-...
- <Input>
- <ows:Identifier>someinput</ows:Identifier>
- <ows:Title>Some Input</ows:Title>
- <ows:Abstract/>
- <LiteralData>
- <SupportedUOMs defaultUOM="m">
- <ows:UOM>m</ows:UOM>
- </SupportedUOMs>
- <AllowedValues>
- <Value>20</Value>
- <Value>30</Value>
- <Range>
- <MinimumValue>40</MinimumValue>
- <MaximumValue>100</MaximumValue>
- </Range>
- <Value>110</Value>
- </AllowedValues>
- </LiteralData>
- <MinimumOccurs>1</MinimumOccurs>
- </Input>
-...
-
- For further documentation, refere example processes distributed with
- the source code as well as pydoc pywps/wps/process.py. This help is
- also available in process.html[40]^5 file distributed along with PyWPS
- source code.
-
- ComplexInput
-
- If the request comes as HTTP GET, it is assumed, that the input is
- only reference to some map. If it comes as HTTP POST, PyWPS tryes to
- guess, if the client is sending URL to source of the data or if the
- input data are part of input XML request (e.g. as GML file). So, you,
- as a process coder do not have to take care on this:
-
-self.AddComplexInput(Indentifier="inputmap",
- Title="Input map, which should be processed",
- Formats=["text/xml","image/tiff"])
-...
- <Input>
- <ows:Identifier>input</ows:Identifier>
- <ows:Title>Input raster map</ows:Title>
- <ows:Abstract/>
- <ComplexData defaultFormat="image/tiff">
- <SupportedComplexData>
- <Format>image/tiff</Format>
- <Format>text/xml</Format>
- </SupportedComplexData>
- </ComplexData>
- <MinimumOccurs>1</MinimumOccurs>
- </Input>
-
- BoundingBox Input
-
- With bounding box, you can define two coordinate pairs, if you have
- to.
-
-self.AddBondingBoxInput(Identifier="bbox",
- Title="BBox input")
-
- Data Outputs
-
- Again four types of output are defined:
- * Literal Output
- * ComplexValue Output
- * ComplexValue Reference
- * BoundingBox Output
-
- Data outputs can be defined on similar way, using similar methods:
-
- LiteralOutput
-
-self.AddLiteralOutput(Identifier="litoutput",
- Title="Resulting output value")
-
-...
- <Output>
- <ows:Identifier>litoutput</ows:Identifier>
- <ows:Title>Resulting output value</ows:Title>
- <ows:Abstract/>
- <LiteralOutput>
- <SupportedUOMs defaultUOM="m">
- <ows:UOM>m</ows:UOM>
- </SupportedUOMs>
- </LiteralOutput>
- </Output>
-...
-
- ComplexValue and ComplexValueReference Output
-
- To the oposite of data Inputs, Outputs can distinguish between
- ComplexValue output and ComplexValueReference. ComplexValue is
- directly embed into the output XML document and ComplexValueReference
- is stored on the server and only URL pointing the the file is refering
- to it. In general, vector files in GML format can be easy embed to the
- output XML, TIFF raster files is better to leave on the server.
-
-self.AddComplexReferenceOutput(Identifier="output",
- Title="Resulting output map",
- Formats=["image/tiff"])
-
-...
- <Output>
- <ows:Identifier>output</ows:Identifier>
- <ows:Title>Resulting output map</ows:Title>
- <ows:Abstract/>
- <ComplexOutput defaultFormat="image/tiff">
- <SupportedComplexData>
- <Format>image/tiff</Format>
- </SupportedComplexData>
- </ComplexOutput>
- </Output>
-...
-
- BoundingBox Output
-
- Beside LiteralValue and ComplexValue, BoundingBoxValue is also
- defined. The coordinates are stored in array of four members:
-
-self.GetInputValue("bboxinput")
-[0,0,100,100]
-
- So on our ogr2ogr process, we have to define three types of input:
- ComplexValue of input vector file and EPSG codes of target and source
- files:
-
-16 self.AddComplexInput(Identifier="inputmap",
-17 Title ="Input vector file",
-18 Abstract = "Input vector file to be converted",
-19 Formats=["text/xml"])
-20
-21 self.AddLiteralInput(Identifier="sepsg",
-22 Title="Source EPSG",
-23 Abstract="Source EPSG code",
-24 value=4326)
-
- And we also define two outputs: ComplexValueReference and ComplexValue
- type.
-
-25 self.AddComplexOutput(Identifier="outputmap",
-26 Title ="Input vector file",
-27 Abstract = "Input vector file to be converted",
-28
-29 self.LiteralOutput(Identifier="sepsg",
-30 Title="Source EPSG",
-31 Abstract="Source EPSG code",
-32 value=4326)
-
-Process Programming
-
- The process must be defined in the execute(self) function. You can
- access the input values via self.GetInputValue(Identifier) method.
-
- NOTE: Usage of the old method, accessing the values via
- self.Inputs[index]['value'] or via self.DataInputs array is possible,
- but should not be used.
-
- Also variable self.grassenv will be in your process at your service.
- This dictionary stores environment variables used by GRASS GIS, such
- se LOCATION_NAME or MAPSET.
-
- Output values should be set using self.SetOutputValue(Identifier,
- value) method.
-
- NOTE: Usage of the old methods of output values setting, directly to
- self.Outputs[index]['value'] variable or to
- self.DataOutputs['identifier'] dictionary, is possible, but should
- better not be used.
-
- If you need to execute some shell command, you should use
- self.Cmd(command,["string for standard input"]) instead of e.g.
- os.system() or os.popen() functions.
-
-33
-35 def execute(self):
-36
-37 #
-38 # calculation
-39 #
-30 self.Cmd("""ogr2ogr -s_srs "+init=epsg:4326" -t_srs \
-31 "+init=epsg:2065" %s output.file""" % (self.GetInputValue("inputmap
-")))
-32 #
-43 # setting results
-44 #
-45 self.SetOutputValue("outputmap","output.file")
-46 self.SetOutputValue("sepsg","4326")
-47
-48 return
-
- Error handling
-
- At the end of the execute function, None value should be returned. Any
- other value means, that the calculation will be stopped and error
- report will be returned back to the client.
-
- Using standard in- and output with external commands
-
- The self.Cmd() accepts input parameter, wich is a text string, which
- is directred to standard input of the command:
-
- result = self.Cmd(cmd="wc -c",
- input="calculate number of characters for this sentence")
-
- # result[0].split()
-
- self.Cmd() returns list of lines from the programms standard output to
- the process:
-
- for line in self.Cmd("ls -l"):
- # do some operations of list of files
- pass
-
-GRASS specific notes
-
- Special class for GRASS GIS is defined too, which has functions and
- variables specific to this program. The process, in which should use
- GRASS modules should be defined as follows:
-
-# importing necessary files
-import pywps.Wps.GRASSWPSProcess
-
-class Process(GRASSWPSProcess):
- def __init__(self):
- GRASSWPSProcess.__init__(self,
- Identifier="spearpath",
- Title="Spearfish path searching",
- Abstract="Find the shortest path on the roads map on Spearfish d
-ataset",
- processVersion = "0.2",
- statusSupported="true",
- storeSupported="true",
- # grassLocation="/var/www/spearfish60/" # work on existing locat
-ion)
-
- By default, self.grassLocation[41]^6 variable is set to None, which
- means, that temporary location will be created and after the
- calculation is done, it will be deleted again. You can set this while
- process initialization or later[42]^7.
-
- WPSProcess class provides special method self.GCmd(command_string),
- which tryes to catch output from GRASS modules, especially progress
- information inidcated by percent done. Method GCmd() stores the output
- of GRASS modules to self.status variable, so if the process is running
- assynchronously, client application can track the progress of each
- module directly.
-
- def execute(self):
- """
- This function serves like simple GRASS - python script
-
- It returns None, if process succeed or String if process failed
- """
- self.GCmd("g.region -d")
-
-
- # v.net.path reads from standard input
- self.GCmd("v.net.path in=roads out=path","0 %s %s %s %s" % (self.GetInp
-utValue('x1'),
- self.GetInputValue('y1'),
- self.GetInputValue('x2'),
- self.GetInputValue('y2')))
-
- self.GCmd("v.out.ogr format=GML input=path dsn=out.xml olayer=path.xml"
-)
-
- if "out.xml" in os.listdir(os.curdir):
- shutil.copy("out.xml","out2.xml")
- self.SetOutputValue('outputReference',"out.xml")
- self.SetOutputValue('outputData',"out2.xml")
- return
- else:
- return "Ouput file not created!"
-
- It is also possible to run GRASS modules using python's os.system() or
- os.popen() function. Before you do so, it is important to import the
- os python package (usually one of the first lines in the file). This
- approach might not be the best, but it is the simplest one. Feel free
- to use any other low-end functions.
-
- Unfortunately, the GRASS modules are very verbose. Some messages are
- written to STDOUT, some to STDERR. The STDERR will be stored in the
- error file of your web server. But you have to "catch" the messages,
- sent to STDOUT. This can be done e.g. by using " $1>\&2$ " statement
- (redirecting STDOUT to STDERR in shell):
-
-os.system("""
- echo "Rekni jim drazi, tatko, za to nic nedas." >&2
-""")
-
- You can avoid this problem using formentioned self.GCmd() method.
-
- Testing your new process
-
- To test your PyWPS installation, you run it either as Webserver
- cgi-application or in the command line directly. It is always good to
- start with the command line test, so do not have to check error.log of
- the web server.
-
- * GetCapabilities request (webserver)
-./wps.py "service=wps&request=getcapabilities"
-
-wget -nv -q -O - "http://localhost/cgi-bin/wps.py?\
- service=Wps&request=getcapabilities"
- * DescribeProcess request:
-./wps.py "version=0.4.0&service=Wps&request=DescribeProcess&\
- Identifier=your_process"
-
-wget -nv -q -O - "http://localhost/cgi-bin/wps.py?\
- version=0.4.0&service=Wps&request=DescribeProcess&\
- Identifier=your_process"
- * Execute request:
-./wps.py "version=0.4.0&service=Wps&\
- request=Execute&Identifier=your_process&\
- datainputs=input1,value1,input2,value2"
-
-wget -nv -q -O - "http://localhost/cgi-bin/wps.py?\
- version=0.4.0&service=Wps&\
- request=Execute&Identifier=your_process&\
- datainputs=input1,value1,input2,value2" \
-
- Using PyWPS
-
-Input
-
- To get response from PyWPS you have to formulate appropriate query
- string first. You can use HTTP GET style or HTTP POST style.
-
- HTTP GET style is standard URL, with all parameters in one line. You
- can not set any ComplexValue data in your process via HTTP GET.
- Example:
-
-wget -nv -q -O - --post-data="version=0.4.0&service=Wps&\
- request=Execute&Identifier=your_process&\
- datainputs=input1,value1,input2,value2"\
- "http://localhost/cgi-bin/wps.py"
-
- In HTTP POST style, you send one "request" parameter, which contains
- XML input. The XML file can contain also included ComplexValue data,
- e.g. GML file. Example:
-
-wget --post-file=execute-post.txt \
- "http://localhost/pywps/wps.py" -O - -nv -q
-
- The execute-post.txt file can look like follows:
-<?xml version="1.0" encoding="utf-8"?>
-<Execute service="WPS" version="0.4.0" store="false" status="false"
-xmlns="http://www.opengeospatial.net/wps"
-xmlns:ows="http://www.opengeospatial.net/ows"
-xmlns:xlink="http://www.w3.org/1999/xlink"
-xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-xsi:schemaLocation="http://www.opengeospatial.net/wps/wpsDescribeProcess.xsd">
- <ows:Identifier>searchpath</ows:Identifier>
- <DataInputs>
- <Input>
- <ows:Identifier>streetmap</ows:Identifier>
- <ows:Title>The map</ows:Title>
- <ows:ComplexValue>
- <Value>
-<ogr:FeatureCollection
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://ogr.maptools.org/ donut.xsd"
- xmlns:ogr="http://ogr.maptools.org/"
- xmlns:gml="http://www.opengis.net/gml">
- <gml:boundedBy>
- <gml:Box>
- <gml:coord><gml:X>4.263256414560601e-14</gml:X>
- <gml:Y>-70.71067811865474</gml:Y></gml:coord>
- <gml:coord><gml:X>141.4213562373095</gml:X>
- <gml:Y>70.71067811865474</gml:Y></gml:coord>
- </gml:Box>
- </gml:boundedBy>
- <gml:featureMember>
- <ogr:donut fid="F0">
- <ogr:geometryProperty><gml:LineString><gml:coordinates>
- 70.710678118654755,70.710678118654741,0 141.42135623730951,0.0,
- 0 70.710678118654741,-70.710678118654741,0 0.000000000000043,
- 0.000000000000057,0 70.710678118654755,
- 70.710678118654741,0</gml:coordinates>
- </gml:LineString></ogr:geometryProperty>
- </ogr:donut>
- </gml:featureMember>
- <gml:featureMember>
- <ogr:donut fid="F0">
- <ogr:geometryProperty><gml:LineString><gml:coordinates>50.000000000000014
-,
- 0.000000000000021,0 71.213203435596427,-21.213203435596419,0
- 92.426406871192853,0.0,0 71.213203435596427,21.213203435596423,0
- 50.000000000000014,0.000000000000021,0</gml:coordinates>
- </gml:LineString></ogr:geometryProperty>
- </ogr:donut>
- </gml:featureMember>
-</ogr:FeatureCollection>
- </Value>
- </ows:ComplexValue>
- </Input>
-
- <Input>
- <ows:Identifier>x1</ows:Identifier>
- <ows:LiteralValue>591679.31</ows:LiteralValue>
- </Input>
- <Input>
- <ows:Identifier>y1</ows:Identifier>
- <ows:LiteralValue>4927205.07</ows:LiteralValue>
- </Input>
- <Input>
- <ows:Identifier>x2</ows:Identifier>
- <ows:LiteralValue>608642.625</ows:LiteralValue>
- </Input>
- <Input>
- <ows:Identifier>y2</ows:Identifier>
- <ows:LiteralValue>4915876.31</ows:LiteralValue>
- </Input>
- </DataInputs>
-</Execute>
-
- You can see, that there are 4 inputs in this process:
-
- 1. ComplexValue GML File
- 2. x1 coordinate
- 3. y1 coordinate
- 4. x2 coordinate
- 5. y2 coordinate
-
-Output
-
- The output from PyWPS can be either XML file or results of processes
- directly. In default configuration, no files are stored on the server,
- resulting values (maps) are returned to the client. If you want to
- return XML file with outputs encoding, you have to enable it in you
- process configuration with option storeSupported:
-
- self.storeSupported = "true"
-
- And you have to call the PyWPS with "store=true" option:
-
- version=0.4.0&service=Wps&request=Execute&Identifier=your_process&\
- datainputs=input1,value1,input2,value2&store=true
-
- Or in XML input:
-
-request=<?xml version="1.0" encoding="utf-8"?>
-<Execute service="WPS" version="0.4.0" store="true" status="false"
-xmlns="http://www.opengeospatial.net/wps"
-xmlns:ows="http://www.opengeospatial.net/ows"
-xmlns:xlink="http://www.w3.org/1999/xlink"
-xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-xsi:schemaLocation="http://www.opengeospatial.net/wps/wpsDescribeProcess.xsd">
-
-...
-
- This will cause PyWPS to look after self.status array in your process
- in form form
- self.status = ["Message", Percent_Done]
-
- and generate XML file in statusLocation with this embed message. E.g.
-
- self.status = ["Generating raster map", 50]
-
- or better
- self.SetStatus("Generarting raster map", 50_Done)
-
- will become
-
-...
- <Status>
- <ProcessStarted message="Generating raster map" percentCompleted="5
-0"/>
- </Status>
-...
-
- Example process: addvalue
-
- This sample process describes how to made your own WPS processes.
- Purpose of this process is:
- * Download input raster map from some server
- * Convert it to integer values
- * Add input value to each raster cell
- * Convert raster to vector
- * Export raster to TIFF and vector to GML. Vector file will be embed
- ot output XML file.
-
-"""
-
-pywps process example:
-
-addvalue: Adds some value to raster map
-"""
-# Author: Jachym Cepicky
-# http://les-ejk.cz
-# Lince: GNU/GPL
-#
-# Copyright (C) 2006 Jachym Cepicky
-
-import os,time,string,sys,shutil
-from pywps.Wps.process import GRASSWPSProcess
-
-class Process (GRASSWPSProcess):
- #
- # Initialization
- #
- def __init__(self):
- GRASSWPSProcess.__init__(self,
- Identifier="Addvalue",
- Title="Add some value to input raster map",
- processVersion = "0.2",
- statusSupported="true",
- storeSupported="true",
- grassLocation = None)
-
-
- #
- # Inputs
- self.AddComplexInput(Identifier="input",
- Title="Input raster map",
- Formats=["image/tiff"])
- self.AddLiteralInput(Identifier="value",
- Title="Value to be added",
- type=type(0))
-
- #
- # Outputs
- self.AddComplexReferenceOutput(Identifier="output",
- Title="Resulting output map",
- Formats=["image/tiff"])
- #
- # Execute part of the process
- #
- def execute(self):
- """
- This function
- 1) Imports the raster map
- 2) runs r.mapcalc out=in+value
- 3) Exports the raster map
- 4) returns the new file name or 'None' if something went wrong
- """
-
- # import of the data
- self.SetStatus("Importing data")
- if not self.GCmd("r.in.gdal -o in=%s out=input" %\
- (self.GetInputValue("input"))):
- return "Could not import raster file"
- self.SetStatus("Importing data",10)
-
- # compositing 3 bands to one raster file
- for gdalinfoln in os.popen("gdalinfo %s" %\
- (self.GetInputValue("input"))):
- if gdalinfoln.split()[0] == "Band" and gdalinfoln.split()[1] == "3"
-:
- self.GCmd("""g.region rast=input.red """)
- self.GCmd("r.composite r=input.red b=input.blue g=input.green o
-ut=input")
-
- # region setting
- self.GCmd("""g.region rast=input""")
-
- # adding the value
- self.SetStatus("Adding new value to raster map",50)
- self.GCmd("r.mapcalc output='input+%f'" % float(self.GetInputValue('val
-ue')))
-
- # output
- self.SetStatus("Raster file export", 90)
- self.GCmd("r.out.gdal type=Int32 in=output out=%s" % "output.tif")
-
- # setting output values
- self.SetOutputValue("output","output.tif")
- if "output.tif" in os.listdir(os.curdir):
- return # OK
- else:
- return "Output file not created!" # FAILED
- """
-
- KVP request encoding of addvalue
-
- This process can be lunched with URL:
- http://localhost/cgi-bin/wps.py?service=wps&version=0.4.0&identifier=a
- ddvalue&request=execute& $\backslash$
- datainputs=input,http://localhost/data/raster.tif,value,250&status=tru
- e&store=true
-
- XML request encoding addvalue
-
-request=<?xml version='1.0' encoding='UTF-8' standalone='yes'?>
-<Execute service='wps' version='0.4.0' store='true' status='false'
- xmlns="http://www.opengeospatial.net/wps"
- xmlns:ows="http://www.opengeospatial.net/ows">
-<ows:Identifier>addvalue</ows:Identifier>
-<DataInputs>
- <Input>
- <ows:Identifier>input</ows:Identifier>
- <ComplexValueReference reference='http://localhost/wps/data/soils.tif'
-/>
- </Input>
- <Input>
- <ows:Identifier>value</ows:Identifier>
- <LiteralValue>250</LiteralValue>
- </Input>
- <!-- Input>
- <ows:Identifier>bbox</ows:Identifier>
- <BoundingBoxValue>
- <BoundingBox>
- <LowerCorner>-1 -1</LowerCorner>
- <UpperCorner>10 10</UpperCorner>
- </BoundingBox>
- </BoundingBoxValue>
- </Input -->
-</DataInputs>
-</Execute>
-
- Licence of PyWPS
-
- The GNU General Public License
-
- Version 2, June 1991
-
- Copyright © 1989, 1991 Free Software Foundation, Inc.
-
- 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
-
- Everyone is permitted to copy and distribute verbatim copies of this
- license document, but changing it is not allowed.
-
- Preamble:
-
- The licenses for most software are designed to take away your freedom
- to share and change it. By contrast, the GNU General Public License is
- intended to guarantee your freedom to share and change free
- software--to make sure the software is free for all its users. This
- General Public License applies to most of the Free Software
- Foundation's software and to any other program whose authors commit to
- using it. (Some other Free Software Foundation software is covered by
- the GNU Library General Public License instead.) You can apply it to
- your programs, too.
-
- When we speak of free software, we are referring to freedom, not
- price. Our General Public Licenses are designed to make sure that you
- have the freedom to distribute copies of free software (and charge for
- this service if you wish), that you receive source code or can get it
- if you want it, that you can change the software or use pieces of it
- in new free programs; and that you know you can do these things.
-
- To protect your rights, we need to make restrictions that forbid
- anyone to deny you these rights or to ask you to surrender the rights.
- These restrictions translate to certain responsibilities for you if
- you distribute copies of the software, or if you modify it.
-
- For example, if you distribute copies of such a program, whether
- gratis or for a fee, you must give the recipients all the rights that
- you have. You must make sure that they, too, receive or can get the
- source code. And you must show them these terms so they know their
- rights.
-
- We protect your rights with two steps: (1) copyright the software, and
- (2) offer you this license which gives you legal permission to copy,
- distribute and/or modify the software.
-
- Also, for each author's protection and ours, we want to make certain
- that everyone understands that there is no warranty for this free
- software. If the software is modified by someone else and passed on,
- we want its recipients to know that what they have is not the
- original, so that any problems introduced by others will not reflect
- on the original authors' reputations.
-
- Finally, any free program is threatened constantly by software
- patents. We wish to avoid the danger that redistributors of a free
- program will individually obtain patent licenses, in effect making the
- program proprietary. To prevent this, we have made it clear that any
- patent must be licensed for everyone's free use or not licensed at
- all.
-
- The precise terms and conditions for copying, distribution and
- modification follow.
-
- GNU GENERAL PUBLIC LICENSE
- TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
- 1. This License applies to any program or other work which contains a
- notice placed by the copyright holder saying it may be distributed
- under the terms of this General Public License. The ``Program'',
- below, refers to any such program or work, and a ``work based on
- the Program'' means either the Program or any derivative work
- under copyright law: that is to say, a work containing the Program
- or a portion of it, either verbatim or with modifications and/or
- translated into another language. (Hereinafter, translation is
- included without limitation in the term ``modification''.) Each
- licensee is addressed as ``you''.
- Activities other than copying, distribution and modification are
- not covered by this License; they are outside its scope. The act
- of running the Program is not restricted, and the output from the
- Program is covered only if its contents constitute a work based on
- the Program (independent of having been made by running the
- Program). Whether that is true depends on what the Program does.
- 2. You may copy and distribute verbatim copies of the Program's
- source code as you receive it, in any medium, provided that you
- conspicuously and appropriately publish on each copy an
- appropriate copyright notice and disclaimer of warranty; keep
- intact all the notices that refer to this License and to the
- absence of any warranty; and give any other recipients of the
- Program a copy of this License along with the Program.
- You may charge a fee for the physical act of transferring a copy,
- and you may at your option offer warranty protection in exchange
- for a fee.
- 3. You may modify your copy or copies of the Program or any portion
- of it, thus forming a work based on the Program, and copy and
- distribute such modifications or work under the terms of Section 1
- above, provided that you also meet all of these conditions:
- 1. You must cause the modified files to carry prominent notices
- stating that you changed the files and the date of any
- change.
- 2. You must cause any work that you distribute or publish, that
- in whole or in part contains or is derived from the Program
- or any part thereof, to be licensed as a whole at no charge
- to all third parties under the terms of this License.
- 3. If the modified program normally reads commands interactively
- when run, you must cause it, when started running for such
- interactive use in the most ordinary way, to print or display
- an announcement including an appropriate copyright notice and
- a notice that there is no warranty (or else, saying that you
- provide a warranty) and that users may redistribute the
- program under these conditions, and telling the user how to
- view a copy of this License. (Exception: if the Program
- itself is interactive but does not normally print such an
- announcement, your work based on the Program is not required
- to print an announcement.)
- These requirements apply to the modified work as a whole. If
- identifiable sections of that work are not derived from the
- Program, and can be reasonably considered independent and separate
- works in themselves, then this License, and its terms, do not
- apply to those sections when you distribute them as separate
- works. But when you distribute the same sections as part of a
- whole which is a work based on the Program, the distribution of
- the whole must be on the terms of this License, whose permissions
- for other licensees extend to the entire whole, and thus to each
- and every part regardless of who wrote it.
- Thus, it is not the intent of this section to claim rights or
- contest your rights to work written entirely by you; rather, the
- intent is to exercise the right to control the distribution of
- derivative or collective works based on the Program.
- In addition, mere aggregation of another work not based on the
- Program with the Program (or with a work based on the Program) on
- a volume of a storage or distribution medium does not bring the
- other work under the scope of this License.
- 4. You may copy and distribute the Program (or a work based on it,
- under Section 2) in object code or executable form under the terms
- of Sections 1 and 2 above provided that you also do one of the
- following:
- 1. Accompany it with the complete corresponding machine-readable
- source code, which must be distributed under the terms of
- Sections 1 and 2 above on a medium customarily used for
- software interchange; or,
- 2. Accompany it with a written offer, valid for at least three
- years, to give any third party, for a charge no more than
- your cost of physically performing source distribution, a
- complete machine-readable copy of the corresponding source
- code, to be distributed under the terms of Sections 1 and 2
- above on a medium customarily used for software interchange;
- or,
- 3. Accompany it with the information you received as to the
- offer to distribute corresponding source code. (This
- alternative is allowed only for noncommercial distribution
- and only if you received the program in object code or
- executable form with such an offer, in accord with Subsection
- b above.)
- The source code for a work means the preferred form of the work
- for making modifications to it. For an executable work, complete
- source code means all the source code for all modules it contains,
- plus any associated interface definition files, plus the scripts
- used to control compilation and installation of the executable.
- However, as a special exception, the source code distributed need
- not include anything that is normally distributed (in either
- source or binary form) with the major components (compiler,
- kernel, and so on) of the operating system on which the executable
- runs, unless that component itself accompanies the executable.
- If distribution of executable or object code is made by offering
- access to copy from a designated place, then offering equivalent
- access to copy the source code from the same place counts as
- distribution of the source code, even though third parties are not
- compelled to copy the source along with the object code.
- 5. You may not copy, modify, sublicense, or distribute the Program
- except as expressly provided under this License. Any attempt
- otherwise to copy, modify, sublicense or distribute the Program is
- void, and will automatically terminate your rights under this
- License. However, parties who have received copies, or rights,
- from you under this License will not have their licenses
- terminated so long as such parties remain in full compliance.
- 6. You are not required to accept this License, since you have not
- signed it. However, nothing else grants you permission to modify
- or distribute the Program or its derivative works. These actions
- are prohibited by law if you do not accept this License.
- Therefore, by modifying or distributing the Program (or any work
- based on the Program), you indicate your acceptance of this
- License to do so, and all its terms and conditions for copying,
- distributing or modifying the Program or works based on it.
- 7. Each time you redistribute the Program (or any work based on the
- Program), the recipient automatically receives a license from the
- original licensor to copy, distribute or modify the Program
- subject to these terms and conditions. You may not impose any
- further restrictions on the recipients' exercise of the rights
- granted herein. You are not responsible for enforcing compliance
- by third parties to this License.
- 8. If, as a consequence of a court judgment or allegation of patent
- infringement or for any other reason (not limited to patent
- issues), conditions are imposed on you (whether by court order,
- agreement or otherwise) that contradict the conditions of this
- License, they do not excuse you from the conditions of this
- License. If you cannot distribute so as to satisfy simultaneously
- your obligations under this License and any other pertinent
- obligations, then as a consequence you may not distribute the
- Program at all. For example, if a patent license would not permit
- royalty-free redistribution of the Program by all those who
- receive copies directly or indirectly through you, then the only
- way you could satisfy both it and this License would be to refrain
- entirely from distribution of the Program.
- If any portion of this section is held invalid or unenforceable
- under any particular circumstance, the balance of the section is
- intended to apply and the section as a whole is intended to apply
- in other circumstances.
- It is not the purpose of this section to induce you to infringe
- any patents or other property right claims or to contest validity
- of any such claims; this section has the sole purpose of
- protecting the integrity of the free software distribution system,
- which is implemented by public license practices. Many people have
- made generous contributions to the wide range of software
- distributed through that system in reliance on consistent
- application of that system; it is up to the author/donor to decide
- if he or she is willing to distribute software through any other
- system and a licensee cannot impose that choice.
- This section is intended to make thoroughly clear what is believed
- to be a consequence of the rest of this License.
- 9. If the distribution and/or use of the Program is restricted in
- certain countries either by patents or by copyrighted interfaces,
- the original copyright holder who places the Program under this
- License may add an explicit geographical distribution limitation
- excluding those countries, so that distribution is permitted only
- in or among countries not thus excluded. In such case, this
- License incorporates the limitation as if written in the body of
- this License.
- 10. The Free Software Foundation may publish revised and/or new
- versions of the General Public License from time to time. Such new
- versions will be similar in spirit to the present version, but may
- differ in detail to address new problems or concerns.
- Each version is given a distinguishing version number. If the
- Program specifies a version number of this License which applies
- to it and ``any later version'', you have the option of following
- the terms and conditions either of that version or of any later
- version published by the Free Software Foundation. If the Program
- does not specify a version number of this License, you may choose
- any version ever published by the Free Software Foundation.
- 11. If you wish to incorporate parts of the Program into other free
- programs whose distribution conditions are different, write to the
- author to ask for permission. For software which is copyrighted by
- the Free Software Foundation, write to the Free Software
- Foundation; we sometimes make exceptions for this. Our decision
- will be guided by the two goals of preserving the free status of
- all derivatives of our free software and of promoting the sharing
- and reuse of software generally.
-
- NO WARRANTY
- 12. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO
- WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE
- LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS
- AND/OR OTHER PARTIES PROVIDE THE PROGRAM ``AS IS'' WITHOUT
- WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT
- NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
- FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE
- QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
- PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY
- SERVICING, REPAIR OR CORRECTION.
- 13. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
- WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY
- MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE
- LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL,
- INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR
- INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
- DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU
- OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY
- OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN
- ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
-
- END OF TERMS AND CONDITIONS
-
- Licence of this document
-
- GNU Free Documentation License
-
- Version 1.2, November 2002
-
- Copyright ©2000,2001,2002 Free Software Foundation, Inc.
-
- 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-
- Everyone is permitted to copy and distribute verbatim copies of this
- license document, but changing it is not allowed.
-
- Preamble
-
- The purpose of this License is to make a manual, textbook, or other
- functional and useful document "free" in the sense of freedom: to
- assure everyone the effective freedom to copy and redistribute it,
- with or without modifying it, either commercially or noncommercially.
- Secondarily, this License preserves for the author and publisher a way
- to get credit for their work, while not being considered responsible
- for modifications made by others.
-
- This License is a kind of "copyleft", which means that derivative
- works of the document must themselves be free in the same sense. It
- complements the GNU General Public License, which is a copyleft
- license designed for free software.
-
- We have designed this License in order to use it for manuals for free
- software, because free software needs free documentation: a free
- program should come with manuals providing the same freedoms that the
- software does. But this License is not limited to software manuals; it
- can be used for any textual work, regardless of subject matter or
- whether it is published as a printed book. We recommend this License
- principally for works whose purpose is instruction or reference.
-
- 1. APPLICABILITY AND DEFINITIONS
-
- This License applies to any manual or other work, in any medium, that
- contains a notice placed by the copyright holder saying it can be
- distributed under the terms of this License. Such a notice grants a
- world-wide, royalty-free license, unlimited in duration, to use that
- work under the conditions stated herein. The "Document", below, refers
- to any such manual or work. Any member of the public is a licensee,
- and is addressed as "you". You accept the license if you copy, modify
- or distribute the work in a way requiring permission under copyright
- law.
-
- A "Modified Version" of the Document means any work containing the
- Document or a portion of it, either copied verbatim, or with
- modifications and/or translated into another language.
-
- A "Secondary Section" is a named appendix or a front-matter section of
- the Document that deals exclusively with the relationship of the
- publishers or authors of the Document to the Document's overall
- subject (or to related matters) and contains nothing that could fall
- directly within that overall subject. (Thus, if the Document is in
- part a textbook of mathematics, a Secondary Section may not explain
- any mathematics.) The relationship could be a matter of historical
- connection with the subject or with related matters, or of legal,
- commercial, philosophical, ethical or political position regarding
- them.
-
- The "Invariant Sections" are certain Secondary Sections whose titles
- are designated, as being those of Invariant Sections, in the notice
- that says that the Document is released under this License. If a
- section does not fit the above definition of Secondary then it is not
- allowed to be designated as Invariant. The Document may contain zero
- Invariant Sections. If the Document does not identify any Invariant
- Sections then there are none.
-
- The "Cover Texts" are certain short passages of text that are listed,
- as Front-Cover Texts or Back-Cover Texts, in the notice that says that
- the Document is released under this License. A Front-Cover Text may be
- at most 5 words, and a Back-Cover Text may be at most 25 words.
-
- A "Transparent" copy of the Document means a machine-readable copy,
- represented in a format whose specification is available to the
- general public, that is suitable for revising the document
- straightforwardly with generic text editors or (for images composed of
- pixels) generic paint programs or (for drawings) some widely available
- drawing editor, and that is suitable for input to text formatters or
- for automatic translation to a variety of formats suitable for input
- to text formatters. A copy made in an otherwise Transparent file
- format whose markup, or absence of markup, has been arranged to thwart
- or discourage subsequent modification by readers is not Transparent.
- An image format is not Transparent if used for any substantial amount
- of text. A copy that is not "Transparent" is called "Opaque".
-
- Examples of suitable formats for Transparent copies include plain
- ASCII without markup, Texinfo input format, LaTeX input format, SGML
- or XML using a publicly available DTD, and standard-conforming simple
- HTML, PostScript or PDF designed for human modification. Examples of
- transparent image formats include PNG, XCF and JPG. Opaque formats
- include proprietary formats that can be read and edited only by
- proprietary word processors, SGML or XML for which the DTD and/or
- processing tools are not generally available, and the
- machine-generated HTML, PostScript or PDF produced by some word
- processors for output purposes only.
-
- The "Title Page" means, for a printed book, the title page itself,
- plus such following pages as are needed to hold, legibly, the material
- this License requires to appear in the title page. For works in
- formats which do not have any title page as such, "Title Page" means
- the text near the most prominent appearance of the work's title,
- preceding the beginning of the body of the text.
-
- A section "Entitled XYZ" means a named subunit of the Document whose
- title either is precisely XYZ or contains XYZ in parentheses following
- text that translates XYZ in another language. (Here XYZ stands for a
- specific section name mentioned below, such as "Acknowledgements",
- "Dedications", "Endorsements", or "History".) To "Preserve the Title"
- of such a section when you modify the Document means that it remains a
- section "Entitled XYZ" according to this definition.
-
- The Document may include Warranty Disclaimers next to the notice which
- states that this License applies to the Document. These Warranty
- Disclaimers are considered to be included by reference in this
- License, but only as regards disclaiming warranties: any other
- implication that these Warranty Disclaimers may have is void and has
- no effect on the meaning of this License.
-
- 2. VERBATIM COPYING
-
- You may copy and distribute the Document in any medium, either
- commercially or noncommercially, provided that this License, the
- copyright notices, and the license notice saying this License applies
- to the Document are reproduced in all copies, and that you add no
- other conditions whatsoever to those of this License. You may not use
- technical measures to obstruct or control the reading or further
- copying of the copies you make or distribute. However, you may accept
- compensation in exchange for copies. If you distribute a large enough
- number of copies you must also follow the conditions in section 3.
-
- You may also lend copies, under the same conditions stated above, and
- you may publicly display copies.
-
- 3. COPYING IN QUANTITY
-
- If you publish printed copies (or copies in media that commonly have
- printed covers) of the Document, numbering more than 100, and the
- Document's license notice requires Cover Texts, you must enclose the
- copies in covers that carry, clearly and legibly, all these Cover
- Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on
- the back cover. Both covers must also clearly and legibly identify you
- as the publisher of these copies. The front cover must present the
- full title with all words of the title equally prominent and visible.
- You may add other material on the covers in addition. Copying with
- changes limited to the covers, as long as they preserve the title of
- the Document and satisfy these conditions, can be treated as verbatim
- copying in other respects.
-
- If the required texts for either cover are too voluminous to fit
- legibly, you should put the first ones listed (as many as fit
- reasonably) on the actual cover, and continue the rest onto adjacent
- pages.
-
- If you publish or distribute Opaque copies of the Document numbering
- more than 100, you must either include a machine-readable Transparent
- copy along with each Opaque copy, or state in or with each Opaque copy
- a computer-network location from which the general network-using
- public has access to download using public-standard network protocols
- a complete Transparent copy of the Document, free of added material.
- If you use the latter option, you must take reasonably prudent steps,
- when you begin distribution of Opaque copies in quantity, to ensure
- that this Transparent copy will remain thus accessible at the stated
- location until at least one year after the last time you distribute an
- Opaque copy (directly or through your agents or retailers) of that
- edition to the public.
-
- It is requested, but not required, that you contact the authors of the
- Document well before redistributing any large number of copies, to
- give them a chance to provide you with an updated version of the
- Document.
-
- 4. MODIFICATIONS
-
- You may copy and distribute a Modified Version of the Document under
- the conditions of sections 2 and 3 above, provided that you release
- the Modified Version under precisely this License, with the Modified
- Version filling the role of the Document, thus licensing distribution
- and modification of the Modified Version to whoever possesses a copy
- of it. In addition, you must do these things in the Modified Version:
-
- A.
- Use in the Title Page (and on the covers, if any) a title
- distinct from that of the Document, and from those of previous
- versions (which should, if there were any, be listed in the
- History section of the Document). You may use the same title as
- a previous version if the original publisher of that version
- gives permission.
- B.
- List on the Title Page, as authors, one or more persons or
- entities responsible for authorship of the modifications in the
- Modified Version, together with at least five of the principal
- authors of the Document (all of its principal authors, if it
- has fewer than five), unless they release you from this
- requirement.
- C.
- State on the Title page the name of the publisher of the
- Modified Version, as the publisher.
- D.
- Preserve all the copyright notices of the Document.
- E.
- Add an appropriate copyright notice for your modifications
- adjacent to the other copyright notices.
- F.
- Include, immediately after the copyright notices, a license
- notice giving the public permission to use the Modified Version
- under the terms of this License, in the form shown in the
- Addendum below.
- G.
- Preserve in that license notice the full lists of Invariant
- Sections and required Cover Texts given in the Document's
- license notice.
- H.
- Include an unaltered copy of this License.
- I.
- Preserve the section Entitled "History", Preserve its Title,
- and add to it an item stating at least the title, year, new
- authors, and publisher of the Modified Version as given on the
- Title Page. If there is no section Entitled "History" in the
- Document, create one stating the title, year, authors, and
- publisher of the Document as given on its Title Page, then add
- an item describing the Modified Version as stated in the
- previous sentence.
- J.
- Preserve the network location, if any, given in the Document
- for public access to a Transparent copy of the Document, and
- likewise the network locations given in the Document for
- previous versions it was based on. These may be placed in the
- "History" section. You may omit a network location for a work
- that was published at least four years before the Document
- itself, or if the original publisher of the version it refers
- to gives permission.
- K.
- For any section Entitled "Acknowledgements" or "Dedications",
- Preserve the Title of the section, and preserve in the section
- all the substance and tone of each of the contributor
- acknowledgements and/or dedications given therein.
- L.
- Preserve all the Invariant Sections of the Document, unaltered
- in their text and in their titles. Section numbers or the
- equivalent are not considered part of the section titles.
- M.
- Delete any section Entitled "Endorsements". Such a section may
- not be included in the Modified Version.
- N.
- Do not retitle any existing section to be Entitled
- "Endorsements" or to conflict in title with any Invariant
- Section.
- O.
- Preserve any Warranty Disclaimers.
-
- If the Modified Version includes new front-matter sections or
- appendices that qualify as Secondary Sections and contain no material
- copied from the Document, you may at your option designate some or all
- of these sections as invariant. To do this, add their titles to the
- list of Invariant Sections in the Modified Version's license notice.
- These titles must be distinct from any other section titles.
-
- You may add a section Entitled "Endorsements", provided it contains
- nothing but endorsements of your Modified Version by various
- parties-for example, statements of peer review or that the text has
- been approved by an organization as the authoritative definition of a
- standard.
-
- You may add a passage of up to five words as a Front-Cover Text, and a
- passage of up to 25 words as a Back-Cover Text, to the end of the list
- of Cover Texts in the Modified Version. Only one passage of
- Front-Cover Text and one of Back-Cover Text may be added by (or
- through arrangements made by) any one entity. If the Document already
- includes a cover text for the same cover, previously added by you or
- by arrangement made by the same entity you are acting on behalf of,
- you may not add another; but you may replace the old one, on explicit
- permission from the previous publisher that added the old one.
-
- The author(s) and publisher(s) of the Document do not by this License
- give permission to use their names for publicity for or to assert or
- imply endorsement of any Modified Version.
-
- 5. COMBINING DOCUMENTS
-
- You may combine the Document with other documents released under this
- License, under the terms defined in section 4 above for modified
- versions, provided that you include in the combination all of the
- Invariant Sections of all of the original documents, unmodified, and
- list them all as Invariant Sections of your combined work in its
- license notice, and that you preserve all their Warranty Disclaimers.
-
- The combined work need only contain one copy of this License, and
- multiple identical Invariant Sections may be replaced with a single
- copy. If there are multiple Invariant Sections with the same name but
- different contents, make the title of each such section unique by
- adding at the end of it, in parentheses, the name of the original
- author or publisher of that section if known, or else a unique number.
- Make the same adjustment to the section titles in the list of
- Invariant Sections in the license notice of the combined work.
-
- In the combination, you must combine any sections Entitled "History"
- in the various original documents, forming one section Entitled
- "History"; likewise combine any sections Entitled "Acknowledgements",
- and any sections Entitled "Dedications". You must delete all sections
- Entitled "Endorsements".
-
- 6. COLLECTIONS OF DOCUMENTS
-
- You may make a collection consisting of the Document and other
- documents released under this License, and replace the individual
- copies of this License in the various documents with a single copy
- that is included in the collection, provided that you follow the rules
- of this License for verbatim copying of each of the documents in all
- other respects.
-
- You may extract a single document from such a collection, and
- distribute it individually under this License, provided you insert a
- copy of this License into the extracted document, and follow this
- License in all other respects regarding verbatim copying of that
- document.
-
- 7. AGGREGATION WITH INDEPENDENT WORKS
-
- A compilation of the Document or its derivatives with other separate
- and independent documents or works, in or on a volume of a storage or
- distribution medium, is called an "aggregate" if the copyright
- resulting from the compilation is not used to limit the legal rights
- of the compilation's users beyond what the individual works permit.
- When the Document is included in an aggregate, this License does not
- apply to the other works in the aggregate which are not themselves
- derivative works of the Document.
-
- If the Cover Text requirement of section 3 is applicable to these
- copies of the Document, then if the Document is less than one half of
- the entire aggregate, the Document's Cover Texts may be placed on
- covers that bracket the Document within the aggregate, or the
- electronic equivalent of covers if the Document is in electronic form.
- Otherwise they must appear on printed covers that bracket the whole
- aggregate.
-
- 8. TRANSLATION
-
- Translation is considered a kind of modification, so you may
- distribute translations of the Document under the terms of section 4.
- Replacing Invariant Sections with translations requires special
- permission from their copyright holders, but you may include
- translations of some or all Invariant Sections in addition to the
- original versions of these Invariant Sections. You may include a
- translation of this License, and all the license notices in the
- Document, and any Warranty Disclaimers, provided that you also include
- the original English version of this License and the original versions
- of those notices and disclaimers. In case of a disagreement between
- the translation and the original version of this License or a notice
- or disclaimer, the original version will prevail.
-
- If a section in the Document is Entitled "Acknowledgements",
- "Dedications", or "History", the requirement (section 4) to Preserve
- its Title (section 1) will typically require changing the actual
- title.
-
- 9. TERMINATION
-
- You may not copy, modify, sublicense, or distribute the Document
- except as expressly provided for under this License. Any other attempt
- to copy, modify, sublicense or distribute the Document is void, and
- will automatically terminate your rights under this License. However,
- parties who have received copies, or rights, from you under this
- License will not have their licenses terminated so long as such
- parties remain in full compliance.
-
- 10. FUTURE REVISIONS OF THIS LICENSE
-
- The Free Software Foundation may publish new, revised versions of the
- GNU Free Documentation License from time to time. Such new versions
- will be similar in spirit to the present version, but may differ in
- detail to address new problems or concerns. See
- http://www.gnu.org/copyleft/.
-
- Each version of the License is given a distinguishing version number.
- If the Document specifies that a particular numbered version of this
- License "or any later version" applies to it, you have the option of
- following the terms and conditions either of that specified version or
- of any later version that has been published (not as a draft) by the
- Free Software Foundation. If the Document does not specify a version
- number of this License, you may choose any version ever published (not
- as a draft) by the Free Software Foundation.
-
- About this document ...
-
- Implementation of OGC's WPS standard: PyWPS
-
- This document was generated using the [43]LaTeX2HTML translator
- Version 2002-2-1 (1.71)
-
- Copyright © 1993, 1994, 1995, 1996, Nikos Drakos, Computer Based
- Learning Unit, University of Leeds.
- Copyright © 1997, 1998, 1999, [44]Ross Moore, Mathematics Department,
- Macquarie University, Sydney.
-
- The command line arguments were:
- latex2html -split 0 install.tex
-
- The translation was initiated by Jachym Cepicky on 2007-06-12
- _________________________________________________________________
-
- Footnotes
-
- ... list[45]^1
- http://wald.intevation.org/mailman/listinfo/pywps-develPyWPS -
- development list
-
- ... bugtracker[46]^2
- http://wald.intevation.org/tracker/?atid=174&group_id=22&func=b
- rowsePyWPS Bug tracker
-
- ... site[47]^3
- [48]http://pywps.wald.intevation.org
-
- ... document[49]^4
- [50]http://www.opengeospatial.org/standards/requests/28
-
- ...process.html[51]^5
- http://wald.intevation.org/plugins/scmsvn/viewcvs.php/*checkout
- */trunk/doc/process.html?rev=369&root=pywpsDocumentation to
- process.py module
-
- ...self.grassLocation[52]^6
- See e.g.
- http://grass.itc.it/grass63/manuals/html63_user/helptext.htmlGR
- ASS manual for details
-
- ... later[53]^7
- self.grassLocation="/path/to/location"
- _________________________________________________________________
-
- next_inactive up previous
-
-
- Jachym Cepicky 2007-06-12
-
-Reference
-
- 1. http://dbu.de/
- 2. http://gdf-hannover.de/
- 3. http://www.bnhelp.cz/
- 4. http://les-ejk.cz/
- 5. file://localhost/home/jachym/src/pywps/trunk/doc/install.html#SECTION00020000000000000000
- 6. file://localhost/home/jachym/src/pywps/trunk/doc/install.html#SECTION00021000000000000000
- 7. file://localhost/home/jachym/src/pywps/trunk/doc/install.html#SECTION00030000000000000000
- 8. file://localhost/home/jachym/src/pywps/trunk/doc/install.html#SECTION00040000000000000000
- 9. file://localhost/home/jachym/src/pywps/trunk/doc/install.html#SECTION00041000000000000000
- 10. file://localhost/home/jachym/src/pywps/trunk/doc/install.html#SECTION00042000000000000000
- 11. file://localhost/home/jachym/src/pywps/trunk/doc/install.html#SECTION00043000000000000000
- 12. file://localhost/home/jachym/src/pywps/trunk/doc/install.html#SECTION00050000000000000000
- 13. file://localhost/home/jachym/src/pywps/trunk/doc/install.html#SECTION00051000000000000000
- 14. file://localhost/home/jachym/src/pywps/trunk/doc/install.html#SECTION00052000000000000000
- 15. file://localhost/home/jachym/src/pywps/trunk/doc/install.html#SECTION00060000000000000000
- 16. file://localhost/home/jachym/src/pywps/trunk/doc/install.html#SECTION00061000000000000000
- 17. file://localhost/home/jachym/src/pywps/trunk/doc/install.html#SECTION00062000000000000000
- 18. file://localhost/home/jachym/src/pywps/trunk/doc/install.html#SECTION00063000000000000000
- 19. file://localhost/home/jachym/src/pywps/trunk/doc/install.html#SECTION00070000000000000000
- 20. file://localhost/home/jachym/src/pywps/trunk/doc/install.html#SECTION00080000000000000000
- 21. file://localhost/home/jachym/src/pywps/trunk/doc/install.html#SECTION00081000000000000000
- 22. file://localhost/home/jachym/src/pywps/trunk/doc/install.html#SECTION00082000000000000000
- 23. file://localhost/home/jachym/src/pywps/trunk/doc/install.html#SECTION00090000000000000000
- 24. file://localhost/home/jachym/src/pywps/trunk/doc/install.html#SECTION000100000000000000000
- 25. file://localhost/home/jachym/src/pywps/trunk/doc/install.html#SECTION000110000000000000000
- 26. file://localhost/home/jachym/src/pywps/trunk/doc/install.html#SECTION000120000000000000000
- 27. file://localhost/home/jachym/src/pywps/trunk/doc/install.html#SECTION000130000000000000000
- 28. http://pywps.wald.intevation.org/
- 29. http://pywps.ominiverdi.org/
- 30. file://localhost/home/jachym/src/pywps/trunk/doc/install.html#foot357
- 31. file://localhost/home/jachym/src/pywps/trunk/doc/install.html#foot358
- 32. http://httpd.apache.org/
- 33. http://grass.itc.it/
- 34. http://proj.maptools.org/
- 35. http://gdal.org/
- 36. http://www.r-project.org/
- 37. file://localhost/home/jachym/src/pywps/trunk/doc/install.html#foot75
- 38. http://www.opengeospatial.org/specs/?page=specs
- 39. file://localhost/home/jachym/src/pywps/trunk/doc/install.html#foot361
- 40. file://localhost/home/jachym/src/pywps/trunk/doc/install.html#foot362
- 41. file://localhost/home/jachym/src/pywps/trunk/doc/install.html#foot365
- 42. file://localhost/home/jachym/src/pywps/trunk/doc/install.html#foot366
- 43. http://www.latex2html.org/
- 44. http://www.maths.mq.edu.au/~ross/
- 45. file://localhost/home/jachym/src/pywps/trunk/doc/install.html#tex2html8
- 46. file://localhost/home/jachym/src/pywps/trunk/doc/install.html#tex2html9
- 47. file://localhost/home/jachym/src/pywps/trunk/doc/install.html#tex2html15
- 48. http://pywps.wald.intevation.org/
- 49. file://localhost/home/jachym/src/pywps/trunk/doc/install.html#tex2html18
- 50. http://www.opengeospatial.org/standards/requests/28
- 51. file://localhost/home/jachym/src/pywps/trunk/doc/install.html#tex2html20
- 52. file://localhost/home/jachym/src/pywps/trunk/doc/install.html#tex2html21
- 53. file://localhost/home/jachym/src/pywps/trunk/doc/install.html#tex2html22
Copied: trunk/doc/pywps-howto.html (from rev 372, trunk/doc/install.html)
Copied: trunk/doc/pywps-howto.pdf (from rev 372, trunk/doc/install.pdf)
Copied: trunk/doc/pywps-howto.tex (from rev 372, trunk/doc/install.tex)
Copied: trunk/doc/pywps-howto.txt (from rev 372, trunk/doc/install.txt)
More information about the Pywps-commits
mailing list