sec_interp.core.utils.sampling module

Sampling Utilities Module.

Elevation sampling and profile context preparation.

sec_interp.core.utils.sampling.sample_elevation_along_line(geometry: qgis.core.QgsGeometry, raster_layer: qgis.core.QgsRasterLayer, band_number: int, distance_area: qgis.core.QgsDistanceArea, reference_point: qgis.core.QgsPointXY | None = None) List[qgis.core.QgsPointXY]

Sample elevation values along a line geometry from a raster layer.

Densifies the line at raster resolution and samples the elevation at each vertex.

Parameters:
  • geometry – The line geometry to sample along.

  • raster_layer – The source DEM raster layer.

  • band_number – The raster band index to sample.

  • distance_area – Object for geodesic distance calculations.

  • reference_point – Optional start point for distance measurements.

Returns:

A list where x is distance along section and y is elevation.

Return type:

List[QgsPointXY]

sec_interp.core.utils.sampling.prepare_profile_context(line_lyr: qgis.core.QgsVectorLayer) Tuple[qgis.core.QgsGeometry, qgis.core.QgsPointXY, qgis.core.QgsDistanceArea]

Prepare a common context for profile calculation operations.

Parameters:

line_lyr – The cross-section line vector layer.

Returns:

(line_geom, line_start, distance_area)
  • line_geom (QgsGeometry): The geometry of the section line.

  • line_start (QgsPointXY): The starting point of the line.

  • distance_area (QgsDistanceArea): Fully configured distance object.

Return type:

Tuple

Raises:

ValueError – If the input layer is empty or has invalid geometry.

sec_interp.core.utils.sampling.interpolate_elevation(topo_data: list, distance: float) float

Interpolate elevation at given distance.

Parameters:
  • topo_data – List of (distance, elevation) tuples.

  • distance – Distance at which to interpolate elevation.

Returns:

Interpolated elevation value.

Return type:

float