# sec_interp.core.types module

Core data types and enums for SecInterp.

class sec_interp.core.types.FieldType(*values)

  Bases: `IntEnum`

  Core-safe field types mapping to QVariant.Type values.

  This allows the core module to perform type validation WITHOUT direct dependencies on PyQt components.

  NULL = 0
  BOOL = 1
  INT = 2
  DOUBLE = 6
  STRING = 10
  LONG_LONG = 4
  DATE = 14
  DATE_TIME = 16

sec_interp.core.types.LayerDict

  Dictionary mapping layer names to QgsVectorLayer objects.

  alias of `dict`[`str`, `QgsVectorLayer`]

sec_interp.core.types.SettingsDict

  Dictionary of plugin settings and configuration values.

  alias of `dict`[`str`, `Any`]

sec_interp.core.types.ExportSettings

  Dictionary of export configuration parameters.

  alias of `dict`[`str`, `Any`]

sec_interp.core.types.ValidationResult

  Tuple of (is_valid, error_message) from validation functions.

  alias of `tuple`[`bool`, `str`]

sec_interp.core.types.PointList

  List of QgsPointXY objects.

  alias of `list`[`QgsPointXY`]

class sec_interp.core.types.StructureMeasurement(distance: float, elevation: float, apparent_dip: float, original_dip: float, original_strike: float, attributes: dict[str, Any])

  Bases: `object`

  Represents a projected structural measurement on the section plane.

  distance

    Horizontal distance from the start of the profile.

    Type:

      float

  elevation

    Elevation (Z) at the projected point.

    Type:

      float

  apparent_dip

    Dip angle relative to the section plane.

    Type:

      float

  original_dip

    True dip measured in the field.

    Type:

      float

  original_strike

    True strike (azimuth) measured in the field.

    Type:

      float

  attributes

    Dictionary containing original feature attributes.

    Type:

      dict[str, Any]

  distance: float
  elevation: float
  apparent_dip: float
  original_dip: float
  original_strike: float
  attributes: dict[str, Any]

class sec_interp.core.types.GeologySegment(unit_name: str, geometry: qgis.core.QgsGeometry, attributes: dict[str, Any], points: list[tuple[float, float]])

  Bases: `object`

  Represents a geological unit segment along the profile.

  unit_name

    Name of the geological unit.

    Type:

      str

  geometry

    QGIS geometry of the segment.

    Type:

      qgis.core.QgsGeometry

  attributes

    Dictionary containing original feature attributes.

    Type:

      dict[str, Any]

  points

    Sampled points (distance, elevation) representing the segment boundary.

    Type:

      list[tuple[float, float]]

  unit_name: str
  geometry: qgis.core.QgsGeometry
  attributes: dict[str, Any]
  points: list[tuple[float, float]]

class sec_interp.core.types.InterpretationPolygon(id: str, name: str, type: str, vertices_2d: list[tuple[float, float]], attributes: dict[str, ~typing.Any] = <factory>, color: str = '#FF0000', created_at: str = '')

  Bases: `object`

  Represents a 2D digitized interpretation polygon on the section profile.

  id

    Unique identifier for the polygon.

    Type:

      str

  name

    User-defined name for the interpreted unit/feature.

    Type:

      str

  type

    Classification (e.g., ‘lithology’, ‘fault’, ‘alteration’).

    Type:

      str

  vertices_2d

    List of (distance, elevation) points defining the polygon.

    Type:

      list[tuple[float, float]]

  attributes

    Metadata for the interpretation.

    Type:

      dict[str, Any]

  color

    Visual representation color (HEX).

    Type:

      str

  created_at

    ISO timestamp of creation.

    Type:

      str

  id: str
  name: str
  type: str
  vertices_2d: list[tuple[float, float]]
  attributes: dict[str, Any]
  color: str = '#FF0000'
  created_at: str = ''

class sec_interp.core.types.InterpretationPolygon25D(id: str, name: str, type: str, geometry: qgis.core.QgsGeometry, attributes: dict[str, Any], crs: Any)

  Bases: `object`

  Represents a georeferenced 2.5D interpretation geometry (with M coordinates).

  id

    Inherited identifier.

    Type:

      str

  name

    Inherited name.

    Type:

      str

  type

    Inherited type.

    Type:

      str

  geometry

    QGIS Geometry (PolygonM or LineStringM).

    Type:

      qgis.core.QgsGeometry

  attributes

    Inherited and calculated attributes.

    Type:

      dict[str, Any]

  crs

    Coordinate Reference System of the geometry.

    Type:

      Any

  id: str
  name: str
  type: str
  geometry: qgis.core.QgsGeometry
  attributes: dict[str, Any]
  crs: Any

class sec_interp.core.types.GeologyTaskInput(line_geometry: qgis.core.QgsGeometry, line_start: qgis.core.QgsPointXY, crs_authid: str, master_profile_data: list[tuple[float, float]], master_grid_dists: list[tuple[float, qgis.core.QgsPointXY, float]], outcrop_data: list[dict[str, Any]], outcrop_name_field: str, tolerance: float = 0.001)

  Bases: `object`

  Data Transfer Object for GeologyGenerationTask.

  Contains all necessary data to process geological profiles without accessing QGIS layers directly.

  line_geometry: qgis.core.QgsGeometry
  line_start: qgis.core.QgsPointXY
  crs_authid: str
  master_profile_data: list[tuple[float, float]]
  master_grid_dists: list[tuple[float, qgis.core.QgsPointXY, float]]
  outcrop_data: list[dict[str, Any]]
  outcrop_name_field: str
  tolerance: float = 0.001

class sec_interp.core.types.PreviewParams(raster_layer: QgsRasterLayer, line_layer: QgsVectorLayer, band_num: int, buffer_dist: float = 100.0, outcrop_layer: QgsVectorLayer | None = None, outcrop_name_field: str | None = None, struct_layer: QgsVectorLayer | None = None, dip_field: str | None = None, strike_field: str | None = None, dip_scale_factor: float = 1.0, collar_layer: QgsVectorLayer | None = None, collar_id_field: str | None = None, collar_use_geometry: bool = True, collar_x_field: str | None = None, collar_y_field: str | None = None, collar_z_field: str | None = None, collar_depth_field: str | None = None, survey_layer: QgsVectorLayer | None = None, survey_id_field: str | None = None, survey_depth_field: str | None = None, survey_azim_field: str | None = None, survey_incl_field: str | None = None, interval_layer: QgsVectorLayer | None = None, interval_id_field: str | None = None, interval_from_field: str | None = None, interval_to_field: str | None = None, interval_lith_field: str | None = None, max_points: int = 1000, canvas_width: int = 800, auto_lod: bool = True)

  Bases: `object`

  Consolidated parameters for profile generation and preview.

  raster_layer

    QGIS raster layer for DEM sampling.

    Type:

      QgsRasterLayer

  line_layer

    QGIS vector layer for the section orientation.

    Type:

      QgsVectorLayer

  band_num

    Raster band number to use for elevation.

    Type:

      int

  buffer_dist

    Search buffer for projecting data onto the section.

    Type:

      float

  outcrop_layer

    Optional vector layer with geological outcrops.

    Type:

      QgsVectorLayer | None

  outcrop_name_field

    Field name for geological unit names.

    Type:

      str | None

  struct_layer

    Optional vector layer with structural measurements.

    Type:

      QgsVectorLayer | None

  dip_field

    Field name for dip values.

    Type:

      str | None

  strike_field

    Field name for strike/azimuth values.

    Type:

      str | None

  dip_scale_factor

    Visual scale factor for dip lines.

    Type:

      float

  collar_layer

    Optional vector layer with drillhole collars.

    Type:

      QgsVectorLayer | None

  collar_id_field

    Field name for drillhole IDs in collar layer.

    Type:

      str | None

  collar_use_geometry

    Whether to use layer geometry for collar coordinates.

    Type:

      bool

  collar_x_field

    Field name for X coordinate.

    Type:

      str | None

  collar_y_field

    Field name for Y coordinate.

    Type:

      str | None

  collar_z_field

    Field name for Z coordinate.

    Type:

      str | None

  collar_depth_field

    Field name for total hole depth.

    Type:

      str | None

  survey_layer

    Optional vector layer with drillhole surveys.

    Type:

      QgsVectorLayer | None

  survey_id_field

    Field name for drillhole IDs in survey layer.

    Type:

      str | None

  survey_depth_field

    Field name for downhole depth in survey.

    Type:

      str | None

  survey_azim_field

    Field name for azimuth in survey.

    Type:

      str | None

  survey_incl_field

    Field name for inclination in survey.

    Type:

      str | None

  interval_layer

    Optional vector layer with drillhole intervals.

    Type:

      QgsVectorLayer | None

  interval_id_field

    Field name for drillhole IDs in interval layer.

    Type:

      str | None

  interval_from_field

    Field name for ‘from’ depth.

    Type:

      str | None

  interval_to_field

    Field name for ‘to’ depth.

    Type:

      str | None

  interval_lith_field

    Field name for lithology code/name.

    Type:

      str | None

  max_points

    Max number of points for simplified preview (LOD).

    Type:

      int

  canvas_width

    Width of the preview canvas in pixels.

    Type:

      int

  auto_lod

    Whether to automatically adjust LOD based on canvas width.

    Type:

      bool

  raster_layer: QgsRasterLayer
  line_layer: QgsVectorLayer
  band_num: int
  buffer_dist: float = 100.0
  outcrop_layer: QgsVectorLayer | None = None
  outcrop_name_field: str | None = None
  struct_layer: QgsVectorLayer | None = None
  dip_field: str | None = None
  strike_field: str | None = None
  dip_scale_factor: float = 1.0
  collar_layer: QgsVectorLayer | None = None
  collar_id_field: str | None = None
  collar_use_geometry: bool = True
  collar_x_field: str | None = None
  collar_y_field: str | None = None
  collar_z_field: str | None = None
  collar_depth_field: str | None = None
  survey_layer: QgsVectorLayer | None = None
  survey_id_field: str | None = None
  survey_depth_field: str | None = None
  survey_azim_field: str | None = None
  survey_incl_field: str | None = None
  interval_layer: QgsVectorLayer | None = None
  interval_id_field: str | None = None
  interval_from_field: str | None = None
  interval_to_field: str | None = None
  interval_lith_field: str | None = None
  max_points: int = 1000
  canvas_width: int = 800
  auto_lod: bool = True
  validate() → None

    Perform native validation of parameters.

    Raises:

      ValidationError – If critical parameters are missing or invalid.

class sec_interp.core.types.PreviewResult(topo: list[tuple[float, float]] | None = None, geol: list[~sec_interp.core.types.GeologySegment] | None = None, struct: list[~sec_interp.core.types.StructureMeasurement] | None = None, drillhole: ~typing.Any | None = None, metrics: ~sec_interp.core.performance_metrics.MetricsCollector = <factory>, buffer_dist: float = 0.0)

  Bases: `object`

  Consolidated result set from profile generation.

  topo

    Sampled topographic profile data.

    Type:

      list[tuple[float, float]] | None

  geol

    List of geological unit segments.

    Type:

      list[sec_interp.core.types.GeologySegment] | None

  struct

    List of projected structural measurements.

    Type:

      list[sec_interp.core.types.StructureMeasurement] | None

  drillhole

    Processed drillhole projection data.

    Type:

      Any | None

  metrics

    Performance metrics collector for the generation cycle.

    Type:

      sec_interp.core.performance_metrics.MetricsCollector

  buffer_dist

    Buffer distance used for this result.

    Type:

      float

  topo: list[tuple[float, float]] | None = None
  geol: list[GeologySegment] | None = None
  struct: list[StructureMeasurement] | None = None
  drillhole: Any | None = None
  metrics: MetricsCollector
  buffer_dist: float = 0.0
  get_elevation_range() → tuple[float, float]

    Calculate the global minimum and maximum elevation across all layers.

    Returns:

      A tuple containing (min_elevation, max_elevation).

  get_distance_range() → tuple[float, float]

    Calculate the horizontal distance range based on topography.

    Returns:

      A tuple containing (min_distance, max_distance).