Skip to content

Vector-based Approach

This page explains how to use DamageScanner with vector-based exposure data (e.g. shapefiles, GeoPackages, or OSM data). This approach is ideal for object-level damage estimation, such as buildings, roads, power plants, and other individual infrastructure assets.


When to Use Vector-Based Workflows

Scenario Raster-Based Vector-Based
Infrastructure objects (e.g. bridges, roads)
OpenStreetMap data
Detailed local studies
Exposure linked to specific geometries

Required Inputs

As described in the Overview, you need:

  1. Hazard raster (e.g. flood depth, wind speed)
  2. Exposure vector (e.g. buildings, roads — as .shp, .gpkg, .pbf, or GeoDataFrame)
  3. Vulnerability curves (CSV or DataFrame)
  4. Maximum damage values (CSV, dict, or DataFrame)

For a detailed walkthrough with real data and visualizations, see our Vector-based example notebook.


Key Behavior

  • The exposure file must contain geometry columns (Point, LineString, or Polygon)
  • DamageScanner overlays each geometry with the hazard raster
  • It then samples the hazard value and looks up the damage fraction from the corresponding vulnerability curve
  • The damage is calculated as:

exposure_area * damage_fraction * max_damage


📚 See Also

API Documentation

vector

Vector-based damage estimation functions for DamageScanner.

VectorExposure(hazard_file, feature_file, asset_type='roads', object_col='object_type', hazard_value_col='band_data', disable_progress=False, gridded=True, extract_strategy='raster-sequential', return_full=True)

Load and overlay vector or raster hazard with vector exposure data.

Parameters:

Name Type Description Default
hazard_file Path | Dataset | DataArray | DatasetReader | GeoDataFrame

Hazard input.

required
feature_file Path | GeoDataFrame | DataFrame | str

Exposure input.

required
asset_type str | None

Infrastructure category (only for OSM).

'roads'
object_col str

Name of the object type column.

'object_type'
hazard_value_col str

Column name in vector hazard containing intensity values.

'band_data'
disable_progress bool

Whether to suppress progress bars.

False
gridded bool

Whether to process in spatial chunks.

True
extract_strategy str

exactextract strategy - "feature-sequential" or "raster-sequential".

'raster-sequential'
return_full bool

Whether to return all features, even those with no hazard intersection.

True

Returns:

Name Type Description
tuple tuple[GeoDataFrame, str, CRS | None, float | None]

(features, object_col, hazard_crs, cell_area_m2)

Raises:

Type Description
ValueError

If input files are not in expected formats or if geometry types are unsupported.

VectorScanner(hazard_file, feature_file, curve_path, maxdam_path=None, asset_type=None, multi_curves=dict(), object_col='object_type', hazard_value_col='band_data', disable_progress=False, gridded=True, extract_strategy='raster-sequential', return_full=True)

Perform vector-based direct damage assessment using hazard and exposure layers.

Parameters:

Name Type Description Default
hazard_file Path | Dataset | DataArray | GeoDataFrame | str

Hazard input.

required
feature_file Path | GeoDataFrame | str

Exposure input.

required
curve_path Path | DataFrame | str

Vulnerability curve(s).

required
maxdam_path Path | DataFrame | dict | None

Maximum damage values.

None
asset_type str | None

Infrastructure class (only for OSM).

None
multi_curves dict

Multiple curve sets.

dict()
object_col str

Column name with object type.

'object_type'
hazard_value_col str

Column name in vector hazard containing intensity values.

'band_data'
disable_progress bool

Whether to suppress progress bars.

False
gridded bool

Whether to process in spatial chunks.

True
extract_strategy str

exactextract strategy - "feature-sequential" or "raster-sequential".

'raster-sequential'
return_full bool

Whether to return all features, even those with no hazard intersection.

True

Returns:

Type Description
GeoDataFrame

Exposure data with calculated damages.

Raises:

Type Description
ValueError

If input files are of unsupported formats or if geometry types are not supported.

KeyError

If object types in exposure are not covered by maximum damage data.