# sec_interp.core.utils.geometry module

Geometry Utilities Facade.

Spatial geometry operations using QGIS native algorithms. This module now serves as a facade for modularized sub-submodules.

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

  Create a buffer around a geometry.

  Parameters:

    - geometry – Input geometry.

    - crs – Coordinate Reference System of the geometry.

    - distance – Buffer distance in layer units.

    - segments – Number of segments for the buffer approximation.

  Returns:

    The buffered geometry.

sec_interp.core.utils.geometry.create_memory_layer(layer_name: str, layer_type: str, crs: qgis.core.QgsCoordinateReferenceSystem, fields: list[qgis.core.QgsField]) → qgis.core.QgsVectorLayer

  Create a temporary memory (scratch) layer.

  Parameters:

    - layer_name – Name for the layer.

    - layer_type – QGIS geometry type string (e.g., ‘Point’, ‘LineString’).

    - crs – Coordinate reference system.

    - fields – List of fields for the layer.

  Returns:

    The created memory layer.

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

  Densify a line geometry by a specific distance interval.

  Adds intermediate vertices to ensure segments are no longer than the interval.

  Parameters:

    - geometry – Line geometry to densify.

    - interval – Maximum distance between vertices (in CRS units).

  Returns:

    The densified QgsGeometry.

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

  Extract all vertices from any QGIS geometry type.

  Parameters:

    geometry – The input QGIS geometry.

  Returns:

    A flat list of all vertices found in the geometry.

sec_interp.core.utils.geometry.filter_features_by_buffer(features_layer: QgsVectorLayer, buffer_geometry: QgsGeometry, buffer_crs: QgsCoordinateReferenceSystem | None = None) → list[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).

  Returns:

    List of QgsFeature objects that intersect the query buffer.

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.

  Raises:

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

sec_interp.core.utils.geometry.run_geometry_operation(operation: str, *args: Any, **kwargs: Any) → Any

  Wrap generic geometry operations.

  Parameters:

    - operation – Name of the operation to perform.

    - *args – Positional arguments for the operation.

    - **kwargs – Keyword arguments for the operation.

  Returns:

    Result of the operation.