WMS Test Examples

May 7, 2026 · View on GitHub

The WMS tests exercise the /wms endpoint. Test inputs are in test/input/wms_*.get and expected outputs in test/output/wms_*.get. Product configurations are under test/wms/customers/.

Contents

GetCapabilities

wms_getcapabilities

Input: test/input/wms_getcapabilities.get

GET /wms?service=wms&request=GetCapabilities&debug=1 HTTP/1.0
ParameterValueDescription
servicewmsOGC WMS service identifier (case-insensitive)
requestGetCapabilitiesReturns the service metadata XML document
debug1Adds layer-level debug information to the response

Returns a WMS 1.3.0 XML capabilities document listing all advertised layers, styles, CRS support, output formats, and service metadata.

Output: test/output/wms_getcapabilities.get — XML

wms_getcapabilities_fi

Input: test/input/wms_getcapabilities_fi.get

GET /wms?service=wms&request=GetCapabilities&language=fi&debug=1 HTTP/1.0
ParameterValueDescription
languagefiReturns layer titles and abstracts in Finnish
debug1Adds layer-level debug information

Demonstrates multi-language support in GetCapabilities: layer titles and abstracts are returned in the requested language when translations are defined in the product JSON.

Output: test/output/wms_getcapabilities_fi.get — XML

wms_getcapabilities_json

Input: test/input/wms_getcapabilities_json.get

GET /wms?service=wms&request=GetCapabilities&format=application/json&debug=1 HTTP/1.0
ParameterValueDescription
formatapplication/jsonReturns capabilities as a JSON document instead of XML
debug1Adds layer-level debug information

Returns the same layer metadata as the XML capabilities but in JSON format, suitable for programmatic consumption.

Output: test/output/wms_getcapabilities_json.get — JSON

wms_getcapabilities_namespace

Input: test/input/wms_getcapabilities_namespace.get

GET /wms?service=wms&request=GetCapabilities&namespace=ely HTTP/1.0
ParameterValueDescription
namespaceelyFilters the capabilities response to only include layers in the ely customer namespace

Returns a capabilities document scoped to a single customer namespace.

Output: test/output/wms_getcapabilities_namespace.get — XML

wms_getcapabilities_recursive

Input: test/input/wms_getcapabilities_recursive.get

GET /wms?service=wms&request=GetCapabilities&debug=1&layout=recursive HTTP/1.0
ParameterValueDescription
layoutrecursiveGroups layers recursively by customer namespace in the capabilities XML

Output: test/output/wms_getcapabilities_recursive.get — XML

wms_getcapabilities_timeinterval

Input: test/input/wms_getcapabilities_timeinterval.get

GET /wms?service=wms&request=GetCapabilities&starttime=2008-08-09T00:00:00Z&endtime=2008-08-09T06:00:00Z&debug=1 HTTP/1.0
ParameterValueDescription
starttime2008-08-09T00:00:00ZRestricts time dimension listings to this start
endtime2008-08-09T06:00:00ZRestricts time dimension listings to this end

Returns capabilities with time dimension values limited to the specified interval.

Output: test/output/wms_getcapabilities_timeinterval.get — XML


GetMap — Isoband styles

All three tests render temperature isobands for the test:t2m layer over Scandinavia (EPSG:4326, bbox 59–71°N, 17–34°E, 300×500 px, PNG). They differ only in the styles parameter, which selects the isoband interval width.

wms_getmap_isoband_style1

Input: test/input/wms_getmap_isoband_style1.get

GET /wms?service=wms&request=GetMap&version=1.3.0
    &layers=test:t2m
    &styles=temperature_one_degrees
    &crs=EPSG:4326
    &bbox=59,17,71,34
    &width=300&height=500
    &format=image/png
    &time=200808050300 HTTP/1.0
ParameterValueDescription
servicewmsOGC WMS service
requestGetMapRender a map image
version1.3.0WMS version
layerstest:t2mLayer t2m in customer test
stylestemperature_one_degrees1°C isoband width style
crsEPSG:4326WGS 84 geographic CRS
bbox59,17,71,34Bounding box: minLat, minLon, maxLat, maxLon (WMS 1.3.0 axis order for EPSG:4326)
width / height300 / 500Output image dimensions in pixels
formatimage/pngPNG output
time200808050300Valid time: 2008-08-05 03:00 UTC

Product config: test/wms/customers/test/products/t2m.json

wms_getmap_isoband_style1

wms_getmap_isoband_style2

Input: test/input/wms_getmap_isoband_style2.get

Same as above with styles=temperature_two_degrees (2°C isoband width).

wms_getmap_isoband_style2

wms_getmap_isoband_style3

Input: test/input/wms_getmap_isoband_style3.get

Same as above with styles=temperature_three_degrees (3°C isoband width).

wms_getmap_isoband_style3

wms_getmap_isoband_tile

Input: test/input/wms_getmap_isoband_tile.get

Renders the same test:t2m layer cropped to a WMS tile-compatible bounding box, verifying that isobands are properly clipped to tile boundaries.

wms_getmap_isoband_tile


GetMap — Isoline styles

wms_getmap_isoline_style1

Input: test/input/wms_getmap_isoline_style1.get

GET /wms?service=wms&request=GetMap&version=1.3.0
    &layers=test:precipitation
    &styles=precipitation_thin_style
    &crs=EPSG:4326
    &bbox=59,17,71,34
    &width=300&height=500
    &format=image/png
    &time=200808050300 HTTP/1.0
ParameterValueDescription
layerstest:precipitationPrecipitation isobands + isoline layer
stylesprecipitation_thin_styleThin (1 px) isoline style

Product config: test/wms/customers/test/products/precipitation_areas.json

wms_getmap_isoline_style1

wms_getmap_isoline_style2

Input: test/input/wms_getmap_isoline_style2.get

Same request with styles=precipitation_thick_style (2 px isoline width).

wms_getmap_isoline_style2

wms_getmap_isoline_groups

Input: test/input/wms_getmap_isoline_groups.get

GET /wms?service=wms&request=GetMap&version=1.3.0
    &layers=test:pressure_isoline_groups
    &styles=
    &crs=EPSG:4326
    &bbox=59,17,71,34
    &width=300&height=500
    &format=image/png
    &time=200808050300 HTTP/1.0
ParameterValueDescription
layerstest:pressure_isoline_groupsPressure isolines with grouped rendering
styles(empty)Default style

Demonstrates the isoline_groups feature: isolines are organised into named groups (e.g. every 5 hPa vs every 1 hPa), which can be styled and filtered independently.

Product config: test/wms/customers/test/products/pressure_isoline_groups.json

wms_getmap_isoline_groups

Time-aggregate variants — isoline groups

TestOutput
wms_getmap_isoline_groups_aggregate_minaggmin
wms_getmap_isoline_groups_aggregate_maxaggmax

GetMap — Isolabel styles

wms_getmap_isolabel_style1

Input: test/input/wms_getmap_isolabel_style1.get

GET /wms?service=wms&request=GetMap&version=1.3.0
    &layers=test:isolabel
    &styles=isolabel_small_blue_text_style
    &crs=EPSG:4326
    &bbox=59,17,71,34
    &width=300&height=500
    &format=image/png
    &time=200808050300 HTTP/1.0
ParameterValueDescription
layerstest:isolabelLayer with isoline labels
stylesisolabel_small_blue_text_styleSmall (24 px), blue Roboto font labels

The isolabel layer type places text annotations directly on isolines at computed placement positions.

Product config: test/wms/customers/test/products/isolabel.json

wms_getmap_isolabel_style1

wms_getmap_isolabel_style2

Input: test/input/wms_getmap_isolabel_style2.get

Same request with styles=isolabel_big_red_text_style (36 px red Roboto font).

wms_getmap_isolabel_style2


GetMap — Temperature numbers

wms_getmap_temperature_numbers

Input: test/input/wms_getmap_temperature_numbers.get

GET /wms?service=wms&request=GetMap&version=1.3.0
    &layers=test:opendata_temperature_numbers
    &styles=
    &crs=EPSG:4326
    &bbox=59,17,71,34
    &width=600&height=1000
    &format=image/png
    &time=20130805T1500 HTTP/1.0
ParameterValueDescription
layerstest:opendata_temperature_numbersTemperature observations as numeric labels
width / height600 / 1000Higher resolution for readable numbers
time20130805T1500ISO 8601 time format

Renders temperature observations from the opendata producer at FMI station positions over a background map.

Product config: test/wms/customers/test/products/opendata_temperature_numbers.json

wms_getmap_temperature_numbers

Mindistance and priority variants

The following tests verify label collision avoidance and priority selection for dense station networks:

TestmindistancepriorityDescriptionOutput
wms_getmap_temperature_numbers_mindistancesetFilter stations closer than mindistance pixelsmindistance
wms_getmap_temperature_numbers_mindistance_priority_nonesetnoneNo priority: arbitrary station is keptnone
wms_getmap_temperature_numbers_mindistance_priority_minsetminKeep station with minimum valuemin
wms_getmap_temperature_numbers_mindistance_priority_maxsetmaxKeep station with maximum valuemax
wms_getmap_temperature_numbers_mindistance_priority_extremasetextremaKeep both min and max within the areaextrema
wms_getmap_temperature_numbers_mindistance_priority_arraysetarrayUser-defined priority listarray
wms_getmap_temperature_numbers_aggregate_minTime-aggregate: minimum over intervalaggmin
wms_getmap_temperature_numbers_aggregate_maxTime-aggregate: maximum over intervalaggmax

wms_getmap_temperature_numbers_svgxml — SVG output

The same opendata_temperature_numbers layer requested with format=image/svg+xml instead of PNG.

wms_getmap_temperature_numbers_svgxml


GetMap — Meteorological wind arrows

wms_getmap_meteorological_windarrows

Input: test/input/wms_getmap_meteorological_windarrows.get

GET /wms?service=wms&request=GetMap&version=1.3.0
    &layers=test:opendata_meteorological_windarrows
    &styles=
    &crs=EPSG:4326
    &bbox=59,17,71,34
    &width=600&height=1000
    &format=image/png
    &time=20130805T1500 HTTP/1.0
ParameterValueDescription
layerstest:opendata_meteorological_windarrowsWind observations as meteorological barb symbols

Renders wind barbs at FMI observation stations, scaled to knots (multiplier=1.94384449244). Wind barbs face the wind direction with the southflop option ensuring correct hemisphere rendering.

Product config: test/wms/customers/test/products/opendata_meteorological_windarrows.json

wms_getmap_meteorological_windarrows

wms_getmap_meteorological_windarrows_svgxml — SVG output

Same data with format=image/svg+xml.

wms_getmap_meteorological_windarrows_svgxml

Mindistance and priority variants — meteorological windarrows

TestOutput
wms_getmap_meteorological_windarrows_mindistancemd
wms_getmap_meteorological_windarrows_mindistance_priority_nonenone
wms_getmap_meteorological_windarrows_mindistance_priority_minmin
wms_getmap_meteorological_windarrows_mindistance_priority_maxmax
wms_getmap_meteorological_windarrows_mindistance_priority_extreamaextreama
wms_getmap_meteorological_windarrows_mindistance_priority_arrayarray
wms_getmap_meteorological_windarrows_aggregate_minaggmin
wms_getmap_meteorological_windarrows_aggregate_maxaggmax

The _priority_extreama test name preserves an original typo and is kept verbatim so the input file path matches.


GetMap — Wind arrows (model data)

wms_getmap_windarrows

Input: test/input/wms_getmap_windarrows.get

GET /wms?servicE=wms&requesT=GetMap&versioN=1.3.0
    &layerS=test:windarrows
    &styleS=
    &crS=EPSG:4326
    &bboX=59,17,71,34
    &widtH=300&heighT=500
    &formaT=image/svg%2Bxml
    &timE=200808050300 HTTP/1.0

Note: parameter names use mixed case (e.g. layerS, crS) — this tests that the WMS handler is case-insensitive for all WMS standard parameters.

ParameterValueDescription
layerstest:windarrowsModel wind arrows at a regular grid layout
formatimage/svg+xmlSVG output

Product config: test/wms/customers/test/products/windarrows.json

wms_getmap_windarrows

wms_getmap_windarrows_style

Input: test/input/wms_getmap_windarrows_style.get

GET /wms?service=wms&request=GetMap&version=1.3.0
    &layers=test:windarrows
    &styles=windarrows_sparse_style
    &crs=EPSG:4326&bbox=59,17,71,34
    &width=300&height=500
    &format=image/png&time=200808050300 HTTP/1.0
ParameterValueDescription
styleswindarrows_sparse_styleSparser grid layout (50×50 px spacing)

wms_getmap_windarrows_style

wms_getmap_windarrows_style_svg — SVG style

Same sparser style requested with format=image/svg+xml.

wms_getmap_windarrows_style_svg

Time-aggregate variants — windarrows

TestOutput
wms_getmap_windarrows_aggregate_minaggmin
wms_getmap_windarrows_aggregate_maxaggmax

GetMap — Wind numbers

wms_getmap_windnumbers_style1

Input: test/input/wms_getmap_windnumbers_style1.get

GET /wms?service=wms&request=GetMap&version=1.3.0
    &layers=test:windnumbers
    &styles=
    &crs=EPSG:4326&bbox=59,17,71,34
    &width=300&height=500
    &format=image/png&time=200808050300 HTTP/1.0
ParameterValueDescription
layerstest:windnumbersWind speed as numeric annotations at a regular grid
`styles$\text{_}(\text{empty})\text{_}\text{Default} \text{style} (\text{fine} \text{grid}: 20 \times 20 \text{px})

\text{Product} \text{config}: $test/wms/customers/test/products/windnumbers.json`

wms_getmap_windnumbers_style1

wms_getmap_windnumbers_style2

Same with styles=windnumbers_sparse_style (60×60 px grid).

wms_getmap_windnumbers_style2

Time-aggregate variants — windnumbers

TestOutput
wms_getmap_windnumbers_aggregate_minaggmin
wms_getmap_windnumbers_aggregate_maxaggmax

GetMap — Temperature symbols

wms_getmap_temperature_symbols

Input: test/input/wms_getmap_temperature_symbols.get

GET /wms?service=wms&request=GetMap&version=1.3.0
    &layers=test:opendata_temperature_symbols
    &styles=
    &crs=EPSG:4326&bbox=59,17,71,34
    &width=600&height=1000
    &format=image/svg%2Bxml
    &time=20130805T1500 HTTP/1.0
ParameterValueDescription
layerstest:opendata_temperature_symbolsTemperature observations as colour-coded SVG symbols

Renders temperature observations as coloured circle symbols using the symbol layer type.

wms_getmap_temperature_symbols

Mindistance and priority variants — temperature symbols

Same priority-selection scheme as for temperature numbers, applied to the symbol layer:

TestOutput
wms_getmap_temperature_symbols_mindistancemd
wms_getmap_temperature_symbols_mindistance_priority_nonenone
wms_getmap_temperature_symbols_mindistance_priority_minmin
wms_getmap_temperature_symbols_mindistance_priority_maxmax
wms_getmap_temperature_symbols_mindistance_priority_extremaextrema
wms_getmap_temperature_symbols_mindistance_priority_arrayarray

GetMap — Multiple layers

wms_getmap_multiple_layers

Input: test/input/wms_getmap_multiple_layers.get

GET /wms?service=wms&request=GetMap&version=1.3.0
    &layers=test:backgroundmap,test:precipitation_areas,test:cities
    &styles=
    &crs=EPSG:4326&bbox=59,17,71,34
    &width=300&height=500
    &format=image/svg%2Bxml
    &time=20080805120000 HTTP/1.0
ParameterValueDescription
layerstest:backgroundmap,test:precipitation_areas,test:citiesComma-separated layer list rendered bottom-to-top
styles(empty)Default styles for all layers

Demonstrates composite multi-layer rendering: a background map, precipitation isobands/isolines, and city symbol overlay are merged into a single SVG response.

wms_getmap_multiple_layers

wms_getmap_multiple_layers_with_style

Input: test/input/wms_getmap_multiple_layers_with_style.get

GET /wms?...&layers=test:backgroundmap,test:precipitation_areas,test:cities
    &styles=,precipitation_thick_style, HTTP/1.0
ParameterValueDescription
styles,precipitation_thick_style,Per-layer styles: empty for 1st and 3rd layers, explicit style for 2nd

The styles list must have the same number of comma-separated entries as layers; empty entries use the default style.

wms_getmap_multiple_layers_with_style


GetMap — CRS variants

wms_getmap_png (EPSG:4326, PNG)

Input: test/input/wms_getmap_png.get

GET /wms?service=wms&request=GetMap&version=1.3.0
    &layers=ely:wmsmap&styles=
    &crs=EPSG:4326&bbox=59,17,71,34
    &width=300&height=500
    &format=image/png&time=200808050300 HTTP/1.0

Standard WMS GetMap request using EPSG:4326 with PNG output.

Product config: test/wms/customers/ely/products/wmsmap.json

wms_getmap_png

wms_getmap_svgxml (case-insensitive parameters)

Input: test/input/wms_getmap_svgxml.get

Same request with mixed-case parameter names (servicE, requesT, etc.) and format=image/svg+xml. Verifies that all WMS standard parameters are parsed case-insensitively.

wms_getmap_svgxml

wms_getmap_crs_auto2_42001 (AUTO2 UTM zone)

Input: test/input/wms_getmap_crs_auto2_42001.get

GET /wms?service=wms&request=getmap&version=1.3.0
    &layers=ely:wmsmap&styles=
    &crs=AUTO2:42001,1,25,60
    &debug=1
    &bbox=221000,6660000,690000,7770000
    &width=500&height=500
    &format=image/svg%2bxml
    &time=200808050300 HTTP/1.0
ParameterValueDescription
crsAUTO2:42001,1,25,60OGC AUTO2 Universal Transverse Mercator; zone determined by lon=25°E, lat=60°N
bbox221000,6660000,690000,7770000Bounding box in metres (AUTO2 projected coordinates)

OGC AUTO2 CRS codes automatically derive a projection from supplied reference coordinates. 42001 = UTM.

wms_getmap_crs_auto2_42001

wms_getmap_crs_auto2_42004

Same but with AUTO2:42004 (Equidistant Cylindrical).

wms_getmap_crs_auto2_42004

wms_getmap_crs_scandinavia (named CRS)

Input: test/input/wms_getmap_crs_scandinavia.get

GET /wms?...&crs=CRS:SmartMetScandinavia
    &bbox=-1010040,-4051052,1005949,-1814781
    &width=500&height=500 HTTP/1.0
ParameterValueDescription
crsCRS:SmartMetScandinaviaNamed CRS defined in the server's GIS configuration
bbox(metres)Bounding box in the named CRS's projected coordinate system

Demonstrates the use of server-defined named CRS strings in addition to standard EPSG/AUTO2 codes.

wms_getmap_crs_scandinavia


GetMap — Time interpolation

wms_getmap_svgxml_interpolated_time

Input: test/input/wms_getmap_svgxml_interpolated_time.get

GET /wms?...&layers=ely:wmsmap&time=200808050330 HTTP/1.0
ParameterValueDescription
time20080805033003:30 UTC — halfway between data timesteps at 03:00 and 04:00

Tests that the server correctly interpolates or snaps to the nearest available data timestep when the requested time does not exactly match a data timestep.

wms_getmap_svgxml_interpolated_time


GetMap — Time intervals

The flash15min layer stores data in 15-minute slots. The time parameter can specify either a point in time or an interval using ISO 8601 duration syntax.

Testtime valueDescription
wms_getmap_interval_default201308051200Point in time; server uses the default aggregation interval
wms_getmap_interval_start_30m201308051200/PT30M30-minute window starting at 12:00
wms_getmap_interval_end_30mPT30M/20130805120030-minute window ending at 12:00
wms_getmap_interval_30m30mPT30M/201308051200/PT30M30-minute window centred at 12:00
TestOutput
wms_getmap_interval_defaultinterval_default
wms_getmap_interval_start_30minterval_start_30m
wms_getmap_interval_end_30minterval_end_30m
wms_getmap_interval_30m30minterval_30m30m

GetMap — GeoJSON output

wms_getmap_geojson

Input: test/input/wms_getmap_geojson.get

GET /wms?service=wms&request=GetMap&version=1.3.0
    &layers=test:precipitation_areas&styles=
    &crs=EPSG:4326&bbox=59,17,71,34
    &width=300&height=500
    &format=application/geo%2Bjson
    &time=20080805120000 HTTP/1.0
ParameterValueDescription
formatapplication/geo+jsonReturns isoband geometry as a GeoJSON FeatureCollection

Isobands are returned as GeoJSON MultiPolygon features with the band's lower/upper limits as properties. Used for programmatic access to contour geometry.

Output: test/output/wms_getmap_geojson.get — GeoJSON

wms_getmap_geojson_precision

Same but tests that coordinate precision is controlled by the precision configuration setting.

Output: test/output/wms_getmap_geojson_precision.get — GeoJSON


GetMap — PDF output

wms_getmap_pdf

Input: test/input/wms_getmap_pdf.get

GET /wms?...&layers=ely:wmsmap&format=application/pdf&time=200808050300 HTTP/1.0
ParameterValueDescription
formatapplication/pdfReturns the map as a PDF vector document

Output: test/output/wms_getmap_pdf.get — PDF


GetMap — DataTile output

wms_getmap_datatile

Input: test/input/wms_getmap_datatile.get

GET /wms?service=wms&request=GetMap&version=1.3.0&layers=grid:datatile_temperature&styles=&crs=EPSG:4326&bbox=34,-12,74,40&width=64&height=64&format=application/x-datatile%2Bpng&time=200808050800 HTTP/1.0
ParameterValueDescription
layersgrid:datatile_temperatureTemperature datatile product from the grid customer
formatapplication/x-datatile+pngRequests RGBA-encoded float data PNG instead of a visual image
width / height64Tile dimensions
bbox34,-12,74,40Bounding box covering Europe

Returns a datatile PNG where pixel values encode temperature data for client-side processing (particle animations, colour ramps, etc.). The MIME type application/x-datatile+png triggers the datatile pipeline, which bypasses SVG rendering entirely and queries the grid engine directly.

Output: test/output/wms_getmap_datatile.get — PNG (binary, not a visual image)


GetMap — Observation data

wms_getmap_netatmo_observations

Input: test/input/wms_getmap_netatmo_observations.get

GET /wms?...&layers=test:netatmo5min&crs=EPSG:4326
    &bbox=53.5,3.5,72,33&width=600&height=800
    &format=image/png&time=20190325090500 HTTP/1.0
ParameterValueDescription
layerstest:netatmo5minNetatmo citizen weather station observations
time20190325090500Observation time (5-minute data)

Renders crowd-sourced Netatmo temperature observations as coloured dots.

wms_getmap_netatmo_observations

wms_getmap_roadcloud_observations

Same pattern for RoadCloud road-condition sensor data.

wms_getmap_roadcloud_observations


GetMap — Variants

The variant layer prefix selects an alternative data producer using the variant layer syntax variant:{variant_name}:{layer_name}.

TestlayersDescriptionOutput
wms_getmap_variant_palvariant:pal:temperatureTemperature layer using the pal data producer variantvar_pal
wms_getmap_variant_groundvariant:ground:groundtemperatureGround temperature from the ground variantvar_ground
wms_getmap_nonvariant_paltest:nonvariant_palSame data but as a regular (non-variant) layernonvar_pal
wms_getmap_nonvariant_groundtest:nonvariant_groundSame data but as a regular (non-variant) layernonvar_ground

GetMap — Frame layer

wms_getmap_frame

Input: test/input/wms_getmap_frame.get

GET /wms?...&layers=test:frame_layer&crs=EPSG:4326
    &bbox=51,8,68,32&width=1800&height=2500
    &format=image/svg%2Bxml&time=current HTTP/1.0
ParameterValueDescription
layerstest:frame_layerIce-map style frame with inner/outer borders and tick-mark scale
bbox51,8,68,32Geographic bounding box (lat/lon)
timecurrentUse the most recent available data timestep

The frame layer type draws a decorative border with inner and outer rectangular frames and a graduated scale with tick marks and labels.

Product config: test/wms/customers/test/products/frame_layer.json

wms_getmap_frame


GetMap — Ice chart

wms_icechart_fmi_color

Input: test/input/wms_icechart_fmi_color.get

GET /wms?...&layers=test:icechart_fmi_color&crs=EPSG:4326
    &bbox=51,6,69,33&width=2000&height=2500
    &format=image/svg%2Bxml&time=20120227142200 HTTP/1.0
ParameterValueDescription
layerstest:icechart_fmi_colorBaltic Sea ice chart with FMI colour scheme
time20120227142200Winter 2012 ice analysis time

Renders Baltic Sea ice coverage using the FMI ice-chart color conventions.

wms_icechart_fmi_color

wms_icechart_areas

Input: test/input/wms_icechart_areas.get

Same ice chart data rendered as named area polygons rather than coloured fills.

wms_icechart_areas

wms_icechart_fmi_color_epsg3857 — Ice chart in Web Mercator

Input: test/input/wms_icechart_fmi_color_epsg3857.get

Same FMI-colour ice chart but reprojected to Web Mercator (crs=EPSG:3857) for browser overlay use.

wms_icechart_fmi_color_epsg3857


GetMap — Symbol style

wms_getmap_symbol_style

Input: test/input/wms_getmap_symbol_style.get

GET /wms?...&layers=test:precipitation&styles=precipitation_red_rain_style
    &crs=EPSG:4326&bbox=59,17,71,34&width=300&height=500
    &format=image/png&time=200808050300 HTTP/1.0
ParameterValueDescription
layerstest:precipitationPrecipitation layer
stylesprecipitation_red_rain_styleCustom style that uses a rain SVG symbol instead of filled isobands

Demonstrates that an isoband layer can be rendered as repeated SVG symbols rather than filled polygons by specifying a symbol-based style.

wms_getmap_symbol_style


GetMap — Error handling

When a request contains invalid parameters the server returns either an XML service exception (default) or an in-image error (when EXCEPTIONS=INIMAGE or format-specific variants are used).

TestErrorResponse format
wms_getmap_invalid_crsUnknown CRSXML exception
wms_getmap_invalid_crs_jsonUnknown CRSJSON exception
wms_getmap_invalid_layerUnknown layerXML exception
wms_getmap_invalid_layer_jsonUnknown layerJSON exception
wms_getmap_invalid_styleUnknown styleXML exception
wms_getmap_invalid_style_jsonUnknown styleJSON exception
wms_getmap_invalid_timeInvalid timeXML exception
wms_getmap_invalid_time_jsonInvalid timeJSON exception
wms_getmap_invalid_versionUnsupported versionXML exception
wms_getmap_invalid_version_jsonUnsupported versionJSON exception
wms_getmap_invalid_formatUnsupported formatXML exception
wms_getmap_invalid_layer_inimage_pdfUnknown layerError PDF
wms_getmap_invalid_time_inimage_pdfInvalid timeError PDF

In-image error renderings (EXCEPTIONS=INIMAGE) carry the failure message inside the requested image format:

TestOutput
wms_getmap_invalid_crs_inimage_blank — blank PNGblank
wms_getmap_invalid_crs_inimage_png — error PNGcrs_png
wms_getmap_invalid_style_inimage_png — error PNGstyle_png
wms_getmap_invalid_format_inimage_svg — error SVGformat_svg
wms_getmap_invalid_version_inimage_svg — error SVGversion_svg

GetMap — Grid Engine layers

The grid: layer namespace is served by the SmartMet grid-content engine (Redis-backed GRIB1/GRIB2/NetCDF) rather than the QueryData engine. Tests are named wms::grid::<layer>::<producer> (and wms::qd::... for the analogous QueryData wind-stream cases) — the :: segments survive intentionally in the filename so the test harness can derive the layer / producer pair from the path.

All requests use format=image/svg+xml; the PNG previews here are rasterised from the SVG outputs. Producers exercised by the suite:

  • pal — Finland-area model (default bbox `59,17,71,34$, 300 \times 500 \text{px})
  • ecmwfeurooppapintaECMWFEuropesurface(bbox34,12,74,40ecmwf_eurooppa_pinta` — ECMWF Europe surface (bbox `34,-12,74,40, 500 \times 500 \text{px}) \text{selected} \text{with} $&producer=ecmwf_eurooppa_pinta`
  • ecmwf_maailma_pinta — ECMWF global surface, world bbox

Product configurations live in test/wms/customers/grid/products/.

Temperature

Six temperature layers with progressively richer styling — base isobands, isolines, smoothing, labels, multi-style composite.

TestProducerOutput
wms::grid::temperature_1::palpalt1_pal
wms::grid::temperature_1::ecmwf_eurooppa_pintaECMWF Europet1_eu
wms::grid::temperature_1::ecmwf_eurooppa_pinta::time_interpolationECMWF Europe, interpolated timet1_eu_ti
wms::grid::temperature_1::ecmwf_maailma_pintaECMWF Worldt1_w
wms::grid::temperature_2::palpalt2_pal
wms::grid::temperature_3::palpalt3_pal
wms::grid::temperature_4::palpalt4_pal
wms::grid::temperature_4::pal::time_interpolationpal, interpolated timet4_pal_ti
wms::grid::temperature_5::palpalt5_pal
wms::grid::temperature_6::palpalt6_pal

The ::time_interpolation suffix tests requesting a timestamp between two stored timesteps; the grid engine interpolates linearly. TopoJSON output of the same isobands is exercised by wms::grid::temperature_1::pal::topojson and wms::grid::temperature_2::pal::topojson (JSON output, not shown here).

Precipitation

TestProducerOutput
wms::grid::precipitation_1::palpalp1_pal
wms::grid::precipitation_1::ecmwf_eurooppa_pintaECMWF Europep1_eu

Raster

The raster_* products render gridded data through a RasterLayer that emits PNG-in-SVG <image> elements. _t1 / _t2 suffixes select between alternative styling templates.

TestProducerOutput
wms::grid::raster_1_t1::palpalr1t1_pal
wms::grid::raster_1_t1::ecmwf_eurooppa_pintaECMWF Europer1t1_eu
wms::grid::raster_1_t2::palpalr1t2_pal
wms::grid::raster_1_t2::ecmwf_eurooppa_pintaECMWF Europer1t2_eu
wms::grid::raster_2::ecmwf_eurooppa_pintaECMWF Europer2_eu
wms::grid::raster_3_t1::palpalr3t1_pal
wms::grid::raster_3_t1::ecmwf_eurooppa_pintaECMWF Europer3t1_eu
wms::grid::raster_3_t2::palpalr3t2_pal
wms::grid::raster_3_t2::ecmwf_eurooppa_pintaECMWF Europer3t2_eu
wms::grid::raster_4_t1::ecmwf_eurooppa_pintaECMWF Europer4t1_eu
wms::grid::raster_5_t1::ecmwf_eurooppa_pintaECMWF Europer5t1_eu
wms::grid::raster_6_t1::ecmwf_eurooppa_pintaECMWF Europer6t1_eu

Wind direction / speed

Vector quantities decomposed into separate direction and speed layers, plus a combined-style layer.

TestProducerOutput
wms::grid::wind_direction_1::palpalwd1_pal
wms::grid::wind_direction_1::ecmwf_eurooppa_pintaECMWF Europewd1_eu
wms::grid::wind_speed_1::palpalws1_pal
wms::grid::wind_speed_1::ecmwf_eurooppa_pintaECMWF Europews1_eu
wms::grid::wind_speed_2::palpalws2_pal
wms::grid::wind_speed_2::ecmwf_eurooppa_pintaECMWF Europews2_eu
wms::grid::wind_speed_and_direction_1::palpalwsd1_pal
wms::grid::wind_speed_and_direction_1::ecmwf_eurooppa_pintaECMWF Europewsd1_eu

wms::grid::wind_speed_1::ecmwf_eurooppa_pinta::topojson exercises the same layer with TopoJSON output (not shown).

Wind streamlines

Streamline traces driven by U/V wind components, served from both grid and QueryData engines for parity testing.

TestEngine / ProducerOutput
wms::grid::wind_stream_1::palgrid / palwst1_pal
wms::grid::wind_stream_1::ecmwf_eurooppa_pintagrid / ECMWF Europewst1_eu
wms::grid::wind_stream_4::ecmwf_eurooppa_pintagrid / ECMWF Europewst4_eu
wms::qd::wind_stream_2::ecmwf_maailma_pintaQueryData / ECMWF Worldqd_wst2_w
wms::qd::wind_stream_3::palQueryData / palqd_wst3_pal
wms::qd::wind_stream_3::ecmwf_maailma_pintaQueryData / ECMWF Worldqd_wst3_w
wms::qd::wind_stream_4::ecmwf_maailma_pintaQueryData / ECMWF Worldqd_wst4_w

wmsmap — Plain background map

wmsmap (under the ely customer) is the simple Natural-Earth + graticule background that the WMS GetCapabilities tests use for projection coverage.

wmsmap

(Same image as wms_getmap_png above — wmsmap is the underlying product name.)


GetFeatureInfo

GetFeatureInfo returns data values at a specified pixel location within a previously rendered map.

wms_getfeatureinfo_json

Input: test/input/wms_getfeatureinfo_json.get

GET /wms?service=wms&request=GetFeatureInfo&version=1.3.0
    &layers=test:frame_layer
    &query_layers=test:frame_layer
    &styles=
    &crs=EPSG:4326&bbox=51,8,68,32
    &width=1800&height=2500
    &format=image/svg%2Bxml
    &i=900&j=1250
    &info_format=application/json
    &time=current HTTP/1.0
ParameterValueDescription
requestGetFeatureInfoReturns data at a pixel position
query_layerstest:frame_layerLayers to query (must be a subset of layers)
i900Pixel column in the image (0-based from left)
j1250Pixel row in the image (0-based from top)
info_formatapplication/jsonReturn data as JSON

Output: test/output/wms_getfeatureinfo_json.get — JSON

wms_getfeatureinfo_html

Same request with info_format=text/html.

Output: test/output/wms_getfeatureinfo_html.get — HTML

wms_getfeatureinfo_precipitation_json

Input: test/input/wms_getfeatureinfo_precipitation_json.get

GET /wms?...&layers=test:precipitation_areas&query_layers=test:precipitation_areas
    &bbox=59,17,71,34&width=300&height=500
    &i=150&j=250&info_format=application/json
    &time=20080805120000 HTTP/1.0

Queries the precipitation isoband value at pixel (150, 250) — the centre of the map.

Output: test/output/wms_getfeatureinfo_precipitation_json.get — JSON

wms_getfeatureinfo_numbers_json

Input: test/input/wms_getfeatureinfo_numbers_json.get

Queries the temperature value at a station position from the opendata_temperature_numbers_max layer (uses the time-maximum aggregate).

Output: test/output/wms_getfeatureinfo_numbers_json.get — JSON

Additional GetFeatureInfo tests:

  • wms_getfeatureinfo_missing_query_layers — error when query_layers is omitted
  • wms_getfeatureinfo_precipitationform_symbols_json — queries precipitation form symbols
  • wms_getfeatureinfo_precipitation_isoband_labels_json — queries isoband label values
  • wms_getfeatureinfo_roadcondition_isoband_json — queries road condition isobands
  • wms_getfeatureinfo_temperature_symbols_json — queries temperature symbol data

GetLegendGraphic

GetLegendGraphic returns a legend image for a given layer and style. The complete gallery — automatic, style variants, modified, product-specific templates, multilingual, internal, and external legends — is on its own page: see Legend Examples.