Bulldozer, a DTM extraction tool requiring only a DSM as input.
Key Features • Installation • Quick Start • Documentation • Contribute • Licence • Reference
Bulldozer is designed as a pipeline of standalone functions that aims to extract a Digital Terrain Model (DTM) from a Digital Surface Model (DSM).
But you can also use one of the following function without running the full pipeline:
- DSM preprocessing
- Nodata extraction: a group of methods to differentiate and extract nodata related to failed correlations during the DSM computation and those of the image border
- Disturbed areas detection: a method to locate disturbed areas. These noisy areas are mainly related to areas in which the correlator has incorrectly estimated the elevation (water or shadow areas).
- DTM extraction
- DTM computation: the main method that extracts the DTM from the preprocessed DSM.
- DTM postprocessing
- Pits detection: a method to detect pits in the provided raster and return the corresponding mask.
- Pits filling: a method to fill pits in the generated DTM (or input raster).
- DHM computation: a method to extract the Digital Height Model (DHM).
For more information about these functions and how to call them, please refer to the notebook documentation section.
You can install Bulldozer by running the following command:
pip install bulldozer-dtm
It is recommended to install Bulldozer into a virtual environment, like conda or virtualenv.
- Installation with
virtualenv
:
# Clone the project
git clone https://github.com/CNES/bulldozer.git
cd bulldozer/
# Create the environment
python -m venv bulldozer_venv
source bulldozer_venv/bin/activate
# Install the library
pip install .
- First you have to create a configuration file or edit the
configuration_template.yaml
available in theconf
directory. You have to update at least the following parameters:
# Input DSM path (expected format: "<folder_1>/<folder_2>/<file>.<[tif/tiff]>")
dsm_path : "<input_dsm.tif>"
# Output directory path (if the directory doesn't exist, create it)
output_dir : "<output_dir>"
-
Run the pipeline:
- Through CLI (Command Line Interface)
bulldozer --conf conf/configuration_template.yaml
- Through Python API using the config file
from bulldozer.pipeline.bulldozer_pipeline import dsm_to_dtm dsm_to_dtm(config_path="conf/configuration_template.yaml")
- Through Python API providing directly the input parameters (missing parameters will be replaced by default values)
from bulldozer.pipeline.bulldozer_pipeline import dsm_to_dtm # Example with a specific number of workers dsm_to_dtm(dsm_path="<input_dsm.tif>", output_dir="<output_dir>", nb_max_workers=16)
-
✅ Done! Your DTM is available in the <output_dir>
For each section described in Key Features section you can follow one of the tutorial notebook:
- Running Bulldozer (full pipeline)
- Preprocessing standalone functions
- Extraction step
- Postprocessing standalone functions
Bulldozer also has a more detailed documentation.
A high-level overview of how it’s organized will help you know where to look for certain things:
- Tutorials take you by the hand through a series of steps to create a DLCooker application. Start here if you’re new to DLCooker.
- How-to guides are recipes. They guide you through the steps involved in addressing key problems and use-cases. They are more advanced than tutorials and assume some knowledge of how DLCooker works.
- Explanation guides discuss key topics and concepts at a fairly high level and provide useful background information and explanation.
NOTE: The documentation is not available online yet, it needs to be built manually.
To do so, please execute the following command at the root:
mkdocs serve
To do a bug report or a contribution, see the Contribution Guide.
for any help or suggestion, feel free to contact the authors:
- Dimitri Lallement : dimitri.lallement@cnes.fr
- Pierre Lassalle : pierre.lassalle@cnes.fr
Bulldozer has a Apache V2.0 license, as found in the LICENSE file.
Please refer to the Authors file.