Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

The minimum setup required for a WMS map engine is the capabilities url 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 . It can help resolve issues with WMS servers.

...

urn:com.cohga.server.map.wms#1.0

Tags

mapengine

Properties

Name

Type

Required

Default

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 on 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

first format reported by map engine

Default format that the map engine will request from the WMS server if one is not specified.

transparent

boolean

no

false

Determines if the areas of the image

that are

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

white

The RGB value for the image background if transparency is not enabled

, the default is #ffffff

username

string

no


A username

to connect

for connecting to the server

as

.

password

string

no


A password for connecting to

connect to

the server

as

. This should be encrypted using 'encrypt' at the osgi prompt.

qgis

boolean

no


Force the map engine

as

to be treated as though it were

QGis

QGIS. Weave will try

and figure out

to determine if the underlying WMS service is

QGis

provided by QGIS and perform additional optimisations and expose additional capabilities if it is

, but sometimes

.

Sometimes Weave might not be able to determine this correctly, in which case you can set this property to true in the

config

configuration and the map engine will be treated as though it were being served from

QGis

QGIS.

Additionally if

If Weave

is

incorrectly

guessing

determines that

a

the WMS service is

QGis

QGIS when it

isn't

is not, then you can set this property to false to disable the additional functionality. (Note: Weave does not automatically identify

QGis

QGIS 3.4 hence the need to set qgis=true.)

geoserver

boolean

no


Force the map engine to be treated as though it were GeoServer. Weave will try and determine if the underlying WMS service is provided by GeoServer and 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 GeoServer.

If Weave incorrectly determines that the WMS service is GeoServer when it is not, then you can set this property to false to disable the additional functionality.

arcgis

boolean

no


Force the map engine to be treated as though it were ArcGIS. Weave will try and determine if the underlying WMS service is provided by ArcGIS and 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 ArcGIS.

If Weave incorrectly determines that the WMS service is ArcGIS when it is not, then you can set this property to false to disable the additional functionality.

arcims

boolean

no


For those still using ArcIMS I'm sure you can figure out what this property does by reading the three properties before this one

disableTests

boolean

no

false

Set to true to disable the background checks to validate WMS connections

testInterval

integer

no

60,000

milliseconds

Milliseconds between tests when the WMS connection is working (minimum 15,000)

testIntervalWhileFailing

integer

no

15,000

milliseconds

Milliseconds between tests when the WMS connection is failing (minimum 5,000)

testFailingDuration

integer

no

300,000

how

How long before a failing WMS connection is determined to have failed (minimum 60,000)

testIntervalWhenFailed

integer

no

600,000

milliseconds

Milliseconds between tests when the WMS connection has failed (minimum 120,000)

cql

boolean

no

false

Set to true if the map engine supports filtering using CQL. If the map engine is one that is not directly supported by Weave but does support using CQL to filter layers then setting this to true will enable the support for layer filtering using CQL.

cqlparamname

string

no

cql_filter

The name of the parameter to add to the request URL if CQL filtering support was enabled by setting cql to true

cqlseparator

string

no

;

The filter separator to add to the request if CQL filtering support was enabled by setting cql to true

Sub-tags

Name

Type

type

Cardinality

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 crs tags a map engine will report all the projections the WMS server says it supports. By adding one or more crs tag you can refine this list so that the map engine only includes those projections that you're actually interested in using (which helps to improve performance). 

tokens

#tokens

0..1

Additional tokens to add to the request. The tokens available are dependent on the WMS server implementation and are generally used to support implementation specific extensions to the WMS specification.

legend

#legend

0..1

Modify the legend. Available from 2.6.9.

layers

Sub-tags

Name

type

Type

cardinality

Cardinality

layer

#layer

0..n

remove

#remove

0..1


Info

You should include one remove tag or one or more layer tags, not both.

remove

Sub-tags

Name

type

Type

cardinality

Cardinality

layer

#layer

1..n

sort

Properties

Name

Type

Required

Description

method

"firsttolast" or "lasttofirst"

no

Default is firsttolast. It specifies if the layer list specifies layers to be sorted from top to bottom or from bottom to top.

Sub-tags

Name

type

Type

cardinality

Cardinality

layer

#layer

2..n

layer

Content

The id of the layer

...

styles

Properties

None.

Sub-tags

Name

type

Type

cardinality

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

CRS's

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

...

tokens

Tokens provide a way for the administrator to include additional parameters in the URL sent to the WMS server

Properties

Name

Type

Required

Default

Description

tokenJoinDelimiter

string

no

;

value to use to join multiple tokens with the same name, since 2.6.7

Sub-tags

Name

Type

Cardinality

token

#token

1..n

token

Properties

Name

Type

Required

Default

Description

name

string

yes


The name of the token

value

string

yes


The value of the token

legendOnly

boolean

no

false if layer is empty

true if layer is not empty

Should this token only be applied to requests that are generating a legend

layer

string

no


Comma separated list of layer id's for which this token should be included, can be used to further restrict when the token is sent, and allows for different tokens to be sent for different layers. Only applies if legendOnly is true

prefix

string

no


Value to be prepended to the token value, since 2.6.7

infix

string

no

or

Value to be used to join multiple user attributes, since 2.6.7

suffix

string

no


Value to be appended to the token value, since 2.6.7

default

string

no


Value to be used if user attribute substitution does not provide a value, since 2.6.7

legend

Properties

Sub-tags

Name

Type

Cardinality

remove

#remove

0..1

aliases

#aliases

0..1

aliases

List the new labels to be displayed for a layer

Properties

None

Sub-tags


Name

Type

Cardinality

alias

#alias

1..n


Content

None

alias

A single label change for a layer

Properties


Name

Type

Required

Description

id

string

yes

The id of the layer to change. Note if a match is not found for the id the label of the layer will be then be searched for.

label

string

yes

The new label to display


Sub-tags

None

Content

None

Examples

Filtering layers to only include specific layers
Code Block
languagexml
<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>
Code Block
title


Filtering layers to remove specific layers
Code Block
languagexml
<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>


Sorting layers
title
Code Block
titlelanguageSorting layersxml
<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>
Code Block


Sorting layers by moving one layer to the bottom
Code Block
languagexml
<wms:mapengine id="test">
  <url>http://server/wms/test</url>
  <sort method='lasttofirst'>
    <layer>photo</layer>
  </sort>
</wms:mapengine>


Applying styles
Code Block
titlelanguageApplying stylesxml
<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>


Adding authentication
title
Code Block
titlelanguageAdding authenticationxml
<wms:mapengine id="test">
  <url>http://username:password@server/wms/test</url>
</wms:mapengine>
Code Block


Refine the list of supported CRS's for the map engine
Code Block
languagexml
<wms:mapengine id="test">
  <url>http://server/wms/test</url>
  <crs>EPSG:4326</crs>
  <crs>EPSG:28355</crs>
  <crs>EPSG:3857</crs>
</wms:mapengine>


Adding tokens
Code Block
languagexml
<wms:mapengine id="test">
  <url>http://server/wms/test</url>
  <tokens>
    <token name="VIEWPARAMS" value="${user.filter.status}" prefix="STATUS:" infix=","/>
    <token name="VIEWPARAMS" value="USER:${user.id}"/>
    <token name="BACKFILL" value="true" legendOnly="true" layer="ward,busroutes"/> <!-- BACKFILL will be true for ward and busroutes -->
    <token name="BACKFILL" value="false" legendOnly="true"/> <!-- BACKFILL will be false for any other layers -->
  </tokens>
</wms:mapengine>


Editing legend content
Code Block
languagexml
<wms:mapengine id="test">
  <url>http://server/wms/test</url>
  <legend>
    <remove>
      <layer>easetxt</layer>
      <layer>house_numbers</layer>
    </remove>
    <aliases>
      <alias id="property" label="Properties"/>
    </aliases>
  </legend>
</wms:mapengine>


Note

As of version 1.3.7 of the WMS bundle, the password can be encrypted using the osgi 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 server unless it's specifically asked to, which can be done by including a VERSION parameters in the map engine url attribute, e.g.

...

...

Enabling support for WMS 1.3.0
Code Block
languagexml
<wms:mapengine id="test">
  <url>http://server/wms/test?VERSION=1.3.0</url>
</wms:mapengine>

If you're lucky this is This is typically all you need to do to enable support for WMS 1.3.0. If you're unlucky 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, and it's update . It is updated 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.

...

...

Swapping coordinate order for a WMS map engine
Code Block
languagexml
<wms:mapengine id="test">
  <url>http://server/wms/test?VERSION=1.3.0</url>
  <swapAxis>true</swapAxis>
</wms:mapengine>

...

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 urlURL, to enable WMS 1.3 support, but that too may be removed eventually).

Unfortunately to 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.

Metromap

When using Metromap as a WMS map engine, there are two different methods available to provide the API key in the URL you have to configure for the map engine. One format sets the API key as a parameter and the other method embeds the API key within the URL path, see this page for more info.

The format with the API key set as a query parameter will not work with Weave, you have to use the format where the API key is provided as part of the URL path as shown below.

Required format for Metromap URL
Code Block
https://api.metromap.com.au/api-link/{YOUR_API_KEY}/wms