What does this MR do?
Semi-breaking change: This MR introduces breaking changes to the CityDoctorModel and CityObject classes. Usage of the CityDoctorValidation API and CLI remain backwards compatible.
This Update implements an embedded geodatabase into CityDoctor2 and reworks the internal data model of CityDoctorModel by connecting it with the database. CityObjects and their geometric data are no longer permanently kept in memory, with a size-limited cache loading Objects from the database on request, evicting entries back to the database once the size limit is reached. This significantly reduces the RAM footprint of larger CityDoctorModels, allowing for bigger CityGml files to be used with CityDoctorGUI. Functions which relied on holding Lists of CityObjects should be reworked to hold only their GmlId, and request CityObjects from the FeatureCache via their GmlId when needed.
Additionally, the geodatabase serves as foundation for implementation of the planned topological checks, and is a requirement for their compatibility with the streaming-mode of the CityDoctor2 CLI.
Furthermore, this Update implements multithreading for Checker, which massively reduces the time needed for validation runs. Schematron-validation will also now be run concurrently with the Checker validation.
Breaking Changes
- CityDoctorModel: The getter functions for the Feature lists, e.g. getBuildings(), now return Streams rather than Lists.
- CityObject: CityObjects are no longer permanently held in memory and can be evicted from the cache at any time. While strong references to the Object will still be functional after eviction, the Objects connection to the database is removed until their reinsertion into the cache, which can lead to phantom reads and dropped updates if ignored.
Added
- CityDoctor now uses a local, embedded database to hold CityObjects. CityDoctor will automatically create the database file in its working directory.
- Checker now runs the validation multithreaded
- Schematron-validation now runs concurrently to the Checker validation
- Running only the Schematron-validation now also marks the model as validated
Removed
- Removed support for ZIP-files
Fixes
- Added parsing for OtherConstruction objects
- Resolving of RelativeGeometry now works correctly
- Fixed occurrence of false-positive solid self-intersection errors in models with higher non-planar distance tolerance
Related issues
Checklist
-
Commits squashed, following the message-template and containing changelog-trailers -
MR title and description are up to date, accurate, and descriptive. -
MR targeting the appropriate branch. -
Latest Merge Result pipeline is green.