/bulldozer

Bulldozer is a pipeline designed to extract a Digital Terrain Model (DTM) from a Digital Surface Model (DSM).

Primary LanguagePythonApache License 2.0Apache-2.0

Bulldozer, a DTM extraction tool requiring only a DSM as input.

Python Contributions welcome License PyPI Version

Key FeaturesInstallationQuick StartDocumentationContributeLicenceReference


Key features

demo

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.

Installation

Using Pypi

You can install Bulldozer by running the following command:

pip install bulldozer-dtm

Using Github

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 .

Quick Start

  1. First you have to create a configuration file or edit the configuration_template.yaml available in the conf 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>"
  1. 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)
  2. ✅ Done! Your DTM is available in the <output_dir>

Documentation

Notebooks

For each section described in Key Features section you can follow one of the tutorial notebook:

Full documentation (WIP)

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

Contribute

To do a bug report or a contribution, see the Contribution Guide.
for any help or suggestion, feel free to contact the authors:

Licence

Bulldozer has a Apache V2.0 license, as found in the LICENSE file.

Credits

Please refer to the Authors file.

Reference

D. Lallement, P. Lassalle, Y. Ott, R. Demortier, and J. Delvit, 2022. BULLDOZER: AN AUTOMATIC SELF-DRIVEN LARGE SCALE DTM EXTRACTION METHOD FROM DIGITAL SURFACE MODEL. ISPRS - International Archives of the Photogrammetry, Remote Sensing and Spatial Information Sciences.