Skip to content

Layers

qgis_project.Layer(file, crs=None, visible=True, group=None, name=None, overwrite_existing=False, style=None, filter=None, min_scale=None, max_scale=None, labels=None) dataclass

Bases: _LayerMixin

A local file-based layer (vector or raster).

Parameters:

Name Type Description Default
file str

Path to the layer file (".shp", ".geojson", ".gpkg", ".tif", ".tiff", ".img", ".nc").

required
crs str or int or None

Override the layer CRS. Accepts an EPSG integer or authority string (e.g. "EPSG:4326"). If None, the layer's native CRS is used.

None
visible bool

Whether the layer is visible when the project opens.

True
group str or list of str or None

Layer group path. A plain string places the layer in a top-level group; a list creates a nested hierarchy, e.g. ["terrain", "raw"].

None
name str or None

Display name in the layer tree. Defaults to the file's basename.

None
overwrite_existing bool

If True, replace an existing layer at the same group path; if False (default), skip silently.

False
style VectorStyle or None

Vector styling to apply (e.g. VectorStyleSingleSymbol, VectorStyleCategorized, VectorStyleGraduated). If None, the QGIS default symbol is used. Ignored for raster files.

None
filter str or None

QGIS expression used as a subset filter (QgsVectorLayer.setSubsetString), e.g. "population > 1000". Only the matching features are loaded, rendered, and included in extent/statistics calculations. Ignored for raster files.

None
min_scale float or None

Most zoomed-out scale denominator at which the layer is still visible, e.g. 100000 for 1:100,000. Zooming out further (larger denominator) hides the layer. If None, no zoomed-out limit.

None
max_scale float or None

Most zoomed-in scale denominator at which the layer is still visible, e.g. 1000 for 1:1,000. Zooming in further (smaller denominator) hides the layer. If None, no zoomed-in limit.

None
labels VectorLabels or None

Attribute-based labels to show on the layer. Independent of style. Ignored for raster files.

None

get_layer_name()

Get the dataset's name as shown in the layer.

Source code in qgis_project/layer.py
def get_layer_name(self):
    """Get the dataset's name as shown in the layer."""
    return self.name or os.path.basename(self.file)

qgis_project.RasterLayer(file, crs=None, visible=True, group=None, name=None, overwrite_existing=False, style=RasterStyle(), filter=None, min_scale=None, max_scale=None, labels=None, band_idx=1, variable=None, statistics_kwargs=dict()) dataclass

Bases: Layer

qgis_project.WebLayer(uri, provider='wms', name='', group=None, visible=True, crs=None, overwrite_existing=False) dataclass

Bases: _LayerMixin

A layer sourced from a web service (XYZ tiles, WMS, WFS, etc.).

Prefer the factory class methods over constructing directly: WebLayer.osm() WebLayer.xyz(url) WebLayer.wms(url, layers) WebLayer.wfs(url, typename)

osm(**kwargs) classmethod

OpenStreetMap tile layer.

Source code in qgis_project/layer.py
@classmethod
def osm(cls, **kwargs) -> "WebLayer":
    """OpenStreetMap tile layer."""
    kwargs.setdefault("name", "OpenStreetMap")
    return cls.xyz("https://tile.openstreetmap.org/{z}/{x}/{y}.png", **kwargs)

wfs(url, typename, name='', **kwargs) classmethod

OGC Web Feature Service layer.

Source code in qgis_project/layer.py
@classmethod
def wfs(cls, url: str, typename: str, name: str = "", **kwargs) -> "WebLayer":
    """OGC Web Feature Service layer."""
    uri = f"url={url}&typename={typename}&version=auto"
    return cls(uri=uri, provider="WFS", name=name or typename, **kwargs)

wms(url, layers, format='image/png', crs='EPSG:4326', name='', **kwargs) classmethod

OGC Web Map Service layer.

Source code in qgis_project/layer.py
@classmethod
def wms(
    cls,
    url: str,
    layers: str,
    format: str = "image/png",
    crs: str = "EPSG:4326",
    name: str = "",
    **kwargs,
) -> "WebLayer":
    """OGC Web Map Service layer."""
    uri = f"url={url}&layers={layers}&styles=&format={format}&crs={crs}"
    return cls(uri=uri, provider="wms", name=name or layers, crs=crs, **kwargs)

xyz(url, name='XYZ', zmin=0, zmax=19, **kwargs) classmethod

XYZ/slippy-map tile layer.

Source code in qgis_project/layer.py
@classmethod
def xyz(
    cls, url: str, name: str = "XYZ", zmin: int = 0, zmax: int = 19, **kwargs
) -> "WebLayer":
    """XYZ/slippy-map tile layer."""
    uri = f"type=xyz&url={url}&zmin={zmin}&zmax={zmax}"
    return cls(uri=uri, provider="wms", name=name, **kwargs)

qgis_project.ProcessingOp(algorithm, params, name='', group=None, visible=True) dataclass

A QGIS Processing algorithm to run, whose result is added to the project as a layer.

Parameters:

Name Type Description Default
algorithm str

QGIS processing algorithm identifier, e.g. "native:buffer".

required
params dict

Algorithm parameters passed directly to processing.run(). Must include "INPUT" and, for most algorithms, "OUTPUT". Set "OUTPUT" to "memory:" for an in-memory vector result, or a file path (e.g. "/tmp/out.gpkg") for a persistent output.

required
name str

Name for the result layer in the layer tree. Defaults to the algorithm identifier tail (e.g. "buffer").

''
group str or list of str or None

Layer group path, same syntax as :class:Layer.

None
visible bool

Whether the result layer is visible when the project opens.

True