WPS: Difference between revisions
Jump to navigation
Jump to search
(+cat) |
|||
Line 172: | Line 172: | ||
[[Category: Development]] | [[Category: Development]] | ||
[[Category: OGC]] | [[Category: OGC]] | ||
[[Category: Linking to other languages]] |
Revision as of 14:31, 21 March 2010
GRASS based OGC Web Processing Service (WPS) standard implementations
Inside GRASS 7
In GRASS7, the WPS process description can be automatically generated with the option '--wps-process-description'. See announcement.
Example:
r.grow --wps-process-description <?xml version="1.0" encoding="UTF-8"?> <wps:ProcessDescriptions xmlns:wps="http://www.opengis.net/wps/1.0.0" xmlns:ows="http://www.opengis.net/ows/1.1" xmlns:xlink="http://www.w3.org/1999/xlink" 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/wpsDescribeProcess_response.xsd" service="WPS" version="1.0.0" xml:lang="en-US"> <ProcessDescription wps:processVersion="1" storeSupported="true" statusSupported="true"> <ows:Identifier>r.grow</ows:Identifier> <ows:Title>Generates a raster map layer with contiguous areas grown by one cell.</ows:Title> <ows:Abstract>Generates a raster map layer with contiguous areas grown by one cell.</ows:Abstract> <ows:Metadata xlink:title="raster" /> <DataInputs> <Input minOccurs="1" maxOccurs="1"> <ows:Identifier>input</ows:Identifier> <ows:Title>Name of input raster map</ows:Title> <ows:Abstract>Name of input raster map</ows:Abstract> <ComplexData maximumMegabytes="2048"> <Default> <Format> <MimeType>image/tiff</MimeType> </Format> </Default> <Supported> <Format> <MimeType>image/tiff</MimeType> </Format> <Format> <MimeType>image/png</MimeType> </Format> <Format> <MimeType>application/grass-raster-ascii</MimeType> </Format> <Format> <MimeType>application/grass-raster-binary</MimeType> </Format> </Supported> </ComplexData> </Input> <Input minOccurs="0" maxOccurs="1"> <ows:Identifier>radius</ows:Identifier> <ows:Title>Radius of buffer in raster cells</ows:Title> <ows:Abstract>Radius of buffer in raster cells</ows:Abstract> <LiteralData> <ows:DataType ows:reference="xs:float">float</ows:DataType> <ows:AnyValue/> <DefaultValue>1.01</DefaultValue> </LiteralData> </Input> <Input minOccurs="0" maxOccurs="1"> <ows:Identifier>metric</ows:Identifier> <ows:Title>Metric</ows:Title> <ows:Abstract>Metric</ows:Abstract> <LiteralData> <ows:DataType ows:reference="xs:string">string</ows:DataType> <ows:AllowedValues> <ows:Value>euclidean</ows:Value> <ows:Value>maximum</ows:Value> <ows:Value>manhattan</ows:Value> </ows:AllowedValues> <DefaultValue>euclidean</DefaultValue> </LiteralData> </Input> <Input minOccurs="0" maxOccurs="1"> <ows:Identifier>old</ows:Identifier> <ows:Title>Value to write for input cells which are non-NULL (-1 => NULL)</ows:Title> <ows:Abstract>Value to write for input cells which are non-NULL (-1 => NULL)</ows:Abstract> <LiteralData> <ows:DataType ows:reference="xs:integer">integer</ows:DataType> <ows:AnyValue/> </LiteralData> </Input> <Input minOccurs="0" maxOccurs="1"> <ows:Identifier>new</ows:Identifier> <ows:Title>Value to write for "grown" cells</ows:Title> <ows:Abstract>Value to write for "grown" cells</ows:Abstract> <LiteralData> <ows:DataType ows:reference="xs:integer">integer</ows:DataType> <ows:AnyValue/> </LiteralData> </Input> <Input minOccurs="0" maxOccurs="1"> <ows:Identifier>-m</ows:Identifier> <ows:Title>radius is in map units rather than cells</ows:Title> <ows:Abstract>radius is in map units rather than cells</ows:Abstract> <LiteralData> <ows:DataType ows:reference="xs:boolean">boolean</ows:DataType> <ows:AllowedValues> <ows:Value>true</ows:Value> <ows:Value>false</ows:Value> </ows:AllowedValues> <DefaultValue>false</DefaultValue> </LiteralData> </Input> </DataInputs> <ProcessOutputs> <Output> <ows:Identifier>output</ows:Identifier> <ows:Title>Name for output raster map</ows:Title> <ows:Abstract>Name for output raster map</ows:Abstract> <ComplexOutput> <Default> <Format> <MimeType>image/tiff</MimeType> </Format> </Default> <Supported> <Format> <MimeType>image/tiff</MimeType> </Format> <Format> <MimeType>image/png</MimeType> </Format> <Format> <MimeType>application/grass-raster-ascii</MimeType> </Format> <Format> <MimeType>application/grass-raster-binary</MimeType> </Format> </Supported> </ComplexOutput> </Output> </ProcessOutputs> </ProcessDescription> </wps:ProcessDescriptions>
WPS workflow idea
External raster maps can directly be linked into GRASS with r.external which saves time and disk space. Additionally, there is no more need to store results in the internal GRASS format - with r.external.out the resulting maps are directly written to a GDAL supported format.
Example
# register GeoTIFF file in GRASS database: r.external terra_lst1km20030314.LST_Day_1km.rst.tif out=modis_celsius # define output directory for GRASS calculation results: r.external.out /srv/gisoutput/ # do something (here: extract pixels > 20°C), write output directly as GeoTIFF: r.mapcalc "warm.tif = if(modis_celsius > 20, modis_celsius, null() )" # use the result elsewhere qgis /srv/gisoutput/warm.tif
Linking to other software
There are currently several WPS implementations which use GRASS as GIS backbone:
- PyWPS: http://pywps.wald.intevation.org/
- Gallery (live examples)
- WPS by 52n: http://52north.org/maven/project-sites/wps/52n-wps-site/
- ZOO project - Open OSW Platform: http://www.zoo-project.org/
- vtk-grass-bridge: http://code.google.com/p/vtk-grass-bridge/