DSM Filling

Name: “dsm_filling”

Description

Fill classified values or missing values with one the three avalable methods.

Note

Filling can be configured directly in the input configuration. Each method combines several available filling applications.

Configuration

Name

Description

Type

Available value

Default value

Required

method

Method for hole detection

string

“exogenous_filling”, “bulldozer”, “border_interpolation”

Yes

save_intermediate_data

Save disparity map

boolean

False

No

Method exogenous_filling:

Method “exogenous_filling” fills with altitude of exogenous data (DEM/geoid).

Name

Description

Type

Available value

Default value

Required

classification

Values of classes to fill

List[str]

“nodata”

No

fill_with_geoid

Classes to fill with geoid

List[str]

None

No

interpolation_method

Interpolation method for DEM and geoid resampling

List[str]

“bilinear”, “cubic”

“bilinear”

No

Method bulldozer:

Method “bulldozer” converts the DSM to a DTM and fills the pixels with the output DTM.

Name

Description

Type

Available value

Default value

Required

classification

Values of classes to fill

List[str]

“nodata”

No

Method border_interpolation:

Method “border_interpolation” use the border of every component to compute the altitude to fill.

Name

Description

Type

Available value

Default value

Required

classification

Values of classes to fill

List[str]

“nodata”

No

component_min_size

Minimal size (pixels) of feature to fill

int

5

No

border_size

Size of border used to estimate altitude

int

10

No

percentile

Percentile of border taken for altitude

float

10

No

Note

  • If the keyword “nodata” is added to the classification parameter, nodata pixels of the classification will be filled. If no classification is given, nodata pixels of DSM will be filled.

Warning

There is a particular case with the dsm_filling application because it can be called any number of times. Because it is not possible to define three times the dsm_filling in your yaml/json configuration file, you can add an identifier after dsm_filling to differentiate each application :

  • dsm_filling.border_interp

  • dsm_filling.two

  • dsm_filling.with_bulldozer

It is recommended to run bulldozer before border_interpolation in order for border_interpolation to get a DTM. If no DTM is found, border_interpolation will use the DSM. The execution order is determined by the order of the applications in the configuration file.

Example

---
applications:
  dsm_filling.1:
    method: exogenous_filling
    classification:
    - "8"
    fill_with_geoid:
    - "8"
    save_intermediate_data: true
  dsm_filling.2:
    method: bulldozer
    classification:
    - "6"
    save_intermediate_data: true
  dsm_filling.3:
    method: border_interpolation
    classification:
    - "7"
    save_intermediate_data: true
{
    "applications": {
        "dsm_filling.1": {
            "method": "exogenous_filling",
            "classification": [
                "8"
            ],
            "fill_with_geoid": [
                "8"
            ],
            "save_intermediate_data": true
        },
        "dsm_filling.2": {
            "method": "bulldozer",
            "classification": [
                "6"
            ],
            "save_intermediate_data": true
        },
        "dsm_filling.3": {
            "method": "border_interpolation",
            "classification": [
                "7"
            ],
            "save_intermediate_data": true
        }
    }
}
---
applications:
  dsm_filling: # run single filling application
    method: exogenous_filling
    classification:
    - "8"
    fill_with_geoid:
    - "8"
{
    "applications": {
        "dsm_filling": {
            "method": "exogenous_filling",
            "classification": [
                "8"
            ],
            "fill_with_geoid": [
                "8"
            ]
        }
    }
}
---
applications:
  dsm_filling.create_dtm: # the first application uses bulldozer, creating a DTM
    method: bulldozer
    classification:
    - "6"
  dsm_filling.use_dtm: # the second application uses the DTM created earlier
    method: border_interpolation
    classification:
    - "10"
{
    "applications": {
        "dsm_filling.create_dtm": {
            "method": "bulldozer",
            "classification": [
                "6"
            ]
        },
        "dsm_filling.use_dtm": {
            "method": "border_interpolation",
            "classification": [
                "10"
            ]
        }
    }
}