Skip to content

Layer

Layer

use qgis_render::Layer;

A single map layer, obtained from a Project. Layer covers metadata and styling for every layer kind, and narrows to VectorLayer or RasterLayer for data access.

Metadata

MethodReturns
name()&str
id()&str
layer_type()LayerType
crs()Crs
extent()Extent
feature_count()u64

LayerType is Vector, Raster, Mesh, PointCloud, or Annotation.

Data source

MethodReturns
data_source()&DataSource
provider()&str — ogr, postgres, gdal, wms, …

Visibility and styling

layer.set_visible(false);
layer.set_opacity(0.8);
println!("{:?}", layer.blend_mode());
println!("{:?}", layer.renderer());
MethodDescription
is_visible() / set_visible(bool)Layer visibility.
opacity() / set_opacity(f64)0.0 (transparent) to 1.0 (opaque).
blend_mode()Compositing mode used when drawing.
renderer()The symbology that decides how features are drawn.

Vector data

let vector = layer.as_vector().unwrap();
println!("{:?}", vector.fields());
for feature in vector.features() {
println!("{} {:?}", feature.id(), feature.geometry());
}
MethodReturns
as_vector()Option<&VectorLayer>
VectorLayer::fields()&[Field]
VectorLayer::features()FeatureIterator
VectorLayer::features_with(request)FeatureIterator — see features
VectorLayer::feature(id)Result<Feature, QgisError>
VectorLayer::count_with(request)Result<u64, QgisError>

Raster data

let raster = layer.as_raster().unwrap();
let block = raster.read_block(1, extent, 512, 512)?;
MethodReturns
as_raster()Option<&RasterLayer>
RasterLayer::band_count()usize
RasterLayer::width() / height()u32
RasterLayer::read_block(band, extent, w, h)Result<RasterBlock, QgisError>

See also