[Pywps-commits] r547 - in trunk/doc: . html
scm-commit@wald.intevation.org
scm-commit at wald.intevation.org
Thu Aug 28 15:09:12 CEST 2008
Author: jachym
Date: 2008-08-28 15:09:10 +0200 (Thu, 28 Aug 2008)
New Revision: 547
Added:
trunk/doc/html/
trunk/doc/html/index.html
trunk/doc/html/pywps-howto.css
trunk/doc/html/pywps-howto.html
trunk/doc/html/pywps-schema.png
Log:
HTML documentation moved to html directory
Added: trunk/doc/html/index.html
===================================================================
--- trunk/doc/html/index.html 2008-08-28 13:07:48 UTC (rev 546)
+++ trunk/doc/html/index.html 2008-08-28 13:09:10 UTC (rev 547)
@@ -0,0 +1,1054 @@
+<!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 WPS standard: PyWPS</TITLE>
+<META NAME="description" CONTENT="Implementation of OGC WPS standard: PyWPS">
+<META NAME="keywords" CONTENT="pywps-howto">
+<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="pywps-howto.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 WPS standard: PyWPS</H1>
+<DIV CLASS="author_info">
+
+<P ALIGN="CENTER"><STRONG>Jachym Cepicky</STRONG></P>
+</DIV>
+
+<P>
+
+<P><P>
+<BR>
+<BLOCKQUOTE>
+Copyright ©2006-2009 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. This document describes most recent
+version of PyWPS (<SPAN CLASS="textit">2.0.0</SPAN>), available in subversion respository.
+
+<P>
+PyWPS project has been started on April 2006 with support of DBU -
+Deutsche Bundesstiftung Umwelt<A NAME="tex2html1"
+ HREF="#foot222"><SUP><SPAN CLASS="arabic">1</SPAN></SUP></A> and with help of
+GDF-Hannover<A NAME="tex2html3"
+ HREF="#foot223"><SUP><SPAN CLASS="arabic">2</SPAN></SUP></A> and Help Service Remote
+Sensing<A NAME="tex2html5"
+ HREF="#foot224"><SUP><SPAN CLASS="arabic">3</SPAN></SUP></A> companies. Initial author is Jachym
+Cepicky<A NAME="tex2html7"
+ HREF="#foot225"><SUP><SPAN CLASS="arabic">4</SPAN></SUP></A>.
+
+<P>
+<BR>
+
+<H2><A NAME="SECTION00010000000000000000">
+Contents</A>
+</H2>
+<!--Table of Contents-->
+
+<UL CLASS="TofC">
+<LI><A NAME="tex2html54"
+ HREF="pywps-howto.html#SECTION00020000000000000000">Introduction</A>
+<UL>
+<LI><A NAME="tex2html55"
+ HREF="pywps-howto.html#SECTION00021000000000000000">How it works</A>
+</UL>
+<BR>
+<LI><A NAME="tex2html56"
+ HREF="pywps-howto.html#SECTION00030000000000000000">Quick install</A>
+<LI><A NAME="tex2html57"
+ HREF="pywps-howto.html#SECTION00040000000000000000">Know issues</A>
+<LI><A NAME="tex2html58"
+ HREF="pywps-howto.html#SECTION00050000000000000000">Installation</A>
+<UL>
+<LI><A NAME="tex2html59"
+ HREF="pywps-howto.html#SECTION00051000000000000000">Installation the quick 'n' dirty way</A>
+<LI><A NAME="tex2html60"
+ HREF="pywps-howto.html#SECTION00052000000000000000">Installation the 'clean' way</A>
+</UL>
+<BR>
+<LI><A NAME="tex2html61"
+ HREF="pywps-howto.html#SECTION00060000000000000000">Configuration</A>
+<LI><A NAME="tex2html62"
+ HREF="pywps-howto.html#SECTION00070000000000000000">Write your own processes</A>
+<UL>
+<LI><A NAME="tex2html63"
+ HREF="pywps-howto.html#SECTION00071000000000000000">Process initialization and configuration</A>
+<LI><A NAME="tex2html64"
+ HREF="pywps-howto.html#SECTION00072000000000000000">Process Programming</A>
+<LI><A NAME="tex2html65"
+ HREF="pywps-howto.html#SECTION00073000000000000000">Using GRASS GIS</A>
+</UL>
+<BR>
+<LI><A NAME="tex2html66"
+ HREF="pywps-howto.html#SECTION00080000000000000000">Testing your new process</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 1.0.x standard from Open Geospatial
+Consortium<A NAME="tex2html9"
+ HREF="#foot226"><SUP><SPAN CLASS="arabic">5</SPAN></SUP></A>.
+
+<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
+GIS<A NAME="tex2html11"
+ HREF="#foot42"><SUP><SPAN CLASS="arabic">6</SPAN></SUP></A>. Access GRASS modules via web
+interace should be as easy as possible.
+However, not only GRASS GIS is supported. Usage of other programs, like
+R package or GDAL or PROJ tools is possible as well.
+
+<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="tex2html12"
+ HREF="http://pywps.wald.intevation.org">http://pywps.wald.intevation.org</A></TT>.
+PyWPS Wiki is hosted on <TT><A NAME="tex2html13"
+ HREF="http://pywps.ominiverdi.org/wiki">http://pywps.ominiverdi.org/wiki</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 process the data 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="47"></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="832" HEIGHT="275" ALIGN="BOTTOM" BORDER="0"
+ SRC="./pywps-schema.png"
+ ALT="Image pywps-schema">
+
+</DIV></TD></TR>
+</TABLE>
+</DIV>
+
+<P>
+
+<H1><A NAME="SECTION00030000000000000000">
+Quick install</A>
+</H1>
+
+<OL>
+<LI>Install PyWPS, see page <A HREF="pywps-howto.html#install"><IMG ALIGN="BOTTOM" BORDER="1" ALT="[*]"
+ SRC="/usr/share/latex2html/icons/crossref.png"></A> for details
+</LI>
+<LI>NOTE: Rename original files (process examples, configuration files)
+ with <TT>.py-dist</TT> suffix to <TT>.py</TT>, when you see them.
+</LI>
+<LI>Edit configuration files in <TT>pywps/etc/</TT> directory. See
+ page <A HREF="pywps-howto.html#configuration"><IMG ALIGN="BOTTOM" BORDER="1" ALT="[*]"
+ SRC="/usr/share/latex2html/icons/crossref.png"></A> for details.
+</LI>
+<LI>Create or edit <TT>__init__.py</TT> file in
+ <TT>pywps/processes</TT> directory. Add available process names to
+ <TT>__all__</TT> array.
+</LI>
+<LI>Add your processes to <TT>pywps/processes</TT> directory. See
+ page <A HREF="pywps-howto.html#processes"><IMG ALIGN="BOTTOM" BORDER="1" ALT="[*]"
+ SRC="/usr/share/latex2html/icons/crossref.png"></A> for details.
+</LI>
+<LI>Run PyWPS with <TT>./wps.py</TT> command, see
+ page <A HREF="pywps-howto.html#testing"><IMG ALIGN="BOTTOM" BORDER="1" ALT="[*]"
+ SRC="/usr/share/latex2html/icons/crossref.png"></A> for details.
+</LI>
+</OL>
+
+<P>
+
+<H1><A NAME="SECTION00040000000000000000">
+Know issues</A>
+</H1>
+Known bugs and limitations to UL>
+<LI>Translations do not work for GetCapabilities. They only work for DescribeProcess request types.
+</LI>
+<LI>If inputs are of type <TT>LiteralValue</TT> and it's type is
+string, it could be security problem. 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="tex2html15"
+ HREF="#foot227"><SUP><SPAN CLASS="arabic">7</SPAN></SUP></A>or using PyWPS
+bugtracker<A NAME="tex2html16"
+ HREF="#foot228"><SUP><SPAN CLASS="arabic">8</SPAN></SUP></A>.
+
+<P>
+
+<H1><A NAME="SECTION00050000000000000000"></A>
+<A NAME="install"></A>
+<BR>
+Installation
+</H1>
+Required packages:
+
+<P>
+
+<UL>
+<LI>python
+</LI>
+<LI>python-xml
+</LI>
+<LI>python-htmltmpl
+</LI>
+</UL>
+
+<P>
+Recommended packages:
+
+<P>
+
+<UL>
+<LI>Web Server (e.g. Apache) - <TT><A NAME="tex2html17"
+ 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="tex2html18"
+ 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="tex2html19"
+ 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="tex2html20"
+ 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="tex2html21"
+ 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="SECTION00051000000000000000">
+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="SECTION00052000000000000000">
+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>
+adjust the configuration file
+<PRE>
+$ vim /etc/pywps.cfg
+</PRE>
+permint write access to templates directory
+<PRE>
+# chmod -R 777 /usr/lib/python2.5/site-packages/pywps/Templates
+</PRE>
+
+<P>
+Several binary packages for Linux distributios (<TT>RPM,DEB</TT>) are also avaliable on PyWPS
+homepage<A NAME="tex2html22"
+ HREF="#foot98"><SUP><SPAN CLASS="arabic">9</SPAN></SUP></A>.
+
+<P>
+
+<H1><A NAME="SECTION00060000000000000000"></A>
+<A NAME="configuration"></A>
+<BR>
+Configuration
+</H1>
+
+<P>
+Before you start to tune your PyWPS installation, you should get your copy of
+OpenGIS(R) Web Processing Service document (OGC 05-007r7) version
+1.0.0<A NAME="tex2html24"
+ HREF="#foot229"><SUP><SPAN CLASS="arabic">10</SPAN></SUP></A>.
+
+<P>
+
+<P>
+<BR>
+NOTE: Note, that the configuration option are CASE SENSITIVE
+<P>
+<BR>
+
+
+<P>
+Pywps configuration takes place in <TT>pywps.cfg</TT> file located in
+<TT>/etc/pywps.cfg</TT> or <TT>pywps/etc/pywps.cfg</TT>.
+
+<P>
+Default configuration file is located in <TT>pywps/default.cfg</TT>, you
+can always make a copy of this file and start the configuration from
+scratch.
+
+<P>
+Several sections are in the file.
+
+<UL>
+<LI>Section <SPAN CLASS="textbf">[wps]</SPAN> contains general WPS settings, which are:
+
+<UL>
+<LI>encoding - Language encoding (utf-8, iso-8859-2, windows-1250, ...)
+</LI>
+<LI>title - Server title
+</LI>
+<LI>version - WPS version (1.0.0)
+</LI>
+<LI>abstract - Server anstract
+</LI>
+<LI>fees - Possible fees
+</LI>
+<LI>constraints - Possible constraints
+</LI>
+<LI>serveraddress - WPS script address: <TT><A NAME="tex2html26"
+ HREF="http://foo/bar/wps.py">http://foo/bar/wps.py</A></TT>
+</LI>
+<LI>keywords - Comma-separated list of kyewords
+</LI>
+<LI>lang - Default langue (eng)
+
+</LI>
+</UL>
+</LI>
+<LI>Section <SPAN CLASS="textbf">[provider]</SPAN> contains informations about you
+
+<UL>
+<LI>providerName - Name of your company
+</LI>
+<LI>individualName - Your name
+</LI>
+<LI>positionName
+</LI>
+<LI>role
+</LI>
+<LI>deliveryPoint - Street
+</LI>
+<LI>city
+</LI>
+<LI>postalCode
+</LI>
+<LI>country
+</LI>
+<LI>electronicMailAddress - foo at bar
+</LI>
+<LI>providerSite - <TT><A NAME="tex2html27"
+ HREF="http://foo.bar">http://foo.bar</A></TT>
+</LI>
+<LI>phoneVoice
+</LI>
+<LI>phoneFacsimile
+</LI>
+<LI>administrativeArea
+
+</LI>
+</UL>
+</LI>
+<LI>Section <SPAN CLASS="textbf">[server]</SPAN> contains server settings
+
+<UL>
+<LI>maxoperations - Maximal number of parallel running
+ processes. If set to 0, then there is no limit.
+</LI>
+<LI>maxinputparamlength - Maximal length of string input
+ parameter.
+</LI>
+<LI>maxfilesize - Maximal input file size (raster or
+ vector). The size can be determined as follows: 1GB, 5MB, 3kB,
+ 1000b.
+</LI>
+<LI>tempPath - Direcotory for temporary files (mostly
+ temporary GRASS locations).
+</LI>
+<LI>outputUrl - Url where the outputs are stored.
+</LI>
+<LI>outputPath - Path. where output files are stored.
+</LI>
+<LI>debug - true/false
+
+</LI>
+</UL>
+</LI>
+<LI>Section <SPAN CLASS="textbf">[grass]</SPAN> - GRASS GIS settings
+
+<UL>
+<LI>path - $PATH variable, e.g. <TT>/usr/lib/grass/bin</TT>
+</LI>
+<LI>addonPath - $GRASS_ADDONS variable
+</LI>
+<LI>version - GRASS version
+</LI>
+<LI>gui - Should be "text"
+</LI>
+<LI>gisbase - Path to GRASS GIS_BASE directory
+ (<TT>/usr/lib/grass</TT>)
+</LI>
+<LI>ldLibraryPath - Path of GRASS Libs
+ (<TT>/usr/lib/grass/lib</TT>)
+
+</LI>
+</UL>
+</LI>
+</UL>
+
+<P>
+File example follows:
+<PRE>
+[wps]
+encoding=utf-8
+title=PyWPS Server
+version=1.0.0
+abstract=See http://pywps.wald.intevation.org and http://www.opengeospatial.org/standards/wps
+fees=None
+constraints=none
+serveraddress=http://localhost/cgi-bin/wps
+keywords=GRASS,GIS,WPS
+lang=eng
+
+[provider]
+providerName=Your Company Name
+individualName=Your Name
+positionName=Your Position
+role=Your role
+deliveryPoint=Street
+city=City
+postalCode=000 00
+country=eu
+electronicMailAddress=login at server.org
+providerSite=http://foo.bar
+phoneVoice=False
+phoneFacsimile=False
+administrativeArea=False
+
+[server]
+maxoperations=3
+maxinputparamlength=1024
+maxfilesize=3mb
+tempPath=/tmp
+outputUrl=http://localhost/wps/wpsoutputs
+outputPath=/var/www/wps/wpsoutputs
+debug=true
+
+[grass]
+path=/usr/lib/grass/bin/:/usr/lib/grass/scripts/
+addonPath=
+version=6.2.1
+gui=text
+gisbase=/usr/lib/grass/
+ldLibraryPath=/usr/lib/grass/lib
+</PRE>
+
+<P>
+subsectionTesting after installation
+<A NAME="testing"></A>For test, just run
+<TT>wps.py</TT> in your command line:
+
+<P>
+<PRE>
+$ ./wps.py "service=wps&request=getcapabilities"
+
+INIT DONE
+LOADING PRECOMPILED
+TEMPLATE: UPTODATE
+PRECOMPILED: UPTODATE
+Content-type: text/xml
+
+<?xml version="1.0" encoding="utf-8"?>
+<wps:Capabilities service="WPS" version="1.0.0" xml:lang="eng,ger"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:wps="http://www.opengis.net/wps/1.0.0"
+ xmlns:ows="http://www.opengis.net/ows/1.1"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance
+ xsi:schemaLocation="http://www.opengis.net/wps/1.0.0
+ http://schemas.opengis.net/wps/1.0.0/wpsGetCapabilities_response.xsd"
+ updateSequence="1">
+ <ows:ServiceIdentification>
+ <ows:Title>PyWPS Development Server</ows:Title>
+ ...
+</wps:Capabilities>
+</PRE>
+
+<P>
+If you got something like this, (Capabilities response), everything looks
+fine.
+
+<P>
+If you got some other message, like e.g.:
+
+<P>
+<PRE>
+Traceback (most recent call last):
+ File "/usr/bin/wps.py", line 221, in <module>
+ wps = WPS()
+ File "/usr/bin/wps.py", line 140, in __init__
+ self.performRequest()
+ File "/usr/bin/wps.py", line 188, in performRequest
+ from pywps.WPS.GetCapabilities import GetCapabilities
+ File "/usr/lib/python2.5/site-packages/pywps/WPS/GetCapabilities.py", line 26, in <module>
+ from Response import Response
+ File "/usr/lib/python2.5/site-packages/pywps/WPS/Response.py", line 28, in <module>
+ from htmltmpl import TemplateManager, TemplateProcessor
+ImportError: No module named htmltmpl
+</PRE>
+
+<P>
+Than something is wrong with your Python installation or with the program.
+This message means, that the python-htmltmpl package is not installed in
+your system.
+
+<P>
+
+<H1><A NAME="SECTION00070000000000000000"></A>
+<A NAME="processes"></A>
+<BR>
+Write your own processes
+</H1>
+
+<P>
+All processes are stored in the <TT>pywps/processes</TT> directory. You can
+create custom directory anywhere in your system and set
+<TT>$PYTHON_PROCESS</TT> environment variabl (how to do this for the web
+server, refer to your Server documentation). Following example will
+describe buffering process. Several example processes are distributed along with PyWPS source code.
+
+<P>
+Create file <TT>exampleBufferProcess.py</TT> in PYWPS_PROCESSES directory.
+
+<P>
+Each process is stand-alone python script with one class <TT>Process</TT>,
+which has two methods: <TT>__init__, execute</TT>. It is possible also to add as
+many your functions/methods, as you wish.
+
+<P>
+
+<H2><A NAME="SECTION00071000000000000000">
+Process initialization and configuration</A>
+</H2>
+
+<P>
+<PRE>
+ 1 from pywps.Process.Process import WPSProcess
+ 2 class Process(WPSProcess):
+ 3 """Main process class"""
+ 4 def __init__(self):
+ 5 """Process initialization"""
+ 7 # init process
+ 8 WPSProcess.__init__(self,
+ 9 identifier = "exampleBufferProcess",
+ 10 title="Buffer",
+ 11 version = "0.2",
+ 12 storeSupported = "true",
+ 13 statusSupported = "true",
+ 14 abstract="Create a buffer around an input vector file",
+ 15 grassLocation = True)
+</PRE>
+
+<P>
+We defined new process called <TT>exampleBufferProcess</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>). The process will run within
+GRASS GIS environment (<TT>grassLocation = True</TT>).
+
+<P>
+
+<H4><A NAME="SECTION00071010000000000000">
+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>
+
+<H3><A NAME="SECTION00071100000000000000">
+Data Inputs</A>
+</H3>
+
+<P>
+Three 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 or reference (URL) to such file.
+</LI>
+<LI>BoundingBox Input - Coordinates for lower-left and upper-right
+ corner.
+</LI>
+</UL>
+
+<P>
+
+<H4><A NAME="SECTION00071110000000000000">
+ComplexInput</A>
+</H4>
+Complex input can be raster or vector file, to be processed.
+
+<P>
+<PRE>
+ 18 self.dataIn = self.addComplexInput(identifier="data",
+ 19 title = "Input data")
+ 20
+</PRE>
+
+<P>
+
+<H4><A NAME="SECTION00071120000000000000">
+LiteralInput</A>
+</H4>
+
+<P>
+With literal input, you can obtain any type of character string.
+
+<P>
+<PRE>
+ 21 self.widthIn = self.addLiteralInput(identifier = "width",
+ 22 title = "Width")
+ 23
+</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="tex2html28"
+ HREF="#foot230"><SUP><SPAN CLASS="arabic">11</SPAN></SUP></A> file distributed along with PyWPS
+source code.
+
+<P>
+
+<H3><A NAME="SECTION00071200000000000000">
+Data Outputs</A>
+</H3>
+Data outputs can be defined in similar way.
+
+<UL>
+<LI>Literal Output
+</LI>
+<LI>ComplexValue Outout
+</LI>
+<LI>BoundingBox Output
+</LI>
+</UL>
+
+<P>
+
+<H4><A NAME="SECTION00071210000000000000">
+ComplexValue Output</A>
+</H4>
+The complex value can be raster or vector file (or any other binary or text
+file).
+
+<P>
+<PRE>
+24 self.bufferOut = self.addComplexOutput(identifier="buffer",
+25 title="Output buffer file")
+26
+</PRE>
+
+<P>
+
+<H4><A NAME="SECTION00071220000000000000">
+Literal Output</A>
+</H4>
+If you want to output any text string.
+<PRE>
+27 self.textOut = self.addLiteralOutput(identifier="text",
+28 title="just some text")
+29
+</PRE>
+
+<P>
+
+<H2><A NAME="SECTION00072000000000000000">
+Process Programming</A>
+</H2>
+
+<P>
+The process must be defined in the <TT>execute(self)</TT> method.
+Basicly, you want to get input values and set output values. For this
+purpose, you can use <TT>getValue(input_identifier)</TT> and
+<TT>setValue(output_identifier,value)</TT> methods of the input/output
+objects (see lower).
+
+<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>
+Calculation progress can be set using <TT>self.status(string message,
+number percent)</TT> method.
+
+<P>
+Example follows:
+
+<P>
+<PRE>
+33 def execute(self):
+34 """Execute process.
+35
+36 Each command will be executed and output values will be set
+37 """
+38
+39 # run some command from the command line
+40 self.cmd("g.region -d")
+41
+42 # set status value
+43 self.status.set("Importing data",20)
+44 self.cmd("v.in.ogr dsn=%s output=data" %\
+45 (self.getInputValue('data')))
+46
+47 self.status.set("Buffering",50)
+48 self.cmd("v.buffer input=data output=data_buff buffer=%s scale=1.0 tolerance=0.01" %\
+49 (self.getInputValue('width')))
+50
+51 self.status.set("Exporting data",90)
+52
+53 self.cmd("v.out.ogr type=area format=GML input=data_buff dsn=out.xml olayer=path.xml")
+54
+55 self.bufferOut.setValue("out.xml")
+56 self.textOut.setValue("ahoj, svete")
+57 return
+</PRE>
+
+<P>
+
+<H3><A NAME="SECTION00072100000000000000">
+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, example:
+
+<P>
+<PRE>
+ def execute(self):
+ ...
+ return "Ups, something failed!"
+</PRE>
+
+<P>
+
+<H2><A NAME="SECTION00073000000000000000">
+Using GRASS GIS</A>
+</H2>
+
+<P>
+Configuration is done using standard pywps configuration file (see
+page<A HREF="pywps-howto.html#configuration"><IMG ALIGN="BOTTOM" BORDER="1" ALT="[*]"
+ SRC="/usr/share/latex2html/icons/crossref.png"></A>).
+
+<P>
+If you want to use GRASS GIS commands in your process, and there is no
+GRASS Location to be used, you have to set <TT>grassLocation=True</TT> in
+process definition:
+
+<P>
+<PRE>
+ WPSProcess.__init__(self,
+ identifier = "exampleBufferProcess",
+ ....
+ grassLocation = True)
+</PRE>
+
+<P>
+In this case, temporary GRASS Location will be created and after the
+process is done, it will be deleted again. By default, no GRASS Location is
+created.
+
+<P>
+You can also work in existing GRASS Location, then just set the location
+path:
+<PRE>
+ WPSProcess.__init__(self,
+ identifier = "exampleBufferProcess",
+ ....
+ grassLocation = "/home/grass/grassdata/spearfish60")
+</PRE>
+
+<P>
+
+<H1><A NAME="SECTION00080000000000000000">
+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=1.0.0&service=Wps&request=DescribeProcess&\
+ Identifier=bufferExampleProcess"
+
+wget -nv -q -O - "http://localhost/cgi-bin/wps.py?\
+ version=0.4.0&service=Wps&request=DescribeProcess&\
+ Identifier=exampleBufferProcess"
+</PRE>
+
+<P>
+</LI>
+<LI>Execute request:
+ For data inputs encoding, using HTTP Get method, see
+ OGC 05-007r7<A NAME="tex2html29"
+ HREF="#foot242"><SUP><SPAN CLASS="arabic">12</SPAN></SUP></A>, page 38 „Execute HTTP GET request KVP
+ encoding``
+<PRE>
+./wps.py "version=1.0.0&service=Wps&\
+ request=Execute&Identifier=exampleBufferProcess&\
+ datainputs=data=http://foo/bar/roads.gml;width=0.5"
+</PRE>
+
+<P>
+</LI>
+</UL>
+
+<P>
+Some examples of XML request econding are available in doc/examples
+directory.
+
+<P>
+Before testing WPS via HTTP POST, you have to set <TT>REQUEST_METHOD</TT>
+environment variable, then you can redirect input XML into <TT>wps.py</TT>
+script via standard input:
+
+<P>
+<PRE>
+$ export REQUEST_METHOD=POST
+$ cat doc/wps_execute_request-responsedocument.xml|./wps.py
+</PRE>
+
+<P>
+
+<H1><A NAME="SECTION00090000000000000000">
+About this document ...</A>
+</H1>
+ <STRONG>Implementation of OGC 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 pywps-howto.tex</TT>
+<P>
+The translation was initiated by Jachym Cepicky on 2008-08-28
+<BR><HR><H4>Footnotes</H4>
+<DL>
+<DT><A NAME="foot222">... Umwelt</A><A
+ HREF="pywps-howto.html#tex2html1"><SUP><SPAN CLASS="arabic">1</SPAN></SUP></A></DT>
+<DD><TT><A NAME="tex2html2"
+ HREF="http://dbu.de">http://dbu.de</A></TT>
+
+</DD>
+<DT><A NAME="foot223">...
+GDF-Hannover</A><A
+ HREF="pywps-howto.html#tex2html3"><SUP><SPAN CLASS="arabic">2</SPAN></SUP></A></DT>
+<DD><TT><A NAME="tex2html4"
+ HREF="http://gdf-hannover.de">http://gdf-hannover.de</A></TT>
+
+</DD>
+<DT><A NAME="foot224">...
+Sensing</A><A
+ HREF="pywps-howto.html#tex2html5"><SUP><SPAN CLASS="arabic">3</SPAN></SUP></A></DT>
+<DD><TT><A NAME="tex2html6"
+ HREF="http://www.bnhelp.cz">http://www.bnhelp.cz</A></TT>
+
+</DD>
+<DT><A NAME="foot225">...
+Cepicky</A><A
+ HREF="pywps-howto.html#tex2html7"><SUP><SPAN CLASS="arabic">4</SPAN></SUP></A></DT>
+<DD><TT><A NAME="tex2html8"
+ HREF="http://les-ejk.cz">http://les-ejk.cz</A></TT>
+
+</DD>
+<DT><A NAME="foot226">...
+Consortium</A><A
+ HREF="pywps-howto.html#tex2html9"><SUP><SPAN CLASS="arabic">5</SPAN></SUP></A></DT>
+<DD><TT><A NAME="tex2html10"
+ HREF="http://www.opengeospatial.org/standards/requests/28">http://www.opengeospatial.org/standards/requests/28</A></TT>
+
+</DD>
+<DT><A NAME="foot42">...
+GIS</A><A
+ HREF="pywps-howto.html#tex2html11"><SUP><SPAN CLASS="arabic">6</SPAN></SUP></A></DT>
+<DD>http://grass.itc.it
+
+</DD>
+<DT><A NAME="foot227">...
+list</A><A
+ HREF="pywps-howto.html#tex2html15"><SUP><SPAN CLASS="arabic">7</SPAN></SUP></A></DT>
+<DD>http://wald.intevation.org/mailman/listinfo/pywps-develPyWPS
+- development list
+
+</DD>
+<DT><A NAME="foot228">...
+bugtracker</A><A
+ HREF="pywps-howto.html#tex2html16"><SUP><SPAN CLASS="arabic">8</SPAN></SUP></A></DT>
+<DD>http://wald.intevation.org/tracker/?atid=174&group_id=22&func=browsePyWPS
+Bug tracker
+
+</DD>
+<DT><A NAME="foot98">...
+homepage</A><A
+ HREF="pywps-howto.html#tex2html22"><SUP><SPAN CLASS="arabic">9</SPAN></SUP></A></DT>
+<DD><TT><A NAME="tex2html23"
+ HREF="http://pywps.wald.intevation.org">http://pywps.wald.intevation.org</A></TT>
+
+</DD>
+<DT><A NAME="foot229">...
+1.0.0</A><A
+ HREF="pywps-howto.html#tex2html24"><SUP><SPAN CLASS="arabic">10</SPAN></SUP></A></DT>
+<DD><TT><A NAME="tex2html25"
+ HREF="http://www.opengeospatial.org/standards/wps">http://www.opengeospatial.org/standards/wps</A></TT>
+
+</DD>
+<DT><A NAME="foot230">...process.html</A><A
+ HREF="pywps-howto.html#tex2html28"><SUP><SPAN CLASS="arabic">11</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="foot242">... 05-007r7</A><A
+ HREF="pywps-howto.html#tex2html29"><SUP><SPAN CLASS="arabic">12</SPAN></SUP></A></DT>
+<DD><TT><A NAME="tex2html30"
+ HREF="http://opengeospatial.org/standards/wps/">http://opengeospatial.org/standards/wps/</A></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
+2008-08-28
+</ADDRESS>
+</BODY>
+</HTML>
Added: trunk/doc/html/pywps-howto.css
===================================================================
--- trunk/doc/html/pywps-howto.css 2008-08-28 13:07:48 UTC (rev 546)
+++ trunk/doc/html/pywps-howto.css 2008-08-28 13:09:10 UTC (rev 547)
@@ -0,0 +1,37 @@
+/* Century Schoolbook font is very similar to Computer Modern Math: cmmi */
+.MATH { font-family: "Century Schoolbook", serif; }
+.MATH I { font-family: "Century Schoolbook", serif; font-style: italic }
+.BOLDMATH { font-family: "Century Schoolbook", serif; font-weight: bold }
+
+/* implement both fixed-size and relative sizes */
+SMALL.XTINY { font-size : xx-small }
+SMALL.TINY { font-size : x-small }
+SMALL.SCRIPTSIZE { font-size : smaller }
+SMALL.FOOTNOTESIZE { font-size : small }
+SMALL.SMALL { }
+BIG.LARGE { }
+BIG.XLARGE { font-size : large }
+BIG.XXLARGE { font-size : x-large }
+BIG.HUGE { font-size : larger }
+BIG.XHUGE { font-size : xx-large }
+
+/* heading styles */
+H1 { }
+H2 { }
+H3 { }
+H4 { }
+H5 { }
+
+/* mathematics styles */
+DIV.displaymath { } /* math displays */
+TD.eqno { } /* equation-number cells */
+
+
+/* document-specific styles come next */
+PRE.preform { }
+DIV.quote { }
+DIV.center { }
+DIV.navigation { }
+SPAN.textbf { font-weight: bold }
+SPAN.arabic { }
+SPAN.textit { font-style: italic }
Added: trunk/doc/html/pywps-howto.html
===================================================================
--- trunk/doc/html/pywps-howto.html 2008-08-28 13:07:48 UTC (rev 546)
+++ trunk/doc/html/pywps-howto.html 2008-08-28 13:09:10 UTC (rev 547)
@@ -0,0 +1,1054 @@
+<!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 WPS standard: PyWPS</TITLE>
+<META NAME="description" CONTENT="Implementation of OGC WPS standard: PyWPS">
+<META NAME="keywords" CONTENT="pywps-howto">
+<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="pywps-howto.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 WPS standard: PyWPS</H1>
+<DIV CLASS="author_info">
+
+<P ALIGN="CENTER"><STRONG>Jachym Cepicky</STRONG></P>
+</DIV>
+
+<P>
+
+<P><P>
+<BR>
+<BLOCKQUOTE>
+Copyright ©2006-2009 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. This document describes most recent
+version of PyWPS (<SPAN CLASS="textit">2.0.0</SPAN>), available in subversion respository.
+
+<P>
+PyWPS project has been started on April 2006 with support of DBU -
+Deutsche Bundesstiftung Umwelt<A NAME="tex2html1"
+ HREF="#foot222"><SUP><SPAN CLASS="arabic">1</SPAN></SUP></A> and with help of
+GDF-Hannover<A NAME="tex2html3"
+ HREF="#foot223"><SUP><SPAN CLASS="arabic">2</SPAN></SUP></A> and Help Service Remote
+Sensing<A NAME="tex2html5"
+ HREF="#foot224"><SUP><SPAN CLASS="arabic">3</SPAN></SUP></A> companies. Initial author is Jachym
+Cepicky<A NAME="tex2html7"
+ HREF="#foot225"><SUP><SPAN CLASS="arabic">4</SPAN></SUP></A>.
+
+<P>
+<BR>
+
+<H2><A NAME="SECTION00010000000000000000">
+Contents</A>
+</H2>
+<!--Table of Contents-->
+
+<UL CLASS="TofC">
+<LI><A NAME="tex2html54"
+ HREF="pywps-howto.html#SECTION00020000000000000000">Introduction</A>
+<UL>
+<LI><A NAME="tex2html55"
+ HREF="pywps-howto.html#SECTION00021000000000000000">How it works</A>
+</UL>
+<BR>
+<LI><A NAME="tex2html56"
+ HREF="pywps-howto.html#SECTION00030000000000000000">Quick install</A>
+<LI><A NAME="tex2html57"
+ HREF="pywps-howto.html#SECTION00040000000000000000">Know issues</A>
+<LI><A NAME="tex2html58"
+ HREF="pywps-howto.html#SECTION00050000000000000000">Installation</A>
+<UL>
+<LI><A NAME="tex2html59"
+ HREF="pywps-howto.html#SECTION00051000000000000000">Installation the quick 'n' dirty way</A>
+<LI><A NAME="tex2html60"
+ HREF="pywps-howto.html#SECTION00052000000000000000">Installation the 'clean' way</A>
+</UL>
+<BR>
+<LI><A NAME="tex2html61"
+ HREF="pywps-howto.html#SECTION00060000000000000000">Configuration</A>
+<LI><A NAME="tex2html62"
+ HREF="pywps-howto.html#SECTION00070000000000000000">Write your own processes</A>
+<UL>
+<LI><A NAME="tex2html63"
+ HREF="pywps-howto.html#SECTION00071000000000000000">Process initialization and configuration</A>
+<LI><A NAME="tex2html64"
+ HREF="pywps-howto.html#SECTION00072000000000000000">Process Programming</A>
+<LI><A NAME="tex2html65"
+ HREF="pywps-howto.html#SECTION00073000000000000000">Using GRASS GIS</A>
+</UL>
+<BR>
+<LI><A NAME="tex2html66"
+ HREF="pywps-howto.html#SECTION00080000000000000000">Testing your new process</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 1.0.x standard from Open Geospatial
+Consortium<A NAME="tex2html9"
+ HREF="#foot226"><SUP><SPAN CLASS="arabic">5</SPAN></SUP></A>.
+
+<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
+GIS<A NAME="tex2html11"
+ HREF="#foot42"><SUP><SPAN CLASS="arabic">6</SPAN></SUP></A>. Access GRASS modules via web
+interace should be as easy as possible.
+However, not only GRASS GIS is supported. Usage of other programs, like
+R package or GDAL or PROJ tools is possible as well.
+
+<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="tex2html12"
+ HREF="http://pywps.wald.intevation.org">http://pywps.wald.intevation.org</A></TT>.
+PyWPS Wiki is hosted on <TT><A NAME="tex2html13"
+ HREF="http://pywps.ominiverdi.org/wiki">http://pywps.ominiverdi.org/wiki</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 process the data 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="47"></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="832" HEIGHT="275" ALIGN="BOTTOM" BORDER="0"
+ SRC="./pywps-schema.png"
+ ALT="Image pywps-schema">
+
+</DIV></TD></TR>
+</TABLE>
+</DIV>
+
+<P>
+
+<H1><A NAME="SECTION00030000000000000000">
+Quick install</A>
+</H1>
+
+<OL>
+<LI>Install PyWPS, see page <A HREF="pywps-howto.html#install"><IMG ALIGN="BOTTOM" BORDER="1" ALT="[*]"
+ SRC="/usr/share/latex2html/icons/crossref.png"></A> for details
+</LI>
+<LI>NOTE: Rename original files (process examples, configuration files)
+ with <TT>.py-dist</TT> suffix to <TT>.py</TT>, when you see them.
+</LI>
+<LI>Edit configuration files in <TT>pywps/etc/</TT> directory. See
+ page <A HREF="pywps-howto.html#configuration"><IMG ALIGN="BOTTOM" BORDER="1" ALT="[*]"
+ SRC="/usr/share/latex2html/icons/crossref.png"></A> for details.
+</LI>
+<LI>Create or edit <TT>__init__.py</TT> file in
+ <TT>pywps/processes</TT> directory. Add available process names to
+ <TT>__all__</TT> array.
+</LI>
+<LI>Add your processes to <TT>pywps/processes</TT> directory. See
+ page <A HREF="pywps-howto.html#processes"><IMG ALIGN="BOTTOM" BORDER="1" ALT="[*]"
+ SRC="/usr/share/latex2html/icons/crossref.png"></A> for details.
+</LI>
+<LI>Run PyWPS with <TT>./wps.py</TT> command, see
+ page <A HREF="pywps-howto.html#testing"><IMG ALIGN="BOTTOM" BORDER="1" ALT="[*]"
+ SRC="/usr/share/latex2html/icons/crossref.png"></A> for details.
+</LI>
+</OL>
+
+<P>
+
+<H1><A NAME="SECTION00040000000000000000">
+Know issues</A>
+</H1>
+Known bugs and limitations to UL>
+<LI>Translations do not work for GetCapabilities. They only work for DescribeProcess request types.
+</LI>
+<LI>If inputs are of type <TT>LiteralValue</TT> and it's type is
+string, it could be security problem. 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="tex2html15"
+ HREF="#foot227"><SUP><SPAN CLASS="arabic">7</SPAN></SUP></A>or using PyWPS
+bugtracker<A NAME="tex2html16"
+ HREF="#foot228"><SUP><SPAN CLASS="arabic">8</SPAN></SUP></A>.
+
+<P>
+
+<H1><A NAME="SECTION00050000000000000000"></A>
+<A NAME="install"></A>
+<BR>
+Installation
+</H1>
+Required packages:
+
+<P>
+
+<UL>
+<LI>python
+</LI>
+<LI>python-xml
+</LI>
+<LI>python-htmltmpl
+</LI>
+</UL>
+
+<P>
+Recommended packages:
+
+<P>
+
+<UL>
+<LI>Web Server (e.g. Apache) - <TT><A NAME="tex2html17"
+ 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="tex2html18"
+ 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="tex2html19"
+ 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="tex2html20"
+ 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="tex2html21"
+ 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="SECTION00051000000000000000">
+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="SECTION00052000000000000000">
+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>
+adjust the configuration file
+<PRE>
+$ vim /etc/pywps.cfg
+</PRE>
+permint write access to templates directory
+<PRE>
+# chmod -R 777 /usr/lib/python2.5/site-packages/pywps/Templates
+</PRE>
+
+<P>
+Several binary packages for Linux distributios (<TT>RPM,DEB</TT>) are also avaliable on PyWPS
+homepage<A NAME="tex2html22"
+ HREF="#foot98"><SUP><SPAN CLASS="arabic">9</SPAN></SUP></A>.
+
+<P>
+
+<H1><A NAME="SECTION00060000000000000000"></A>
+<A NAME="configuration"></A>
+<BR>
+Configuration
+</H1>
+
+<P>
+Before you start to tune your PyWPS installation, you should get your copy of
+OpenGIS(R) Web Processing Service document (OGC 05-007r7) version
+1.0.0<A NAME="tex2html24"
+ HREF="#foot229"><SUP><SPAN CLASS="arabic">10</SPAN></SUP></A>.
+
+<P>
+
+<P>
+<BR>
+NOTE: Note, that the configuration option are CASE SENSITIVE
+<P>
+<BR>
+
+
+<P>
+Pywps configuration takes place in <TT>pywps.cfg</TT> file located in
+<TT>/etc/pywps.cfg</TT> or <TT>pywps/etc/pywps.cfg</TT>.
+
+<P>
+Default configuration file is located in <TT>pywps/default.cfg</TT>, you
+can always make a copy of this file and start the configuration from
+scratch.
+
+<P>
+Several sections are in the file.
+
+<UL>
+<LI>Section <SPAN CLASS="textbf">[wps]</SPAN> contains general WPS settings, which are:
+
+<UL>
+<LI>encoding - Language encoding (utf-8, iso-8859-2, windows-1250, ...)
+</LI>
+<LI>title - Server title
+</LI>
+<LI>version - WPS version (1.0.0)
+</LI>
+<LI>abstract - Server anstract
+</LI>
+<LI>fees - Possible fees
+</LI>
+<LI>constraints - Possible constraints
+</LI>
+<LI>serveraddress - WPS script address: <TT><A NAME="tex2html26"
+ HREF="http://foo/bar/wps.py">http://foo/bar/wps.py</A></TT>
+</LI>
+<LI>keywords - Comma-separated list of kyewords
+</LI>
+<LI>lang - Default langue (eng)
+
+</LI>
+</UL>
+</LI>
+<LI>Section <SPAN CLASS="textbf">[provider]</SPAN> contains informations about you
+
+<UL>
+<LI>providerName - Name of your company
+</LI>
+<LI>individualName - Your name
+</LI>
+<LI>positionName
+</LI>
+<LI>role
+</LI>
+<LI>deliveryPoint - Street
+</LI>
+<LI>city
+</LI>
+<LI>postalCode
+</LI>
+<LI>country
+</LI>
+<LI>electronicMailAddress - foo at bar
+</LI>
+<LI>providerSite - <TT><A NAME="tex2html27"
+ HREF="http://foo.bar">http://foo.bar</A></TT>
+</LI>
+<LI>phoneVoice
+</LI>
+<LI>phoneFacsimile
+</LI>
+<LI>administrativeArea
+
+</LI>
+</UL>
+</LI>
+<LI>Section <SPAN CLASS="textbf">[server]</SPAN> contains server settings
+
+<UL>
+<LI>maxoperations - Maximal number of parallel running
+ processes. If set to 0, then there is no limit.
+</LI>
+<LI>maxinputparamlength - Maximal length of string input
+ parameter.
+</LI>
+<LI>maxfilesize - Maximal input file size (raster or
+ vector). The size can be determined as follows: 1GB, 5MB, 3kB,
+ 1000b.
+</LI>
+<LI>tempPath - Direcotory for temporary files (mostly
+ temporary GRASS locations).
+</LI>
+<LI>outputUrl - Url where the outputs are stored.
+</LI>
+<LI>outputPath - Path. where output files are stored.
+</LI>
+<LI>debug - true/false
+
+</LI>
+</UL>
+</LI>
+<LI>Section <SPAN CLASS="textbf">[grass]</SPAN> - GRASS GIS settings
+
+<UL>
+<LI>path - $PATH variable, e.g. <TT>/usr/lib/grass/bin</TT>
+</LI>
+<LI>addonPath - $GRASS_ADDONS variable
+</LI>
+<LI>version - GRASS version
+</LI>
+<LI>gui - Should be "text"
+</LI>
+<LI>gisbase - Path to GRASS GIS_BASE directory
+ (<TT>/usr/lib/grass</TT>)
+</LI>
+<LI>ldLibraryPath - Path of GRASS Libs
+ (<TT>/usr/lib/grass/lib</TT>)
+
+</LI>
+</UL>
+</LI>
+</UL>
+
+<P>
+File example follows:
+<PRE>
+[wps]
+encoding=utf-8
+title=PyWPS Server
+version=1.0.0
+abstract=See http://pywps.wald.intevation.org and http://www.opengeospatial.org/standards/wps
+fees=None
+constraints=none
+serveraddress=http://localhost/cgi-bin/wps
+keywords=GRASS,GIS,WPS
+lang=eng
+
+[provider]
+providerName=Your Company Name
+individualName=Your Name
+positionName=Your Position
+role=Your role
+deliveryPoint=Street
+city=City
+postalCode=000 00
+country=eu
+electronicMailAddress=login at server.org
+providerSite=http://foo.bar
+phoneVoice=False
+phoneFacsimile=False
+administrativeArea=False
+
+[server]
+maxoperations=3
+maxinputparamlength=1024
+maxfilesize=3mb
+tempPath=/tmp
+outputUrl=http://localhost/wps/wpsoutputs
+outputPath=/var/www/wps/wpsoutputs
+debug=true
+
+[grass]
+path=/usr/lib/grass/bin/:/usr/lib/grass/scripts/
+addonPath=
+version=6.2.1
+gui=text
+gisbase=/usr/lib/grass/
+ldLibraryPath=/usr/lib/grass/lib
+</PRE>
+
+<P>
+subsectionTesting after installation
+<A NAME="testing"></A>For test, just run
+<TT>wps.py</TT> in your command line:
+
+<P>
+<PRE>
+$ ./wps.py "service=wps&request=getcapabilities"
+
+INIT DONE
+LOADING PRECOMPILED
+TEMPLATE: UPTODATE
+PRECOMPILED: UPTODATE
+Content-type: text/xml
+
+<?xml version="1.0" encoding="utf-8"?>
+<wps:Capabilities service="WPS" version="1.0.0" xml:lang="eng,ger"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:wps="http://www.opengis.net/wps/1.0.0"
+ xmlns:ows="http://www.opengis.net/ows/1.1"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance
+ xsi:schemaLocation="http://www.opengis.net/wps/1.0.0
+ http://schemas.opengis.net/wps/1.0.0/wpsGetCapabilities_response.xsd"
+ updateSequence="1">
+ <ows:ServiceIdentification>
+ <ows:Title>PyWPS Development Server</ows:Title>
+ ...
+</wps:Capabilities>
+</PRE>
+
+<P>
+If you got something like this, (Capabilities response), everything looks
+fine.
+
+<P>
+If you got some other message, like e.g.:
+
+<P>
+<PRE>
+Traceback (most recent call last):
+ File "/usr/bin/wps.py", line 221, in <module>
+ wps = WPS()
+ File "/usr/bin/wps.py", line 140, in __init__
+ self.performRequest()
+ File "/usr/bin/wps.py", line 188, in performRequest
+ from pywps.WPS.GetCapabilities import GetCapabilities
+ File "/usr/lib/python2.5/site-packages/pywps/WPS/GetCapabilities.py", line 26, in <module>
+ from Response import Response
+ File "/usr/lib/python2.5/site-packages/pywps/WPS/Response.py", line 28, in <module>
+ from htmltmpl import TemplateManager, TemplateProcessor
+ImportError: No module named htmltmpl
+</PRE>
+
+<P>
+Than something is wrong with your Python installation or with the program.
+This message means, that the python-htmltmpl package is not installed in
+your system.
+
+<P>
+
+<H1><A NAME="SECTION00070000000000000000"></A>
+<A NAME="processes"></A>
+<BR>
+Write your own processes
+</H1>
+
+<P>
+All processes are stored in the <TT>pywps/processes</TT> directory. You can
+create custom directory anywhere in your system and set
+<TT>$PYTHON_PROCESS</TT> environment variabl (how to do this for the web
+server, refer to your Server documentation). Following example will
+describe buffering process. Several example processes are distributed along with PyWPS source code.
+
+<P>
+Create file <TT>exampleBufferProcess.py</TT> in PYWPS_PROCESSES directory.
+
+<P>
+Each process is stand-alone python script with one class <TT>Process</TT>,
+which has two methods: <TT>__init__, execute</TT>. It is possible also to add as
+many your functions/methods, as you wish.
+
+<P>
+
+<H2><A NAME="SECTION00071000000000000000">
+Process initialization and configuration</A>
+</H2>
+
+<P>
+<PRE>
+ 1 from pywps.Process.Process import WPSProcess
+ 2 class Process(WPSProcess):
+ 3 """Main process class"""
+ 4 def __init__(self):
+ 5 """Process initialization"""
+ 7 # init process
+ 8 WPSProcess.__init__(self,
+ 9 identifier = "exampleBufferProcess",
+ 10 title="Buffer",
+ 11 version = "0.2",
+ 12 storeSupported = "true",
+ 13 statusSupported = "true",
+ 14 abstract="Create a buffer around an input vector file",
+ 15 grassLocation = True)
+</PRE>
+
+<P>
+We defined new process called <TT>exampleBufferProcess</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>). The process will run within
+GRASS GIS environment (<TT>grassLocation = True</TT>).
+
+<P>
+
+<H4><A NAME="SECTION00071010000000000000">
+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>
+
+<H3><A NAME="SECTION00071100000000000000">
+Data Inputs</A>
+</H3>
+
+<P>
+Three 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 or reference (URL) to such file.
+</LI>
+<LI>BoundingBox Input - Coordinates for lower-left and upper-right
+ corner.
+</LI>
+</UL>
+
+<P>
+
+<H4><A NAME="SECTION00071110000000000000">
+ComplexInput</A>
+</H4>
+Complex input can be raster or vector file, to be processed.
+
+<P>
+<PRE>
+ 18 self.dataIn = self.addComplexInput(identifier="data",
+ 19 title = "Input data")
+ 20
+</PRE>
+
+<P>
+
+<H4><A NAME="SECTION00071120000000000000">
+LiteralInput</A>
+</H4>
+
+<P>
+With literal input, you can obtain any type of character string.
+
+<P>
+<PRE>
+ 21 self.widthIn = self.addLiteralInput(identifier = "width",
+ 22 title = "Width")
+ 23
+</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="tex2html28"
+ HREF="#foot230"><SUP><SPAN CLASS="arabic">11</SPAN></SUP></A> file distributed along with PyWPS
+source code.
+
+<P>
+
+<H3><A NAME="SECTION00071200000000000000">
+Data Outputs</A>
+</H3>
+Data outputs can be defined in similar way.
+
+<UL>
+<LI>Literal Output
+</LI>
+<LI>ComplexValue Outout
+</LI>
+<LI>BoundingBox Output
+</LI>
+</UL>
+
+<P>
+
+<H4><A NAME="SECTION00071210000000000000">
+ComplexValue Output</A>
+</H4>
+The complex value can be raster or vector file (or any other binary or text
+file).
+
+<P>
+<PRE>
+24 self.bufferOut = self.addComplexOutput(identifier="buffer",
+25 title="Output buffer file")
+26
+</PRE>
+
+<P>
+
+<H4><A NAME="SECTION00071220000000000000">
+Literal Output</A>
+</H4>
+If you want to output any text string.
+<PRE>
+27 self.textOut = self.addLiteralOutput(identifier="text",
+28 title="just some text")
+29
+</PRE>
+
+<P>
+
+<H2><A NAME="SECTION00072000000000000000">
+Process Programming</A>
+</H2>
+
+<P>
+The process must be defined in the <TT>execute(self)</TT> method.
+Basicly, you want to get input values and set output values. For this
+purpose, you can use <TT>getValue(input_identifier)</TT> and
+<TT>setValue(output_identifier,value)</TT> methods of the input/output
+objects (see lower).
+
+<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>
+Calculation progress can be set using <TT>self.status(string message,
+number percent)</TT> method.
+
+<P>
+Example follows:
+
+<P>
+<PRE>
+33 def execute(self):
+34 """Execute process.
+35
+36 Each command will be executed and output values will be set
+37 """
+38
+39 # run some command from the command line
+40 self.cmd("g.region -d")
+41
+42 # set status value
+43 self.status.set("Importing data",20)
+44 self.cmd("v.in.ogr dsn=%s output=data" %\
+45 (self.getInputValue('data')))
+46
+47 self.status.set("Buffering",50)
+48 self.cmd("v.buffer input=data output=data_buff buffer=%s scale=1.0 tolerance=0.01" %\
+49 (self.getInputValue('width')))
+50
+51 self.status.set("Exporting data",90)
+52
+53 self.cmd("v.out.ogr type=area format=GML input=data_buff dsn=out.xml olayer=path.xml")
+54
+55 self.bufferOut.setValue("out.xml")
+56 self.textOut.setValue("ahoj, svete")
+57 return
+</PRE>
+
+<P>
+
+<H3><A NAME="SECTION00072100000000000000">
+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, example:
+
+<P>
+<PRE>
+ def execute(self):
+ ...
+ return "Ups, something failed!"
+</PRE>
+
+<P>
+
+<H2><A NAME="SECTION00073000000000000000">
+Using GRASS GIS</A>
+</H2>
+
+<P>
+Configuration is done using standard pywps configuration file (see
+page<A HREF="pywps-howto.html#configuration"><IMG ALIGN="BOTTOM" BORDER="1" ALT="[*]"
+ SRC="/usr/share/latex2html/icons/crossref.png"></A>).
+
+<P>
+If you want to use GRASS GIS commands in your process, and there is no
+GRASS Location to be used, you have to set <TT>grassLocation=True</TT> in
+process definition:
+
+<P>
+<PRE>
+ WPSProcess.__init__(self,
+ identifier = "exampleBufferProcess",
+ ....
+ grassLocation = True)
+</PRE>
+
+<P>
+In this case, temporary GRASS Location will be created and after the
+process is done, it will be deleted again. By default, no GRASS Location is
+created.
+
+<P>
+You can also work in existing GRASS Location, then just set the location
+path:
+<PRE>
+ WPSProcess.__init__(self,
+ identifier = "exampleBufferProcess",
+ ....
+ grassLocation = "/home/grass/grassdata/spearfish60")
+</PRE>
+
+<P>
+
+<H1><A NAME="SECTION00080000000000000000">
+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=1.0.0&service=Wps&request=DescribeProcess&\
+ Identifier=bufferExampleProcess"
+
+wget -nv -q -O - "http://localhost/cgi-bin/wps.py?\
+ version=0.4.0&service=Wps&request=DescribeProcess&\
+ Identifier=exampleBufferProcess"
+</PRE>
+
+<P>
+</LI>
+<LI>Execute request:
+ For data inputs encoding, using HTTP Get method, see
+ OGC 05-007r7<A NAME="tex2html29"
+ HREF="#foot242"><SUP><SPAN CLASS="arabic">12</SPAN></SUP></A>, page 38 „Execute HTTP GET request KVP
+ encoding``
+<PRE>
+./wps.py "version=1.0.0&service=Wps&\
+ request=Execute&Identifier=exampleBufferProcess&\
+ datainputs=data=http://foo/bar/roads.gml;width=0.5"
+</PRE>
+
+<P>
+</LI>
+</UL>
+
+<P>
+Some examples of XML request econding are available in doc/examples
+directory.
+
+<P>
+Before testing WPS via HTTP POST, you have to set <TT>REQUEST_METHOD</TT>
+environment variable, then you can redirect input XML into <TT>wps.py</TT>
+script via standard input:
+
+<P>
+<PRE>
+$ export REQUEST_METHOD=POST
+$ cat doc/wps_execute_request-responsedocument.xml|./wps.py
+</PRE>
+
+<P>
+
+<H1><A NAME="SECTION00090000000000000000">
+About this document ...</A>
+</H1>
+ <STRONG>Implementation of OGC 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 pywps-howto.tex</TT>
+<P>
+The translation was initiated by Jachym Cepicky on 2008-08-28
+<BR><HR><H4>Footnotes</H4>
+<DL>
+<DT><A NAME="foot222">... Umwelt</A><A
+ HREF="pywps-howto.html#tex2html1"><SUP><SPAN CLASS="arabic">1</SPAN></SUP></A></DT>
+<DD><TT><A NAME="tex2html2"
+ HREF="http://dbu.de">http://dbu.de</A></TT>
+
+</DD>
+<DT><A NAME="foot223">...
+GDF-Hannover</A><A
+ HREF="pywps-howto.html#tex2html3"><SUP><SPAN CLASS="arabic">2</SPAN></SUP></A></DT>
+<DD><TT><A NAME="tex2html4"
+ HREF="http://gdf-hannover.de">http://gdf-hannover.de</A></TT>
+
+</DD>
+<DT><A NAME="foot224">...
+Sensing</A><A
+ HREF="pywps-howto.html#tex2html5"><SUP><SPAN CLASS="arabic">3</SPAN></SUP></A></DT>
+<DD><TT><A NAME="tex2html6"
+ HREF="http://www.bnhelp.cz">http://www.bnhelp.cz</A></TT>
+
+</DD>
+<DT><A NAME="foot225">...
+Cepicky</A><A
+ HREF="pywps-howto.html#tex2html7"><SUP><SPAN CLASS="arabic">4</SPAN></SUP></A></DT>
+<DD><TT><A NAME="tex2html8"
+ HREF="http://les-ejk.cz">http://les-ejk.cz</A></TT>
+
+</DD>
+<DT><A NAME="foot226">...
+Consortium</A><A
+ HREF="pywps-howto.html#tex2html9"><SUP><SPAN CLASS="arabic">5</SPAN></SUP></A></DT>
+<DD><TT><A NAME="tex2html10"
+ HREF="http://www.opengeospatial.org/standards/requests/28">http://www.opengeospatial.org/standards/requests/28</A></TT>
+
+</DD>
+<DT><A NAME="foot42">...
+GIS</A><A
+ HREF="pywps-howto.html#tex2html11"><SUP><SPAN CLASS="arabic">6</SPAN></SUP></A></DT>
+<DD>http://grass.itc.it
+
+</DD>
+<DT><A NAME="foot227">...
+list</A><A
+ HREF="pywps-howto.html#tex2html15"><SUP><SPAN CLASS="arabic">7</SPAN></SUP></A></DT>
+<DD>http://wald.intevation.org/mailman/listinfo/pywps-develPyWPS
+- development list
+
+</DD>
+<DT><A NAME="foot228">...
+bugtracker</A><A
+ HREF="pywps-howto.html#tex2html16"><SUP><SPAN CLASS="arabic">8</SPAN></SUP></A></DT>
+<DD>http://wald.intevation.org/tracker/?atid=174&group_id=22&func=browsePyWPS
+Bug tracker
+
+</DD>
+<DT><A NAME="foot98">...
+homepage</A><A
+ HREF="pywps-howto.html#tex2html22"><SUP><SPAN CLASS="arabic">9</SPAN></SUP></A></DT>
+<DD><TT><A NAME="tex2html23"
+ HREF="http://pywps.wald.intevation.org">http://pywps.wald.intevation.org</A></TT>
+
+</DD>
+<DT><A NAME="foot229">...
+1.0.0</A><A
+ HREF="pywps-howto.html#tex2html24"><SUP><SPAN CLASS="arabic">10</SPAN></SUP></A></DT>
+<DD><TT><A NAME="tex2html25"
+ HREF="http://www.opengeospatial.org/standards/wps">http://www.opengeospatial.org/standards/wps</A></TT>
+
+</DD>
+<DT><A NAME="foot230">...process.html</A><A
+ HREF="pywps-howto.html#tex2html28"><SUP><SPAN CLASS="arabic">11</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="foot242">... 05-007r7</A><A
+ HREF="pywps-howto.html#tex2html29"><SUP><SPAN CLASS="arabic">12</SPAN></SUP></A></DT>
+<DD><TT><A NAME="tex2html30"
+ HREF="http://opengeospatial.org/standards/wps/">http://opengeospatial.org/standards/wps/</A></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
+2008-08-28
+</ADDRESS>
+</BODY>
+</HTML>
Added: trunk/doc/html/pywps-schema.png
===================================================================
(Binary files differ)
Property changes on: trunk/doc/html/pywps-schema.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
More information about the Pywps-commits
mailing list