Versions Compared

Key

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

In this primer we will demonstrate how to obtain a graps of a small set of data from a large colection datasets with using the OGC Web Mapping Service (WMS) protocol. We will show that ordering requesting images through WMS is just as easy as buying an ice cream.

Find a WMS server

Find a data web source that hosts a WMS server (go to an ice cream vendor). We will use the Shuttle Radar Topography Mission datasets hosted at the Woods Hole Institute THREDDS OPeNDAP server as example in this primer. THREDDS OPeNDAP server servers can be configured to serve WMS for orthogonal datasets with proper geographic information.

...

Ask for what the server has to offer (see which flavours he has and which kind of cups). Ypu You need to add the following mandatory <keyword,value> pairs to the base server url, separated by an &, e.g.: ?service=WMS&request=GetCapabilities.

...

Look at what versions of WMS the server has to offer (check whether the ice cream is fresh). For each version there is a
tag WCS_Capabilities with attribute version, e,.g.as shown in the reduced xml file example below:

Code Block
<WMS_Capabilities version="1.3.0" ... >

<Capability>
<Request>
...
<GetMap>
<Format>image/jpeg</Format>
<Format>image/png</Format>
<Format>application/vnd.google-earth.kmz</Format>
<Format>image/gif</Format>
...
</GetMap>
...
</WMS_Capabilities>

For each WMS version a number of datasets is hosted. Select one dataset (ice cream flavour) from the list through the Layer tag. The name of the dataest dataset is the name tag, in this case there is only topo. The xml file indicates that this dataset can be delivered in four well-known image different formats (this ice cream flavour ice cream is available in a cup, a cone and on a stick): jpg, png, kmz ad gif.

Code Block
<Layer>
 ...
 <CRS>EPSG:4326</CRS>
 <CRS>CRS:84</CRS>
 <CRS>EPSG:41001</CRS>
 <CRS>EPSG:3857</CRS>
 <CRS>EPSG:27700</CRS>
 <CRS>EPSG:3408</CRS>
 <CRS>EPSG:3409</CRS>
 <CRS>EPSG:32661</CRS>
 <CRS>EPSG:32761</CRS>
 ...
 <Layer>
  <Title>UCSD SRTM30_v6 Global DEM (30 sec)</Title>
  <Layer queryable="1">
  <Name>topo</Name>
  ...
  <Style><Name>boxfill/redblue        </Name>...
  <Style><Name>boxfill/redblue        </Name>...
  <Style><Name>boxfill/alg            </Name>...
  <Style><Name>boxfill/ncview         </Name>...
  <Style><Name>boxfill/greyscale      </Name>...
  <Style><Name>boxfill/alg2           </Name>...
  <Style><Name>boxfill/occam          </Name>...
  <Style><Name>boxfill/rainbow        </Name>...
  <Style><Name>boxfill/sst_36         </Name>...
  <Style><Name>boxfill/ferret         </Name>...
  <Style><Name>boxfill/occam_pastel-30</Name>
  ...
  </Layer>
 </Layer>
</Layer>

From the above xml extract we will can distill all values necesarry to request an image. Note that this dataset is available in 9 coordinate systems (EPSG:4326 is required, this is the WGS84 lat-lon system), and in 11 different color maps.

Request some WMS server content

...

keyword

value

source

service

WMS

Mandatory WMS standard value

request

GetMap

Mandatory WMS standard value

version

1.3.0

One of the mandatory WMS standard values returned by returned by the request=GetCapabilities

BBOX

0,50,10,55

bounding box: min(longitude),min(latitude),max(longitude),max(latitude)

layers

topo

WMS counterpart of WCS coverage

format

image/png

One of the mandatory WMS standard values by returned by the request=GetCapabilities tag <Capability><Request><GetCapabilities><Format>. In the example above there are 4 formats.

CRS

EPSG%3A4326

One of the server-defined values by returned by the request=GetCapabilities tag <Layer><Layer><Layer queryable="1"><CRS>. In the example above there are 9 geographic projections available . Note that the colon in EPSG:4326 has been replaced by by %3A because colons are not allowed in urls. CRS always consists of namespace:identifier, in this case there are two namespaces.For more info on the projections see spatialreference.org and epsg-registry.org.

width

800

width of the image in number of pixels. The xml file show a max
MaxWidth and MaxHeight allowd by the server.

height

600

height of the image in number of pixels

styles

boxfill/redblue

One of the server-defined values by returned by the request=GetCapabilities tag <Layer><Layer><Layer queryable="1"><Name>topo</Name><Style><Name>. In the example above there are 10 styles, for screenshots click the gallery below. Unfortunately, it is not easily possible to supply your own colormap and colorlimits. for this you need to obtain the data and plot it yourselves, please refer to our WCS primer.

Summary: correct A valid WMS request for an example for one of the available formats is given below. You can copy it into your browser to obtain the image, and see that is works. We chose the same bounding boxes as in the OPeNDAP primer that access these very same datasets via netCDF libraries in Matlab, python or R. We discussed the pros and cons of WCS vs OPeNDAP in a FOSS4G paper paper in Transactions in GIS that was presented at the FOSS4G conference.

Code Block
http://geoport.whoi.edu/thredds/wms/bathy/smith_sandwell_v11?service=WMS
&version=1.3.0
&request=GetMap
&bbox=0,50,10,55
&layers=topo
&format=image/png
&crs=EPSG%3A4326
&width=800
&height=600
&styles=boxfill/redblue

...

WMS offers more than described in this primer. It it also possible to
request a legend for a specific style, and to request the data at one pixel
an image you requested. For these more sophisticated options, please refer to the full WMS specifications.