# sec_interp.core.utils.geometry module

Geometry Utilities Module.

Spatial geometry operations using QGIS native algorithms.

sec_interp.core.utils.geometry.create_memory_layer(geometry: qgis.core.QgsGeometry, crs: qgis.core.QgsCoordinateReferenceSystem, name: str = 'temp', fields: qgis.core.QgsFields | None = None) → qgis.core.QgsVectorLayer

  Create a temporary QGIS memory layer with a single geometry feature.

  Parameters:

    - geometry – The QGIS geometry to add to the layer.

    - crs – The Coordinate Reference System for the new layer.

    - name – Internal name for the layer (default: “temp”).

    - fields – Optional field definitions for attributes.

  Returns:

    A valid (but potentially empty on failure) QGIS memory layer.

  Return type:

    QgsVectorLayer

  Raises:

    - ValueError – If the input geometry is null or invalid.

    - RuntimeError – If the memory layer cannot be initialized.

sec_interp.core.utils.geometry.extract_all_vertices(geometry: qgis.core.QgsGeometry) → List[qgis.core.QgsPointXY]

  Extract all vertices from any QGIS geometry type.

  Handles points, lines, and polygons, including multipart geometries.

  Parameters:

    geometry – The input QGIS geometry.

  Returns:

    A flat list of all vertices found in the geometry.

  Return type:

    List[QgsPointXY]

sec_interp.core.utils.geometry.get_line_vertices(geometry: qgis.core.QgsGeometry) → List[qgis.core.QgsPointXY]

  Extract vertices specifically from a line or multiline geometry.

  Parameters:

    geometry – A QGIS geometry of type LineGeometry.

  Returns:

    A flat list of vertices.

  Return type:

    List[QgsPointXY]

  Raises:

    ValueError – If the geometry is null, not a line, or contains no vertices.

sec_interp.core.utils.geometry.run_processing_algorithm(algorithm: str, parameters: dict, silent: bool = True) → dict

  Execute a QGIS processing algorithm with consistent error handling.

  Parameters:

    - algorithm – The provider:algorithm ID (e.g., “native:buffer”).

    - parameters – A dictionary of algorithm parameters.

    - silent – If True, uses a silent feedback object (default: True).

  Returns:

    The result dictionary returned by processing.run.

  Return type:

    dict

  Raises:

    RuntimeError – If the algorithm fails to execute or returns an error.

sec_interp.core.utils.geometry.run_geometry_operation(algorithm: str, geometry: qgis.core.QgsGeometry, crs: qgis.core.QgsCoordinateReferenceSystem, parameters: dict) → qgis.core.QgsGeometry

  Run a processing algorithm on a single geometry by wrapping it in a memory layer.

  Parameters:

    - algorithm – The algorithm ID to run.

    - geometry – The input geometry.

    - crs – The CRS of the input geometry.

    - parameters – Additional parameters (INPUT and OUTPUT are automatically handled).

  Returns:

    The resulting geometry from the operation’s output layer.

  Return type:

    QgsGeometry

  Raises:

    - ValueError – If the operation yields no features or an invalid geometry.

    - RuntimeError – If the underlying processing algorithm fails.

sec_interp.core.utils.geometry.create_buffer_geometry(geometry: qgis.core.QgsGeometry, crs: qgis.core.QgsCoordinateReferenceSystem, distance: float, segments: int = 25) → qgis.core.QgsGeometry

  Create buffer geometry using native QGIS processing algorithm.

  Parameters:

    - geometry – Input geometry to buffer.

    - crs – Coordinate reference system.

    - distance – Buffer distance in CRS units.

    - segments – Number of segments for curves (default: 25).

  Returns:

    Buffered geometry.

  Return type:

    QgsGeometry

sec_interp.core.utils.geometry.filter_features_by_buffer(features_layer: qgis.core.QgsVectorLayer, buffer_geometry: qgis.core.QgsGeometry, buffer_crs: qgis.core.QgsCoordinateReferenceSystem | None = None) → List[qgis.core.QgsFeature]

  Filter features that intersect with buffer using spatial index.

  Parameters:

    - features_layer – Layer containing features to filter.

    - buffer_geometry – Buffer geometry to use for spatial filter.

    - buffer_crs – CRS of the buffer geometry (optional, for compatibility).

  Returns:

    Features that intersect the buffer.

  Return type:

    List[QgsFeature]

  Raises:

    ValueError – If inputs are invalid.

sec_interp.core.utils.geometry.densify_line_by_interval(geometry: qgis.core.QgsGeometry, interval: float) → qgis.core.QgsGeometry

  Densify line geometry by adding vertices at regular intervals.

  Parameters:

    - geometry – Line geometry to densify.

    - interval – Distance between vertices in geometry units.

  Returns:

    Densified line geometry.

  Return type:

    QgsGeometry

  Raises:

    ValueError – If geometry is not a line.