snapgeometryprocessor – BRDR - Aligning borders

# SnapGeometryProcessor

    processor.SnapGeometryProcessor(config, feedback=None)

Processor that aligns geometries by snapping them to the reference data.

This processor uses the snapping algorithm to pull the vertices of the thematic geometry towards the nearest components of the reference data within a specified distance.

## Attributes

Name | Type | Description
--- | --- | ---
processor_id | ProcessorID | The unique identifier for this processor (ProcessorID.SNAP).

## Methods

Name | Description
--- | ---
process | Aligns the input geometry by snapping its vertices to the reference geometries.

### process

    processor.SnapGeometryProcessor.process(
        correction_distance,
        reference_data,
        input_geometry,
        mitre_limit,
        relevant_distance,
        **kwargs,
    )

Aligns the input geometry by snapping its vertices to the reference geometries.

The process considers the Open Domain (OD) strategy to determine how areas not covered by reference features should be handled (e.g., ignored, kept as-is, or used as a virtual snapping target).

#### Parameters

Name | Type | Description | Default
--- | --- | --- | ---
correction_distance | float | Distance used for cleaning geometric noise. | required
reference_data | AlignerFeatureCollection | The collection of reference geometries. | required
input_geometry | BaseGeometry | The thematic geometry to be snapped. | required
mitre_limit | float | Mitre limit for buffering operations. | required
relevant_distance | float | The maximum distance within which snapping occurs. | required
**kwargs | Any | Additional arguments passed to the processor. | `{}`

#### Returns

Name | Type | Description
--- | --- | ---
| ProcessResult | A dictionary containing the snapped result and difference metrics.

#### Notes

The snapping logic is influenced by the `od_strategy` (Open Domain):

    graph TD
        In[Input Geometry] --> OD{OD Strategy?}
        OD -- EXCLUDE --> Snap[Snap to Real Refs]
        OD -- AS_IS --> Keep[Keep OD part as-is]
        OD -- OTHER --> Virtual[Create Virtual Ref]
        Virtual --> SnapAll[Snap to Real + Virtual Refs]
        Keep --> Merge[Merge snapped & as-is parts]
        Snap --> Post[Post-process Result]
        SnapAll --> Post
        Merge --> Post