The problem they had was: how to provide a single WMS server with data from different sources (swiss “kantons” = swiss regions) when the data doens’t all have the same structure? How do you aggregate that? You want the same symbols and you want it to be one WMS server, ideally.
One thing you can do is to collect the data centrally. For that you need a unified data model… And you need to keep the data fresh. And, big problem, you’re storing data outside of the organisation (the swiss region) that owns and manages the data.
You could use a tile cache that combines the output of the various regions. Problem: the symbols are probably not the same. And layers can only be combined limitedly. And you cannot provide data downloads, you only have the rendered maps.
Another option: a portal that simply sends you to each region’s own WMS service. You don’t have an aggregated visual map, only separate ones. And you still don’t have data downloads.
You can do the aggregation on the client. You do get an aggregated visual map. Drawback: the performance is that of the slowest of the region’s servers… Aggregated downloads aren’t possible.
What they are aiming for with their architecture is a bit of a combination of the above options, but the basis is the second option (a tile server). But with the addition of some data aggregation (in so far possible) so that you can get an aggregated data download.
Some functions of the aggregation server:
Cascading WMS: WMS server that redirects to regional WMS services. Including protocol translation if a regional WMS still has an older protocol version.
Conversion of EPSG: conversion of projections if needed.
Depending on the view area, there can be full redirection to the region’s own WMS server if only that one’s data needs to be displayed.
Cascading GetFeatureInfo: sending it to the proper region’s WMS server. Selection happens based on the area, so you need to feed for instance a shapefile to the aggregation server so that it knows what to do.
GetFeatureInfo also is harmonised: the character encoding is unified, for instance.
Cascading again: WFS requests. This one is really tricky to get right, btw.
My name is Reinout van Rees and I work a lot with Python (programming language) and Django (website framework). I live in The Netherlands and I'm happily married to Annie van Rees-Kooiman.
Most of my website content is in my weblog. You can keep up to date by subscribing to the automatic feeds (for instance with Google reader):