Skip to content

Base

Import
from pyqgis_wrapper.layer.base import LayerBuilder

LayerBuilder()

Bases: typing.Generic[pyqgis_wrapper.layer.base.T]

Base class that handles layer creation.

It can be written to a file or stay in memory

Source code in pyqgis_wrapper/layer/base.py
39
40
41
42
43
44
def __init__(self):
    """ """
    self._layer: Optional[T] = None
    self._crs: Optional[QgsCoordinateReferenceSystem] = None
    self._src_layer: Optional[QgsMapLayer] = None
    self.logger = create_child_logger(__name__)

set_crs(crs)

Set layer crs

Parameters:

Name Type Description Default
crs typing.Union[str, int, qgis.core.QgsCoordinateReferenceSystem]

Coordinate reference system

required

Returns:

Type Description
VectorLayerBuilder

self

Source code in pyqgis_wrapper/layer/base.py
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
def set_crs(
    self, crs: Union[str, int, QgsCoordinateReferenceSystem]
) -> LayerBuilder:
    """
    Set layer crs

    :param crs: Coordinate reference system
    :type crs: Union[str, int, QgsCoordinateReferenceSystem]

    :return: self
    :rtype: VectorLayerBuilder
    """
    crs = CRSHandler.build_crs(crs)

    if not crs.isValid():
        raise ValueError(
            "The provided Coordinate Reference System (CRS) is not valid. "
            "Please ensure it is correctly defined."
        )

    self._crs = crs

    return self

from_layer(*args, **kwargs) abstractmethod

Duplicate a layer at various degree

Source code in pyqgis_wrapper/layer/base.py
144
145
146
147
148
@abstractmethod
def from_layer(self, *args, **kwargs) -> LayerBuilder:
    """
    Duplicate a layer at various degree
    """

configure(*args, **kwargs) abstractmethod

Configure layer creation from scratch

Source code in pyqgis_wrapper/layer/base.py
150
151
152
153
154
@abstractmethod
def configure(self, *args, **kwargs) -> LayerBuilder:
    """
    Configure layer creation from scratch
    """

build() abstractmethod

Build a layer form the parameters set by from_layer or configure method.

Returns:

Type Description
VectorLayerBuilder

self

Source code in pyqgis_wrapper/layer/base.py
156
157
158
159
160
161
162
163
@abstractmethod
def build(self) -> LayerBuilder:
    """
    Build a layer form the parameters set by from_layer or configure method.

    :return: self
    :rtype: VectorLayerBuilder
    """

save(*args, **kwargs) abstractmethod

Writes layer to a file

Source code in pyqgis_wrapper/layer/base.py
165
166
167
168
169
@abstractmethod
def save(self, *args, **kwargs) -> LayerBuilder:
    """
    Writes layer to a file
    """

load()

Access the layer built or/and saved

Returns:

Type Description
QgsVectorLayer

Newly created layer

Source code in pyqgis_wrapper/layer/base.py
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
def load(self) -> T:
    """
    Access the layer built or/and saved

    :return: Newly created layer
    :rtype: QgsVectorLayer
    """

    if self.__class__.__name__ == "VectorLayerBuilder":
        layer = "QgsVectorLayer"
    elif self.__class__.__name__ == "RasterLayerBuilder":
        layer = "QgsRasterLayer"
    else:
        layer = "QgsMapLayer"

    if self._layer is None:
        raise RuntimeError(
            "Layer has not been built. Call `build()` before accessing the layer."
        )
    if not self._layer.isValid():
        raise ValueError(
            f"{self._layer} is not a valid {layer}. "
            "This may be due to a mismatch between the specified file extension "
            "and the chosen provider in the `save()` method."
        )

    return self._layer

clear()

Clear the internal reference to the layer. It is a clean way to access to self._layer and self._src_layer. This allow the caller to delete a saved layer for example.

For a full reset of the class state see 'reset' method

This method should be called after loading the layer with self.load or saving it with self.save

Source code in pyqgis_wrapper/layer/base.py
199
200
201
202
203
204
205
206
207
208
209
210
211
def clear(self):
    """
    Clear the internal reference to the layer.
    It is a clean way to access to self._layer and self._src_layer.
    This allow the caller to delete a saved layer for example.

    For a full reset of the class state see 'reset' method

    This method should be called after loading the layer
    with self.load or saving it with self.save
    """
    self._layer = None
    self._src_layer = None

reset()

Resets all internal references to their default values. This ensures that no interference occurs when building another layer with completely different parameters.

If you just want to take full ownership of the saved layer object see 'clear' method.

Source code in pyqgis_wrapper/layer/base.py
213
214
215
216
217
218
219
220
221
def reset(self):
    """
    Resets all internal references to their default values.
    This ensures that no interference occurs when building another layer
    with completely different parameters.

    If you just want to take full ownership of the saved layer object see 'clear' method.
    """
    self.__init__()