Looking Beyond the Local Neighbourhood: Developing Topographic Indices with a Dynamic Kernel
Why: Spatial and topographic position indicators (and related terrain indicators) enables Tesera to provide enhanced Forest Inventory services and Risk Assessment services for our clients. These indicators are leveraged in Machine Learning processes to help understand which geographic factors explain events, sampled parameters, or outcomes.
What: Physical terrain characteristics have been derived and used in GIS spatial data analysis and visualization for decades. Some of the most common local neighbourhood characteristics being: 1) elevation statistics such as mean, max, min, and standard deviation; 2) terrain properties such as slope gradient and slope aspect [Horn, 1981]; 3) complex properties such as curvature [Mitasova, H., 1985], roughness, TRI TRI (Terrain Ruggedness Index) and TPI (Topographic Position Index) [Wilson et al., 2007]; and 4) properties derived from interactions of slope, aspect, elevation squared, cosine/sine of aspect, and log of elevation [Stage and Salas, 2007]. There are also terrain characteristics of topographic position derived from multi-scale neighbourhoods that determine hilltops, valley bottoms, exposed ridges, flat plains, and upper/lower slope [Jones, K. Bruce et al., 2000; Weiss, 2001].
How: Open Source tools (developed in R, supported by rgdal, raster, rgeos, sp and docopt packages) have been developed to generate the required physical and topographic indicators. Topographic indicators are highly effected by scale, and as such calculations at many multi-scale neighborhoods must be determined. This process is highly computational intensive requiring approximately 1 CPU hours per 10 square kilometres. To accomplish this computational workload at the required scales Tesera has developed methods of task queueing and distribution using Amazon Web Services Simple Queue Service and Elastic Container Service to execute the tasks. This pattern has provided us with a reliable method to handle the deployment of the dependencies and execute on large numbers of basic isolated tasks.