[mapserver-users] How to approach a multi dimensions scenario with WMS (or how specify additional parameters in WMS without breaking OGC specs)

Paolo Corti pcorti at gmail.com
Fri Feb 24 04:14:53 PST 2012


Hi all

We have the following scenario: every day we receive a meteorological
dataset in NetCDF, that contains 104 subdatasets, each representing a
different variable.
Each of these subdataset has 10 bands, each representing the forecast
value for that variable for the coming 10 days.
We need to expose all of this datasets as different WMS and keep the
access to all of the datasets (NetCDF) in the time.

The approach I was considering is the following: every day I would
generate with a script a *different mapfile*, representing one single
NetCDF dataset.
Still with a script I would build 104 tiled shapefile, with a TIME
field (WMS Time option). Each shapefile would contain 10 record, one
for each band (day), set to the path of a virtual raster (still
generated by the script) pointing to the correct combination of
variable/day in the NetCDF file. The mapfile would contain 208 layers,
two for each variable (the tile shapefile for time tiling the forecast
day, and the raster for the variable).

One alternative approach could be to create just a single WMS and
append parameters in the request, and process them with *mapscript*,
but this way I believe the service would go out from the OGC
specification.
Simply, I would like that any single day would have a specific WMS
service, exposed by a different mapfile. This way the end user could
query the specific WMS for a given day, using the TIME parameter for
specifing the forecast day, and the LAYER parameter for specifing the
variable.

This way I will be able to build a request for each different dataset
(represented by a different mapfile), each different variable
(represented by a layer in mapfile) and each day forecast (represented
by a single record in the tile shapefile).

The request would be something like this:

http://localhost/mapserver/global?MAP=/path/to/mapfiles/dataset_20111001.map&LAYERS=myvariable&TIME=2011-10-03&...

With Apache URL rewriting I could transform the request, making the
reference to the mapfile not evident:

http://localhost/mapserver/global/20111001?LAYERS=myvariable&TIME=2011-10-03&...

Do you think this could be a correct approach or there is a better way
to proceed?

Thanks
P

-- 
Paolo Corti
Geospatial software developer
web: http://www.paolocorti.net
twitter: @capooti
skype: capooti


More information about the mapserver-users mailing list