Source code for sec_interp.core.interfaces.drillhole_interface

from __future__ import annotations

"""Interface for Drillhole services."""

from abc import ABC, abstractmethod


[docs] class IDrillholeService(ABC): """Abstract interface for the Drillhole Processing Service."""
[docs] @abstractmethod def project_collars( self, collar_data: list[dict[str, Any]], line_data: Any, distance_area: Any, buffer_width: float, collar_id_field: str, use_geometry: bool, collar_x_field: str, collar_y_field: str, collar_z_field: str, collar_depth_field: str, pre_sampled_z: dict[Any, float] | None = None, ) -> list[tuple]: """Project collar points onto section line using detached data. Args: collar_data: List of detached collar entities (with geometry/attrs). line_data: Section line orientation data. distance_area: Calculation tool (or domain equivalent). buffer_width: Search buffer distance in meters. collar_id_field: Field name for unique drillhole ID. use_geometry: Whether to use geometry for coordinates. collar_x_field: Field for X. collar_y_field: Field for Y. collar_z_field: Field for elevation. collar_depth_field: Field for total depth. pre_sampled_z: Optional map of pre-sampled elevations. Returns: A list of tuples (hole_id, dist_along, z, offset, total_depth). """ pass
[docs] @abstractmethod def process_intervals( self, collar_points: list[tuple], collar_data: list[dict[str, Any]], survey_data: dict[Any, list[tuple]], interval_data: dict[Any, list[tuple]], collar_id_field: str, use_geometry: bool, collar_x_field: str, collar_y_field: str, line_data: Any, distance_area: Any, buffer_width: float, section_azimuth: float, survey_fields: dict[str, str], interval_fields: dict[str, str], ) -> tuple[list, list]: """Process interval data using detached data structures. Args: collar_points: List of projected collar tuples. collar_data: List of detached collar entities. survey_data: Map of hole_id to list of survey tuples. interval_data: Map of hole_id to list of interval tuples. collar_id_field: Field name for ID. use_geometry: Use geometry for coordinates. collar_x_field: Field for X. collar_y_field: Field for Y. line_data: Line orientation data. distance_area: Distance calculation object. buffer_width: Buffer width. section_azimuth: Section azimuth. survey_fields: Survey field mapping. interval_fields: Interval field mapping. Returns: A tuple containing (geol_data, drillhole_data). """ pass