Landuse classification¶
Problem definition¶
- We have the following datasets:
- An existing Landuse vector dataset
- Orthorectified Aerial images (Digital Ortho Photos = DOP)
- Satellite images (SAT), e.g. Sentinel 2 10m
- We want to select / extract landcover classes from landuse classes.
- We want to use Support Vector Machines (or other Machine Learning Classifiers) for classifying landcover classes.
- see section Support Vector Machines
- We want to support Multiple classes using a One versus All (OvA) strategy or One vs. Rest.
- see section One vs. Rest
- We want to parallelize the computation in our Spark cluster using Geotrellis for data loading and export.
Todo
- Describe the idea
- Maybe add some geotrellis examples
Classification of Aerial Images according to Land Use Classes (using Land Cover Classes as intermediate)¶
Tools¶
- Machine Learning
- Training: Multiclass SVM
- Geotrellis
Scala code snippets¶
type SpatialMultibandRDD = RDD[(SpatialKey, MultibandTile)] with Metadata[TileLayerMetadata[SpatialKey]] // reading from Hadoop Layer (HDFS) val rdd : SpatialMultibandRDD = biggis.landuse.api.readRddFromLayer(LayerId(layerName, zoom)) // writing to Hadoop Layer (HDFS) biggis.landuse.api.writeRddToLayer(rdd, LayerId(layerName, zoom))
Example¶
- Classification of Aerial Images May-Aug 2016
- Layerstacking: Aerial Images + Satellite images (IR, Resolution 2m)
- Training of a Multiclass SVM with manually selected training data (classified image tiles)
Further Steps¶
- Adding additional Layers, e.g.
- Terrain Height
- Homogeneity of Texture
- Using Other Classififiers