from __future__ import annotations
"""Interface for Profile services."""
from abc import ABC, abstractmethod
from typing import Any
from qgis.core import QgsRasterLayer, QgsVectorLayer
[docs]
class IProfileService(ABC):
"""Abstract interface for the Topographic Profile Service."""
[docs]
@abstractmethod
def generate_topographic_profile(
self,
line_lyr: QgsVectorLayer,
raster_lyr: QgsRasterLayer,
band_number: int = 1,
interval: float | None = None,
) -> Any:
"""Generate topographic profile data by sampling elevation along a section line.
Args:
line_lyr: The cross-section line vector layer.
raster_lyr: The DEM raster layer for elevation.
band_number: Raster band to sample (default: 1).
interval: Optional sampling interval. If None, uses raster resolution.
Returns:
ProfileData: List of (distance, elevation) tuples.
"""
pass