...
Note |
---|
Currently, all of the data that is drawn by a Weave map engine must come from the same spatial engine, but you can have multiple Weave map engines configured.And the |
Note |
---|
The map engine also only supports vector data, it does not currently support raster data. |
...
urn:com.cohga.server.map.weave#1.0
Tags
mapengine
Properties
Name | Type | Required | Default | Description |
---|---|---|---|---|
id | string | yes | Unique identifier for |
this map engine | |
spatialengine | string |
yes | The spatial engine that will be providing the data | |||
format | string | yes | What image format the map engine will support | |
layers | yes | A list of the layers that this map engine will provide | ||
styles | yes | A list of the styles that can be used to display a layer. Alternatively this can point to an external SLD file | ||
legend | no | Alter the legend display | ||
timeout | integer | no | 10 | Number of second before drawing of map will stop |
antialiasing | boolean | no | true | Should the rendering use antialiasing |
limit | integer | no | Limit the number of features that are drawn on the map to help reduce the time to render the image | |
maxerrorcount | integer | no | 10 | Maximum number of rendering errors that can occur before the rendering is aborted |
layer
Properties
Name | Type | Cardinality | Description |
---|---|---|---|
id | string | 1..1 | The unique id of the layer |
label | string | 1..1 | The user visible label for the label |
layer | string | 1..1 | The layer, within the spatial engine, that this layer will use |
style | #style | 1..1 | The style that this layer should be displayed with |
minscale | number | 0..1 | The minimum scale the layer should be rendered at |
maxscale | number | 0..1 | The maximum scale the layer should be rendered at |
style
Properties
Name | Type | Cardinality | Description |
---|---|---|---|
id | string | 1..1 | The unique id for this style, which can then be referenced by a layer |
type | string | 0..1 | What geometry type does this style represent? point, line or polygon. This is only used if the style is defined inline and not required if this style references an SLD file |
Notes
See the section below on inline styles for information on how the styles are defined.
...
legend
Alter the display of the legend
Properties
None
Sub-tags
Name | Type | Cardinality | Description |
---|---|---|---|
remove | 0..1 | Layers to remove. Layers listed here will not display. | |
layer | 0..n | Layer to include. Only layers listed here will display |
Content
None
remove
Properties
None
Sub-tags
Name | Type | Cardinality |
---|---|---|
layer | 0..n |
Content
None
layer
Properties
None
Content
The name of the layer, or a comma separated list of layer names. Also support * for wildcards.
Sub-tags
None
Examples
Example Weave map engine
Code Block | ||
---|---|---|
| ||
<?xml version="1.0" encoding="UTF-8"?> <config xmlns="urn:com.cohga.server.config#1.0" xmlns:weave="urn:com.cohga.server.map.weave#1.0"> <weave:mapengine id="vector"> <spatialengine>gis</spatialengine> <format>image/png32</format> <layers> <layer id="contours01" label="Contours 1m" layer="GIS.CONTOURS_01M" style="contour"/> <layer id="contours02" label="Contours 2m" layer="GIS.CONTOURS_02M" style="contour"/> <layer id="contours05" label="Contours 5m" layer="GIS.CONTOURS_05M" style="contour"/> <layer id="contours10" label="Contours 10m" layer="GIS.CONTOURS_10M" style="contour"/> </layers> <styles> <style id="contour"> <type>line</type> <stroke-color>#853111</stroke-color> <stroke-width>2</stroke-width> </style> </styles> <legend> <!-- remove some of the layers from the legend --> <remove> <layer>contours01</layer> <layer>contours02</layer> <layer>contours05</layer> </remove> <!-- an alternatove to the above remove tag here would be this, since it lists the only layers that should be in the legend <layer>contours10</layer> --> </legend> </weave:mapengine> </config> |
...
Using an external SLD file to style a layer
Code Block | ||
---|---|---|
| ||
<layer id="contours01" label="Contours 1m" layer="GIS.CONTOURS_01M" style="sld\contours.sld"/> |
...
Alternatively, when referring to an external SLD file it can also be specified in the style itself, rather than the layer, so the layer can reference one of the inline styles, and the style then points to the external SLD file, e.g.
Code Block | ||
---|---|---|
| ||
<styles> <style id="contour">sld\contours.sld</style> </styles> |
This way if you use the same SLD file for multiple layers you can just reference a single inline style and have that style refer to the SLD file.
...
When specifying a style for lines you can specify the stroke attributes, for a polygon both stroke and fill attributes, and for points stroke, fill and mark are required.
Stroke
Name | Default |
---|---|
stroke-colour | orange |
stroke-width | 3 |
stroke-opacity | 1 |
Fill
Name | Default |
---|---|
fill-colour | orange |
fill-opacity | 0.125 |
Mark
Name | Default |
---|---|
mark-type | circle |
mark-size | 10 |
mark-opacity | 1 |
mark-rotation | 0 |
Joining Tables
From 2.6.4 it's possible to join to another table if the underlying spatial engine is using a database, i.e. this won't work for shapefiles for example.
This would for example provide the ability to filter the rows displayed on the map based on the value in a column in a table different from the one containing the geometry. To join the additional table you need to add a <join/> tag with the information about the other table (which must be in the same database) and how it is joined to the source table. Additionally you can set the type of join, inner or outer, and add a filter for the extra table.
Code Block | ||
---|---|---|
| ||
<layer id="my_active_incidents" label="My Active Incidents" layer="GIS.INCIDENTS" style="incidents"> <join> <type>inner</type> <!-- this is the default, and will result in only the rows that are in both tables being displayed --> <table>GIS.INCIDENT_DETAILS</table> <!-- The name of the table to join to GIS.INCIDENTS --> <where>ID = ID</where> <!-- The columns in the two tables to join, must always be an equals --> <filter>STATUS = 'ACTIVE'</filter> <!-- An additional filter to further reduce the rows that are displayed --> <filter>USERID = '${user.id}'/> <!-- Another filter, this time selecting rows that belong to the current user --> </join> </layer> |
Join
Name | Type | Carnality | Default | Description |
---|---|---|---|---|
table | string | 1..1 | The name of the table to join to the source table | |
where | string | 1..1 | A description of the join between the two columns. This should always be a X = Y type of expression where X is the column in the source table and Y is the column in the extra table. The rows from the two tables will be matched based on the values in the X column in the source table having the same value as the Y column in the target table. | |
type | 'outer' or 'inner' | 0..1 | 'inner' | Should the join between the two tables be an inner join, only rows in both tables are returned, or an outer join, rows in the source table are still returned even if they don't have a matching row in the extra table |
filter | string | 0..n | This is a ECQL expression that will be applied to the extra table to filter the rows that should be included, this includes support for user attributes. |