Object-based segmentation of topography with RSGISLib


14 Jun 2014 - MawKernewek

The RSGISLib (Remote Sensing and GIS) Python library written by Pete Bunting and Daniel Clewley provides a number of features, among them segmentation of images to objects.

This can not only be applied to what one conventionally thinks of as images, but also topographic layers. I thought I'd practice this on Earth first before trying to do this for Mars as I will be for my dissertation.

Using Space Shuttle Radar data (freely available - I got it via the program Viking) I obtained the elevation of the British Isles (excluding Shetland) and using GDAL via QGIS and the command line, created slope and aspect layers. I then transformed the aspect to remove the discontinuity at 360-0 deg, using degrees from N, so that 180 is south facing, east and west are both 90 etc.

Using RSGISLib it is possible to segment to objects. Here I show some results of doing so, using a layerstacked image with elevation, slope and angle from N. I have set the minimum connected object size to 1000 pixels. With the topographic data gridded at 73m, this means objects about 5.5 sq. km or larger.

Visualisation is a gaussian stretch in TuiView, setting red to aspect, green to slope, and blue to elevation, showing mean values for each segment.

Now I show a few of the actual segments without the values, with colours assigned in RSGISLib for visualisation. It is possible to populate a Raster Attribute Table to add data to the segments for a land cover classification.

From the Isles of Scilly to the Isle of Wight:
Wales, and central England.
 Zooming in to mid Wales:

By changing the object size, it is possible to do this at different scales. This is part of the segmentation for a minimum object size of 16384 pixels (that is about 89 sq. km) equivalent to a square 9.5km a side:

The thing that makes geospatial data interesting is how what you see in it changes depending on what scale you look at it and how you visualise it.

Back to blog index page