Slope fix#18
Conversation
d0a54a6 to
b95b212
Compare
There was a problem hiding this comment.
Pull request overview
This PR addresses ground-estimation bias on sloped terrain by adjusting the ground grid after bin-min selection, and adds regression coverage around slopes. It also significantly expands unit test coverage across multiple libraries and improves packaging/CI reliability (including QGIS plugin headless execution and GeoPackage merging behavior).
Changes:
- Adjust ground height estimates to reduce slope-related bias and add an E2E slope-direction regression test.
- Add multiple new C++ unit test suites (grid, coordinate, contour ops, LAS, vegetation, colors, config) and wire them into CMake.
- Improve QGIS plugin robustness (summary results, merged contours “fid” fix, headless execution path) and update CI/build/packaging scripts accordingly.
Reviewed changes
Copilot reviewed 41 out of 42 changed files in this pull request and generated 2 comments.
Show a summary per file
| File | Description |
|---|---|
| src/tests/test_e2e.cpp | Adds slope-direction E2E regression test; switches env access to test wrapper. |
| src/process.cpp | Adds slope-bias adjustment step; improves binning bounds/rounding; tweaks min sentinel. |
| src/lib/vegetation/tests/test_vegetation.cpp | New unit tests for vegetation low-pass filtering. |
| src/lib/vegetation/CMakeLists.txt | Hooks vegetation tests into unit test target. |
| src/lib/utilities/tests/test_coordinate.cpp | New unit tests for coordinate/extent utilities. |
| src/lib/utilities/coordinate.hpp | Adds round_down(); fixes Coordinate3D z storage/type; includes <limits>. |
| src/lib/utilities/CMakeLists.txt | Adds coordinate tests to unit test target. |
| src/lib/testing/env.hpp | Adds blaze::test::get_env() wrapper for MSVC warning suppression. |
| src/lib/las/tests/test_las_point.cpp | New unit tests for LASPoint/LASClassification. |
| src/lib/las/tests/test_las_file.cpp | New unit tests for LASFile/LASData helpers and border utilities. |
| src/lib/las/CMakeLists.txt | Adds LAS tests to unit test target. |
| src/lib/isom/tests/test_colors.cpp | New unit tests for color types and conversions. |
| src/lib/isom/CMakeLists.txt | Adds isom color tests to unit test target. |
| src/lib/io/gpkg.hpp | Fixes OGR field definition creation (avoids heap allocation/leak pattern). |
| src/lib/grid/tests/test_grid.cpp | New unit tests for grids, transforms, and graph helpers. |
| src/lib/grid/tests/CMakeLists.txt | Adds grid tests to unit test target. |
| src/lib/contour/tests/test_contour_ops.cpp | New unit tests for contour joining/trimming/polyline conversions. |
| src/lib/contour/tests/CMakeLists.txt | Adds contour ops tests to unit test target. |
| src/lib/contour/contour_gen.hpp | Reworks join_contours() implementation and naming. |
| src/lib/config_input/tests/test_config_paths.cpp | New unit tests for config path resolution and edge cases. |
| src/lib/config_input/tests/test_config_lookup.cpp | New unit tests for config lookup/picking behavior. |
| src/lib/config_input/config_input.cpp | Makes color parsing resilient to missing colors sections. |
| src/lib/config_input/CMakeLists.txt | Adds config_input tests to unit test target. |
| src/lib/assert/assert.hpp | Adds [[unlikely]] hints to assertion paths. |
| src/lib/CMakeLists.txt | Adds new subdirectories (las, vegetation) to the build. |
| src/blaze.cpp | Improves CLI error handling and avoids exit(1); returns proper codes. |
| src/CMakeLists.txt | Uses absolute source paths in target_sources() calls. |
| scripts/install-ubuntu-deps.sh | Switches to apt-get and adds toolchain/LAPACK/BLAS deps. |
| qgis_plugin/tests/test_infer_crs.py | New pytest coverage for CRS parsing helper. |
| qgis_plugin/tests/test_contour_merge.py | New regression test for GeoPackage merge “fid” conflict. |
| qgis_plugin/tests/conftest.py | Mocks QGIS modules for headless pytest runs and loads module directly. |
| qgis_plugin/tests/init.py | Marks test package. |
| qgis_plugin/blaze_loader/create_qgis_project.py | Adds summary results, fixes merged contours “fid” issue, improves topo handling, headless entrypoint, and CI behavior. |
| qgis_plugin/blaze_loader/blaze_loader.py | Shows a detailed summary dialog based on returned summary dict. |
| cmake/FindDependencyDLLs.cmake | Expands Windows DLL copying to handle vcpkg and target runtime DLLs. |
| README.md | Simplifies header markup/formatting. |
| CMakeLists.txt | Improves Windows dependency scanning, Qt deployment, las++ FetchContent options, DLL copying, and test discovery timeout. |
| .github/workflows/release-app.yml | Adds install-and-run smoke tests for built packages; improves apt caching. |
| .github/workflows/qgis-plugin-test.yml | Switches to standalone PyQGIS script execution; skips topo download in CI. |
| .github/workflows/coverage.yml | Improves apt caching and LAPACK/BLAS install reliability; increases timeout. |
| .github/workflows/cleanup-artifacts.yml | Adds scheduled artifact cleanup workflow. |
| .github/workflows/build.yml | Improves apt caching and LAPACK/BLAS install reliability; increases timeouts. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
There was a problem hiding this comment.
Pull request overview
This PR targets a “slope fix” in terrain ground estimation, adds broader automated test coverage across several core libraries, and improves build/CI reliability (notably on Windows and for headless QGIS plugin runs).
Changes:
- Adjust ground estimation to correct slope-related bias and harden point-binning bounds handling.
- Add substantial new C++ unit tests (grid/utilities/las/isom/contour/config_input/vegetation) plus a new E2E slope-direction test.
- Refactor QGIS plugin project generation to return a structured summary, improve topo download handling/dedup, and fix merged-contours GeoPackage writing; update CI workflows and Windows DLL/Qt deployment.
Reviewed changes
Copilot reviewed 41 out of 42 changed files in this pull request and generated 2 comments.
Show a summary per file
| File | Description |
|---|---|
| src/tests/test_e2e.cpp | Adds slope-direction E2E test; switches env var access to test wrapper |
| src/process.cpp | Fixes binning bounds handling; applies slope bias adjustment to ground grid |
| src/lib/vegetation/tests/test_vegetation.cpp | Adds low_pass unit tests |
| src/lib/vegetation/CMakeLists.txt | Registers vegetation unit test source |
| src/lib/utilities/tests/test_coordinate.cpp | Adds Coordinate/Extent/Direction unit tests |
| src/lib/utilities/coordinate.hpp | Adds Coordinate2D::round_down; fixes Coordinate3D z storage/access |
| src/lib/utilities/CMakeLists.txt | Registers utilities coordinate unit tests |
| src/lib/testing/env.hpp | Adds blaze::test::get_env wrapper for getenv on MSVC |
| src/lib/las/tests/test_las_point.cpp | Adds LASPoint/LASClassification unit tests |
| src/lib/las/tests/test_las_file.cpp | Adds LASFile/LASData-related unit tests |
| src/lib/las/CMakeLists.txt | Registers LAS unit tests |
| src/lib/isom/tests/test_colors.cpp | Adds color model/conversion unit tests |
| src/lib/isom/CMakeLists.txt | Registers isom color unit tests |
| src/lib/io/gpkg.hpp | Fixes field creation pattern (stack-based OGRFieldDefn) |
| src/lib/grid/tests/test_grid.cpp | Adds Grid/GeoTransform/GeoGrid/GridGraph unit tests |
| src/lib/grid/tests/CMakeLists.txt | Registers grid unit tests |
| src/lib/contour/tests/test_contour_ops.cpp | Adds join/trim/polyline contour ops unit tests |
| src/lib/contour/tests/CMakeLists.txt | Registers contour ops unit tests |
| src/lib/contour/contour_gen.hpp | Refactors join_contours logic |
| src/lib/config_input/tests/test_config_paths.cpp | Adds Config path resolution tests |
| src/lib/config_input/tests/test_config_lookup.cpp | Adds config lookup/selection logic tests |
| src/lib/config_input/config_input.cpp | Makes colors parsing optional/defensive |
| src/lib/config_input/CMakeLists.txt | Registers config_input unit tests |
| src/lib/assert/assert.hpp | Adds [[unlikely]] annotations in assertion helpers |
| src/lib/CMakeLists.txt | Adds las and vegetation subdirectories |
| src/blaze.cpp | Wraps main in exception handling; returns proper exit codes |
| src/CMakeLists.txt | Uses explicit source paths for targets |
| scripts/install-ubuntu-deps.sh | Switches to apt-get; installs additional deps |
| qgis_plugin/tests/test_infer_crs.py | Adds tests for CRS inference helper |
| qgis_plugin/tests/test_contour_merge.py | Adds regression tests for merged contours GPKG writing |
| qgis_plugin/tests/conftest.py | Adds QGIS module mocks + module loader for tests |
| qgis_plugin/tests/init.py | Initializes test package |
| qgis_plugin/blaze_loader/create_qgis_project.py | Returns structured summary; improves headless execution & topo handling; fixes merged GPKG writing |
| qgis_plugin/blaze_loader/blaze_loader.py | Shows summary dialog using returned structured results |
| cmake/FindDependencyDLLs.cmake | Expands DLL copying to handle vcpkg and target runtime DLLs |
| README.md | Simplifies header markup/badges |
| CMakeLists.txt | Improves Windows deployment, dependency scanning, vcpkg cache, and test discovery timeout |
| .github/workflows/release-app.yml | Updates vcpkg caching; adds install-and-smoke-test for packages |
| .github/workflows/qgis-plugin-test.yml | Runs PyQGIS script directly; skips topo downloads in CI |
| .github/workflows/coverage.yml | Uses cached apt packages action; increases timeout; handles LAPACK/BLAS reliably |
| .github/workflows/cleanup-artifacts.yml | Adds scheduled artifact cleanup |
| .github/workflows/build.yml | Uses cached apt packages action; increases timeouts; handles LAPACK/BLAS reliably |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
There was a problem hiding this comment.
Pull request overview
This PR addresses slope-related DEM bias and CRS handling by adjusting ground estimation, preserving vertical CRS metadata in DEM outputs, and adding an override_crs configuration path that can supersede embedded LAS CRS. It also expands automated coverage (C++ unit tests + QGIS plugin tests) and updates CI/packaging/build scripts for better reliability (notably on Windows and headless QGIS runs).
Changes:
- Adjust ground estimation for slope bias and add an end-to-end slope regression test.
- Add CRS override support for LAS/LAZ inputs and preserve vertical datum metadata in DEM GeoTIFFs.
- Add substantial new unit/integration tests and CI/build improvements (QGIS plugin headless execution, Windows DLL copying, packaging verification).
Reviewed changes
Copilot reviewed 54 out of 56 changed files in this pull request and generated 4 comments.
Show a summary per file
| File | Description |
|---|---|
| src/tests/test_e2e.cpp | Uses unique per-test output dirs; adds slope-direction ground estimation regression test. |
| src/run.cpp | Passes override_crs into LAS reading; writes DEM outputs with optional vertical CRS. |
| src/process.cpp | Fixes binning bounds; adds slope-bias correction and writes DEM rasters with vertical CRS metadata. |
| src/lib/vegetation/tests/test_vegetation.cpp | Adds unit tests for vegetation low_pass overloads. |
| src/lib/vegetation/CMakeLists.txt | Registers vegetation unit tests in build. |
| src/lib/utilities/tests/test_coordinate.cpp | Adds unit tests for coordinate/direction/extent helpers. |
| src/lib/utilities/coordinate.hpp | Adds round_down(); fixes Coordinate3D z storage/type. |
| src/lib/utilities/CMakeLists.txt | Registers new utilities unit tests. |
| src/lib/tif/tif.hpp | Extends write_to_tif API with include_vertical_crs. |
| src/lib/tif/tif.cpp | Writes compound WKT for DEM rasters; normalizes read projection via CRS helper. |
| src/lib/testing/output_dir.hpp | Adds unique temp output directory/path helpers for tests. |
| src/lib/testing/env.hpp | Adds get_env() wrapper to centralize MSVC getenv warning suppression. |
| src/lib/las/tests/test_las_point.cpp | Adds LAS point/classification unit tests. |
| src/lib/las/tests/test_las_file.cpp | Adds LAS file/border/rounding/utility unit tests. |
| src/lib/las/las_file.hpp | Adds CRS override + normalization/compound CRS handling for LAS reading. |
| src/lib/las/CMakeLists.txt | Registers LAS unit tests. |
| src/lib/isom/tests/test_colors.cpp | Adds unit tests for color classes and conversions. |
| src/lib/isom/CMakeLists.txt | Registers ISOM color tests. |
| src/lib/io/tests/test_gpkg.cpp | Uses unique temp output paths for gpkg tests. |
| src/lib/io/gpkg.hpp | Fixes OGR field creation to avoid leaking heap-allocated OGRFieldDefn. |
| src/lib/io/crs.hpp | Adds WKT normalization + compound CRS construction helpers. |
| src/lib/grid/tests/test_grid.cpp | Adds unit tests for grids, transforms, interpolation, graph types. |
| src/lib/grid/tests/CMakeLists.txt | Registers new grid unit tests. |
| src/lib/grid/grid.hpp | Extends GeoProjection to track compound WKT for vertical CRS preservation. |
| src/lib/contour/tests/test_contour_ops.cpp | Adds unit tests for contour joining/trimming/polyline conversion. |
| src/lib/contour/tests/CMakeLists.txt | Registers new contour ops tests. |
| src/lib/contour/contour_gen.hpp | Refactors contour-joining logic to avoid reversal and improve joining behavior. |
| src/lib/config_input/tests/test_config_paths.cpp | Adds config path resolution + edge case tests. |
| src/lib/config_input/tests/test_config_lookup.cpp | Adds contour/water/vegetation config lookup tests. |
| src/lib/config_input/config_input.hpp | Adds override_crs to config schema. |
| src/lib/config_input/config_input.cpp | Parses/serializes override_crs; makes colors optional when loading config. |
| src/lib/config_input/CMakeLists.txt | Registers config_input unit tests. |
| src/lib/assert/assert.hpp | Fixes macro single-statement behavior; adds [[unlikely]] hints. |
| src/lib/CMakeLists.txt | Adds las and vegetation subdirectories to lib build. |
| src/gui/main_window.cpp | Adds pre-run warning for low average points-per-bin density. |
| src/gui/config_editor.ui | Adds LAS input stats label + projection override UI controls. |
| src/gui/config_editor.hpp | Adds cached LAS stats accessors + update_las_stats() hook. |
| src/gui/config_editor.cpp | Implements LAS stats aggregation and wires override_crs UI to config. |
| src/blaze.cpp | Improves CLI error handling; exits with proper return codes. |
| src/CMakeLists.txt | Uses absolute source paths for target sources. |
| scripts/install-ubuntu-deps.sh | Switches to apt-get; adds toolchain + BLAS/LAPACK deps. |
| qgis_plugin/tests/test_infer_crs.py | Adds pytest coverage for CRS inference logic. |
| qgis_plugin/tests/test_contour_merge.py | Adds regression tests for merged contour gpkg fid conflict. |
| qgis_plugin/tests/conftest.py | Mocks QGIS modules so tests can import/create modules headlessly. |
| qgis_plugin/tests/init.py | Adds package marker for tests. |
| qgis_plugin/blaze_loader/create_qgis_project.py | Returns structured summary; improves headless execution; fixes contour merge field copying; improves topo download behavior and reporting. |
| qgis_plugin/blaze_loader/blaze_loader.py | Displays structured summary dialog; consumes new create_qgis_project result dict. |
| cmake/FindDependencyDLLs.cmake | Copies runtime DLLs for Windows (vcpkg + non-vcpkg), improving test/runtime reliability. |
| README.md | Simplifies header layout/markup. |
| CMakeLists.txt | Windows dependency scanning tweak; Qt deploy serialization; laspp pin update; DLL copying for all WIN32; test discovery timeout. |
| .gitignore | Ignores test LAS fixtures/output directories. |
| .github/workflows/release-app.yml | Uses x-gha cache for vcpkg; adds install-and-smoke-test steps for packages. |
| .github/workflows/qgis-plugin-test.yml | Runs PyQGIS script directly; skips topo download in CI. |
| .github/workflows/coverage.yml | Uses cached apt action; adjusts timeouts; adds explicit BLAS/LAPACK install. |
| .github/workflows/cleanup-artifacts.yml | Adds scheduled artifact cleanup workflow. |
| .github/workflows/build.yml | Uses cached apt action; adjusts timeouts; adds explicit BLAS/LAPACK install. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
There was a problem hiding this comment.
Pull request overview
This PR addresses ground-estimation bias on slopes and expands the pipeline to better handle overlapping / mixed-CRS LAS inputs by introducing a tiled read mode, while also improving test isolation and CRS metadata handling for elevation rasters.
Changes:
- Fix slope-related ground bias by adjusting the per-bin minimum-derived ground surface before export, and add an E2E slope regression test.
- Add tiled processing support for overlapping / mixed-CRS inputs (including on-the-fly reprojection) plus GUI validation and user guidance.
- Improve CRS handling (preserve vertical datum in DEM outputs), add broad unit test coverage, and update build/CI packaging scripts.
Reviewed changes
Copilot reviewed 55 out of 57 changed files in this pull request and generated 2 comments.
Show a summary per file
| File | Description |
|---|---|
| src/tests/test_e2e.cpp | Use unique test output dirs; add slope regression E2E test. |
| src/run.cpp | Add tile planning/reading and combine-from-tiles behavior. |
| src/process.cpp | Apply slope-bias correction; tighten binning bounds; write DEMs with vertical CRS. |
| src/lib/vegetation/tests/test_vegetation.cpp | Add unit tests for vegetation low-pass filters. |
| src/lib/vegetation/CMakeLists.txt | Register vegetation unit tests in CMake. |
| src/lib/utilities/tests/test_coordinate.cpp | Add unit tests for coordinate/extent primitives. |
| src/lib/utilities/coordinate.hpp | Add round_down/overlaps; fix Coordinate3D z storage type. |
| src/lib/utilities/CMakeLists.txt | Register coordinate unit tests. |
| src/lib/tif/tif.hpp | Extend write_to_tif API with vertical-CRS toggle. |
| src/lib/tif/tif.cpp | Preserve/emit compound CRS WKT for DEM-style rasters. |
| src/lib/testing/output_dir.hpp | Add unique temp output dir/path helpers for tests. |
| src/lib/testing/env.hpp | Add getenv wrapper to silence MSVC warnings in tests. |
| src/lib/las/tile_mode.hpp | Implement overlap/mixed-CRS detection and tiled reads with reprojection. |
| src/lib/las/tests/test_las_point.cpp | Add unit tests for LASPoint and LASClassification. |
| src/lib/las/tests/test_las_file.cpp | Add unit tests for LAS file helpers and LASData behaviors. |
| src/lib/las/las_file.hpp | Add override_crs support; normalize CRS; preserve vertical datum metadata. |
| src/lib/las/CMakeLists.txt | Register LAS unit tests. |
| src/lib/isom/tests/test_colors.cpp | Add unit tests for color types and conversions. |
| src/lib/isom/CMakeLists.txt | Register isom unit tests. |
| src/lib/io/tests/test_gpkg.cpp | Use unique test output paths for gpkg tests. |
| src/lib/io/gpkg.hpp | Fix OGR field creation to avoid heap leaks / ownership issues. |
| src/lib/io/crs.hpp | Add CRS normalization / compound CRS construction utilities. |
| src/lib/grid/tests/test_grid.cpp | Add unit tests for grids/transforms/interpolation/graphs. |
| src/lib/grid/tests/CMakeLists.txt | Register new grid unit tests. |
| src/lib/grid/grid.hpp | Extend GeoProjection to carry optional compound WKT. |
| src/lib/contour/tests/test_contour_ops.cpp | Add tests for contour joining/trimming and conversions. |
| src/lib/contour/tests/CMakeLists.txt | Register contour ops unit tests. |
| src/lib/contour/contour_gen.hpp | Rework join_contours logic for orientation-preserving joins. |
| src/lib/config_input/tests/test_config_paths.cpp | Add tests for config path resolution and config edge cases. |
| src/lib/config_input/tests/test_config_lookup.cpp | Add tests for config lookup/selection logic. |
| src/lib/config_input/config_input.hpp | Add tile_size + override_crs configuration options. |
| src/lib/config_input/config_input.cpp | Serialize/deserialize new config fields; harden optional color parsing. |
| src/lib/config_input/CMakeLists.txt | Register config_input unit tests. |
| src/lib/assert/assert.hpp | Make assertion macros single-statement-safe; add unlikely annotations. |
| src/lib/CMakeLists.txt | Add new subdirectories (las, vegetation) to build. |
| src/gui/main_window.cpp | Warn users about low point density before running. |
| src/gui/config_editor.ui | Add LAS stats label; add tile_size and override_crs UI fields. |
| src/gui/config_editor.hpp | Cache LAS stats; track overlap/CRS flags; add tile-size status helpers. |
| src/gui/config_editor.cpp | Compute LAS stats + overlap detection; enforce tile_size when required. |
| src/blaze.cpp | Add top-level exception handling; fix CLI argument flow. |
| src/CMakeLists.txt | Use explicit source paths in target_sources. |
| scripts/install-ubuntu-deps.sh | Switch to apt-get; add toolchain + BLAS/LAPACK deps. |
| qgis_plugin/tests/test_infer_crs.py | Add pytest coverage for CRS inference parsing. |
| qgis_plugin/tests/test_contour_merge.py | Add regression test for gpkg contour merge fid-field issue. |
| qgis_plugin/tests/conftest.py | Mock QGIS modules to allow headless pytest runs. |
| qgis_plugin/tests/init.py | Add tests package marker. |
| qgis_plugin/blaze_loader/blaze_loader.py | Replace success popup with richer summary dialog; adjust execution flow. |
| cmake/FindDependencyDLLs.cmake | Improve Windows DLL copying (vcpkg and non-vcpkg). |
| README.md | Simplify header markup and badges. |
| CMakeLists.txt | Improve Windows dependency scanning; Qt deployment; las++ fetch options; test discovery timeout. |
| .gitignore | Ignore additional test LAZ inputs/outputs. |
| .github/workflows/release-app.yml | Update vcpkg caching; add install-and-smoke-test steps for packages. |
| .github/workflows/qgis-plugin-test.yml | Run plugin script via python; add topo download skip env var. |
| .github/workflows/coverage.yml | Increase timeout; switch to cached apt action; handle BLAS/LAPACK correctly. |
| .github/workflows/cleanup-artifacts.yml | Add scheduled artifact cleanup workflow. |
| .github/workflows/build.yml | Increase timeouts; switch to cached apt action; handle BLAS/LAPACK correctly; PDAL job updates. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
There was a problem hiding this comment.
Pull request overview
This PR addresses ground estimation bias on sloped terrain, adds tiled processing support for overlapping/mixed-CRS LAS inputs (with CRS normalization + optional vertical CRS preservation for DEMs), and expands test coverage across core geometry/grid/LAS/vegetation/contour components.
Changes:
- Fix slope-related ground bias by adjusting the per-bin ground estimate and add an E2E slope regression test.
- Add tiled-mode processing (and GUI support) to correctly handle overlapping LAS/LAZ inputs and mixed CRSes, including reprojection and vertical CRS metadata for DEM outputs.
- Improve build/packaging reliability (Windows DLL copying, Qt deploy), update vcpkg features, and add extensive new unit tests (C++ + Python plugin).
Reviewed changes
Copilot reviewed 56 out of 58 changed files in this pull request and generated 2 comments.
Show a summary per file
| File | Description |
|---|---|
| vcpkg.json | Pin/trim dependency features for GDAL/OpenCV/Qt to stabilize builds. |
| src/tests/test_e2e.cpp | Use unique test output dirs/env wrappers; add slope ground-estimation E2E test. |
| src/run.cpp | Introduce tiling workflow, overlap/CRS detection warnings, combine-from-tile dirs, and DEM vertical CRS output. |
| src/process.cpp | Fix binning bounds handling; adjust ground-to-slope bias; include vertical CRS in DEM TIF writes. |
| src/lib/vegetation/tests/test_vegetation.cpp | Add unit tests for low_pass() behavior. |
| src/lib/vegetation/CMakeLists.txt | Register vegetation tests in unit test target. |
| src/lib/utilities/tests/test_coordinate.cpp | Add unit tests for Coordinate/Direction/Extent helpers. |
| src/lib/utilities/coordinate.hpp | Add Coordinate2D::round_down(), Extent2D::overlaps(), and fix Coordinate3D z typing/accessor. |
| src/lib/utilities/CMakeLists.txt | Register coordinate tests in utilities test target. |
| src/lib/tif/tif.hpp | Extend write_to_tif() API to optionally include vertical CRS. |
| src/lib/tif/tif.cpp | Normalize CRS on read; write compound CRS when requested; update explicit instantiations. |
| src/lib/testing/output_dir.hpp | Add unique temp output dir/path helpers for tests. |
| src/lib/testing/env.hpp | Add getenv wrapper to avoid MSVC warnings in tests. |
| src/lib/las/tile_mode.hpp | Add tile-mode planning, overlap/CRS analysis, and tile reads with reprojection. |
| src/lib/las/tests/test_las_point.cpp | Add LASPoint/LASClassification unit tests. |
| src/lib/las/tests/test_las_file.cpp | Add LASFile/LASData utility unit tests (borders, rounding, bounds behavior). |
| src/lib/las/las_file.hpp | Add override_crs support, CRS normalization/compound CRS preservation, and laspp reader updates. |
| src/lib/las/CMakeLists.txt | Register LAS tests in unit test target. |
| src/lib/isom/tests/test_colors.cpp | Add color conversion/operator unit tests. |
| src/lib/isom/CMakeLists.txt | Register isom color tests. |
| src/lib/io/tests/test_gpkg.cpp | Use unique test output paths for GPKG tests. |
| src/lib/io/gpkg.hpp | Fix OGRFieldDefn lifetime/leaks by using stack defs for CreateField(). |
| src/lib/io/crs.hpp | Add CRS normalization, compound CRS reconstruction, and user CRS parsing helpers. |
| src/lib/grid/tests/test_grid.cpp | Add grid/transform/graph unit tests. |
| src/lib/grid/tests/CMakeLists.txt | Register new grid tests. |
| src/lib/contour/tests/test_contour_ops.cpp | Add unit tests for contour joining/trimming/polyline conversions. |
| src/lib/contour/tests/CMakeLists.txt | Register contour ops tests. |
| src/lib/contour/contour_gen.hpp | Rewrite join_contours() logic with orientation-preserving nearest-neighbor joining. |
| src/lib/config_input/tests/test_config_paths.cpp | Add tests for config path resolution and edge cases. |
| src/lib/config_input/tests/test_config_lookup.cpp | Add tests for contour/water/vegetation config lookup behaviors. |
| src/lib/config_input/config_input.hpp | Add tile_size and override_crs config fields (documented). |
| src/lib/config_input/config_input.cpp | Serialize/deserialize tile_size + override_crs; make colors optional on load. |
| src/lib/config_input/CMakeLists.txt | Register config_input tests. |
| src/lib/assert/assert.hpp | Fix macro safety (do/while); add [[unlikely]] and make assertion throwing consistent. |
| src/lib/CMakeLists.txt | Add las and vegetation subdirectories to library build. |
| src/gui/main_window.cpp | Add pre-run warning dialog for low average points per bin. |
| src/gui/config_editor.ui | Add LAS stats label; add tile_size + override CRS UI fields; small layout tweaks. |
| src/gui/config_editor.hpp | Add cached LAS stats API and tile-mode UI/validation helpers. |
| src/gui/config_editor.cpp | Add scrollable tabs, LAS stats computation, tile-size requirement validation, override CRS handling. |
| src/blaze.cpp | Wrap CLI in try/catch; improve error handling/exit codes. |
| src/CMakeLists.txt | Use absolute source paths for target_sources(). |
| scripts/install-ubuntu-deps.sh | Switch to apt-get; add compiler + LAPACK/BLAS deps. |
| qgis_plugin/tests/test_infer_crs.py | Add pytest coverage for CRS inference helper (plugin). |
| qgis_plugin/tests/test_contour_merge.py | Add regression tests for GeoPackage contour merge and fid-field conflict. |
| qgis_plugin/tests/conftest.py | Mock QGIS modules and load create_qgis_project.py for pure-function testing. |
| qgis_plugin/tests/init.py | Initialize plugin test package. |
| qgis_plugin/blaze_loader/blaze_loader.py | Improve run flow and add a structured summary dialog (with escaped output). |
| cmake/FindDependencyDLLs.cmake | Generalize Windows runtime DLL copying (vcpkg + non-vcpkg). |
| README.md | Simplify header formatting for better Markdown rendering. |
| CMakeLists.txt | Improve Windows dependency scanning; adjust Qt deployment to avoid races; update las++ pin; enable vcpkg DLL copying; increase gtest discovery timeout. |
| .gitignore | Ignore new test LAZ folders/output patterns. |
| .github/workflows/release-app.yml | Update vcpkg binary cache strategy; add install-and-smoke-test steps for packages; improve apt caching notes. |
| .github/workflows/qgis-plugin-test.yml | Run PyQGIS script directly via python; add skip topo download env var; simplify artifact check. |
| .github/workflows/coverage.yml | Switch to cache-apt-pkgs; add LAPACK/BLAS install workaround; extend timeout. |
| .github/workflows/cleanup-artifacts.yml | Add scheduled artifact cleanup workflow. |
| .github/workflows/build.yml | Switch to cache-apt-pkgs; add LAPACK/BLAS install workaround; extend timeouts; remove obsolete vcpkg cache env. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| std::string override_wkt; | ||
| try { | ||
| override_wkt = user_crs_to_wkt(m_config->override_crs); | ||
| } catch (const std::exception&) { | ||
| } |
There was a problem hiding this comment.
Pull request overview
This PR introduces tiled processing and improved CRS handling for LAS/LAZ inputs, updates DEM/vegetation/contour resolution configuration, and adjusts raster outputs to optionally preserve vertical datums (compound CRS) for elevation products.
Changes:
- Add tiled processing support (including overlap/mixed-CRS detection and on-the-fly reprojection during tile reads).
- Extend CRS handling end-to-end (override CRS support, normalized WKT, compound WKT preservation, optional vertical CRS emission in GeoTIFFs).
- Expand configuration and GUI to support separate vegetation/contour resolutions, plus add substantial unit test coverage and CI/build improvements.
Reviewed changes
Copilot reviewed 69 out of 71 changed files in this pull request and generated 1 comment.
Show a summary per file
| File | Description |
|---|---|
vcpkg.json |
Pins/curates vcpkg features for GDAL/OpenCV/Qt dependencies. |
src/run.cpp |
Switches tile processing to planned tiles (incl. overlap/mixed-CRS detection and combine-dir filtering). |
src/process.cpp |
Slope/ground adjustments, vegetation aggregation, contour DEM downsampling, and vertical-CRS-aware DEM outputs. |
src/methods/water/water.cpp |
Reworks catchment size computation to a dependency-count + queue approach. |
src/lib/utilities/coordinate.hpp |
Adds round_down(), fixes Coordinate3D z storage/type, and adds Extent2D::overlaps(). |
src/lib/tif/tif.hpp, src/lib/tif/tif.cpp |
Adds include_vertical_crs option to GeoTIFF writer and improves projection parsing. |
src/lib/io/crs.hpp |
Introduces CRS normalization, user CRS parsing, and WKT equivalence utilities. |
src/lib/las/las_file.hpp, src/lib/las/tile_mode.hpp |
Adds override-CRS aware projection handling and tiling/reprojection utilities. |
src/lib/config_input/config_input.hpp, src/lib/config_input/config_input.cpp |
Adds new grid resolutions + tile/override CRS config fields; updates JSON (de)serialization. |
src/gui/* |
Adds GUI support for new config fields, input stats, and tile-size requirement warnings; improves layout/scrolling. |
src/lib/testing/* |
Adds unique temp output path helpers for tests. |
src/lib/*/tests/*, src/lib/*/CMakeLists.txt |
Adds multiple new gtest suites and wires them into the build. |
.github/workflows/*, scripts/*, cmake/*, .gitignore, README.md, docs/*, configs/*, assets/default_config.json |
Build/test/packaging improvements and documentation/config updates for new behavior. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
No description provided.