Surface Interpolation in GeoServer
NASA’s Global Learning and Observations to Benefit the Environment (GLOBE) Program, a federally funded education initiative, collects meteorological data from schools around the world to create a database of environmental measurements. The data is displayed using contour surfaces on the GLOBE website. Using the OpenGeo Suite, we’ve been working with GLOBE to help improve the functionality and usability of the GLOBE website by rebuilding the map to allow fast, dynamic presentation of surfaces for observations on any chosen day.
The surfaces are generated using Barnes Surface Interpolation, a technique that computes a surface estimated from scattered data observations. We implemented a version of this algorithm in Java and optimized it to provide the performance needed for dynamic web mapping applications.
The Barnes Surface Interpolation algorithm is accessed via a powerful new GeoServer feature called Rendering Transformations. Rendering Transformations allow performing custom geoprocessing within the map rendering pipeline in a highly flexible way. Transformations can change data representation from vector to raster or vice-versa, depending on the kind of visual effect required.
In this case, the output of the Barnes Surface transformation is a raster representing the interpolated surface. The raster can be styled using GeoServer’s SLD styling language and the styled surface can be combined with other GeoServer layers to do things like display the observation data points or computed contour lines. The final map image can then be displayed over any base map, resulting in a fast, informative display of the contoured surface. The speed of display allows dynamic zooming and panning, as well as quick changes to map options including measurement type, date range, or even the surface interpolation parameters.
Having this capability available directly in the server provides access to many of the powerful features of GeoServer, such as tiling and time-based animations. Other kinds of interpolated surfaces (such as Inverse-Distance Weighting or Kriging) can be added easily. In fact, we’re currently developing more Rendering Transformations for spatial visualization techniques, including heatmaps and point clustering. If you have any ideas for spatial data visualization, leave a comment!