Resources for developers using the Envitia MapLink Pro mapping SDK.
This document describes how to deploy one of the MapLink Open Geospatial Consortium (OGC) services, on a variety of proprietary web serving software. Currently MapLink supports for following OGC services:
• The MapLink Web Map Service (WMS). A WMS is used to serve up user defined map data, in a standardised format, for use by client software across a network.
• The MapLink Web Processing Service (WPS). A WPS is offers general purpose processing services that can be submitted and the results retrieved across a network.
It is intended that further MapLink OGC services will be release in the future.
It is assumed that users of this guide have a basic understanding of the MapLink SDKs and the OGC produced standard for the OGC service being deployed.
In addition to these notes and sample data you will need:
• A server with Envitia MapLink Pro installed.
• Some of the MapLink OGC services require an appropriate licence to have been installed on the machine. These licences can be retrieved from Envitia, either as an evaluation or permanent licence, for either an SDK or standard deployment. An SDK deployment uses debug libraries and is intended to allow development of user created plug-ins for the OGC service, while standard deployments use release libraries and offers the best performance.
• The MapLink WPS Service requires a valid deployment licence. Please contact sales@envitia.com for additional information.
• Third-party Web Server software for deploying the WMS. Examples in this guide cover the following Web Server software:
• Apache Tomcat 10.1.50
The OGC Services SDK provides the ability to construct instances of Envitia provided OGC service implementations, such as the MapLink WMS.
This SDK abstracts the actual service from the API used to construct the service. Each OGC Service exists as a plug-in to the OGC Services SDK, while each OGC Service itself may also have its own plug-ins for providing data sources.
When deploying an OGC service, it is usually unnecessary to use the MapLink OGC Services SDK directly, but it may be helpful to have understanding of its use.
The following diagram demonstrates the use of this SDK :
Figure 1 - How the OGC Services SDK is used.
An Envitia OGC service instance can be constructed via the TSLOGCService class’ static create method, passing in the name of the OGC Service, E.G. “MapLinkWMS” for the MapLink WMS. The service name should not contain any suffixes, such as ‘d’ to imply debug or ‘64’ to imply constructing a 64-bit service.
Assuming that a service instance is returned, the next step is to configure the service by passing in the location to a service specific configuration file to the loadConfiguration method. The format of the configuration file is described later in this document for each of the OGC Service offered.
Once the service has been constructed and configured, it is ready to use. Requests can be made via the processGetRequest or processPostRequest methods, which will return an instance of the TSLOGCMIMEResponse class. Not all service types support both HTTP GET and POST requests - the WMS for instance only supports HTTP GET. The call to the service should include the address that the request was made via and the contents of the request.
The response object principally holds the raw service response data, but also the following information:
• The ‘Multipurpose Internet Mail Extensions’ (MIME) type of the response. The MIME type denotes how a client should interpret the raw data and its value is dependent upon the service type, the request made and the success/failure of request.
• The encoding of the response, although this may be NULL if it is not applicable. Certain response formats may not be fully described by their MIME type, so this provides additional information.
• The cacheability of the response. This provide a hint as to the duration of validity of the response. Error messages often should not be cached, whereas normal responses can often be cached both locally and remotely to reduce server traffic and workload.
• HTTP code. Some of the newer OGC services require that when an error message is returned the HTTP code of the response should be set to reflect the type of error.
Currently the OGC Services SDK is available in the following APIs:
• A C++ API – All other APIs utilise this API, but it can be used directly by users. Provided through the MapLinkOGCServices64 library.
• A .NET wrapper API – Provided through the Envitia.MapLink.OGCServices64 assembly
• A Java API – Provided through the MapLinkOGCServices64 JAR library
All three APIs are provided in 64-bit debug and 64-bit release forms, with the normal MapLink suffixes used to differentiate between them. The release forms should be used for a final system while the debug form is intended to allow users to create their own plug-ins to a particular OGC Service.
For Deployment you must use do the following:
• Use Release DLLs.
• Obtain a ‘MapLink WMS (Deployment)’ Licence from Envitia.
For Development you must do the following:
• Use the Debug DLLs. (Note as of MapLink 11.1 only release DLLs are available and should be used for development as well)
• Obtain the necessary Development licences from Envitia (‘MapLink Pro Developer’s Toolkit’ and ‘MapLink WMS SDK’ as a minimum).
To provide access from Java compatible Web Servers, a Java Wrapper library is supplied with the MapLink OGC Services SDK which uses the Java Native Interface to access the OGC Services SDK’s C++ libraries. Additionally a pre-built Java Servlet is supplied which handles communication with the JNI wrapper and serves HTTP GET requests made to it.
This section outlines how to deploy this example Servlet to the Tomcat web server, although the steps should be fairly similar when using other Java based web servers
The OGC Services SDK requires access to the appropriate MapLink bin directory in order to access the native C++ libraries and any WMS plug-ins. When MapLink is installed on Windows base machines, the PATH environment variable is modified to add the bin64 directory from the MapLink installation.
If the bin directory referenced is not the one being targeted or the PATH environment variable has been edited to remove MapLink, then this section should be followed. Otherwise it can be ignored.
Non Windows platforms will also need to follow these instructions, but the lib64 directory is referenced.
The instructions under this immediate heading are only applicable when Tomcat is not deployed as a service/daemon.
• Navigate to the following directory
• $CATALINA_HOME/bin
• For Windows platforms
• Create a file named setenv.bat
• Its contents should be in the form
set MY_BIN_DIR=c:\Program files\Envitia\MapLink Pro\X.Y\bin64
set PATH=%PATH%;%MY_BIN_DIR%;%MY_BIN_DIR%\plugins
For other platforms:
• Create a file named setenv.sh
• Its contents should be in the form
#!/bin/sh
MAPL_HOME=</path/to/maplink>
export MAPL_HOME
LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$MAPL_HOME/lib64: $MAPL_HOME/lib/plugins"
export LD_LIBRARY_PATH
• When the server starts it will pick up the created file automatically and run it
• Tomcat will need to be restarted for this change to take effect.
• Start the “Configure Tomcat” shortcut found under the Tomcat group in the Start Menu.
• Under the “Startup” tab of the application that starts, change the working path setting to point at the appropriate bin directory.
• Ensure you click the Apply button after making this change. It would appear that the change does not always get registered if you don’t.
• Tomcat will need to be restarted for this change to take effect.
To allow multiple OGC Services or multiple service instances to be deployed on a single Web Server, a MapLink library, MapLinkOGCServices, must be added to the servers common class path directory.
As this jar file loads the appropriate native C++ library, there are 2 different versions that could be used (pre MapLink 11.1):
• MapLinkOGCServices64.jar - 64-bit Release JAR
• MapLinkOGCServices64d.jar - 64-bit Release JAR
For Deployment you must use do the following:
• Use a Release JAR file.
• Obtain a ‘MapLink WMS (Deployment)’ Licence from Envitia.
For Development you must do the following:
• Use a Debug JAR file.
• Obtain the necessary Development licences from Envitia (‘MapLink Pro Developer’s Toolkit’ and ‘MapLink WMS SDK’ as a minimum).
It is also important to note that the 64-bit JARs should only be used with a 64-bit Tomcat/Java Runtime Environment (JRE) installation.
The JAR files can usually be located:
<MAPLINK_INSTALL_DIR>\java\MapLinkOGC\
For non-Windows platforms the same JAR file is used for all deployment types, MapLinkOGCServices64.jar. Debug and Release is not a concept on non-Windows platforms. The lib64 directory should have been referenced when completing the instructions from section 3.2.
Place the required JAR file in the following directory
$CATALINA_HOME/lib
Tomcat will need to be restarted for this change to take effect.
Each deployment of a MapLink OGC Service, such as the MapLink WMS, requires a configuration file to load such settings as the plug-ins, spatial data and data source configuration files used.
The contents of this configuration file are service specific and are described in later sections of this document. By default the supplied Java Servlet is configured for use with the MapLink WMS and with the location of a configuration file expected to be at ‘./MapLinkWMSConfiguration.ini’.
If a different service type, multiple instances of the same service type or if this location is not suitable for a particular server configuration, the settings contained in the war file will need to be changed.
Example configuration files can be found in MAPLINK_INSTALL_DIR\config\ogcservices. The file paths within these configs will need to be edited, to reflect the location of the MapLink installation.
The supplied Java Servlet, called MapLinkOGCServices.war, is normally located:
MAPLINK_INSTALL_DIR\java\MapLinkOGC\
The following instructions should be followed to edit the servlet’s settings:
• Using a zip utility (such as PKZip, WinZip, 7zip or WinRAR) unzip the war file to disk, ensuring that the contained folder structure is maintained. It may be necessary to change the extension of the war file to .zip for it to be recognised.
• Under the WEB-INF directory of the unzipped files, edit the web.xml file using a text editor.
• Roughly halfway through the file there should appear the following snippet:
<init-param>
<param-name>ServicePlugin</param-name>
<param-value>MapLinkWMS</param-value>
</init-param>
<init-param>
<param-name>ServiceConfigurationFile</param-name>
<param-value>./mapLinkwmsconfiguration.ini</param-value>
</init-param>
• The MapLinkWMS string may be edited to target a different service type.
• The string './mapLinkwmsconfiguration.ini' may be edited to point at a different service configuration file. See 4.4 Configuring a Deployment.
• The files unzipped earlier will need to be either re-added to the war file or zipped into a new archive. The folder structure must be maintained in the archive and the extension may need to be reverted to .war.
This section discusses how to deploy the Servlet on the Web Server and specifically how to deploy a second instance in a way that will not conflict with the first.
• Log on to the ‘Tomcat Web Application Manager’, usually accessible from the following URL http://127.0.0.1:8080/manager/html. It may be necessary to setup a Tomcat user that has sufficient privileges to access to the Tomcat Manager first.
• Under the heading ‘Deploy’ and sub-heading ‘WAR file to deploy’, click on the ‘Browse’ button and upload the WMS war file
• Click ‘Deploy’
• To deploy a second WMS, then simply create a copy of the war file with a different filename and follow the above instructions.
The WMS service can be accessed with a request in the following form:
http://.../MapLinkOGCServices/OGC?
For instance, a WMS request for the service Capabilities metadata would be made as follows:
http://.../MapLinkOGCServices/OGC?service=WMS&request=GetCapabilities
Here is a list of some of the common problems that affect deployments to Java and how to resolve them. This list does not include issues that relate to deploying a particular service type which will be covered in later sections.
• When accessing the Servlet’s URL you receive a 404 error stating that the Servlet is not available. This is likely to be caused by the shared MapLinkOGCServices library not being found. Return to section 3.3 and check that the instructions have been followed correctly.
• When accessing the Servlet’s URL you receive a 500 error stating that the Servlet’s init() for servlet MapLinkOGCServices threw an exception. This is usually due to the required C++ DLLs not being located by the runtime. Return to section 3.2 and check that the instructions have been followed correctly. This error can also arise when there is a mismatch between the architecture of the JRE being used and the Envitia libraries being loaded. The 64-bit Envitia libraries can only be loaded by a 64-bit JRE.
• For Unix/Linux platforms, Tomcat will use the JRE located in the system path by default. To use a different JRE (for example if the default JRE is 32bit), set the JRE_HOME environmental variable before starting the service. E.G. from the tomcat bin directory running ‘JRE_HOME=/path/to/64bit_jre ./startup.sh’ will start Tomcat using the JRE installed in /path/to/64bit_jre.
• For Unix/Linux platforms, and errors stating that ‘GLIBCXX_3.4.11 not found’ or similar messages. Check the X11 Release Notes and ensure that the correct gcc runtime dependencies have been installed.
• Plugins cannot be loaded. The plugins have been moved to a plugins directory in the bin64 folder.
• Evaluation Version on Linux requires a node locked licence. Please ask support@envitia.com for help or check the supplied documentation.
• Linux Checklist:
The following needs to be deployed on Linux:
Directories:
o config
o lib64
The java file:
o MapLinkOGCServices64.jar
The WAR file (see 3.3):
o MapLinkOGCServices.war
Java/tomcat must be told where to find the MapLink shared libraries and Java files. How this is done will vary between a manual start of tomcat and a service/daemon. Please see section 3.2
The following environment variable must be set to point to the base MapLink deployment or installation directory (the directory that contains the config and lib/lib64 directory):
MAPL_HOME
Check the following environment variables (update if necessary to point to the MapLink directory lib64 and the plugin directories contained within):
PATH
LD_LIBRARY_PATH
The following needs to be edited (found in MapLinkOGCServices.war):
• web.xml
Please see section 3.4 for more information. Specifically the ‘param-value’ for ‘ServiceConfigurationFile’ must be updated to point to a configuration file.
It is advised that an absolute path is used to point to the configuration file.
You are reminded that the paths and filenames are case sensitive.
The ‘ServiceConfigurationFile’ specifies the WMS plugin to use for a Map and the Map’s configuration file.
Newer versions of MapLink Studio will create a WMS config.xml for a map. For maps generated using an older version of MapLink Studio you can use the BMCCreator.exe on Windows.
• The file that the ‘ServiceConfigurationFile’ entry in the web.xml needs to be configured for each map (see sections 5.3 and 5.3.9). For Linux the ‘Server_Data_Sources_Index’ must be correctly setup with the plugin names and map locations specifically for Linux (paths will be different and the plugin names may be slightly different).
For example the following is a valid entry for the SuperMap plugin on Linux:
[Server_Data_Sources_Index]
DatasourceCount=1
Datasource0Location=/projects/TestAndData/output.map
Datasource0Plugin=SuperMapWMS_plugin
Datasource0Configuration=/projects/TestAndData/config.xml
For simplicity it is advised to initially use the basicmap plugin before considering to use the SuperMap plugin. • The Datasource0Configuration must point to a valid ‘MapLink Pro’ Map WMS configuration file. Newer versions of MapLink Studio will create a WMS config.xml for a map. For maps generated using an older version of MapLink Studio you can use the BMCCreator.exe on Windows. It is advised to keep the config.xml file alongside the .map file. An example of this file is as follows:
<?xml version="1.0" encoding="UTF-8"?>
<BasicMapConfiguration xmlns="http://www.envitia.com/schemas/maplinkwms/basicmapplugin"
xmlns:wms="http://www.opengis.net/wms"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xlink="http://www.w3.org/1999/xlink"
xsi:schemaLocation="http://www.envitia.com/schemas/maplinkwms/basicmapplugin
http://www.envitia.com/schemas/maplinkwms/basicmapplugin/1.0/BasicMapConfiguration.xsd">
<wms:Name>Map0</wms:Name>
<wms:Title>Map0</wms:Title>
<wms:EX_GeographicBoundingBox>
<wms:westBoundLongitude>-76.000139</wms:westBoundLongitude>
<wms:eastBoundLongitude>-74.999861</wms:eastBoundLongitude>
<wms:southBoundLatitude>44.999861</wms:southBoundLatitude>
<wms:northBoundLatitude>46.000139</wms:northBoundLatitude>
</wms:EX_GeographicBoundingBox>
<wms:BoundingBox CRS="EPSG:0" minx="-74.983925" miny="45.997687" maxx="-76.011171" maxy="44.999861"/>
<ImplementedFeaturesList>
<ImplementedFeature>Rasters</ImplementedFeature>
</ImplementedFeaturesList>
</BasicMapConfiguration>
• If debugging an installation set the following environment variables:
export ENV_VERBOSE=verbose,lasterror
export ENV_WMS_DEBUG=1
export ENV_WMS_DEBUG_STARTUP=1
This will enable additional error messages to be output to the console.
A Web Map Service (WMS) produces maps of spatially referenced data dynamically from geographic information.
The WMS international standard defines three operations that can be performed on such a server; one returns service-level metadata, ‘GetCapabilities’; another returns a map whose geographic and dimensional parameters are well-defined, ‘GetMap’; and an optional third operation returns information about particular features shown on a map, ‘GetFeatureInfo’.
A WMS is intended to be accessed either programmatically or using a standard web browser by submitting requests in the form of Uniform Resource Locators (URLs).
The exact request string is dependent upon the operation being performed and the extra parameters that the operation requires. For instance a ‘GetMap’ request requires the width, height and geographic location, amongst other parameters, for the WMS to produce the returned image.
The data that a WMS serves is divided into layers, where a single layer can have zero or more sub layers.
These layers are advertised via the ‘GetCapabilities’ operation’s response, the service Capabilities.
The service Capabilities are an XML document based upon a well a standard defined schema or DTD.
The exact schema or DTD followed is dependent upon the version of standard, but are similar in structure across all versions.
Advertised layers can be generally split into two simple categories:
• Unnamed layers - These are often used to categorise their child layers or provide content information about their parent, but cannot be requested as part of a GetMap request.
• Named layers - These can be requested as part of GetMap request.
The MapLink WMS is designed to be as flexible as possible so that it can be used in many different scenarios.
The server itself supports version 1.0.0, 1.1.0, 1.1.1 and 1.3.0 of the OGC standard. It uses a plug-in architecture, via a documented API, to load plug-ins that respond to incoming requests.
There are three terms that this section introduces: ‘plug-ins’, ‘spatial data’ and ‘data sources’.
Figure 2 demonstrates how these roles interact within an instance of a WMS. The ‘spatial data’ role refers to the data that is used to create the WMS response, the ‘plug-in’ refers to the library that interprets the ‘spatial data’ and the ‘data source’ is the combination of a ‘spatial data’ and ‘plug-in’ role.
The reason that these three roles are separate is that two different plug-ins may serve the same spatial data differently.
Alternatively, even the same plug-in may serve up the same spatial data in two different ways, resulting in two separate data sources.
The previous example is permissible as each data source, or link between a spatial data role and plug-in role, is defined by the service configuration file.
Figure 2
A plug-in to the MapLink WMS dictates both the type of spatial data that it can serve and the format of the configuration file that configures the data source it provides.
The WMS service instance only sees the spatial data and configuration file as strings that are passed to the plug-in when creating a data source.
For this reason these can refer to absolutely anything, although usually the configuration file will be a file path and the data source either a file path or database address.
A number of pre-built WMS plug-ins are supplied with MapLink which are detailed in section 5.4 of this document.
Alternately a MapLink WMS Plug-In SDK is also supplied to allow users to create their own plug-ins using custom data in conjunction with the normal MapLink framework of SDKs.
For more information on this SDK please consult the MapLink Developer’s Guide.
Each deployed data source provides a child layer to the root unnamed layer in the service Capabilities.
It should provide at least one named sub layer to permit serving data. Figure 3 demonstrates this basic layer structure using two data sources.
An instance of the MapLink WMS requires a configuration file to define what data sources it should serve up and how.
This configuration file also defines much of the service Capabilities as well as certain MapLink specific settings.
This section is intended to serve as a reference, along with the example configuration file at the end, to describe how to configure a server.
The format of the configuration file is that of a Windows INI file and as such appears under headings. The sub headings of most of the following sections correspond to the expected headings in the file.
The Required column denotes whether the Key is required. If a required key is not provided a service exception will appear be returned whenever the service is accessed.
| Required | Key | Description |
|:——–:|————————– |—————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————–|
| Y | DatasourceCount | Defines the number of data sources that are deployed on the WMS server. For each data source there is expected to be keys under this heading in the form:
DatasourceNLocation
DatasourceNPlugin
DatasourceNConfiguration
where N defines the index of that data source starting from 0. |
| Y | DatasourceNLocation | Defines the location of the resource used by the data source. This may be a MapLink map or a database connection string. Its value is dependent upon the plug-in that appears as the following key. If this value defines a path then it should be either a fully qualified path or a path relative to the start up locale of the server. |
| Y | DatasourceNPlugin | The library name of the plug-in used to serve up this data source. This may be a custom defined plug-in using the MapLink WMS Plug-In API or a pre-built library supplied by Envitia. |
| Y | DatasourceNConfiguration | The location of a configuration file used by the plug-in to define how the resource is to be served up. In certain cases a plug-in may not require such a file, but this key should still be defined and its value should be blank. |
| Required | Key | Description |
|---|---|---|
| Y | ServiceTitle | The WMS title defined in the GetCapabilities. WMS_Capabilities>Service>Title |
| N | ServiceAbstract | The WMS abstract defined in the GetCapabilities. WMS_Capabilities>Service>Abstract |
| N | ServiceKeywordCount | The number of service keywords that are expected in this configuration file. If this value is not supplied it is assumed to be 0. When this value is supplied and is non-zero then ServiceKeywordN is expected under this heading where N is the index up to this value starting from 0. e.g. ServiceKeywordCount=3 ServiceKeyword0=Keyword 1 ServiceKeyword1=Keyword 2 ServiceKeyword2=Keyword 3 |
| N | ServiceKeywordN | The Nth keyword that describes the WMS in the GetCapabilities of the server. WMS_Capabilities>Service>KeywordList>Keyword |
| N | ServiceFees | A description of the fee for using the WMS. WMS_Capabilities>Service>Fees |
| N | ServiceAccessConstraints | A description of the access constraints for using the WMS. WMS_Capabilities>Service>AccessConstraints |
| N | ServiceLayerLimit | The maximum number of layers that can be requested in a single GetMap request. If a user requests more layers than permitted then the request will fail. If this value is not set then there is no limit placed. WMS_Capabilities>Service>LayerLimit |
| N | ServiceMaxWidth | The maximum width, in pixels, of a GetMap request. If a user requests a larger width than permitted then the request will fail. If this value is not set then there is no limit placed. WMS_Capabilities>Service>MaxWidth |
| N | ServiceMaxHeight | The maximum height, in pixels, of a GetMap request. If a user requests a larger height than permitted then the request will fail. If this value is not set then there is no limit placed. WMS_Capabilities>Service>MaxHeight |
| N | ServiceProvider | The URL of the service provider. WMS_Capabilities>Service>ServiceProvider |
| Required | Key | Description |
|---|---|---|
| N | ContactPerson | The contact details defined in the GetCapabilities. WMS_Capabilities>Service>ContactInformation>ContactPersonPrimary>ContactPerson |
| N | ContactOrganisation | The contact details defined in the GetCapabilities. WMS_Capabilities>Service>ContactInformation>ContactPersonPrimary>ContactOrganisation |
| N | ContactPosition | The contact details defined in the GetCapabilities. WMS_Capabilities>Service>ContactInformation>ContactPosition |
| N | ContactAddressType | The contact details defined in the GetCapabilities. WMS_Capabilities>Service>ContactInformation>ContactAddress>AddressType |
| N | ContactAddress | The contact details defined in the GetCapabilities. WMS_Capabilities>Service>ContactInformation>ContactAddress>Address |
| N | ContactAddressCity | The contact details defined in the GetCapabilities. WMS_Capabilities>Service>ContactInformation>ContactAddress>City |
| N | ContactAddressStateOrProvince | The contact details defined in the GetCapabilities. WMS_Capabilities>Service>ContactInformation>ContactAddress>StateOrProvince |
| N | ContactAddressPostalCode | The contact details defined in the GetCapabilities. WMS_Capabilities>Service>ContactInformation>ContactAddress>PostCode |
| N | ContactAddressCountry | The contact details defined in the GetCapabilities. WMS_Capabilities>Service>ContactInformation>ContactAddress>Country |
| N | ContactTelephoneNumber | The contact details defined in the GetCapabilities. WMS_Capabilities>Service>ContactInformation>ContactVoiceTelephone |
| N | ContactFaxNumber | The contact details defined in the GetCapabilities. WMS_Capabilities>Service>ContactInformation>ContactFacsimileTelephone |
| N | ContactEmailAddress | The contact details defined in the GetCapabilities. WMS_Capabilities>Service>ContactInformation>ContactElectronicMailAddress |
| Required | Key | Description |
|:——–:|———————————-|———————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————–|
| Y | GetCapabilitiesAddressesCount | The number of service addresses through which the capabilities of this server can be requested. At the minimum this should be set to 1 for the address of the main server serving this WMS. Usually a value greater than 1 would be to specify either virtual domains of the server or WMS servers that mirror the local configuration.
For each index, starting at 0, up to 1 less than this value, the following must be specified (where N is the index):
GetCapabilitiesAddressNGet
And optionally:
GetCapabilitiesAddressNPost
e.g.
GetCapabilitiesAddressesCount=2
GetCapabilitiesAddress0Get= http://localhost:8080/wms?
GetCapabilitiesAddress1Get= http://anotherhost:80/wms?
GetCapabilitiesAddress1Post= http://anotherhost:80/wms? |
| Y | GetCapabilitiesAddressNGet | The Nth address of this server or mirror server where the server capabilities can be requested via a HTTP Get.
If this is set to “DYNAMIC”, then the value that appears in the capabilities will be set to the address used to access the capabilities.
WMS_Capabilities>Capability>Request>GetCapabilities>DCPType>HTTP>Get>OnlineResource |
| N | GetCapabilitiesAddressNPost | The Nth address of this server or mirror server where the server capabilities can be requested via a HTTP Post.
If this is set to “DYNAMIC”, then the value that appears in the capabilities will be set to the address used to access the capabilities.
WMS_Capabilities>Capability>Request>GetCapabilities>DCPType>HTTP>Post>OnlineResource |
| Y | GetMapAddressesCount | The number of service addresses through which a GetMap request can be serviced. At the minimum this should be set to 1 for the address of the main server serving this WMS. Usually a value greater than 1 would be to specify either virtual domains of the server or WMS servers that mirror the local configuration.
For each index, starting at 0, up to 1 less than this value, the following must be specified (where N is the index):
GetMapAddressNGet
And optionally:
GetMapAddressNPost
e.g.
GetMapAddressesCount=2
GetMapAddress0Get= http://localhost:8080/wms?
GetMapAddress1Get= http://anotherhost:80/wms?
GetMapAddress1Post= http://anotherhost:80/wms? |
| Y | GetMapAddressNGet | The Nth address of this server or mirror server where a GetMap request can be serviced via a HTTP Get.
If this is set to “DYNAMIC”, then the value that appears in the capabilities will be set to the address used to access the capabilities.
WMS_Capabilities>Capability>Request>GetMap>DCPType>HTTP>Get>OnlineResource |
| N | GetMapAddressNPost | The Nth address of this server or mirror server where a GetMap request can be serviced via a HTTP Post.
If this is set to “DYNAMIC”, then the value that appears in the capabilities will be set to the address used to access the capabilities.
WMS_Capabilities>Capability>Request>GetMap>DCPType>HTTP>Post>OnlineResource |
| N | GetFeatureInfoAddressesCount | The number of service addresses through which a GetFeatureInfo request can be serviced. This value can be omitted to denote that GetFeatureInfo is not supported. Usually a value greater than 1 would be to specify either virtual domains of the server or WMS servers that mirror the local configuration.
For each index, starting at 0, up to 1 less than this value, the following must be specified (where N is the index):
GetFeatureInfoAddressNGet
And optionally:
GetFeatureInfoAddressNPost
e.g.
GetFeatureInfoAddressCount=2
GetFeatureInfoAddress0Get= http://localhost:8080/wms?
GetFeatureInfoAddress1Get= http://anotherhost:80/wms?
GetFeatureInfoAddress1Post= http://anotherhost:80/wms? |
| N | GetFeatureInfoAddressNGet | The Nth address of this server or mirror server where a GetFeatureInfo request can be serviced via a HTTP Get.
If this is set to “DYNAMIC”, then the value that appears in the capabilities will be set to the address used to access the capabilities.
WMS_Capabilities>Capability>Request>GetFeatureInfo>DCPType>HTTP>Get>OnlineResource |
| N | GetFeatureInfoAddressNPost | The Nth address of this server or mirror server where a GetFeatureInfo request can be serviced via a HTTP Post.
If this is set to “DYNAMIC”, then the value that appears in the capabilities will be set to the address used to access the capabilities.
WMS_Capabilities>Capability>Request>GetFeatureInfo>DCPType>HTTP>Post>OnlineResource |
| Required | Key | Description |
|---|---|---|
| Y | RootLayerTitle | The title given to the root layer of the WMS as defined in the GetCapabilities. WMS_Capabilities>Capability>Layer>Title |
| N | RootLayerCRS | The root coordinate reference system attributed to the root layer of WMS as defined in the GetCapabilities. If this value is set then all data sources must conform to this coordinate system, so it is not usually set. WMS_Capabilities>Capability>Layer>CRS |
| Required | Key | Description |
|---|---|---|
| N | DrawingSurfacePoolSize | This numerical value defines the maximum number of MapLink drawing surfaces that are created in a server pool. If none of the plug-ins loaded on the server use a MapLink Drawing Surface then this value will be irrelevant. If a drawing surface is required by a plug-in however, then rather than creating its own one, it should request one from the pool administered by the server. This is to prevent threading issues concerning the use of multiple Drawing Surfaces. The size of the pool must be limited to stop the server running out of resources under heavy load. Higher values permit servicing of more concurrent requests but use more resources; lower values limit the number of requests and should stop the server falling over under heavy load. A maximum pool size of between 10 and 20 is recommended, but for high specification servers it may be possible to increase this value. Experimentation is certainly the best way to find a suitable balance. Please note that the pool is only populated as needed until the maximum pool size is reached. The pool is not allocated on start-up of the WMS. If this value is not specified then a default value of 20 is used. |
| N | TransparentColourR TransparentColourG TransparentColourB |
To enable transparent raster responses to GetMap requests, a global transparent colour is used. This should be defined as a colour that will not appear in the responses of any of the data sources or else that part of the image will also appear transparent. These values represent the 0–255 red, green and blue components of the transparent colour. The default for each colour channel is 0 if they are not specified. |
| N | UseBGCOLORasTransparentColour | Certain third party WMS viewers do not correctly support image transparency, instead treating a certain colour value as transparent. In most cases, they supply this colour through the BGCOLOR parameter, along with requesting a transparent response. While this is not required by the WMS, it is also not strictly forbidden. This option therefore allows the BGCOLOR value passed to be used as the transparent colour in responses. If the response format also supports transparency, this colour will be set as the transparent colour in the response image. To enable this feature, set this value to be non-zero. The default is 0, meaning turned off. |
| N | SupportPNG24 (deprecated) | Certain WMS clients will only handle PNG transparency through the use of an alpha channel, rather than a designated colour value. Performing a GetMap request to a MapLink WMS, using the request format image/png and transparency set to true, will use the latter type of PNG transparency.By adding this setting and using the value 1, an additional image request format will be offered called image/png24 which will return a PNG using the alpha-channel for transparency.By default this additional format is not offered or advertised. |
| N | SupportedFormat[1..n] SupportedMimeType[1..n] SupportedV100Format[1..n] |
Each supported map format should include a set of attributes, each attribute having the same index suffix. A supported format must have a SupportedFormat attribute. SupportedMimeType and SupportedV100Format are optional.If these attributes exist, SupportPNG24 will not be checked. If you would set SupportPNG24, provide a SupportedFormat configuration for PNG24.If these attributes are not provided, the WMS will revert to the legacy built-in supported formats (GIF, PNG, TIFF, JPEG, [if SupportPNG24=1] PNG24).Example configuration: SupportedFormat1=image/pngSupportedMimeType1=image/pngSupportedV100Format1=PNGSupportedFormat2=image/tiffSupportedMimeType2=image/tiffSupportedV100Format2=TIFF… SupportedFormatn=image/jpegSupportedMimeTypen=image/jpegSupportedV100Formatn=JPEG |
| N | EnableAntiAliasedFonts | This Boolean value specifies whether anti-aliasing is enabled for the server when rendering TrueType fonts. This setting only applies when running the server on Windows (using the GDI drawing surface). If this setting is not provided, text anti-aliasing will be enabled. |
| Required | Key | Description |
|---|---|---|
| N | Std_Config_Path | If supplied, this is the path from which the standard MapLink configuration files are to be loaded. If this value is omitted, then the files are assumed to be present in the \config subdirectory of the MapLink installation on the local machine (whose location is found using TSLUtilityFunctions::getMapLinkHome()).All instances of the MapLink WMS within a single process must share the same path. The first instance that is loaded will have this value examined and make the equivalent MapLink SDK call: TSLDrawingSurface::loadStandardConfigFurther instances loaded into the same process will have this value ignored. |
| N | Colour_List_Location | MapLink Maps loaded into any of the pre-built plug-ins will have their palette file suppressed to ensure thread safety. If any of the maps loaded in a MapLink WMS extend the standard palette, then these entities will not appear correctly unless this value is used. Providing this value will use the palette file found at this location for the loading of all maps and will be set on all MapLink Drawing Surfaces. Omitting this value will mean that all maps loaded and all drawing surfaces will use the standard palette file loaded either from the \config directory of the MapLink installation on the local machine or via providing the Std_Config_Path value.All instances of the MapLink WMS within a single process must share the same path. The first instance that is loaded will have this value examined and make the equivalent MapLink SDK call: TSLDrawingSurface::setupColoursFurther instances loaded into the same process will have this value ignored. |
| N | JPEG_Compression_Factor | Allows control over the compression factor used when a client requests a JPEG image from the MapLink WMS. Valid values are in the range 0, 2–255. 0 equates to lossless JPEG, while the values 2–255 give increasingly lossy compression.The default compression factor is 2. |
[Server_Data_Sources_Index]
DatasourceCount=2
Datasource0Location=C:\Maps\BasicMap\BasicMap1.map
Datasource0Plugin=basicmapplugin
Datasource0Configuration= C:\Maps\BasicMap\BasicMap1Config.xml
Datasource1Location=C:\Maps\HistoricalMap\HistoricalMap1.map
Datasource1Plugin=historicalmapplugin
Datasource1Configuration=C:\Maps\HistoricalMap\HistoricalMap1Config.xml
[Server_Properties]
ServiceTitle=My WMS Service
ServiceAbstract=My abstract
ServiceKeywordCount=1
ServiceKeyword0=My Keyword
ServiceFees=None
ServiceAccessConstraints=None
ServiceLayerLimit=16
ServiceMaxWidth=4000
ServiceMaxHeight=4000
ServiceProvider=http://www.envitia.com
[Service_Contact]
ContactPerson=Mr. A Person
ContactOrganisation=Envitia
ContactPosition=Engineer
ContactAddressType=Postal
ContactAddress=North Heath Lane
ContactAddressCity=Horsham
ContactAddressStateOrProvice=West Sussex
ContactAddressPostalCode=RH12 5UX
ContactAddressCountry=England
ContactTelephoneNumber=+441403 273 173
ContactFaxNumber=+441403 273 173
ContactEmailAddress=support@envitia.com
[Service_Addresses]
GetCapabilitiesAddressesCount=1
GetCapabilitiesAddress0Get=DYNAMIC
GetMapAddressesCount=1
GetMapAddress0Get=DYNAMIC
GetFeatureInfoAddressesCount=1
GetFeatureInfoAddress0Get=DYNAMIC
[Root_Layer_Details]
RootLayerTitle=Envitia WMS Layers
RootLayerCRS=EPSG:27700
[Response_Configuration_Details]
DrawingSurfacePoolSize=15
TransparentColourR=255
TransparentColourG=0
TransparentColourB=0
UseBGCOLORasTransparentColour=0
SupportPNG24=1
[MapLink_Standard_Configuration]
Std_Config_Path=c:\program files\envitia\maplink pro\8.1\config
Colour_List_Location=c:\maps\wms.pal
Envitia supplies some pre built WMS plug-ins that facilitate serving common spatial data. This section will outline those plug-ins, what they’re for and how to configure them.
Note: The plugins are in the plugins directory of the bin64 folder.
This plug-in is largely deprecated as using the Super Map Plug-In offers far better performance and reduced memory foot print.
The basic map plug-in is used to serve standard MapLink maps, built using MapLink Studio, in a customisable manner.
In this case the spatial data would be the fully qualified path to the MapLink map, the plug-in would be the ‘basicmapplugin’ (BasicMapWMS_plugin on Linux) and the configuration file would be a fully qualified path to an xml file.
The XML configuration file can be created using the BMCCreator utility supplied with MapLink. This utility allows different map features to be associated with WMS layers as well as configuring all the standard WMS layer attributes.
To create a configuration manually, the schema for the configuration file can be used as a reference. It can be access from the Envitia website at the following URL:
http://www.envitia.com/schemas/maplinkwms/basicmapplugin/1.0/BasicMapConfiguration.xsd
The Basic Map Plug-In services requests using a pool of MapLink Map Data Layers, assigning one temporarily to each request to allow a draw to occur before returning it the pool.
Each Map Data Layer has a cache of the map files that it most recently accessed, which by default is limited to 32 Megabytes, while the pool of Map Data Layers by default contains 20 layers.
The total amount of memory that deployment of the Basic Map Plug-In requires therefore, by default, is at least 640 Megabytes, but in fact it usually uses approximately 50% more than this in practice.
These defaults can be configured through the BMCCreator however. It is because of this high memory requirement that the Basic Map Plug-In was replaced by the Super Map Plug-In.
This plug-in is largely deprecated as using the Super Map Plug-In offers far better performance and reduced memory foot print.
Configuring the Super Map Plug-In to use historical data can be difficult however, so for expediency the Historical Map Plug-In is often used.
The historical map plug-in is almost identical to the basic map plug-in explained in the previous section except it is intended to serve MapLink Maps with historical information built using the Seamless Layer Manager.
The plug-in requires the archive directory of the seamless layer map to be located in the same directory as the .map file.
As with the basic map plug-in, the spatial data of the plug-in is the absolute path to the map and the configuration file is an xml file created using the BMCCreator utility. The plug-in string for the historical map plug-in is ‘historicalmapplugin’ however.
The historical map plug-in adds a time dimension to the capabilities of the basic map plug-in so that WMS users can rollback the map to previous versions.
Although the historical map plug-in can be used to serve a non historical MapLink map, the super map plug-in is better optimised for speedier responses from these maps.
The Super Map Plug-In is a new addition to MapLink that replaces the existing Basic and Historical Map Plug-Ins, allowing both standard and historical MapLink maps to be served.
It offers the best performance and lowest memory footprint of any of the Envitia supplied WMS plug-ins, through the use of the new MapLink Threaded Map Cache SDK.
The Basic and Historical Map Plug-Ins service requests using a pool of MapLink Map Data Layers, assigning one temporarily to each request to allow a draw to occur before returning it the pool.
This is because standard MapLink Map Data Layers cannot be shared amongst threads due to thread safety issues. The Threaded Map Cache offers a variant of the Map Data Layer that allows a loaded map to be shared amongst threads.
Additionally, each standard Map Data Layer has a cache of the map files that it most recently accessed, whereas the Threaded Map Cache shares a single, lock-free but thread safe, cache amongst all requests.
This greatly reduces the memory footprint whilst improving performance thanks to a greater likelihood of locating the required map file in the memory cache, rather than having to load it from disk.
Unlike the Basic and Historical Map plug-ins, the Super Map plug-in supports GetFeatureInfo requests for vector layers in MapLink maps. By default this returns an XML document containing information on the selected feature(s), the schema of which is available at the following location:
http://www.envitia.com/schemas/maplinkwms/supermapplugin/getfeatureinfo/1.0/GetFeatureInfo.xsd The following example shows the default output format of GetFeatureInfo requests:
<FeatureCollection xmlns="http://www.envitia.com/schemas/maplinkwms/supermapplugin/getfeatureinfo"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xlink="http://www.w3.org/1999/xlink"
xsi:schemaLocation="http://www.envitia.com/schemas/maplinkwms/supermapplugin/getfeatureinfo http://www.envitia.com/schemas/maplinkwms/supermapplugin/getfeatureinfo/1.0/GetFeatureInfo.xsd">
<Polygon sourceLayer="UKFull" id="1000015012413"
featureType="MasterMap.Building: area">
<Broken>False</Broken>
<Theme>Buildings</Theme>
<Calculated_Area_Value>62.920004</Calculated_Area_Value>
<Descriptive_Group>Building</Descriptive_Group>
<Make>Manmade</Make>
<Physical_Level>50</Physical_Level>
</Polygon>
</FeatureCollection>
In addition, the Super Map plug-in allows extra response formats to be generated through user-supplied XSL transforms that process the default XML document into the desired format.
The Super Map plug-in has two modes of configuration, henceforth referred to as ‘single map mode’ and ‘multi-map mode’.
The configuration mode used determines how the MapLink map or maps used as the data sources are served from the WMS. In both cases its plug-in string would be ‘supermapplugin’ on Windows and ‘SuperMapWMS_plugin’ on all other platforms.
In single map mode the Super Map plug-in operates similarly to the Basic Map plug-in.
As the name suggests, this configuration mode should be used to serve a single MapLink map from a data source.
Like the basic and historical map plug-ins, the super map plug-in in single map mode takes the fully qualified path to the MapLink map as its Spatial Data parameter and the configuration file would be a fully qualified path to an xml file.
It accepts the same format of XML configuration file that is produced by the BMCCreator utility, with the following differences:
• The "Number of Map Data Layers" setting from the BMCCreator's Options menu should be set to a much higher level than would be used for the Basic or Historical Map Plug-Ins. Ideally it should match the drawing surface pool size, configured in the service's configuration file, as described in section 5.3.7.
• The "Cache Size Per Data Layer (KB)" setting from the BMCCreator's Options menu has a different meaning. Rather than refer the cache size per pooled data layers, as for the Basic or Historical Map Plug-Ins, it instead refers to the shared cache's size. This should be set fairly high, if possible, preferably in the hundreds of Megabytes range.
The Super Map plug-in also has an extended configuration format for single map mode, the format of which is described by the schema at the following location:
http://www.envitia.com/schemas/maplinkwms/supermapplugin/1.0/SuperMapConfiguration.xsd
This format is very similar to that output from the BMCCreator utility, but allows configuration of two additional pieces of functionality only offered by the Super Map plug-in.
The first of these pieces of functionality is the ability to use MapLink dynamic renderers to implement specific named WMS styles. These dynamic renders should be built as separate DLLs/shared objects and register themselves with the MapLink TSLDynamicRendererFactory on DLL/shared object load.
The dynamicRendererStore attribute on the SuperMapConfiguration element should then be set to the location of the dynamic renderer(s). The name used to register the dynamic renderer with the factory determines the name that the style is advertised as in the server’s capabilities document.
The second piece of functionality allows for the user-defined GetFeatureInfo formats mentioned in section 5.4.4 to be specified through the optional GetFeatureInfoResponseList element.
Within this element a list of ResponseFormat elements can be provided, each of which defines an additional response format to be advertised by the server.
The transform, advertisedFormat and mimeType attributes must be provided for each response format and define the location of the XSL transform that should be run on the normal XML output document before being returned to the client, the value for the Format string that will be listed in the server’s GetFeatureInfo format list and the MIME type that will be used for the responses respectively.
The optional WMSCapabilities1_0_0Format attribute is only used when clients issue requests using version 1.0.0 of the WMS standard.
This version restricts advertised GetFeatureInfo formats to the second part of the MIME type and thus cannot use the same configuration setting.
If this attribute is not specified, the response format will not be advertised to clients using version 1.0.0 of the WMS standard.
The following example configuration file shows the extended single map mode configuration format:
<?xml version="1.0" encoding="UTF-8"?>
<SuperMapConfiguration xmlns="http://www.envitia.com/schemas/maplinkwms/supermapplugin"
xmlns:wms="http://www.opengis.net/wms"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xlink="http://www.w3.org/1999/xlink"
xsi:schemaLocation="http://www.envitia.com/schemas/maplinkwms/supermapplugin
http://www.envitia.com/schemas/maplinkwms/supermapplugin/1.0/SuperMapConfiguration.xsd"
mapDataLayerCount="50" mapDataLayerCacheSize="262144" symbolTextViewExpansion="15" dynamicRendererStore="/path/to/dynamicrenderers/folder">
<wms:Name>UKFull</wms:Name>
<wms:Title>UKFull</wms:Title>
<wms:EX_GeographicBoundingBox>
<wms:westBoundLongitude>-7.557160</wms:westBoundLongitude>
<wms:eastBoundLongitude>3.632021</wms:eastBoundLongitude>
<wms:southBoundLatitude>49.766807</wms:southBoundLatitude>
<wms:northBoundLatitude>61.464590</wms:northBoundLatitude>
</wms:EX_GeographicBoundingBox>
<wms:BoundingBox CRS="EPSG:27700" minx="705744.843000" miny="1314615.533000" maxx="7162.949000" maxy="2916.550000"/>
<ImplementedFeaturesList>
<ImplementedFeature>Rasters</ImplementedFeature>
<ImplementedFeature>MasterMap</ImplementedFeature>
</ImplementedFeaturesList>
<BasicMapLayer>
<wms:Name>Raster</wms:Name>
<wms:Title>Raster</wms:Title>
<wms:BoundingBox CRS="EPSG:27700" minx="705269.607000" miny="1300000.000000" maxx="-2083.332000" maxy="3186.274000"/>
<ImplementedFeaturesList>
<ImplementedFeature>Rasters</ImplementedFeature>
</ImplementedFeaturesList>
</BasicMapLayer>
<BasicMapLayer queryable="1">
<wms:Name>Vector</wms:Name>
<wms:Title>Vector</wms:Title>
<wms:BoundingBox CRS="EPSG:27700" minx="702083.332000" miny="1296813.725000" maxx="-2083.332000" maxy="6372.549000"/>
<ImplementedFeaturesList>
<ImplementedFeature>MasterMap</ImplementedFeature>
</ImplementedFeaturesList>
</BasicMapLayer>
<GetFeatureInfoResponseList>
<ResponseFormat transform="/path/to/xml_html.xsl" advertisedFormat="text/html" mimeType="text/html" WMSCapabilities1_0_0Format="HTML"/>
</GetFeatureInfoResponseList>
</SuperMapConfiguration>
In multi-map mode the Super Map plug-in operates similarly to the Historical Map plug-in but offers additional functionality.
In addition to serving a single MapLink map containing historical information, the Super map plug-in in this mode is capable of taking multiple separate MapLink maps that may or may not contain history and present them as a single set of layers with the combined history of all the maps.
In this mode both the Spatial Data parameter and the configuration file would be fully qualified paths to xml files. The format of the Spatial Data configuration file is described by the schema at the following location:
http://www.envitia.com/schemas/maplinkwms/supermapplugin/datasource/1.0/SuperMapDataSource.xsd
The element type used to contain all of the source layers defines how the MapLink maps will be advertised by the WMS.
Currently the only supported element type is HistoricalMap, which indicates all data source child elements should be advertised as a single set of unified layers.
It is an error to list more than one HistoricalMap element within the same Spatial Data configuration file.
Within this element is a list of the MapLink maps to use as data sources.
If a map has historical information it should be listed using the HistoricalMapMultiVersion element, with the archiveDirectory attribute set to the location of the archive directory of the map.
Unlike the Historical Map plug-in, this directory does not have to be in the same folder as the .map file. If the map does not have historical information it should be listed using the HistoricalMapVersion element with the timestamp attribute set to the time that the MapLink map represents.
Regardless of which element is used to identify the MapLink map location, the id attribute should be set to a unique value.
This identifier is used to match the data sources listed within the Spatial Data configuration file to the WMS layer configurations within the data source’s configuration file.
The following example demonstrates a Spatial Data configuration file that includes MapLink maps with and without historical information:
<?xml version="1.0" encoding="UTF-8"?>
<SuperMapDataSource xmlns="http://www.envitia.com/schemas/maplinkwms/supermapplugin/datasource"
xmlns:wms="http://www.opengis.net/wms"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xlink="http://www.w3.org/1999/xlink" xsi:schemaLocation="http://www.envitia.com/schemas/maplinkwms/supermapplugin/datasource http://www.envitia.com/schemas/maplinkwms/supermapplugin/datasource/1.0/SuperMapDataSource.xsd">
<HistoricalMap>
<HistoricalMapMultiVersion sourceMap="/path/to/historical_map_1/map.map" archiveDirectory="/path/to/historical_map_1/archive" id="1"/>
<HistoricalMapMultiVersion sourceMap="/path/to/historical_map_2/map.map" archiveDirectory="/path/to/historical_map_2/archive" id="2"/>
<HistoricalMapVersion sourceMap="/path/to/normal_map/map0.map" timestamp="2010-11-25T11:45:09Z" id="3"/>
</HistoricalMap>
</SuperMapDataSource>
In multi-map mode the WMS data source configuration file uses the SuperMultiMapConfiguration element as its root node.
This element has a list of SuperMapConfiguration child elements that define the WMS layer configurations for each of the data sources defined within the Spatial Data configuration file.
The contents of each SuperMapConfiguration element is the same as if the data source was being used in single map mode, with the following exceptions:
• The additional id attribute must be set to the same value as used in the attribute of the same name for the data source.
• The mapDataLayerCount, mapDataLayerCacheSize, symbolTextViewExpansion and dynamicRendererStore attributes are no longer valid at this level. These should be specified on the SuperMultiMapConfiguration element.
• Any additional GetFeatureInfo response formats defined in the GetFeatureInfoResponseList at this level are ignored. These should be listed as a child of the SuperMultiMapConfiguration element.
Additionally, the following restrictions apply when using multiple MapLink maps within a single WMS data source through the HistoricalMap Spatial Data configuration element:
• Each SuperMapConfiguration object must define the same set of WMS layers. Any layers that are not present in all SuperMapConfiguration objects will not be advertised from the WMS. Note that these layers do not have to have the same ImplementedFeature list.
• The bounding boxes of a WMS layer should be consistent across all definitions of that layer.
• The value of the queryable attribute of a WMS layer should be consistent across all definitions of that layer.
The following example demonstrates the corresponding configuration for the above Spatial Data example configuration:
<?xml version="1.0" encoding="UTF-8"?>
<SuperMultiMapConfiguration xmlns="http://www.envitia.com/schemas/maplinkwms/supermapplugin"
xmlns:wms="http://www.opengis.net/wms"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xlink="http://www.w3.org/1999/xlink"
xsi:schemaLocation="http://www.envitia.com/schemas/maplinkwms/supermapplugin
http://www.envitia.com/schemas/maplinkwms/supermapplugin/1.0/SuperMapConfiguration.xsd"
mapDataLayerCount="50" mapDataLayerCacheSize="262144" symbolTextViewExpansion="15" dynamicRendererStore="/path/to/dynamicrenderers/folder">
<SuperMapConfiguration id="1" queryable="1">
<wms:Name>IsleOfWight</wms:Name>
<wms:Title>IsleOfWight</wms:Title>
<wms:EX_GeographicBoundingBox>
<wms:westBoundLongitude>-7.557160</wms:westBoundLongitude>
<wms:eastBoundLongitude>3.632021</wms:eastBoundLongitude>
<wms:southBoundLatitude>49.766807</wms:southBoundLatitude>
<wms:northBoundLatitude>61.464590</wms:northBoundLatitude>
</wms:EX_GeographicBoundingBox>
<wms:BoundingBox CRS="EPSG:27700" minx="498161.764000" miny="121078.431000" maxx="408946.078000" maxy="57352.941000"/>
<ImplementedFeaturesList>
<ImplementedFeature>Rasters</ImplementedFeature>
<ImplementedFeature>MasterMap</ImplementedFeature>
</ImplementedFeaturesList>
</SuperMapConfiguration>
<SuperMapConfiguration id="2" queryable="1">
<wms:Name>IsleOfWight</wms:Name>
<wms:Title>IsleOfWight</wms:Title>
<wms:EX_GeographicBoundingBox>
<wms:westBoundLongitude>-7.557160</wms:westBoundLongitude>
<wms:eastBoundLongitude>3.632021</wms:eastBoundLongitude>
<wms:southBoundLatitude>49.766807</wms:southBoundLatitude>
<wms:northBoundLatitude>61.464590</wms:northBoundLatitude>
</wms:EX_GeographicBoundingBox>
<wms:BoundingBox CRS="EPSG:27700" minx="498161.764000" miny="121078.431000" maxx="408946.078000" maxy="57352.941000"/>
<ImplementedFeaturesList>
<ImplementedFeature>Rasters</ImplementedFeature>
<ImplementedFeature>MasterMap</ImplementedFeature>
</ImplementedFeaturesList>
</SuperMapConfiguration>
<SuperMapConfiguration id="3" queryable="1">
<wms:Name>IsleOfWight</wms:Name>
<wms:Title>IsleOfWight</wms:Title>
<wms:EX_GeographicBoundingBox>
<wms:westBoundLongitude>-7.557160</wms:westBoundLongitude>
<wms:eastBoundLongitude>3.632021</wms:eastBoundLongitude>
<wms:southBoundLatitude>49.766807</wms:southBoundLatitude>
<wms:northBoundLatitude>61.464590</wms:northBoundLatitude>
</wms:EX_GeographicBoundingBox>
<wms:BoundingBox CRS="EPSG:27700" minx="498161.764000" miny="121078.431000" maxx="408946.078000" maxy="57352.941000"/>
<ImplementedFeaturesList>
<ImplementedFeature>Rasters</ImplementedFeature>
<ImplementedFeature>Vector</ImplementedFeature>
</ImplementedFeaturesList>
</SuperMapConfiguration>
<GetFeatureInfoResponseList>
<ResponseFormat transform="/path/to/xml_html.xsl" advertisedFormat="text/html" mimeType="text/html" WMSCapabilities1_0_0Format="HTML"/>
</GetFeatureInfoResponseList>
</SuperMultiMapConfiguration>
Please see the document ‘MapLink CADRG WMS Plug-In User Guide.
• When making requests an exception is returned. This normally indicates that a configuration error has been made or a GetMap request string is invalid. It is recommended that the user reads the content of the ServiceException element to amend the problem.
• After deployment, a service exception is shown when using the service stating that the WMS cannot find or access the MapLink WMS configuration file. This is usually caused by either the configuration file not being where the WMS is configured to expect it or that it doesn’t have sufficient permission to access it. Please remember when deploying to non-Windows platforms that the case of the configuration file path is important.
• After deployment, a service exception is shown when using the service stating that the WMS is not licensed, yet the appropriate licence has been installed correctly. This can sometimes be caused by another Envitia process, usually the Licence Key Administrator, locking out the WMS from check whether a licence is installed. Shut down other Envitia applications, restart the web server and try again.
• After deployment, a service exception is shown when using the service stating that it failed to load the standard MapLink configuration. This is usually caused by “Std_Config_Path” setting, documented in section 5.3.8, having been incorrectly configured.
• After deployment, a service exception is shown when using the service stating that it failed to load a plug-in library. This may be cause by one of the following:
o The plug-in was not found by the runtime. Ensure that it is accessible to the runtime either via the working path or PATH environment variable on Windows.
On non-windows platforms, ensure that the case of the plug-in name contained in the configuration file matches that of the filename.
o On Windows only, the filename of the DLL was not suffixed correctly to match the WMS service. For instance if running in 64-bit, the name of the plug-in that appears in the configuration file will be appended with "64.dll". 64-bit debug will append "64d.dll".
• The deployment of the service was successful and the Capabilities can be retrieved, but when attempting to use the service in a WMS client nothing is displayed.
The most common cause of this error is that the GetMap address that appears in the service Capabilities does not match the address that the service is deployed on. Refer to section 5.3.5 for details of how to configure the address that appear. When using one of the Envitia supplied service plug-ins, this issue may be cause by the geographic area configured to be advertised for a data source not containing any data.
• The service works when accessed from the server it is deployed upon, but not from another machine on the same network. This issue is mainly beyond the scope of this document, but two common causes are that the server’s firewall is blocking access to the web server’s port and the second is that a loopback address has been used when configuring the Capabilities of the server (E.G. “localhost” or “127.0.0.1”) when completing section 5.3.5 of the service’s configuration file.
• When using a TSLWMSDataLayer with any WMS data source a situation can occur where tiles are constantly loaded and unloaded which causes a flickering effect. This issue is not at the server end, but arises because the layer’s tile cache does not have enough memory to store all of the requested tiles. To resolve this issue the user should increase the size of the tile cache using the cacheSize() method on the data layer.
Make sure you have Docker 1.29+ installed on your Linux box.
Build the WMS image using the following command:
docker build -t maplink-wms:11.2.5.0 -f redist64/docker/wms/Dockerfile .
Run the container using the following command:
docker run -p 8022:8080 -v /home/user/wms/maps:/opt/wms/maps --name maplink-wms -d maplink-wms:11.2.5.0
Where:
• /home/user/wms/maps is the root of your maps folder.
• 8022 is the port where the container gets mapped on your Docker host.
To check that the WMS is running correctly, visit the following URL:
http://host:8022/MapLinkOGCServices/OGC?SERVICE=WMS&Request=GetCapabilities
Replace the host with your linux host name/ip.
docker stop maplink-wms
docker rm maplink-wms
NOTE: the container has to be removed before starting it again.
Create a folder on your host for your base configuration.
E.g.
mkdir -p /home/user/wms/baseconfig
Copy the example base config from redist64/docker/wms/baseconfig.ini to the baseconfig folder.
Edit the configuration file, as outlined in 5.3.
Run the container using:
docker run -p 8022:8080 -v /home/user/wms/maps:/opt/wms/maps -v /home/user/wms/baseconfig:/opt/wms/baseconfig --name maplink-wms -d maplink-wms:11.2.5.0
Where:
• /home/user/wms/maps - Is the root of your maps folder.
• /home/user/wms/baseconfig - Contains the base configuration file called baseconfig.ini
/opt/wms/maps : You must mount this folder as this is the location where the container will search for maps
/opt/wms/config : If you mount this folder you will see the generated WMS configuration file
/opt/wms/baseconfig : This folder stores the base configuration file
Ensure that you have xsltproc installed. E.G.:
apt-get install xsltproc
Make sure that the MapLink environment variables are set and the bin folder is added to the path.
source mapl_init.bash
export PATH=$MAPL_HOME/bin/x86_64:$PATH
Use the following scripts to generate XMLs for the map files you wish to add to your WMS as data sources.
Once generated, copy the map files and the corresponding XML files into your “/home/user/wms/maps” folder.
Use the following command:
genwmsconf.sh ./maps/NaturalEarthBasic/NaturalEarthBasic.map
Navigate to the directory of maps that you want to generate config files for and execute the following command:
genwmsdir.sh ./maps/
The Web Processing Service (WPS) can provide a set of “processes” that receive zero or more inputs and return one or more outputs.
The WPS standard describes a process as “any algorithm, calculation or model that operates on spatially referenced data,” although its interface is not limited to geospatial operations.
The MapLink WPS Plug-In SDK can be used to create user plug-ins. For more information on this SDK please consult the MapLink Developer’s Guide.
The WPS itself supports version 1.0.0 of the standard, currently the only published version. It is intended that when further versions are released, the MapLink WPS will be extended to support them.
Each WPS plugin can provide one or more WPS processes.
On start-up the WPS service will read its configuration file and determine what WPS plugins it needs to load.
The MapLink WPS configuration file defines what data sources (‘processes’) it should serve up and how.
This configuration file also defines much of the service Capabilities as well as certain MapLink specific settings.
The format of the configuration file is that of an XML file the schema of which is available at the following URL:
http://www.envitia.com/schemas/maplinkwps/1.0/MaplinkWPS.xsd
In the WPS Service configuration file is a ‘DataSources’ xml element which contains a number of ‘DataSource’ xml elements.
Each ‘DataSource’ xml element:
• Represents a WPS plugin.
• Has a ‘Plugin’ xml element - this defines the DLL name of the data source plugin to load. This is the name of the DLL, without the configuration-specific suffix.
• Has a ‘DataPath’ xml element - this is an extra parameter that can be passed into the Data Source plugin at start up
• Has a ‘ConfigPath’ xml element - this is an extra parameter that can be passed into the Data Source plugin at start up, this parameter tends to be used to define the configuration file
This optional element defines the data store of the service.
This allows for WPS requests to ask the WPS service to store the result, so it can be picked up later.
Note: it is optional for a WPS plugin to support data store usage. This is defined in the implementation of the WPS plugin itself.
The DataStore element is defined in the schema as abstract with currently only one derivate supported; ‘FileStore’.
This type of store will use a file system directory to store asynchronous responses and referenced outputs, which is provided via the “Directory” attribute.
The File Store can optionally be configured with a purge strategy which indicates how older items should be removed. If a purge strategy is not configured, then the directory can grow large over time and will need to be manually purged.
The Options element is used to configure various MapLink settings, although currently there is only one offered by the MapLink WPS. It is expected that the configurable options will be expanded upon in patches and future releases.
Each Option sub-element must be provided with the “name” attribute to indicate what is being configured and therefore the type of content to be expected inside the element.
The “name” attribute is an XML union of an enumeration and the string type. The enumeration defines the current build-in names, with “StandardConfigPath” with being the only current value to configure the location of the MapLink configuration directory, whilst the string allows future additions and undocumented values.
The WPS standard is one of the first OGC standards to offer the service Capabilities in more than one language, specifically the parts that are for consumption by a user rather than the client software.
The MapLink WPS offers this functionality in the service capabilities and other service responses.
A LanguageSpecificMetadata element is used to define the parts of the Capabilities document for a specific language, including the ServiceIndentification, ServiceProvider, OperationsMetadata and WSDL elements.
When the Capabilities of the service are requested for that language, what appears in the LanguageSpecificMetadata will be included in exactly the same way as it appears in the configuration file.
To support multiple languages, simply include a LanguageSpecificMetadata element for each of them.
The service must also be told which of the supported languages it should treat as the default, for when a request does not specify which language it would like the response in. The language type that appears in the DefaultLanugage element must reference one of the languages used in an included LanguageSpecificMetadata element.
The OperationsMetadata element is used to describe the Operations that the service supports.
This is of importance to the MapLink WMS as it also describes the addresses that these services are available at.
These addresses can either be full, qualified, or, like offered in the MapLink WMS, use the DYNAMIC keyword.
The DYNAMIC keyword will be replaced in the Capabilities returned during a “GetCapabilities” request with the address that the request was made to.
The following example demonstrates a configuration file which has the following settings:
• It deploys two data sources; one that uses "MyPlugin" and the other uses "MyOtherPlugin". Both take a TXT file for their data and an INI file for their configuration.
• It is configured to offer a file based data store, that uses c:\temp\WPSStore to store asynchronous and referenced resources, and perform a purge job everyday which will remove items which were created at least 2 days ago.
• A single option is defined, which specifies MapLink's standard configuration path.
• "en-GB", which is the abbreviation of British English, is defined as the default language.
• LanguageSpecificMetadata is included for the default language, "en-GB", and for "en-US" is the abbreviation of US English.
• Both defined LanguageSpecificMetadata elements include the same Service Identification and Service Provider sub elements.
• Both defined LanguageSpecificMetadata elements include OperationsMetadata sub element which describe the service's end-points using the DYNAMIC keyword.
<?xml version="1.0" encoding="UTF-8"?>
<mwps:WPSConfiguration
xmlns:mwps="http://www.envitia.com/schemas/maplinkwps"
xmlns:ows="http://www.opengis.net/ows/1.1"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xlink="http://www.w3.org/1999/xlink"
xsi:schemaLocation="http://www.envitia.com/schemas/maplinkwps
http://www.envitia.com/schemas/maplinkwps/1.0/MaplinkWPS.xsd">
<mwps:DataSources>
<mwps:DataSource>
<mwps:Plugin>MyPlugin</mwps:Plugin>
<mwps:DataPath>c:\mydata\data.txt</mwps:DataPath>
<mwps:ConfigPath>C:\myconfiguration\config.ini</mwps:ConfigPath>
</mwps:DataSource>
<mwps:DataSource>
<mwps:Plugin>MyOtherPlugin</mwps:Plugin>
<mwps:DataPath>c:\mydata\data2.txt</mwps:DataPath>
<mwps:ConfigPath>C:\myconfiguration\config2.ini</mwps:ConfigPath>
</mwps:DataSource>
</mwps:DataSources>
<mwps:DataStore xsi:type="mwps:FileStore" Directory="C:\Temp\WPSStore">
<mwps:PurgingStrategy>
<mwps:FrequencyOfOperation>P1D</mwps:FrequencyOfOperation>
<mwps:PurgeAge>P2D</mwps:PurgeAge>
<mwps:AgeCalculationMethod>FromCreation</mwps:AgeCalculationMethod>
</mwps:PurgingStrategy>
</mwps:DataStore>
<mwps:Options>
<mwps:Option name="StandardConfigPath">c:\Program Files\Envitia\MapLink Pro\8.1\config</mwps:Option>
</mwps:Options>
<mwps:DefaultLanguage>en-GB</mwps:DefaultLanguage>
<mwps:LanguageSpecificMetadata xml:lang="en-GB">
<ows:ServiceIdentification>
<ows:Title>Envitia MapLink WPS Server</ows:Title>
<ows:Abstract>Envitia MapLink WPS Server</ows:Abstract>
<ows:Keywords>
<ows:Keyword>Envitia</ows:Keyword>
<ows:Keyword>MapLink</ows:Keyword>
</ows:Keywords>
<ows:ServiceType>WPS</ows:ServiceType>
<ows:ServiceTypeVersion>1.0.0</ows:ServiceTypeVersion>
<ows:Fees>NONE</ows:Fees>
<ows:AccessConstraints>NONE</ows:AccessConstraints>
</ows:ServiceIdentification>
<ows:ServiceProvider>
<ows:ProviderName>Envitia Group Ltd.</ows:ProviderName>
<ows:ProviderSite xlink:href="http://www.envitia.com/"/>
<ows:ServiceContact>
<ows:IndividualName>Mr. A Person</ows:IndividualName>
<ows:PositionName>Engineer</ows:PositionName>
<ows:ContactInfo>
<ows:Phone>
<ows:Voice>+44 1403 273 173</ows:Voice>
<ows:Facsimile>+44 1403 273 123</ows:Facsimile>
</ows:Phone>
<ows:Address>
<ows:DeliveryPoint>North Heath Lane</ows:DeliveryPoint>
<ows:City>Horsham</ows:City>
<ows:AdministrativeArea>West Sussex</ows:AdministrativeArea>
<ows:PostalCode>RH12 5UX</ows:PostalCode>
<ows:Country>England</ows:Country>
<ows:ElectronicMailAddress>support@envitia.com</ows:ElectronicMailAddress>
</ows:Address>
</ows:ContactInfo>
</ows:ServiceContact>
</ows:ServiceProvider>
<ows:OperationsMetadata>
<ows:Operation name="GetCapabilities">
<ows:DCP>
<ows:HTTP>
<ows:Get xlink:href="DYNAMIC"/>
<ows:Post xlink:href="DYNAMIC"/>
</ows:HTTP>
</ows:DCP>
</ows:Operation>
<ows:Operation name="DescribeProcess">
<ows:DCP>
<ows:HTTP>
<ows:Get xlink:href="DYNAMIC"/>
<ows:Post xlink:href="DYNAMIC"/>
</ows:HTTP>
</ows:DCP>
</ows:Operation>
<ows:Operation name="Execute">
<ows:DCP>
<ows:HTTP>
<ows:Get xlink:href="DYNAMIC"/>
<ows:Post xlink:href="DYNAMIC"/>
</ows:HTTP>
</ows:DCP>
</ows:Operation>
</ows:OperationsMetadata>
</mwps:LanguageSpecificMetadata>
<mwps:LanguageSpecificMetadata xml:lang="en-US">
<ows:ServiceIdentification>
<ows:Title>Envitia MapLink WPS Server</ows:Title>
<ows:Abstract>Envitia MapLink WPS Server</ows:Abstract>
<ows:Keywords>
<ows:Keyword>Envitia</ows:Keyword>
<ows:Keyword>MapLink</ows:Keyword>
</ows:Keywords>
<ows:ServiceType>WPS</ows:ServiceType>
<ows:ServiceTypeVersion>1.0.0</ows:ServiceTypeVersion>
<ows:Fees>NONE</ows:Fees>
<ows:AccessConstraints>NONE</ows:AccessConstraints>
</ows:ServiceIdentification>
<ows:ServiceProvider>
<ows:ProviderName>Envitia Group Ltd.</ows:ProviderName>
<ows:ProviderSite xlink:href="http://www.envitia.com/"/>
<ows:ServiceContact>
<ows:IndividualName>Mr. A Person</ows:IndividualName>
<ows:PositionName>Engineer</ows:PositionName>
<ows:ContactInfo>
<ows:Phone>
<ows:Voice>+44 1403 273 173</ows:Voice>
<ows:Facsimile>+44 1403 273 123</ows:Facsimile>
</ows:Phone>
<ows:Address>
<ows:DeliveryPoint>North Heath Lane</ows:DeliveryPoint>
<ows:City>Horsham</ows:City>
<ows:AdministrativeArea>West Sussex</ows:AdministrativeArea>
<ows:PostalCode>RH12 5UX</ows:PostalCode>
<ows:Country>England</ows:Country>
<ows:ElectronicMailAddress>support@envitia.com</ows:ElectronicMailAddress>
</ows:Address>
</ows:ContactInfo>
</ows:ServiceContact>
</ows:ServiceProvider>
<ows:OperationsMetadata>
<ows:Operation name="GetCapabilities">
<ows:DCP>
<ows:HTTP>
<ows:Get xlink:href="DYNAMIC"/>
<ows:Post xlink:href="DYNAMIC"/>
</ows:HTTP>
</ows:DCP>
</ows:Operation>
<ows:Operation name="DescribeProcess">
<ows:DCP>
<ows:HTTP>
<ows:Get xlink:href="DYNAMIC"/>
<ows:Post xlink:href="DYNAMIC"/>
</ows:HTTP>
</ows:DCP>
</ows:Operation>
<ows:Operation name="Execute">
<ows:DCP>
<ows:HTTP>
<ows:Get xlink:href="DYNAMIC"/>
<ows:Post xlink:href="DYNAMIC"/>
</ows:HTTP>
</ows:DCP>
</ows:Operation>
</ows:OperationsMetadata>
</mwps:LanguageSpecificMetadata>
</mwps:WPSConfiguration>
Before the deployment of a WPS Plugin can take place it is assumed all WPS deployment steps have already taken place.
• Add a new ‘DataSource’ xml element to the MapLink WPS Configuration File.
• Set the ‘Plugin’ element to ‘RouterWPSPlugin’
• Set the ‘ConfigPath’ element to point to the RouterWPSplugin.ini file (a copy of which is located in the config/ogcservices folder).
• Leave the DataPath xml element empty as it is not used.
Sample:
<mwps:DataSource>
<mwps:Plugin>RouterWPSplugin</mwps:Plugin>
<mwps:DataPath></mwps:DataPath>
<mwps:ConfigPath>
config\plugins\RouterWPSplugin.ini
</mwps:ConfigPath>
</mwps:DataSource>
Check through the RouterWPSplugin.ini file. The configuration file’s comments will instruct on what the various values mean. Take note that the following entries will require attention:
• The ‘transformsDatFile’ value at the top of the configuration file.
• Each ‘Network’ setup must be scrutinised.
Sample GET Call
http://localhost:8080/MapLinkOGCServices/OGC?&service=WPS&request=DescribeProcess&version=1.0.0&identifier=RouteWPS
Sample POST Call
http://localhost:8080/MapLinkOGCServices/OGC?
POST data:
<?xml version="1.0" encoding="UTF-8"?>
<wps:DescribeProcess service="WPS" version="1.0.0" xmlns:wps="http://www.opengis.net/wps/1.0.0" xmlns:ows="http://www.opengis.net/ows/1.1" >
<ows:Identifier>RouteWPS</ows:Identifier>
</wps:DescribeProcess >
The response to this request will provide:
• A list of network definitions available
• A list of available Route Algorithms (short or quick)
• A list of available Cost Algorithms (simple, heuristic etc.)
• A list of available Vehicle Types
• Details of the start the end locations
• A list of available outputs (GML and Directions)
Sample GET Call
http://localhost:8080/MapLinkOGCServices/OGC?&service=WPS&request=Execute&version=1.0.0&identifier=RouteWPS&datainputs=network=63843-SZ1085;routeAlgorithm=shortest;start_lon=-1.7786362;start_lat=50.7356394;end_lon=-1.7804886;end_lat=50.7355128;costAlgorithm=simple;vehicleType=car&responsedocument=gml;directions
Sample POST Call See Section 7.1.1.
network (Network Identifier)
• This specifies which network map to plan a route against.
• The available networks are defined in the ‘RouterWPSplugin.ini’ file.
• The value for this parameter must match the configuration file’s ‘identifier’ value within any of the ‘Network’ sections.
routeAlgorithm (Route Algorithm)
• This specifies whether the quickest or shortest route should be built.
• The available options for this are determined by implementation, these cannot be added to without development.
• The shortest option will only make choices based on distance.
• The quickest option will make choices based on the speed the vehicle type can travel on each of the different road types.
• The vehicle’s speed for each road type is defined in the ‘RouterWPSplugin.ini’ file, in the appropriate ‘Vehicle’ section.
costAlgorithm (Cost Algorithm)
• This specifies the type of algorithm to use while building the route.
• The available options for this are determined by implementation, these cannot be added to without development.
• Each algorithm uses different methodology to try and speed up large route calculations
• A simple description of each algorithm:
o Simple – uses the Network SDK’s fundamental route crawling algorithm to build the route
o Heuristic – uses a bounding box around the start and end locations to limit the smaller roads used
o Multiple Heuristic – uses a series of bounding boxes around the start and end points each will limit certain types of roads used.
vehicleType (Vehicle Type)
• This specifies the type of vehicle to plan a route for
• The available vehicle types are defined in the ‘RouterWPSplugin.ini’ file.
• The value for this parameter must match the configuration file’s ‘vehicleType’ value within any of the ‘Vehicle’ sections.
start_lon/start_lat Start Location
• This specifies the start location of the route to calculate
• The coordinate system these points must be in are WGS84 (lat/lon)
• The actual start point of the route will be the nearest point found on the Network Map to this start location
end_lon/end_lat Start Location
• This specifies the end location of the route to calculate
• The coordinate system these points must be in are WGS84 (lat/lon)
• The actual end point of the route will be the nearest point found on the Network Map to this end location
There are two available output formats:
• gml
• directions
Note: A response document can return both of these formats if needed.
Note: The Raw Data output can only return one of the two available formats.
GML
• This is a GML string of the calculated route.
• The coordinates system for each point will be in WGS84 (lat/lon)
Directions
• This is a list of string instructions the user needs to follow
• The distance in brackets specifies the distance required for the next instruction
Before the deployment of a WPS Plugin can take place it is assumed all WPS deployment steps have already taken place.
• Add a new ‘DataSource’ xml element to the MapLink WPS Configuration File.
• Set the ‘Plugin’ element to ‘ViewShedWPSPlugin’
• Set the ‘ConfigPath’ element to point to the ViewShedWPSplugin.ini file (a copy of which is located in the config/ogcservices folder).
• Leave the DataPath xml element empty as it is not used.
Sample:
<mwps:DataSource>
<mwps:Plugin>ViewShedWPSplugin</mwps:Plugin>
<mwps:DataPath></mwps:DataPath>
<mwps:ConfigPath>
config\plugins\ViewShedWPSplugin.ini
</mwps:ConfigPath>
</mwps:DataSource>
Check through the ViewShedWPSplugin.ini file. The configuration file’s comments will instruct on what the various values mean. Take note that each ‘SourceData’ section must be scrutinised.
Sample GET Call
http://localhost:8080/MapLinkOGCServices/OGC?&service=WPS&request=DescribeProcess&version=1.0.0&identifier=ViewShedWPS
Sample POST Call
http://localhost:8080/MapLinkOGCServices/OGC?
POST data:
<?xml version="1.0" encoding="UTF-8"?>
<wps:DescribeProcess service="WPS" version="1.0.0" xmlns:wps="http://www.opengis.net/wps/1.0.0" xmlns:ows="http://www.opengis.net/ows/1.1" >
<ows:Identifier>ViewShedWPS</ows:Identifier>
</wps:DescribeProcess >
Available Options
In the sample above the ‘ViewShedWPS’ value represents the standard Single View Shed service. The available options for services are:
• ViewShedWPS
• MultiViewShedWPS
• RouteViewShedWPS
• RouteBreakdownWPS
Response Description
The response to this request will provide details of the parameters and outputs each service provides.
Sample GET Call
http://localhost:8080/MapLinkOGCServices/OGC?&service=WPS&request=Execute&version=1.0.0&identifier=ViewShedWPS&datainputs=source=sanfran;view_lat=37.711949;view_lon=-122.308167;view_height=0;view_htype=groundHeight;view_minRadius=0;view_maxRadius=10000;target_height=0;target_htype=groundHeight;requiredDisplayWidth=800;requiredDisplayHeight=600;requiredDisplayExtent=-122.384258,37.716004,-122.357822,37.734605,EPSG:4326;displayStyle=redGreen&RawDataOutput=image=@mimetype=image/png
Sample POST Call
See Section 7.1.2.
source (Source Data)
• This specifies which source data to perform a View Shed against.
• The available source data are defined in the ‘ViewShedWPSplugin.ini’ file.
• The value for this parameter must match the configuration file’s ‘identifier’ value within any of the ‘SourceData’ sections.
view_lat/view_lon (Viewing Location)
• This specifies the viewing location for the View Shed.
• The coordinate system these points must be in WGS84 (lat/lon).
view_height (Viewing Height)
• This specifies the viewing height in meters.
• The maximum height for any particular source data is defined in the ‘ViewShedWPSplugin.ini’ file.
• This parameter is used in conjunction with the ‘view_htype’ parameter.
view_htype (Viewing Height Type)
• This specifies where the ‘view_height’ originates from.
• There are two options:
o Surface Height
o Absolute Height
• Available height types are defined in code.
view_maxRadius (Viewing Maximum Radius)
• This specifies the maximum radius of the view shed.
• The maximum radius for any particular source data is defined in the ‘ViewShedWPSplugin.ini’ file.
target_height (Target Height)
• This specifies the target height in meters.
• This means the resulting image will only show consider a point visible if it is visible at the height specified by both this parameter and the ‘target_htype’ parameter.
• The maximum height for any particular source data is defined in the ‘ViewShedWPSplugin.ini’ file.
• This parameter is used in conjunction with the ‘target_htype’ parameter.
target_htype (Target Height Type)
• This specifies where the ‘target_height’ originates from.
• There are two options:
o Surface Height
o Absolute Height
• Available height types are defined in code.
requiredDisplayWidth/requiredDisplayHeight (Required Display)
• These two parameters define the resulting image’s size in pixels.
• The image is first generated based on the source data’s resolution, it is then scaled to fit the required size.
requiredDisplayExtent (Required Display Extent)
• This specifies the lat/lon bounding box the resulting image will cover.
displayStyle (Display Style)
• This specifies the display style to use when generating the View Shed image.
• The available display styles are defined in the ‘ViewShedWPSplugin.ini’ file.
• The value for this parameter must match the configuration file’s ‘identifier’ value within any of the ‘Colour’ sections.
5.5.3.2. Response Document/ Raw Data Parameters
There is only one type of output, which is the resulting View Shed image.
Available Formats
There are two available image formats:
• png
• tiff - this is not always recognised by internet browsers, so can force a download instead of being able to view directly in the browser.
Note: The resulting format will not have an alpha channel.
Distribution
There are two ways of distributing the image:
• Raw Data Format - This will simply return the binary image directly in the response without any XML.
• Response Document as reference - This will store the resulting image in the WPS store and will return a url via the XML response. The caller can use this url to access the image. The length of time the image will be stored is defined in the ‘MapLinkWPSConfiguration.xml’ file.
Note: Complex binary data (image data) cannot be returned through the response document directly, only as a reference (this is as per the WPS specifications).
Sample GET Call
http://localhost:8080/MapLinkOGCServices/OGC?&service=WPS&request=Execute&version=1.0.0&identifier=MultiViewShedWPS&datainputs=source=sanfran;viewPoints=-122.308167,37.711949,0;view_htype=groundHeight;view_maxRadius=10000;target_height=0;target_htype=groundHeight;requiredDisplayWidth=800;requiredDisplayHeight=600;requiredDisplayExtent=-122.384258,37.716004,-122.357822,37.734605,EPSG:4326;displayStyle=redGreen&RawDataOutput=image=@mimetype=image/png
Sample POST Call See Section 7.1.3.
source (Source Data)
• This specifies which source data to perform a View Shed against.
• The available source data are defined in the ‘ViewShedWPSplugin.ini’ file.
• The value for this parameter must match the configuration file’s ‘identifier’ value within any of the ‘SourceData’ sections.
viewPoints (Viewing Location)
• This specifies a set of viewing locations, each which will generate a View Shed
• The XY points of the viewing location must be in WGS84 (lat/lon)
• Each location will also specify a height in meters.
• The height will either be the absolute height or the surface height (this is defined by the ‘view_htype’ parameter
• The maximum height for any particular source data is defined in the ‘ViewShedWPSplugin.ini’ file.
view_htype (Viewing Height Type)
• This specifies where the viewing height points originate from.
• There are two options:
o Surface Height
o Absolute Height
• Available height types are defined in code
view_maxRadius (Viewing Maximum Radius)
• This specifies the maximum radius of the view shed.
• The maximum radius for any particular source data is defined in the ‘ViewShedWPSplugin.ini’ file.
target_height (Target Height)
• This specifies the target height in meters.
• This means the resulting image will only show consider a point visible if it is visible at the height specified by both this parameter and the ‘target_htype’ parameter.
• The maximum height for any particular source data is defined in the ‘ViewShedWPSplugin.ini’ file.
• This parameter is used in conjunction with the ‘target_htype’ parameter.
target_htype (Target Height Type)
• This specifies where the ‘target_height’ originates from.
• There are two options:
o Surface Height
o Absolute Height
• Available height types are defined in code
requiredDisplayWidth/requiredDisplayHeight (Required Display)
• These two parameters define the resulting image’s size in pixels.
• The image is first generated based on the source data’s resolution, it is then scaled to fit the required size.
requiredDisplayExtent (Required Display Extent)
• This specifies the lat/lon bounding box the resulting image will cover.
displayStyle (Display Style)
• This specifies the display style to use when generating the View Shed image.
• The available display styles are defined in the ‘ViewShedWPSplugin.ini’ file.
• The value for this parameter must match the configuration file’s ‘identifier’ value within any of the ‘Colour’ sections.
There is only one type of output, which is the resulting View Shed image.
Available Formats
There are two available image formats:
• png
• tiff - this is not always recognised by internet browsers, so can force a download instead of being able to view directly in the browser.
Note: The resulting format will not have an alpha channel.
Distribution
There are two ways of distributing the image:
• Raw Data Format - This will simply return the binary image directly in the response without any XML.
• Response Document as reference - This will store the resulting image in the WPS store and will return a url via the XML response. The caller can use this url to access the image. The length of time the image will be stored is defined in the ‘MapLinkWPSConfiguration.xml’ file.
Note: Complex binary data (image data) cannot be returned through the response document directly, only as a reference (this is as per the WPS specifications).
Sample GET Call
http://localhost:8080/MapLinkOGCServices/OGC?&service=WPS&request=Execute&version=1.0.0&identifier=RouteViewShedWPS&datainputs=source=britsouth;routePoints=51.1244288,-1.8908794,51.1244876,-1.8914126,51.1245858,-1.8921404,51.1245918,-1.892175;viewShedPointSpacing=300;view_height=0;view_htype=groundHeight;view_maxRadius=3000;target_height=0;target_htype=groundHeight;requiredDisplayWidth=800;requiredDisplayHeight=600;requiredDisplayExtent=-1.98,51.096,-1.7925,51.2125,EPSG:4326;displayStyle=redGreen&RawDataOutput=image=@mimetype=image/png
Sample POST Call See Section 7.1.4.
source (Source Data)
• This specifies which source data to perform a View Shed against.
• The available source data are defined in the ‘ViewShedWPSplugin.ini’ file.
• The value for this parameter must match the configuration file’s ‘identifier’ value within any of the ‘SourceData’ sections.
routePoints (Viewing Location)
• This is a GML string.
• This specifies a set of viewing locations, each which will generate a View Shed
• The XY points of the viewing location must be in WGS84 (lat/lon)
viewShedPointSpacing
• This defines the number of meters to exist between each point of the new version of the route.
view_height (Viewing Height)
• This specifies the viewing height in meters.
• The maximum height for any particular source data is defined in the ‘ViewShedWPSplugin.ini’ file.
• This parameter is used in conjunction with the ‘view_htype’ parameter.
view_htype (Viewing Height Type)
• This specifies where the viewing height points originate from.
• There are two options:
o Surface Height
o Absolute Height
• Available height types are defined in code
view_maxRadius (Viewing Maximum Radius)
• This specifies the maximum radius of the view shed.
• The maximum radius for any particular source data is defined in the ‘ViewShedWPSplugin.ini’ file.
target_height (Target Height)
• This specifies the target height in meters.
• This means the resulting image will only show consider a point visible if it is visible at the height specified by both this parameter and the ‘target_htype’ parameter.
• The maximum height for any particular source data is defined in the ‘ViewShedWPSplugin.ini’ file.
• This parameter is used in conjunction with the ‘target_htype’ parameter.
target_htype (Target Height Type)
• This specifies where the ‘target_height’ originates from.
• There are two options:
o Surface Height
o Absolute Height
• Available height types are defined in code
requiredDisplayWidth/requiredDisplayHeight (Required Display)
• These two parameters define the resulting image’s size in pixels.
• The image is first generated based on the source data’s resolution, it is then scaled to fit the required size.
requiredDisplayExtent (Required Display Extent)
• This specifies the lat/lon bounding box the resulting image will cover.
displayStyle (Display Style)
• This specifies the display style to use when generating the View Shed image.
• The available display styles are defined in the ‘ViewShedWPSplugin.ini’ file.
• The value for this parameter must match the configuration file’s ‘identifier’ value within any of the ‘Colour’ sections.
There is only one type of output, which is the resulting View Shed image.
Available Formats
There are two available image formats:
• png
• tiff - this is not always recognised by internet browsers, so can force a download instead of being able to view directly in the browser.
Note: The resulting format will not have an alpha channel.
Distribution
There are two ways of distributing the image:
• Raw Data Format - This will simply return the binary image directly in the response without any XML.
• Response Document as reference - This will store the resulting image in the WPS store and will return a url via the XML response. The caller can use this url to access the image. The length of time the image will be stored is defined in the ‘MapLinkWPSConfiguration.xml’ file.
Note: Complex binary data (image data) cannot be returned through the response document directly, only as a reference (this is as per the WPS specifications).
Sample GET Call
http://localhost:8080/MapLinkOGCServices/OGC?&service=WPS&request=Execute&version=1.0.0&identifier=RouteBreakdownWPS&datainputs=routePoints=51.1244288,-1.8908794,51.1247762,-1.8931956;viewShedPointSpacing=100&RawDataOutput=gmlDoc=@mimetype=text/xml
Sample POST Call
See Section 7.1.5.
routePoints (Viewing Location)
• This is a GML string
• This specifies a set of viewing locations, each which will generate a View Shed
• The XY points of the viewing location must be in WGS84 (lat/lon)
viewShedPointSpacing
• This defines the number of meters to exist between each point of the new version of the route.
view_height (Viewing Height)
• This specifies the viewing height in meters.
• The maximum height for any particular source data is defined in the ‘ViewShedWPSplugin.ini’ file.
• This parameter is used in conjunction with the ‘view_htype’ parameter.
view_htype (Viewing Height Type)
• This specifies where the viewing height points originate from.
• There are two options:
o Surface Height
o Absolute Height
• Available height types are defined in code
view_maxRadius (Viewing Maximum Radius)
• This specifies the maximum radius of the view shed.
• The maximum radius for any particular source data is defined in the ‘ViewShedWPSplugin.ini’ file.
target_height (Target Height)
• This specifies the target height in meters.
• This means the resulting image will only show consider a point visible if it is visible at the height specified by both this parameter and the ‘target_htype’ parameter.
• The maximum height for any particular source data is defined in the ‘ViewShedWPSplugin.ini’ file.
• This parameter is used in conjunction with the ‘target_htype’ parameter.
target_htype (Target Height Type)
• This specifies where the ‘target_height’ originates from.
• There are two options:
o Surface Height
o Absolute Height
• Available height types are defined in code
requiredDisplayWidth/requiredDisplayHeight (Required Display)
• These two parameters define the resulting image’s size in pixels.
• The image is first generated based on the source data’s resolution, it is then scaled to fit the required size.
requiredDisplayExtent (Required Display Extent)
• This specifies the lat/lon bounding box the resulting image will cover.
displayStyle (Display Style)
• This specifies the display style to use when generating the View Shed image.
• The available display styles are defined in the ‘ViewShedWPSplugin.ini’ file.
• The value for this parameter must match the configuration file’s ‘identifier’ value within any of the ‘Colour’ sections.
There is only one type of output, which is the resulting GML String of the broken down route.
Distribution
There are two ways of distributing the image:
• Raw Data Format - This will simply return the GML string directly in the response without any XML.
• Response Document as reference - This will store the resulting GML string the WPS store and will return a url via the XML response. The caller can use this url to access the GML string. The length of time the GML string will be stored is defined in the ‘MapLinkWPSConfiguration.xml’ file.
• Response Document – This will return the GML string in a response document. The GML string will be encoded.
Before the deployment of a WPS Plugin can take place it is assumed all WPS deployment steps have already taken place.
• Add a new ‘DataSource’ xml element to the MapLink WPS Configuration File.
• Set the ‘Plugin’ element to ‘TerrainProfileWPSPlugin’
• Set the ‘ConfigPath’ element to point to the TerrainProfileWPSplugin.ini file (a copy of which is located in the config/plugins folder).
• Leave the DataPath xml element empty as it is not used.
Sample:
<mwps:DataSource>
<mwps:Plugin>TerrainProfileWPSPlugin</mwps:Plugin>
<mwps:DataPath></mwps:DataPath>
<mwps:ConfigPath>
config\plugins\ViewShedWPSplugin.ini
</mwps:ConfigPath>
</mwps:DataSource>
Check through the TerrainProfileWPSplugin.ini file. The configuration file’s comments will instruct on what the various values mean. Take note that each ‘SourceData’ section must be scrutinised.
Sample GET Call
http://localhost:8080/MapLinkOGCServices/OGC?&service=WPS&request=DescribeProcess&version=1.0.0&identifier=TerrainProfileWPS
Sample POST Call
http://localhost:8080/MapLinkOGCServices/OGC?
POST data:
<?xml version="1.0" encoding="UTF-8"?>
<wps:DescribeProcess service="WPS" version="1.0.0" xmlns:wps="http://www.opengis.net/wps/1.0.0" xmlns:ows="http://www.opengis.net/ows/1.1" >
<ows:Identifier>TerrainProfileWPS</ows:Identifier>
</wps:DescribeProcess >
Response Description The response to this request will provide details of the parameters and outputs each service provides.
Sample GET Call
http://localhost:8080/MapLinkOGCServices/OGC?&service=WPS&request=Execute&version=1.0.0&identifier=TerrainProfileWPS&datainputs=source=sanfran;profilePoints=37.726258,-122.111137,37.724840,-122.108669;viewShedPointSpacing=100;requiredDisplayWidth=800;requiredDisplayHeight=600;displayStyle=clearVis&RawDataOutput=image=@mimetype=image/png
Sample POST Call See Section 7.1.6.
source (Source Data)
• This specifies which source data to perform a Terrain Profile against.
• The available source data are defined in the ‘TerrainProfileWPSplugin.ini’ file.
• The value for this parameter must match the configuration file’s ‘identifier’ value within any of the ‘SourceData’ sections.
profilePoints
• This is a GML string (for GET requests it is a comma delimited list of coordinates)
• This specifies a route which will be simplified, the result of which is used to generate a Terrain Profile.
• The XY points of the viewing location must be in WGS84 (lat/lon)
breakdownPointSpacing
• This defines the number of meters to exist between each profile point above.
scaleOutput
• This sets whether the resulting Terrain Profile image is scaled vertically
• This parameter is optional
• By default this is flag off
lowestDisplayHeight
• This specifies the lowest height to display in the resulting Terrain Profile image.
• This parameter is optional
• If not provided then the Lowest Display Height will be defined by the lowest Height in the Terrain Profile itself.
highestDisplayHeight
• This specifies the highest height to display in the resulting Terrain Profile image.
• This parameter is optional
• If not provided then the Highest Display Height will be defined by the highest Height in the Terrain Profile itself.
requiredDisplayWidth/requiredDisplayHeight (Required Display)
• These two parameters define the resulting image’s size in pixels.
displayStyle (Display Style)
• This specifies the display style to use when generating the Terrain Profile image.
• The available display styles are defined in the ‘TerrainProfileWPSplugin.ini’ file.
• The value for this parameter must match the configuration file’s ‘identifier’ value within any of the ‘Colour’ sections.
There is only one type of output, which is the resulting Terrain Profile image.
Available Formats
There are two available image formats:
• png
• tiff - this is not always recognised by internet browsers, so can force a download instead of being able to view directly in the browser.
Note: The resulting format will not have an alpha channel.
Distribution
There are two ways of distributing the image:
• Raw Data Format - This will simply return the binary image directly in the response without any XML.
• Response Document as reference - This will store the resulting image in the WPS store and will return a url via the XML response. The caller can use this url to access the image. The length of time the image will be stored is defined in the ‘MapLinkWPSConfiguration.xml’ file.
Note: Complex binary data (image data) cannot be returned through the response document directly, only as a reference (this is as per the WPS specifications).
Before the deployment of a WPS Plugin can take place it is assumed all WPS deployment steps have already taken place.
• Add a new ‘DataSource’ xml element to the MapLink WPS Configuration File.
• Set the ‘Plugin’ element to ‘TerrainProfileWPSPlugin’
• Set the ‘ConfigPath’ element to point to the ImportRasterWPSplugin.ini file (a copy of which is located in the config/plugins folder).
• Leave the DataPath xml element empty as it is not used.
Sample:
<mwps:DataSource>
<mwps:Plugin>ImportRasterWPSPlugin</mwps:Plugin>
<mwps:DataPath></mwps:DataPath>
<mwps:ConfigPath>
config\plugins\ImportRasterWPSplugin.ini
</mwps:ConfigPath>
</mwps:DataSource>
Check through the ImportRasterWPSplugin.ini file. The configuration file’s comments will instruct on what the various values mean.
Sample GET Call
http://localhost:8080/MapLinkOGCServices/OGC?&service=WPS&request=DescribeProcess&version=1.0.0&identifier=ImportRasterWPS
Sample POST Call
http://localhost:8080/MapLinkOGCServices/OGC?
POST data:
<?xml version="1.0" encoding="UTF-8"?>
<wps:DescribeProcess service="WPS" version="1.0.0" xmlns:wps="http://www.opengis.net/wps/1.0.0" xmlns:ows="http://www.opengis.net/ows/1.1" >
<ows:Identifier>ImportRasterWPS</ows:Identifier>
</wps:DescribeProcess >
Response Description
The response to this request will provide details of the parameters and outputs each service provides.
Sample GET Call
http://localhost:8080/MapLinkOGCServices/OGC?&service=WPS&request=Execute&version=1.0.0&identifier=TerrainProfileWPS&datainputs=source=sanfran;profilePoints=37.726258,-122.111137,37.724840,-122.108669;viewShedPointSpacing=100;requiredDisplayWidth=800;requiredDisplayHeight=600;displayStyle=clearVis&RawDataOutput=image=@mimetype=image/png
Sample POST Call See Section 7.1.6.
source (Source Data)
• This specifies which source data to perform a Terrain Profile against.
• The available source data are defined in the ‘TerrainProfileWPSplugin.ini’ file.
• The value for this parameter must match the configuration file’s ‘identifier’ value within any of the ‘SourceData’ sections.
profilePoints
• This is a GML string (for GET requests it is a comma delimited list of coordinates)
• This specifies a route which will be simplified, the result of which is used to generate a Terrain Profile.
• The XY points of the viewing location must be in WGS84 (lat/lon)
breakdownPointSpacing
• This defines the number of meters to exist between each profile point above.
scaleOutput
• This sets whether the resulting Terrain Profile image is scaled vertically
• This parameter is optional
• By default this is flag off
lowestDisplayHeight
• This specifies the lowest height to display in the resulting Terrain Profile image.
• This parameter is optional
• If not provided then the Lowest Display Height will be defined by the lowest Height in the Terrain Profile itself.
highestDisplayHeight
• This specifies the highest height to display in the resulting Terrain Profile image.
• This parameter is optional
• If not provided then the Highest Display Height will be defined by the highest Height in the Terrain Profile itself.
requiredDisplayWidth/requiredDisplayHeight (Required Display)
• These two parameters define the resulting image’s size in pixels.
displayStyle (Display Style)
• This specifies the display style to use when generating the Terrain Profile image.
• The available display styles are defined in the ‘TerrainProfileWPSplugin.ini’ file.
• The value for this parameter must match the configuration file’s ‘identifier’ value within any of the ‘Colour’ sections.
There is only one type of output, which is the resulting Terrain Profile image.
Available Formats
There are two available image formats:
• png
• tiff - this is not always recognised by internet browsers, so can force a download instead of being able to view directly in the browser.
Note: The resulting format will not have an alpha channel.
Distribution
There are two ways of distributing the image:
• Raw Data Format - This will simply return the binary image directly in the response without any XML.
• Response Document as reference - This will store the resulting image in the WPS store and will return a url via the XML response. The caller can use this url to access the image. The length of time the image will be stored is defined in the ‘MapLinkWPSConfiguration.xml’ file.
Note: Complex binary data (image data) cannot be returned through the response document directly, only as a reference (this is as per the WPS specifications).
Calculate a route with a response document returned
<?xml version="1.0" encoding="UTF-8"?>
<wps:Execute service="WPS" version="1.0.0" xmlns:wps="http://www.opengis.net/wps/1.0.0" xmlns:ows="http://www.opengis.net/ows/1.1" >
<ows:Identifier>RouteWPS</ows:Identifier>
<wps:DataInputs>
<wps:Input>
<ows:Identifier>network</ows:Identifier>
<ows:Title>Network Identifier</ows:Title>
<wps:Data>
<wps:LiteralData>63843-SZ1085</wps:LiteralData>
</wps:Data>
</wps:Input>
<wps:Input>
<ows:Identifier>routeAlgorithm</ows:Identifier>
<ows:Title>Route Algorithm</ows:Title>
<wps:Data>
<wps:LiteralData>shortest</wps:LiteralData>
</wps:Data>
</wps:Input>
<wps:Input>
<ows:Identifier>costAlgorithm</ows:Identifier>
<ows:Title>Cost Algorithm</ows:Title>
<wps:Data>
<wps:LiteralData>simple</wps:LiteralData>
</wps:Data>
</wps:Input>
<wps:Input>
<ows:Identifier>vehicleType</ows:Identifier>
<ows:Title>Vehicle Type</ows:Title>
<wps:Data>
<wps:LiteralData>car</wps:LiteralData>
</wps:Data>
</wps:Input>
<wps:Input>
<ows:Identifier>start_lat</ows:Identifier>
<ows:Title>Start Latitude</ows:Title>
<wps:Data>
<wps:LiteralData>50.719920462855171</wps:LiteralData>
</wps:Data>
</wps:Input>
<wps:Input>
<ows:Identifier>start_lon</ows:Identifier>
<ows:Title>Start Longitude</ows:Title>
<wps:Data>
<wps:LiteralData>-1.7880410120157533</wps:LiteralData>
</wps:Data>
</wps:Input>
<wps:Input>
<ows:Identifier>end_lat</ows:Identifier>
<ows:Title>End Latitude</ows:Title>
<wps:Data>
<wps:LiteralData>50.771014202442693</wps:LiteralData>
</wps:Data>
</wps:Input>
<wps:Input>
<ows:Identifier>end_lon</ows:Identifier>
<ows:Title>End Longitude</ows:Title>
<wps:Data>
<wps:LiteralData>-1.8326848043536101</wps:LiteralData>
</wps:Data>
</wps:Input>
</wps:DataInputs>
<wps:ResponseForm>
<wps:ResponseDocument>
<wps:Output asReference="false" >
<ows:Identifier>gml</ows:Identifier>
</wps:Output>
<wps:Output asReference="false" >
<ows:Identifier>directions</ows:Identifier>
</wps:Output>
</wps:ResponseDocument>
</wps:ResponseForm>
</wps:Execute>
Calculate a route with a raw output returned
<?xml version="1.0" encoding="UTF-8"?>
<wps:Execute service="WPS" version="1.0.0" xmlns:wps="http://www.opengis.net/wps/1.0.0" xmlns:ows="http://www.opengis.net/ows/1.1" >
<ows:Identifier>RouteWPS</ows:Identifier>
<wps:DataInputs>
<wps:Input>
<ows:Identifier>network</ows:Identifier>
<ows:Title>Network Identifier</ows:Title>
<wps:Data>
<wps:LiteralData>63843-SZ1085</wps:LiteralData>
</wps:Data>
</wps:Input>
<wps:Input>
<ows:Identifier>routeAlgorithm</ows:Identifier>
<ows:Title>Route Algorithm</ows:Title>
<wps:Data>
<wps:LiteralData>shortest</wps:LiteralData>
</wps:Data>
</wps:Input>
<wps:Input>
<ows:Identifier>costAlgorithm</ows:Identifier>
<ows:Title>Cost Algorithm</ows:Title>
<wps:Data>
<wps:LiteralData>simple</wps:LiteralData>
</wps:Data>
</wps:Input>
<wps:Input>
<ows:Identifier>vehicleType</ows:Identifier>
<ows:Title>Vehicle Type</ows:Title>
<wps:Data>
<wps:LiteralData>car</wps:LiteralData>
</wps:Data>
</wps:Input>
<wps:Input>
<ows:Identifier>start_lat</ows:Identifier>
<ows:Title>Start Latitude</ows:Title>
<wps:Data>
<wps:LiteralData>50.719920462855171</wps:LiteralData>
</wps:Data>
</wps:Input>
<wps:Input>
<ows:Identifier>start_lon</ows:Identifier>
<ows:Title>Start Longitude</ows:Title>
<wps:Data>
<wps:LiteralData>-1.7880410120157533</wps:LiteralData>
</wps:Data>
</wps:Input>
<wps:Input>
<ows:Identifier>end_lat</ows:Identifier>
<ows:Title>End Latitude</ows:Title>
<wps:Data>
<wps:LiteralData>50.771014202442693</wps:LiteralData>
</wps:Data>
</wps:Input>
<wps:Input>
<ows:Identifier>end_lon</ows:Identifier>
<ows:Title>End Longitude</ows:Title>
<wps:Data>
<wps:LiteralData>-1.8326848043536101</wps:LiteralData>
</wps:Data>
</wps:Input>
</wps:DataInputs>
<wps:ResponseForm>
<wps:RawDataOutput mimeType="text/xml">
<ows:Identifier>gml</ows:Identifier>
</wps:RawDataOutput>
</wps:ResponseForm>
</wps:Execute>
Calculate a route with a response document returned
<?xml version="1.0" encoding="utf-8"?>
<wps:Execute service="WPS" version="1.0.0" xmlns:wps="http://www.opengis.net/wps/1.0.0" xmlns:ows="http://www.opengis.net/ows/1.1" >
<ows:Identifier>${WPS_valid_identifier}</ows:Identifier>
source=sanfran
view_lat=37.711949
view_lon=-122.308167
view_height=0
view_htype=groundHeight
view_minRadius=0
view_maxRadius=10000
target_height=0
target_htype=groundHeight
requiredDisplayWidth=800
requiredDisplayHeight=600
requiredDisplayExtent=-122.420041,37.612468,-122.167013,37.822128,EPSG:4326
displayStyle=redGreen
<wps:DataInputs>
<wps:Input>
<ows:Identifier>source</ows:Identifier>
<ows:Title>Data Source</ows:Title>
<wps:Data>
<wps:LiteralData>sanfran</wps:LiteralData>
</wps:Data>
</wps:Input>
<wps:Input>
<ows:Identifier>view_lat</ows:Identifier>
<ows:Title>Viewing Latitude</ows:Title>
<wps:Data>
<wps:LiteralData>37.711949</wps:LiteralData>
</wps:Data>
</wps:Input>
<wps:Input>
<ows:Identifier>view_lon</ows:Identifier>
<ows:Title>Viewing Longitude</ows:Title>
<wps:Data>
<wps:LiteralData>-122.308167</wps:LiteralData>
</wps:Data>
</wps:Input>
<wps:Input>
<ows:Identifier>view_height</ows:Identifier>
<ows:Title>Viewing Height</ows:Title>
<wps:Data>
<wps:LiteralData>0</wps:LiteralData>
</wps:Data>
</wps:Input>
<wps:Input>
<ows:Identifier>view_htype</ows:Identifier>
<ows:Title>Viewing Height Type</ows:Title>
<wps:Data>
<wps:LiteralData>groundHeight</wps:LiteralData>
</wps:Data>
</wps:Input>
<wps:Input>
<ows:Identifier>view_maxRadius</ows:Identifier>
<ows:Title>Viewing Maximum Radius</ows:Title>
<wps:Data>
<wps:LiteralData>10000</wps:LiteralData>
</wps:Data>
</wps:Input>
<wps:Input>
<ows:Identifier>requiredDisplayWidth</ows:Identifier>
<ows:Title>Required Display Width</ows:Title>
<wps:Data>
<wps:LiteralData>800</wps:LiteralData>
</wps:Data>
</wps:Input>
<wps:Input>
<ows:Identifier>requiredDisplayHeight</ows:Identifier>
<ows:Title>Required Display Height</ows:Title>
<wps:Data>
<wps:LiteralData>600</wps:LiteralData>
</wps:Data>
</wps:Input>
<wps:Input>
<ows:Identifier>requiredDisplayExtent</ows:Identifier>
<ows:Title>Required Display Extent</ows:Title>
<wps:Data>
<wps:BoundingBoxData ows:crs="EPSG:4326" >
<ows:LowerCorner>-122.420041 37.612468</ows:LowerCorner>
<ows:UpperCorner>-122.167013 37.822128</ows:UpperCorner>
</wps:BoundingBoxData>
</wps:Data>
</wps:Input>
<wps:Input>
<ows:Identifier>displayStyle</ows:Identifier>
<ows:Title>Display Style</ows:Title>
<wps:Data>
<wps:LiteralData>redGreen</wps:LiteralData>
</wps:Data>
</wps:Input>
</wps:DataInputs>
<wps:ResponseForm>
<wps:ResponseDocument>
<wps:Output mimeType="image/png" asReference="true" >
<ows:Identifier>image</ows:Identifier>
</wps:Output>
</wps:ResponseDocument>
</wps:ResponseForm>
</wps:Execute>
Calculate a route with a raw output returned
<?xml version="1.0" encoding="utf-8"?>
<wps:Execute service="WPS" version="1.0.0" xmlns:wps="http://www.opengis.net/wps/1.0.0" xmlns:ows="http://www.opengis.net/ows/1.1" >
<ows:Identifier>${WPS_valid_identifier}</ows:Identifier>
source=sanfran
view_lat=37.711949
view_lon=-122.308167
view_height=0
view_htype=groundHeight
view_minRadius=0
view_maxRadius=10000
target_height=0
target_htype=groundHeight
requiredDisplayWidth=800
requiredDisplayHeight=600
requiredDisplayExtent=-122.420041,37.612468,-122.167013,37.822128,EPSG:4326
displayStyle=redGreen
<wps:DataInputs>
<wps:Input>
<ows:Identifier>source</ows:Identifier>
<ows:Title>Data Source</ows:Title>
<wps:Data>
<wps:LiteralData>sanfran</wps:LiteralData>
</wps:Data>
</wps:Input>
<wps:Input>
<ows:Identifier>view_lat</ows:Identifier>
<ows:Title>Viewing Latitude</ows:Title>
<wps:Data>
<wps:LiteralData>37.711949</wps:LiteralData>
</wps:Data>
</wps:Input>
<wps:Input>
<ows:Identifier>view_lon</ows:Identifier>
<ows:Title>Viewing Longitude</ows:Title>
<wps:Data>
<wps:LiteralData>-122.308167</wps:LiteralData>
</wps:Data>
</wps:Input>
<wps:Input>
<ows:Identifier>view_height</ows:Identifier>
<ows:Title>Viewing Height</ows:Title>
<wps:Data>
<wps:LiteralData>0</wps:LiteralData>
</wps:Data>
</wps:Input>
<wps:Input>
<ows:Identifier>view_htype</ows:Identifier>
<ows:Title>Viewing Height Type</ows:Title>
<wps:Data>
<wps:LiteralData>groundHeight</wps:LiteralData>
</wps:Data>
</wps:Input>
<wps:Input>
<ows:Identifier>view_maxRadius</ows:Identifier>
<ows:Title>Viewing Maximum Radius</ows:Title>
<wps:Data>
<wps:LiteralData>10000</wps:LiteralData>
</wps:Data>
</wps:Input>
<wps:Input>
<ows:Identifier>requiredDisplayWidth</ows:Identifier>
<ows:Title>Required Display Width</ows:Title>
<wps:Data>
<wps:LiteralData>800</wps:LiteralData>
</wps:Data>
</wps:Input>
<wps:Input>
<ows:Identifier>requiredDisplayHeight</ows:Identifier>
<ows:Title>Required Display Height</ows:Title>
<wps:Data>
<wps:LiteralData>600</wps:LiteralData>
</wps:Data>
</wps:Input>
<wps:Input>
<ows:Identifier>requiredDisplayExtent</ows:Identifier>
<ows:Title>Required Display Extent</ows:Title>
<wps:Data>
<wps:BoundingBoxData ows:crs="EPSG:4326" >
<ows:LowerCorner>-122.420041 37.612468</ows:LowerCorner>
<ows:UpperCorner>-122.167013 37.822128</ows:UpperCorner>
</wps:BoundingBoxData>
</wps:Data>
</wps:Input>
<wps:Input>
<ows:Identifier>displayStyle</ows:Identifier>
<ows:Title>Display Style</ows:Title>
<wps:Data>
<wps:LiteralData>redGreen</wps:LiteralData>
</wps:Data>
</wps:Input>
</wps:DataInputs>
<wps:ResponseForm>
<wps:RawDataOutput mimeType="image/png">
<ows:Identifier>image</ows:Identifier>
</wps:RawDataOutput>
</wps:ResponseForm>
</wps:Execute>
<?xml version="1.0" encoding="utf-8"?>
<wps:Execute service="WPS" version="1.0.0" xmlns:wps="http://www.opengis.net/wps/1.0.0" xmlns:ows="http://www.opengis.net/ows/1.1" >
<ows:Identifier>${WPS_Multi_Service_Identifier}</ows:Identifier> source=sanfran view_lat=37.711949 view_lon=-122.308167 view_height=0 view_htype=groundHeight view_minRadius=0 view_maxRadius=10000 target_height=0 target_htype=groundHeight requiredDisplayWidth=800 requiredDisplayHeight=600 requiredDisplayExtent=-122.420041,37.612468,-122.167013,37.822128,EPSG:4326 displayStyle=redGreen <wps:DataInputs>
<wps:Input>
<ows:Identifier>source</ows:Identifier>
<ows:Title>Data Source</ows:Title>
<wps:Data>
<wps:LiteralData>sanfran</wps:LiteralData>
</wps:Data>
</wps:Input>
<wps:Input>
<ows:Identifier>viewPoints</ows:Identifier>
<ows:Title>Viewing Points</ows:Title>
<wps:Data>
<wps:LiteralData><gml:LineString srsName="EPSG:4326"> <gml:posList srsDimension="3">-122.308167 37.711949 0.0</gml:posList> </gml:LineString></wps:LiteralData>
</wps:Data>
</wps:Input>
<wps:Input>
<ows:Identifier>view_htype</ows:Identifier>
<ows:Title>Viewing Height Type</ows:Title>
<wps:Data>
<wps:LiteralData>groundHeight</wps:LiteralData>
</wps:Data>
</wps:Input>
<wps:Input>
<ows:Identifier>view_maxRadius</ows:Identifier>
<ows:Title>Viewing Maximum Radius</ows:Title>
<wps:Data>
<wps:LiteralData>10000</wps:LiteralData>
</wps:Data>
</wps:Input>
<wps:Input>
<ows:Identifier>requiredDisplayWidth</ows:Identifier>
<ows:Title>Required Display Width</ows:Title>
<wps:Data>
<wps:LiteralData>800</wps:LiteralData>
</wps:Data>
</wps:Input>
<wps:Input>
<ows:Identifier>requiredDisplayHeight</ows:Identifier>
<ows:Title>Required Display Height</ows:Title>
<wps:Data>
<wps:LiteralData>600</wps:LiteralData>
</wps:Data>
</wps:Input>
<wps:Input>
<ows:Identifier>requiredDisplayExtent</ows:Identifier>
<ows:Title>Required Display Extent</ows:Title>
<wps:Data>
<wps:BoundingBoxData ows:crs="EPSG:4326" >
<ows:LowerCorner>-122.420041 37.612468</ows:LowerCorner>
<ows:UpperCorner>-122.167013 37.822128</ows:UpperCorner>
</wps:BoundingBoxData>
</wps:Data>
</wps:Input>
<wps:Input>
<ows:Identifier>displayStyle</ows:Identifier>
<ows:Title>Display Style</ows:Title>
<wps:Data>
<wps:LiteralData>redGreen</wps:LiteralData>
</wps:Data>
</wps:Input>
</wps:DataInputs> <wps:ResponseForm>
<wps:RawDataOutput mimeType="image/png">
<ows:Identifier>image</ows:Identifier>
</wps:RawDataOutput>
</wps:ResponseForm>
</wps:Execute>
<?xml version="1.0" encoding="utf-8"?>
<wps:Execute service="WPS" version="1.0.0" xmlns:wps="http://www.opengis.net/wps/1.0.0" xmlns:ows="http://www.opengis.net/ows/1.1" >
<ows:Identifier>${WPS_Route_Service_Identifier}</ows:Identifier>
<wps:DataInputs>
<wps:Input>
<ows:Identifier>source</ows:Identifier>
<ows:Title>Data Source</ows:Title>
<wps:Data>
<wps:LiteralData>britsouth</wps:LiteralData>
</wps:Data>
</wps:Input>
<wps:Input>
<ows:Identifier>routePoints</ows:Identifier>
<ows:Title>Route Points</ows:Title>
<wps:Data>
<wps:LiteralData><gml:LineString> <gml:posList> 51.1244288 -1.8908794 51.1244876 -1.8914126 51.1245858 -1.8921404 51.1245918 -1.892175</gml:posList> </gml:LineString></wps:LiteralData>
</wps:Data>
</wps:Input>
<wps:Input>
<ows:Identifier>viewShedPointSpacing</ows:Identifier>
<ows:Title>View Shed Point Spacing</ows:Title>
<wps:Data>
<wps:LiteralData>300</wps:LiteralData>
</wps:Data>
</wps:Input>
<wps:Input>
<ows:Identifier>view_height</ows:Identifier>
<ows:Title>Viewing Height</ows:Title>
<wps:Data>
<wps:LiteralData>0</wps:LiteralData>
</wps:Data>
</wps:Input>
<wps:Input>
<ows:Identifier>view_htype</ows:Identifier>
<ows:Title>Viewing Height Type</ows:Title>
<wps:Data>
<wps:LiteralData>groundHeight</wps:LiteralData>
</wps:Data>
</wps:Input>
<wps:Input>
<ows:Identifier>view_maxRadius</ows:Identifier>
<ows:Title>Viewing Maximum Radius</ows:Title>
<wps:Data>
<wps:LiteralData>3000</wps:LiteralData>
</wps:Data>
</wps:Input>
<wps:Input>
<ows:Identifier>requiredDisplayWidth</ows:Identifier>
<ows:Title>Required Display Width</ows:Title>
<wps:Data>
<wps:LiteralData>800</wps:LiteralData>
</wps:Data>
</wps:Input>
<wps:Input>
<ows:Identifier>requiredDisplayHeight</ows:Identifier>
<ows:Title>Required Display Height</ows:Title>
<wps:Data>
<wps:LiteralData>600</wps:LiteralData>
</wps:Data>
</wps:Input>
<wps:Input>
<ows:Identifier>requiredDisplayExtent</ows:Identifier>
<ows:Title>Required Display Extent</ows:Title>
<wps:Data>
<wps:BoundingBoxData ows:crs="EPSG:4326" >
<ows:LowerCorner>-1.98 51.096</ows:LowerCorner>
<ows:UpperCorner>-1.7925 51.2125</ows:UpperCorner>
</wps:BoundingBoxData>
</wps:Data>
</wps:Input>
<wps:Input>
<ows:Identifier>displayStyle</ows:Identifier>
<ows:Title>Display Style</ows:Title>
<wps:Data>
<wps:LiteralData>redGreen</wps:LiteralData>
</wps:Data>
</wps:Input>
</wps:DataInputs>
<wps:ResponseForm>
<wps:RawDataOutput mimeType="image/png">
<ows:Identifier>image</ows:Identifier>
</wps:RawDataOutput>
</wps:ResponseForm>
</wps:Execute>
<?xml version="1.0" encoding="utf-8"?>
<wps:Execute service="WPS" version="1.0.0" xmlns:wps="http://www.opengis.net/wps/1.0.0" xmlns:ows="http://www.opengis.net/ows/1.1" >
<ows:Identifier>${WPS_RouteBreakdown_Service_Identifier}</ows:Identifier>
<wps:DataInputs>
<wps:Input>
<ows:Identifier>routePoints</ows:Identifier>
<ows:Title>Route Points</ows:Title>
<wps:Data>
<wps:LiteralData><gml:LineString> <gml:posList> 51.1244288 -1.8908794 51.1244876 -1.8914126 51.1245858 -1.8921404 51.1245918 -1.892175</gml:posList> </gml:LineString></wps:LiteralData>
</wps:Data>
</wps:Input>
<wps:Input>
<ows:Identifier>viewShedPointSpacing</ows:Identifier>
<ows:Title>View Shed Point Spacing</ows:Title>
<wps:Data>
<wps:LiteralData>300</wps:LiteralData>
</wps:Data>
</wps:Input>
</wps:DataInputs>
<wps:ResponseForm>
<wps:RawDataOutput asReference="false" mimeType="text/xml" >
<ows:Identifier>gmlDoc</ows:Identifier>
</wps:RawDataOutput>
</wps:ResponseForm>
</wps:Execute>
6.1.6. Terrain Profile
<?xml version="1.0" encoding="utf-8"?>
<wps:Execute service="WPS" version="1.0.0" xmlns:wps="http://www.opengis.net/wps/1.0.0" xmlns:ows="http://www.opengis.net/ows/1.1" >
<ows:Identifier>TerrainProfileWPS</ows:Identifier>
<wps:DataInputs>
<wps:Input>
<ows:Identifier>source</ows:Identifier>
<ows:Title>Data Source</ows:Title>
<wps:Data>
<wps:LiteralData>britsouth</wps:LiteralData>
</wps:Data>
</wps:Input>
<wps:Input>
<ows:Identifier>profilePoints</ows:Identifier>
<ows:Title>Profile Points</ows:Title>
<wps:Data>
<wps:LiteralData><gml:LineString> <gml:posList> 51.1244288 -1.8908794 51.1244876 -1.8914126 51.1245858 -1.8921404 51.1245918 -1.892175 51.1247118 -1.8928772 51.124728 -1.892973 51.1247406 -1.893031 51.1247762 -1.8931956 51.1248092 -1.8933476 51.1248818 -1.8936022 51.1248852 -1.8936134 51.1249268 -1.8937474 51.1249416 -1.8937954 51.12503 -1.8940084 51.125082 -1.8941212 51.1251134 -1.8941892 51.125116 -1.8941948 51.1251326 -1.894223 51.1251936 -1.8943274 51.1252106 -1.8943562 51.1253438 -1.8945474 51.125419 -1.8946498 51.1254276 -1.8946614 51.1254478 -1.8946888 51.1256586 -1.8949432 51.1258912 -1.895222 51.1259956 -1.8953472 51.12614 -1.8955296 51.1262442 -1.8956614 51.1263964 -1.8958544 51.1266578 -1.896192 51.1268586 -1.8965088 51.1268666 -1.8965214 51.1268742 -1.8965354 51.1269822 -1.8967344 51.1270778 -1.896944 51.1272112 -1.897212 51.1273004 -1.8973834 51.1274032 -1.8975514 51.1275492 -1.8977826 51.1276584 -1.8979274 51.1277392 -1.898022 51.127824 -1.8981002 51.1280224 -1.898268 51.1282762 -1.898464 51.1284588 -1.8985836 51.1286034 -1.8986632 51.1287272 -1.8987162 51.1288718 -1.8987592 51.1289998 -1.898774 51.1290436 -1.898772 51.1290884 -1.89877 51.1291518 -1.898767 51.1291792 -1.8987602 51.1292108 -1.8987522 51.1292786 -1.898735 51.1294754 -1.8986568 51.1295982 -1.8986078 51.129833 -1.8985172 51.1300374 -1.8984566 51.1300876 -1.8984418 51.1304084 -1.8983778 51.130617 -1.898349 51.1308706 -1.898325 51.1310268 -1.8983264 51.1312532 -1.898356 51.1314168 -1.8983938 51.131572 -1.8984436 51.131767 -1.898523 51.131872 -1.8985812 51.1320218 -1.8985624 51.1320952 -1.8985606 51.1321928 -1.8985472 51.1322766 -1.8984786 51.132437 -1.898395 51.1325562 -1.8983314 51.13277 -1.8981944 51.1329388 -1.8981222 51.133052 -1.8981138 51.1331966 -1.89815 51.1332836 -1.8982216 51.133419 -1.8983562 51.1335554 -1.8985192 51.133695 -1.8986754</gml:posList> </gml:LineString></wps:LiteralData>
</wps:Data>
</wps:Input>
<wps:Input>
<ows:Identifier>viewShedPointSpacing</ows:Identifier>
<ows:Title>View Shed Point Spacing</ows:Title>
<wps:Data>
<wps:LiteralData>300</wps:LiteralData>
</wps:Data>
</wps:Input>
<wps:Input>
<ows:Identifier>lowestDisplayHeight</ows:Identifier>
<wps:Data>
<wps:LiteralData>-100</wps:LiteralData>
</wps:Data>
</wps:Input>
<wps:Input>
<ows:Identifier>highestDisplayHeight</ows:Identifier>
<wps:Data>
<wps:LiteralData>50</wps:LiteralData>
</wps:Data>
</wps:Input>
<wps:Input>
<ows:Identifier>requiredDisplayWidth</ows:Identifier>
<ows:Title>Required Display Width</ows:Title>
<wps:Data>
<wps:LiteralData>1600</wps:LiteralData>
</wps:Data>
</wps:Input>
<wps:Input>
<ows:Identifier>requiredDisplayHeight</ows:Identifier>
<ows:Title>Required Display Height</ows:Title>
<wps:Data>
<wps:LiteralData>600</wps:LiteralData>
</wps:Data>
</wps:Input>
<wps:Input>
<ows:Identifier>displayStyle</ows:Identifier>
<ows:Title>Display Style</ows:Title>
<wps:Data>
<wps:LiteralData>redGreen</wps:LiteralData>
</wps:Data>
</wps:Input>
</wps:DataInputs>
<wps:ResponseForm>
<wps:RawDataOutput mimeType="image/png">
<ows:Identifier>image</ows:Identifier>
</wps:RawDataOutput>
</wps:ResponseForm>
</wps:Execute>