Releases: VU-IVM/DamageScanner
v1.0.1
v1.0.1 — Patch Release
This patch fixes two bugs in the vector damage calculation pipeline.
MultiLineString geometry support (_convert_to_meters)
Vector features with MultiLineString geometries were not handled correctly, causing failures during length conversion. The fix extracts the first component geometry (.geoms[0]) before proceeding with the geodesic length calculation.
Cell area estimation for meter-based CRS (_get_cell_area_m2)
When the features were provided in a projected coordinate system (meters rather than degrees), the cell area estimation produced NaN values. The fix reprojects the asset point to the hazard CRS before buffering, ensuring valid area estimates regardless of the input coordinate system.
v1.0.0
DamageScanner v1.0.0 Release Notes
🎉 First Major Release
We're excited to announce DamageScanner v1.0.0! This release marks a major milestone with comprehensive testing, new features, and improved stability.
New Features
Improved NetCDF Hazard Support
- Full support for NetCDF climate and hazard data (
.ncfiles) - Handles various NetCDF structures (with
band,z, or other dimensions) - Robust CRS detection with fallback for files without EPSG codes
New Parameters
extract_strategy: Choose between"feature-sequential"and"raster-sequential"for exactextract processingreturn_full: Option to return all features, not just those with hazard exposure (useful for mapping)
Vector-Vector Overlay
- New
_overlay_vector_vectorfunction for damage assessment using vector hazard data (e.g., flood polygons from hydraulic models) - Supports polygon, line, and point exposure features
- Automatic CRS reprojection to metric coordinates for accurate area/length calculations
Bug Fixes
Core Calculations
- Fixed discrepancies between gridded and non-gridded approaches - both methods now produce consistent results
- Fixed
_convert_to_meters()- now correctly usespyproj.Geodfor accurate geodesic length calculations - Fixed
np.trapzdeprecation by updating tonp.trapezoid
Data Processing
- Fixed point geometry handling - proper dtype conversion for
valuesandcoveragecolumns - Fixed xarray DataArray detection to avoid calling
.to_dataarray()on already-converted data - Fixed buildings extraction from OSM to use multipolygons only (building points are POI markers, not footprints)
- Fixed invalid OSM geometry handling with
on_invalid="ignore" - Fixed parquet file reading in
VectorExposure
CRS Handling
- Added
_crs_is_meters()helper function for robust CRS unit detection - Fixed crashes when NetCDF files lack valid EPSG codes
- Improved CRS fallback to EPSG:4326 when undefined
Data Consistency
- Added
_ensure_list()helper to guarantee consistent list output forvaluesandcoveragecolumns - Fixed numpy array vs Python list inconsistency from exactextract
- Fixed
_convert_to_meters()to handle empty, None, and NaN coverage values
Other Fixes
- Fixed
object_colparameter not being passed through VectorScanner - Fixed asset_type filtering to only apply for OSM data (not user-provided vector files)
- Replaced bare
except:withexcept Exception:for proper error handling - Fixed FutureWarning for
rio.set_crs()→rio.write_crs()
Testing Infrastructure
Comprehensive Test Suite
- 137+ tests covering all major functionality
test_core.py- DamageScanner class, raster/vector/OSM workflowstest_raster.py- RasterScanner functionstest_vector.py- VectorScanner, VectorExposure, vector-vector overlaytest_utils.py- Utility functionstest_osm.py- OSM data extractiontest_download.py- Download functions (mocked)
Continuous Integration
- GitHub Actions workflow for automated testing on every push/PR
- Ruff formatting and linting checks
- Test markers for slow tests (
@pytest.mark.slow)
Documentation
Example Notebooks
Five new example notebooks demonstrating key workflows:
- Raster Damage Assessment - Basic flood damage with raster data
- Vector Damage Assessment - Vector exposure with raster hazard
- OSM Infrastructure Assessment - Roads, buildings, and critical infrastructure
- NetCDF Hazard Assessment - Climate data (windstorms, etc.)
- Risk Assessment - Expected Annual Damage from multiple return periods
Updated Documentation
- New GitHub Pages documentation site
- Updated README with CI badges (tests, docs, linting)
- Improved docstrings throughout the codebase
Breaking Changes
VectorExposurenow returns 5 values instead of 4 when using theis_osmflag (if you destructure the return value)- Default behavior for
return_fullmay affect downstream code expecting only exposed features
Contributors
- Elco Koks (@ElcoK)
- Jens de Bruijn (@jensdebruijn)
v1.0.0b3
Merge pull request #54 from VU-IVM/jens-test-lower-numpy test lower numpy bound
1.0.0b2
v1.0.0b2 support python 3.14
v1.0.0b1
set version to b1
v0.9-beta.25
Full Changelog: v0.9beta.22...v0.9beta.25
v0.9beta.23
Full Changelog: v0.9beta.22...v0.9beta.23
v0.9beta.22
Full Changelog: v0.9beta.21...v0.9beta.22
v0.9beta.21
update uv lock
v0.9beta.20
Full Changelog: v0.9beta.19...v0.9beta.20