Tree canopy map for the Jonction neighbourhood (Geneva) at the 40cm resolution obtained with DetecTree [1] from Geneva's Orthophoto 2019 and LiDAR 2019 datasets. The obtained tree canopy raster file (22.0 MB) can be downloaded from Zenodo.
- Source: Geneva's Orthophoto 2019 and LiDAR 2019 datasets
- CRS: CH1903+/LV95 -- Swiss CH1903+/LV95 (EPSG:2056)
- Resolution: 40cm
- Extent: From file agglom-extent.shp.
- Method: supervised learning (AdaBoost) with 2 classifiers on manually-generated ground truth masks for 2 training tiles (out of a total 65 tiles) of 512x512 pixels. See Yang et al. [2] for more details.
- Accuracy: 94.88%, estimated from a ground truth mask for 1 tile of 512x512 pixels (computed from LiDAR data).
If you use this dataset, a citation to DetecTree would certainly be appreciated. Note that DetecTree is based on the methods of Yang et al. [2], therefore it seems fair to reference their work too. Additionally, the sources, i.e., Geneva's Orthophoto 2019 and LiDAR 2019 datasets can be acknowledged. An example citation in an academic paper might read as follows:
The tree canopy dataset for the Jonction neighbourhood (Geneva) has been obtained from the Geneva's Orthophoto 2019 and LiDAR 2019 datasets with the Python library DetecTree (Bosch, 2020), which is based on the approach of Yang et al. (2009).
- Create a conda environment
make create_environment
- Activate it
conda activate jonction-tree-canopy
- Download the train/test split used in this workflow run from Zenodo1.
make download_zenodo_split
- Compute the responses for the training tiles (i.e., ground truth masks) from LiDAR data (the response tiles will be automatically dumped to
data/interim/response-tiles
):
make response_tiles
- Train tree/non-tree classifiers:
make train_classifiers
- Use the classifiers to predict a tree canopy raster:
make tree_canopy
Optional: If you want to use this environment in Jupyter, you might register its IPython kernel as follows:
make register_ipykernel
- If you want to execute your own run of this workflow, you might skip the
make download_zenodo_split
command from the third step and runmake train_test_split
instead. Note however that such a step of the workflow has a stochastic component (i.e., from the K-Means initialization), and therefore you might obtain a different train/test split which might require you to download LiDAR data manually from SITG (link in French).
- With the support of the École Polytechnique Fédérale de Lausanne (EPFL)
- Project based on Henk Griffioen's version of the cookiecutter data science project template. #cookiecutterdatascience
- Bosch, M. (2020). Detectree: Tree detection from aerial imagery in Python. Journal of Open Source Software (under review).
- Yang, L., Wu, X., Praun, E., & Ma, X. (2009). Tree detection from aerial imagery. In Proceedings of the 17th ACM SIGSPATIAL International Conference on Advances in Geographic Information Systems (pp. 131-137). ACM.