[ZOO-Discuss] [ZOO Project Trac] #2: GIS GRASS integration
ZOO Project Trac
zoo-dev at cartography.st
Tue May 25 04:19:14 PDT 2010
#2: GIS GRASS integration
------------------------+---------------------------------------------------
Reporter: soeren | Owner: soeren
Type: enhancement | Status: new
Priority: major | Component: zoo-kernel
Version: 1.0 | Keywords:
------------------------+---------------------------------------------------
I have implemented a proof of concept to attach GIS GRASS as processing
back-end to ZOO WPS. The approach is quite generic. There is (hopefully)
no need to implement a single line of code to attach a grass module as WPS
service. Everything is automatically generated and works with grass7.
'''The principle:'''
Based on the grass module WPS XML description [0], which must be generated
for the module in gis grass7, a zcfg file and a python service file are
generated. The generator is available here [1]. There is also a grass XML
WPS to YAML generator available for future use [2].
The zcfg file should work out of the box, but it can of course be modified
to your needs.
Automatically generated python service file example for v.voronoi:
{{{
import ZOO_Project.ZOOGrassModuleStarter as zoo
def v_voronoi(m, inputs, outputs):
service = zoo.ZOOGrassModuleStarter()
service.fromMaps("v.voronoi", inputs, outputs)
return 1
}}}
'''How it works?'''
The generated python service file instantiates an object of the class
ZOOGrassModuleStarter [3], passing the input and output maps. This class
is derived from GrassModuleStarter [4], which is a framework to start gis
grass modules based on external data.
The ZOOGrassModuleStarter will write the input data located in the input
map to a temporary directory, so grass can import/link it. Then a gis
grass location based on the first input is generated. Then the grass
module will be executed and the result will be exported and written into
the output map, so the zoo kernel can handle it.
'''What to modify?'''
To get the ZOOGrassModuleStarter to work properly, some paths must be set
in the header section. This is an "works for me" example:
{{{
# !!!!! EDIT THIS SECTION !!!!!
# Some default variables. Override them to your needs.
WORKDIR="/tmp"
OUTPUTDIR="/tmp"
LOGFILE="logfile.txt"
LOGFILE_MODULE_STDOUT="logfile_module_stdout.txt"
LOGFILE_MODULE_STDERR="logfile_module_sterr.txt"
GRASS_GIS_BASE="/home/soeren/src/grass7.0/grass_trunk/dist.i686-pc-linux-
gnu"
GRASS_ADDON_PATH="/home/soeren/src/vtkGRASSBridge/vtk-grass-
bridge/WPS/Testing/Python/GrassAddons"
GRASS_VERSION="7.0.svn"
# !!!!! END EDIT SECTION !!!!!
}}}
These settings are used by all automatically generated grass python
services. They may change in future!
'''Example installation:'''
I have attached a tar.gz archive containing the Python code of the
ZOOGrassModuleStarter frame-work and sample zcfg files + service python
files. Just copy the content into your cgi directory, modify the main.cfg
and the ZOOGrassModuleStarter.py in ZOO_Project and install PyXB [5].
Python 2.6, PyXB and a valid grass7 installation are the only
dependencies.
The simple grass modules r.add, r.mult, r.div and r.sub are available here
[6]. Thy are not part o grass7.
Obstacles:
* The zcfg files may contain letters which are not supported or wrongly
interpreted by the zoo kernel. This is related to parameter descriptions
of grass modules, which make use of .,/() and so on.
* ZOO kernel automatically sets obligatorily variables, even if no default
value is specified. I will report this in a different ticket.
Enjoy and good Luck
[0] http://grass.osgeo.org/wiki/WPS
[1] http://code.google.com/p/vtk-grass-
bridge/source/browse/trunk/WPS/ZOO_Project/GrassXMLtoZCFG.py
[2] http://code.google.com/p/vtk-grass-
bridge/source/browse/trunk/WPS/ZOO_Project/GrassXMLtoYAML.py
[3] http://code.google.com/p/vtk-grass-
bridge/source/browse/trunk/WPS/ZOO_Project/ZOOGrassModuleStarter.py
[4] http://code.google.com/p/vtk-grass-
bridge/source/browse/trunk/WPS/GrassModuleStarter.py
[5] http://pyxb.sourceforge.net/
[6] http://code.google.com/p/vtk-grass-
bridge/source/browse/#svn/trunk/WPS/Testing/Python/GrassAddons
--
Ticket URL: <http://svn.zoo-project.org/trac/ticket/2>
ZOO Project Trac <http://svn.zoo-project.org/>
Open WPS Platform
More information about the Zoo-discuss
mailing list