Saturday, 14 June 2014

Object-based segmentation of topography with RSGISLib

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.

No comments:

Post a Comment