Source code for sec_interp.core.interfaces.structure_interface

from __future__ import annotations

"""Interface for Structure services."""

from abc import ABC, abstractmethod
from typing import Any

from qgis.core import QgsRasterLayer, QgsVectorLayer


[docs] class IStructureService(ABC): """Abstract interface for the Structural Projection Service."""
[docs] @abstractmethod def project_structures( self, line_lyr: QgsVectorLayer, raster_lyr: QgsRasterLayer, struct_lyr: QgsVectorLayer, buffer_m: int, line_az: float, dip_field: str, strike_field: str, band_number: int = 1, ) -> Any: """Project structural measurements onto the cross-section plane. Args: line_lyr: The cross-section line vector layer. raster_lyr: The DEM raster layer for elevation sampling. struct_lyr: Vector layer containing structural measurements. buffer_m: Search buffer distance in meters. line_az: Azimuth of the section line in degrees. dip_field: Name of the field containing dip values. strike_field: Name of the field containing strike values. band_number: Raster band to use for elevation (default: 1). Returns: StructureData: List of StructureMeasurement objects. """ pass