# ``Q&A``

## Where can 'brdr' be used for?

- Short answer: All kinds of Geodata quality assurance: validation, correction, alignment, actualization, (auto-)updates, ...
- Long answer: 
    * Geodata-management:
        * Implementation of ``brdr`` in business-processes and tooling
        * Bulk geodata-alignment
        * Alignment after reprojection of data
        * Cleaning data: In a postprocessing-phase, the algorithm executes sliver-cleanup and validity-cleaning on the
          resulting geometries
        * ...
    * Data-Analysis: Investigate the pattern in deviation and change between thematic and reference boundaries
    * Update-detection: Investigate the descriptive formula before and after alignment to check for (automatic)
      alignment of geodata

## Does 'brdr' support multiple coordinate systems (CRS)?

- Short answer: Yes
- Long answer: Yes it does. When creating a aligner you can define the crs you want to use. This has to be a projected coordinate system with units in **meter**. When loading data, you have to provide the data in this CRS. When on-the-fly dataloaders are used, they will try to download the data in the provided crs if available. if not available, an error is returned.

## Which geometry types are supported?

- Short answer: (Multi-)Points, (Multi-)LineStrings, and (Multi-)Polygons.
- Long answer: **brdr** was initially started to align thematic (Multi-)Polygons to reference (Multi-)Polygons. Afterwards processors are added to also support (multi-)linestrings and (multi-)Points.

## How to choose the best Processor for my data?

- Short answer: AlignerGeometryProcessor (default) checks the type of your thematic & reference-data and uses the other Processors underneath. DieussaertGeometryProcessor is a quicker algoritm for aligning Polygons to Polygons. NetworkGeometryPorcessor can be used for all combinations of geometries (Points, Lines, Polygons), but has a longer calculation time.
- Long answer: 
  - AlignerGeometryProcessor (default) is a wrapper around DieussaertGeometryProcessor & NetworkGeometryProcessor. It checks the geometry-types and uses the DieussaertGeometryProcessor if possible, otherwise NetworkGeometryProcessor.
  - DieussaertGeometryProcessor: It is a using an algorithm based on buffers, relevant intersections and relevant differences. This is a quick algorithm, but can only be used to align polygon-to-polygon. For most of these cases this is the best option, in some edge cases some detail of the polygon can be simplified.
  - NetworkGeometryProcessor: It is using an algorithm based on graphs/networks. This is the most generic processor as this can be used for all point-line-polygon combinations. However he calculation is much slower than Dieussaertprocessor.
  - TopologyProcessor: This is an experimental processor and is a special usage of the NetworkGeometryProcessor. The thematic input geometries are 'converted' to their topolgical arcs, and these arcs are aligned with the NetworkGeometryProcessor. Afterwards the arcs are re-combined to get a result that keeps a topological relation with its neighbours.
  
  Summary; if you have polygon-to-polygon, start with DieussaertProcessor and see if these results fits your goal. If not, try NetworkGeometryProcessor

## Does 'brdr' support 3D geometries ( & M/Z-coordinates)?

- Short answer: No, it is currently 2D-only. (3D and M-Z values are not supported)
- Long answer: The library is optimized for 2D alignment. If you provide geometries with M- or Z-coordinates, the alignment will be calculated based on the $X$ and $Y$ planes. M/Z-values are stripped.

## Is topology preserved between the thematic geometries (input) ?

- Short answer: No, but...
- Long answer: Every thematic input geometry is processed individually to find a result/prediction. So there is no topology preserved between multiple thematic input geometries. However there is a TopologyGeometryProcessor (experimental) that searches for predictions for every thematic geometry, while trying to preserve topology between these geometries.
