Archive for the 'INSPIRE' Category

CBSviewer, an accessible, open standards based webmap viewer

The past months I’ve been busy developing a webmapping application together with Statistics Netherlands to replace their current offerings of webmapping such as CBS in uw Buurt which have various accessibility issues and has Google looking in over your shoulder. The new application can be used with both the keyboard and a mouse and  and will fallback to a non CSS and/or non Javascript version if needed (or requested) by the user providing a much better experience.

Key features of the application are:

  • open standards based interfaces (WMS, WMTS, OpenLS LUS and WCAG)
  • easy modification using maven war overlay techniques (as example you can look into the NOKviewer project)
  • easy to localize using property files / resource bundles for all the text
  • easy to configure thematic maps using a set of xml files
  • easy styling adjustments using Sass and modular CSS

The project builds on well documented, well supported and proven open source libraries such as GeoTools, OpenLayers, jQuery and jQuery UI.

We’re not quite there yet but you can follow the progress of the project through the Github site: [Dutch]

Performance and uptime monitoring Inspire View service

The inspire directive has some fairly strict requirements regarding performance and uptime of services (QOS) (see: 32009R0976 Annex 1 and the amendment). Monitoring these parameters can easily be done using a few Python scripts and RRDtool. This provides an environment that is both lightweight and portable across platforms.

RRDtool has been around for ages and is a de-facto instrument for lightweight logging systems gathering large amounts of data. The database aggregates the input providing various algorithms such as average, max/min value as well as way more complex methods. The aggregation makes it possible to use the same database for years while the filesize stays constant and the amount of information just keeps growing. Current versions of RRDtool provide Python bindings out of the box, however I chose to use PyRRD because I was unsuccesful compiling them using Visual Studio 10 first time around.

I have chosen to monitor performance based on response time (the time needed for the initial byte to be received) and transfer time (the time needed for the last byte to be received).

graph showing 4h performance report

Performance measurements, note that responses also vary because of variations in requested image size

To prevent caching of the image a pseudo random bounding box and image size are used so that each request is unique, this generates some variance in the response size so the amount of data transferred (total bytes) for each request is also logged.

Next to that uptime is monitored based on the correct mimetype of the GetMap response, the assumption here is that a mimetype other that requested means there was an error in the service, thus un-availability, this is a rather coarse approach, but it works for me because there is a separate error log that provides the details of a failure.

graph showing 1 week downtime report

Any red line in this graph denotes a failure

I have a batch file that runs the probe script every five minutes and create a graph every fifteen minutes, a HTML page is used to display the resulting graph as wel as provide access to the logfile and the last request.

Browse or get the sourcecode.

%d bloggers like this: