sec_interp.core.services.drillhole.collar_processor module

Processing logic for Drillhole Collars (pure computation).

class sec_interp.core.services.drillhole.collar_processor.CollarProcessor

Bases: object

Handles pure projection of detached collar data.

build_coordinate_map(collar_data: list[dict[str, Any]]) → dict[Any, tuple[float, float]]

Build a mapping of hole IDs to collar coordinates.

extract_and_project_detached(collar_data: dict[str, Any], line_points: list[tuple[float, float]], buffer_width: float, collar_id_field: str, collar_z_field: str, collar_depth_field: str, pre_sampled_z: dict[Any, float] | None = None) → DrillholeProjection | None

Project a detached collar onto the section line.

Parameters:
  • collar_data – Detached collar {"id", "point", "attributes"}.

  • line_points – Section line vertices as (x, y) tuples.

  • buffer_width – Maximum horizontal projection buffer.

  • collar_id_field – ID field name.

  • collar_z_field – Collar elevation field name.

  • collar_depth_field – Total depth field name.

  • pre_sampled_z – Optional map of pre-sampled elevations.

Returns:

A DrillholeProjection if within the buffer, else None.