Adaptive Web Maps

Some ideas for an article and example code.

Service

Leaflet front end

bdiana back end

Two caches:

User driven cache that updates as requests are made for tiles.

Pre-emptive cache that is populated by a back end service according to a set of rules.

Back end service:

Takes location and time information from predefined sources (e.g. calendars, public holidays, schedules) that describe upcoming events and populates the pre-emptive cache for those locations and times.

The spatial extent of each event is defined by the event source, possibly augmented by a set of rules; translating a postition into an area, for example.

The temporal extent is defined by the event source, possibly augmented by rules to extend the coverage to earlier and later times.

Since caching can only occur for the times that are available in the data, population of the cache needs to be scheduled for when suitable times become available. This depends on the range of forecast times contained in each specific dataset and will vary from model to model.

RSS feed of events that link to either tiles or to predefined views.

Adaptive caching occurs when rules are applied to the available data.

A preliminary population of the pre-emptive cache at low zoom levels is used to locate extreme weather.

Additional caching is performed for higher zoom levels.

Regions where caching has occurred are stored for future monitoring - this may not be necessary if the initial sweep is always performed on new data.

RSS feed of incidents that allow researchers/forecasters to examine them.

This could be used to allow editors to override incidents that are caused by errors in the code or data.

A tool could be used to enable editors to convert these incidents into events for processing alongside regular events from event sources.

Coverage layer:

Simply checks for the existence of cached tiles, returning coloured tiles for areas with coverage.

Potentially link tiles to event sources or to explanations of why adaptive caching is being used.

Expose the underlying infrastructure for reproducibility:

Host code repositories where the service is running, at least for read-only access of the running server code.

Host data, configuration information, references to event sources, and rules for handling events and incidents.