Skip to content

Grid

GridBuilder(roi, **kwargs)

Bases: niva.core.mixins.QgsLogicMixin

Grid builder on region of interest. Can extract from existing grid or build from scratch.

Parameters:

Name Type Description Default
roi VectorLayer

Region of interest.

required

Attributes:

Name Type Description
roi VectorLayer

Region of interest.

Source code in niva/core/grid/grid.py
15
16
17
18
19
20
21
22
23
24
25
26
27
def __init__(self, roi: QgsVectorLayer, **kwargs):
    """
    Args:
        roi (VectorLayer): Region of interest.

    Attributes:
        roi (VectorLayer): Region of interest.
    """
    super().__init__(**kwargs)
    self.roi = roi
    spatial_index_params = pt.CreateSpatialIndex.build_parameters()
    spatial_index_params["INPUT"] = self.roi
    pt.CreateSpatialIndex(spatial_index_params)

create()

Create a grid of 1km x 1km that fits ROI.

Returns:

Type Description
qgis.core.QgsVectorLayer

Created grid layer.

Source code in niva/core/grid/grid.py
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
def create(self) -> QgsVectorLayer:
    """Create a grid of 1km x 1km that fits ROI.

    Returns:
        Created grid layer.
    """
    dissolved_roi = self._dissolve()

    buffer_params = pt.Buffer.build_parameters()
    buffer_params["INPUT"], buffer_params["DISTANCE"] = dissolved_roi, 2000
    extended_area = pt.Buffer.apply(buffer_params, context=self.context)["OUTPUT"]

    grid_parameters = pt.CreateGrid.build_parameters()
    grid_parameters["TYPE"] = 2
    grid_parameters["EXTENT"] = extended_area
    grid_parameters["HSPACING"] = 1000
    grid_parameters["VSPACING"] = 1000
    grid_parameters["HOVERLAY"] = 0
    grid_parameters["VOVERLAY"] = 0
    grid_parameters["CRS"] = extended_area.crs()

    grid = pt.CreateGrid.apply(grid_parameters, context=self.context)["OUTPUT"]

    roi_grid = self._extract_cells(grid, dissolved_roi)

    return roi_grid

extract(reference_grid)

Extract grid that fits ROI from reference grid.

Parameters:

Name Type Description Default
reference_grid qgis.core.QgsVectorLayer

Grid of reference to extract Grid from.

required

Returns:

Type Description
qgis.core.QgsVectorLayer

Grid of cells extracted from reference grid that fits ROI.

Source code in niva/core/grid/grid.py
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
def extract(self, reference_grid: QgsVectorLayer) -> QgsVectorLayer:
    """Extract grid that fits ROI from reference grid.

    Args:
        reference_grid (QgsVectorLayer): Grid of reference to extract Grid from.

    Returns:
        Grid of cells extracted from reference grid that fits ROI.
    """
    dissolved_roi = self._dissolve()
    reference_grid = CRSHandler.reproject(
        reference_grid, dissolved_roi.crs(), context=self.context
    )
    roi_grid = self._extract_cells(reference_grid, dissolved_roi)
    return roi_grid