WPS Architecture Section

In this section you can find description of the 52°North WPS Architecture.

The 52°North WPS supports a set of input formats, processes and output formats. The architecture is held pluggable to enable the extension of already supported formats and processes. In detail, the parsers (green arrows) transform external data formats (such as GML, SHP, etc.) into internal dataformats. The internal dataformat is consumed by the process itself. The process also outputs a specific internal data format. That internal dataformat is transformed back to the requested external output format via so called "Generators".

The following diagrams provide a detailed overview of the architecture.

Server module

Server_small.png

All processes have to implement IAlgorithm or is one of its implementing abstract classes. The AbstractSelfDescribingAlgorithm class offers convenient methods to automatically create a ProcessDescription document. For a tutorial follow this link.

All processes are organized in so called "Algorithm Repositories", which have to implement IAlgorithmRepository. Each Algorithm Repository decides independently on how to load a process. All backends such as GRASS and ArcGIS Server implement their own Algorithm Repository. The LocalAlgorithmRepository is for locally available Java classes that implement IAlgorithm and the UploadedAlgorithmRepository for processes uploaded via the web interface (see the bottom of this tutorial).

IO module

IO_small.png

The internal datastructures (such as Geotools FeatureCollection and so on) are wrapped by the datastructures seen above. They all have to implement the IData interface. It is distinguished between literal and complex data according to the WPS specification. The following table gives you an overview of the available complex datatypes.

Class Description
AsciiGrassDataBinding A datastructure that provides Asciidata consumed by GRASS
FileDataBinding A datastructure that holds a reference to any kind of file
GeotiffDataBinding A datastructure that holds a reference to a Geotiff file
GTRasterDataBinding A Geotools datastructure that represents a raster (GridCoverage2D)
GTVectorDataBinding A Geotools datastructure that represents a vector data (FeatureCollection)
PlainStringDataBinding A datastructure that holds a String
ShapefileDataBinding A datastructure that holds a reference to a Shapefile
GenericFileDataBinding A datastructure that holds a reference to FileDataBinding, which references a file and adds some convenience methods object

Parsers package

Parsers_small.png

Parser have to implement the IParser interface. It is distinguished between XML and binary parsers as toplevel abstract classes. Parser may also implement the IStreamableParser interface if they support streaming. There are currently the following parsers:

Class ExternalDatatype consumed InternalDatatype created
GTBinZippedBase64SHPParser Base64 encoded zipped Shapefiles GTVectorDataBinding
GTBinZippedSHPParser Zipped Shapefiles (per reference) GTVectorDataBinding
GML3BasicParser GML3 GTVectorDataBinding
GML3BasicParser4Files GML3 GenericFileDataBinding referencing a GML3 file
KMLParser KML GTVectorDataBinding
SimpleGMLParser GML2 following the basic.xsd GTVectorDataBinding
GRASSKMLParser KML GenericFileDataBinding referencing a KML file
GML2BasicParser4Files GML2 GenericFileDataBinding referencing a GML2 file
GML2BasicParser GML2 GTVectorDataBinding
GTBinZippedWKT64Parser Base64 encoded zipped WKT GTVectorDataBinding
GeotiffBase64Parser Base64 encoded Geotiff GTRasterDataBinding
GeotiffParser Geotiff (per reference) GTRasterDataBinding
GeotiffZippedParser Zipped Geotiff (per reference) GTRasterDataBinding
AsciiGrassParser GrassAsciiGrid AsciiGrassDataBinding
GenericFileParser Any file GenericFileDataBinding

All parser have to be registered either directly in the wps_config.xml file in the config folder or via the webAdmin configuration GUI.

Generators package

Generators_small.png

Generators have to implement the IGenerator interface. It is distinguished between XML and binary generators as toplevel abstract classes. Generators may also implement the IStreamableGenerator interface if they support streaming. There are currently the following generators:

Class InternalDatatype consumed ExternalDatatype created
GenericFileGenerator GenericFileDataBinding Content of the file (base64 encoded-depending on request)
GeotiffGenerator GTRasterDataBinding Geotiff
KMLGenerator GTVectorDataBinding KML
GML2BasicGenerator GTVectorDataBinding GML2
GML2BasicGenerator4Files GenericFileDataBinding GML2
GML3BasicGenerator GTVectorDataBinding GML3
GML3BasicGenerator4Files GenericFileDataBinding GML3
Base64Generator FileDataBinding base64 encoded file
GTBinZippedSHPFileGeneratorBase64 GTVectorDataBinding Base64 encoded zipped Shapefile
GTBinZippedSHPGenerator GTVectorDataBinding Zipped Shapefile (only for reference/store)
SimpleGMLGenerator GTVectorDataBinding GML2 following basic.xsd
GRASSXMLGenerator GenericFileDataBinding KML/XML

There are also three specialized Generators for storing the result directly in a WMS/WFS/WCS and retrieving a reference to the service with the corresponding stored georesource (layer/FeatureType).

GeoserverWMSGenerator GTVectorDataBinding/GTRasterDataBinding WMS
GeoserverWFSGenerator GTVectorDataBinding WFS
GeoserverWCSGenerator GTRasterDataBinding WCS

In these cases the mimetype has to be set to application/WMS or application/WFS or application/WCS

A sample response looks like this

<ns:ComplexData encoding="UTF-8" mimeType="application/WMS">
        <OWSResponse type="WMS">
                <ResourceID>N52:tempFile1284329891171</ResourceID>
                <GetCapabilitiesLink>
                        http://localhost:8080/geoserver/ows?Service=WMS&amp;Request=GetCapabilities&amp;Version=1.1.0
                </GetCapabilitiesLink>
        </OWSResponse>
 </ns:ComplexData>

All generators have to be registered either directly in the wps_config.xml file in the config folder or via the webAdmin configuration GUI.

GetCapabilities sequence diagram

GetCapabilities_small.png

DescribeProcess sequence diagram

DescribeProcess_small.png

Execute sequence diagram

Execute-sync_small.png

I Attachment Action Size Date Who Comment
DescribeProcess.pngpng DescribeProcess.png manage 9 K 03 Jun 2013 - 06:41 BenjaminPross  
DescribeProcess_small.pngpng DescribeProcess_small.png manage 26 K 03 Jun 2013 - 06:41 BenjaminPross  
Execute-sync.pngpng Execute-sync.png manage 53 K 03 Jun 2013 - 06:41 BenjaminPross  
Execute-sync_small.pngpng Execute-sync_small.png manage 32 K 03 Jun 2013 - 06:41 BenjaminPross  
Generators.pngpng Generators.png manage 69 K 03 Jun 2013 - 06:41 BenjaminPross  
Generators_small.pngpng Generators_small.png manage 28 K 03 Jun 2013 - 06:41 BenjaminPross  
GetCapabilities.pngpng GetCapabilities.png manage 16 K 03 Jun 2013 - 06:41 BenjaminPross  
GetCapabilities_small.pngpng GetCapabilities_small.png manage 30 K 03 Jun 2013 - 06:41 BenjaminPross  
IO.pngpng IO.png manage 37 K 03 Jun 2013 - 06:41 BenjaminPross  
IO_small.pngpng IO_small.png manage 16 K 03 Jun 2013 - 06:41 BenjaminPross  
Parsers.pngpng Parsers.png manage 67 K 03 Jun 2013 - 06:41 BenjaminPross  
Parsers_small.pngpng Parsers_small.png manage 29 K 03 Jun 2013 - 06:41 BenjaminPross  
Server.pngpng Server.png manage 39 K 03 Jun 2013 - 06:40 BenjaminPross  
Server_small.pngpng Server_small.png manage 75 K 03 Jun 2013 - 06:41 BenjaminPross  
Topic revision: r4 - 11 Dec 2015, BenjaminPross
Legal Notice | Privacy Statement


This site is powered by FoswikiCopyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding Wiki? Send feedback