Q&A
Where can brdr be used?
- Short answer: for geospatial quality assurance and boundary alignment workflows.
- Long answer:
- Geodata management:
- business workflow integration
- bulk alignment
- post-reprojection correction
- geometric cleanup after processing
- Data analysis:
- pattern analysis of deviation between thematic and reference boundaries
- Update detection:
- compare observations before and after alignment
- Geodata management:
Does brdr support multiple coordinate systems (CRS)?
- Short answer: yes.
- Long answer: you can choose the CRS when creating the
Aligner. Use a projected CRS with meter units. Input data must be available in that CRS. On-the-fly loaders try to request/download that CRS; if unsupported by the source service, loading fails with an error.
Which geometry types are supported?
- Short answer: (Multi)Point, (Multi)LineString, and (Multi)Polygon.
- Long answer:
brdrstarted with polygon-to-polygon alignment and later added processors for point/line/polygon combinations.
How do I choose the best processor?
- Short answer: use
AlignerGeometryProcessor(default) first. - Long answer:
AlignerGeometryProcessordelegates to specialized processors based on context.DieussaertGeometryProcessoris typically faster and strong for polygon-to-polygon scenarios.NetworkGeometryProcessoris more generic for mixed geometry combinations but usually slower.TopologyProcessoris experimental and focuses on preserving shared topology between neighboring thematic features.
Recommendation: for polygon-to-polygon use cases, start with DieussaertGeometryProcessor. Move to NetworkGeometryProcessor when generic/mixed geometry behavior is required.
Does brdr support 3D or M/Z coordinates?
- Short answer: no, processing is 2D.
- Long answer: alignment is computed on X/Y coordinates. Any Z or M values are not used by the core alignment logic.
Is topology preserved between thematic input features?
- Short answer: not by default.
- Long answer: standard processing handles features independently. If topology preservation is required, use
TopologyProcessor(experimental).
How should I run tests in daily development?
- Short answer: use the fast lane first, then full suite when needed.
- Recommended commands:
- Fast lane:
pytest -m "not native and not network and not slow" - Full suite:
pytest
- Fast lane:
Marker meaning:
native: GEOS/native-heavy tests (more crash-sensitive).network: tests relying on network-facing behavior or mocks of external services.slow: broader integration/end-to-end scenarios.
Why does directed routing return unchanged/original output sometimes?
- Short answer: no valid directed path exists under one-way constraints.
- Long answer: in directed mode,
brdrprefers correctness over forced rerouting. If one-way semantics block a route, processors do not invent artificial reverse paths.
How do descriptor and evaluator interact?
- Short answer: evaluator depends on descriptor observations.
- Long answer:
descriptor.get_base_observation(...)reads base context from feature properties/metadata.descriptor.get_actual_observation(...)derives observation for process results.evaluatorcompares both and assigns evaluation classes.
When does brdr return an empty geometry vs the original geometry?
- Short answer:
original geometryis returned for unchanged outcomes and specific evaluator choices.empty geometryis returned for invalid processor pre-results and explicit geometry-removal outcomes.
- Long answer:
- Typical
original geometrycases:- no effective change after processing
- circular-shape guard behavior
- evaluator keeps original (
TO_CHECK_ORIGINAL/ no accepted prediction path)
- Typical
empty geometrycases:- the input is already empty
- invalid intermediate processor output (
None, empty, or type mismatch pre-result) - explicit clipping/exclusion behavior removes all geometry content
- a processor legitimately computes an empty end result for the chosen strategy
- Typical
ProcessRemark guidance:
RESULT_UNCHANGED:- processing completed, but final result equals original geometry (within tolerance).
INPUT_CIRCLE:- circle-like geometry guard triggered; original geometry is kept.
INVALID_EMPTY_RETURNED:- processor intermediate output was unusable (e.g. invalid/empty/type mismatch path);
brdrreturned empty geometry.
- processor intermediate output was unusable (e.g. invalid/empty/type mismatch path);