The minimum setup required for a WMS map engine is the capabilities URL for the service.
Optionally you can specify the format of the image generated (gif, jpeg, png, etc.), if the background of the image should be transparent or not, and if not, the colour of the background.
You are also able to change the colours or styling Weave uses to colour selections.
A WMS Tester tool is available from here. It can help resolve issues with WMS servers.
Namespace
urn:com.cohga.server.map.wms#1.0
Tags
mapengine
Properties
Name | Type | Required | Description |
---|---|---|---|
id | string | yes | Unique identifier |
url | string | yes | The capabilities URL for the WMS service. You should not include the SERVICE, REQUEST or VERSION parameters in the URL, just use the base URL, these parameters will be added automatically based on the type of request that is being made. Note: WMS version 1.3.0 may be forced by including the URL VERSION parameter, however this is not recommended and Weave will use WMS version 1.1.1 by default. |
format | string | no | Default format that the map engine will request from the WMS server if one is not specified. |
transparent | boolean | no | Determines if the areas of the image not covered by spatial data are rendered as transparent or as a solid colour (as set by the background property). Enabling transparency requires an image format that supports it (jpeg and png24 do not). |
background | integer | no | The RGB value for the image background if transparency is not enabled, the default is #ffffff |
username | string | no | A username for connecting to the server. |
password | string | no | A password for connecting to the server. This should be encrypted using 'encrypt' at the osgi prompt. |
qgis | boolean | no | Force the map engine to be treated as though it were QGIS. Weave will try to determine if the underlying WMS service is QGIS, perform additional optimisations and expose additional capabilities if it is. Sometimes Weave might not be able to determine this correctly, in which case you can set this property to true in the configuration and the map engine will be treated as though it were being served from QGIS. If Weave incorrectly determines that the WMS service is QGIS when it is not, then you can set this property to false to disable the additional functionality. (Note: Weave does not automatically identify QGIS 3.4 hence the need to set qgis=true .) |
disableTests | boolean | false | Set to true to disable the background checks to validate WMS connections |
testInterval | integer | 60,000 | milliseconds between tests when the WMS connection is working (minimum 15,000) |
testIntervalWhileFailing | integer | 15,000 | milliseconds between tests when the WMS connection is failing (minimum 5,000) |
testFailingDuration | integer | 300,000 | how long before a failing WMS connection is determined to have failed (minimum 60,000) |
testIntervalWhenFailed | integer | 600,000 | milliseconds between tests when the WMS connection has failed (minimum 120,000) |
Sub-tags
Name | Type | Cardinality | Description |
---|---|---|---|
layers | #layers | 0..1 | Refine what layers are included in the map description. |
sort | #sort | 0..1 | |
styles | #style | 0..1 | |
crs | #crs | 0..n | Refine what CRSs the map engine lists as being supported, as opposed to including all of them (as there might be thousands of CRSs that the WMS server says that it supports). Without any |
layers
Sub-tags
Name | Type | Cardinality |
---|---|---|
layer | #layer | 0..n |
remove | #remove | 0..1 |
You should include one remove
tag or one or more layer
tags, not both.
remove
Sub-tags
Name | Type | Cardinality |
---|---|---|
layer | #layer | 1..n |
sort
Properties
Name | Type | Required | Description |
---|---|---|---|
method | "firsttolast" or "lasttofirst" | no | Default is |
Sub-tags
Name | Type | Cardinality |
---|---|---|
layer | #layer | 2..n |
layer
Content
The id of the layer
You do not need to include all layers in the layer list, only those you want moved, which is where the method
property comes in. If you want to list a handful of layers to draw on top then just list them and use firsttolast
(or don't set the method). If you only want to list a handful of layers to move to the bottom on the map then just list them and use lasttofirst
.
styles
Properties
None.
Sub-tags
Name | Type | Cardinality |
---|---|---|
style | #style | 1..n |
style
Properties
Name | Type | Required | Description |
---|---|---|---|
layer | string | yes | The id of the layer, from the map engine, to override the style for |
name | string | yes | The name of the style to use |
crs
Properties
Name | Type | Required | Description |
---|---|---|---|
force | boolean | no | Ensure the CRS is added to the list of available CRSs even if the underlying server doesn't indicate that it supports the EPSG code |
Content
The EPSG code of the coordinate reference system to add
Examples
<wms:mapengine id="test"> <url>http://server/wms/test</url> <layers> <layer>point1</layer> <layer>point2</layer> <layer>line1</layer> <layer>line2</layer> <layer>polygon1</layer> <layer>polygon2</layer> </layers> </wms:mapengine>
<wms:mapengine id="test"> <url>http://server/wms/test</url> <layers> <remove> <layer>point2</layer> <layer>line2</layer> <layer>polygon2</layer> </remove> </layers> </wms:mapengine>
<wms:mapengine id="test"> <url>http://server/wms/test</url> <sort> <layer>point1</layer> <layer>point2</layer> <layer>line1</layer> <layer>line2</layer> <layer>polygon1</layer> <layer>polygon2</layer> </sort> </wms:mapengine>
<wms:mapengine id="test"> <url>http://server/wms/test</url> <sort method='lasttofirst'> <layer>photo</layer> </sort> </wms:mapengine>
<wms:mapengine id="test"> <url>http://server/wms/test</url> <styles> <style layer="property" name="bw_property"/> <style layer="road" name="bw_road"/> </styles> </wms:mapengine>
<wms:mapengine id="test"> <url>http://username:password@server/wms/test</url> </wms:mapengine>
<wms:mapengine id="test"> <url>http://server/wms/test</url> <crs>EPSG:4326</crs> <crs>EPSG:28355</crs> <crs>EPSG:3857</crs> </wms:mapengine>
As of version 1.3.7 of the WMS bundle the password can be encrypted using the osgi encrypt command.
WMS 1.3.0
Don't "upgrade" to WMS 1.3.0 unless you really have to.
Version 2.15.16 of the com.cohga.server.map.wms
bundle (released as part of Weave 2.5.21) improves support for WMS 1.3.0 by supporting map services that require their axis order to be swapped.
Weave disables the use of WMS 1.3.0 when communicating with a WMS sever unless it's specifically asked to, which can be done by including a VERSION
parameters in the map engine url
attribute, e.g.
<wms:mapengine id="test"> <url>http://server/wms/test?VERSION=1.3.0</url> </wms:mapengine>
This is typically all you need to do to enable support for WMS 1.3.0. It is possible that you may be using a coordinate reference system that requires requests sent to the server to reverse the order of x, y coordinates. It is update 2.14.16 of the Weave WMS map engine bundle that allows you to tell Weave to change the order of the coordinates when sending requests to the server. This is done by setting swapAxis
to true
in the map engine config, e.g.
<wms:mapengine id="test"> <url>http://server/wms/test?VERSION=1.3.0</url> <swapAxis>true</swapAxis> </wms:mapengine>
Once this is done Weave will send the bounding box parameter in miny, minx, maxy, maxx
order, rather than minx, miny, maxx, maxy
.
Note that when swapAxis
is true
swapping the axis order is done for all map requests sent to the server, so if you're trying to use a map service using a coordinate reference system that requires swapping of the coordinates, for example EPSG:3006, along with a coordinate reference system that doesn't, for example EPSG:3857, then you will need to create two map engines, one with swapAxis
set to true and one without, and use the appropriate map engine for the different clients (since it's the crs
attribute in the clients map view that determines what coordinate reference system will be used, and it's the coordinate reference system in WMS 1.3.0 that determines the axis order).
Further to this the change between 2.14.16 and 2.15.16 adds the ability for Weave to determine automatically if it should swap the axis or not when working with WMS 1.3, removing the need to use the swapAxis
setting at all and the need to have two map engines configured if you need to use both swapped and un-swapped axis (you still need to include VERSION=1.3.0
in the url, to enable WMS 1.3 support, but that too may be removed eventually).
To enable the automatic determination of whether to swap the axis or not, you must update your startup setting to remove the org.geotools.referencing.forceXY
setting. This is done by editing startup.cmd
(or startup.sh)
or editing wrapper.conf
and removing the option that sets this property to true
, otherwise Weave will always think that the axis order is x, y regardless of the projection used.
Note that setting swapAxis
to false
will force x, y ordering of the axis regardless of what the projection information says.