running GDAL algorithms
If a subset string is set, we must export the subset of the layer
for use by the GDAL command*
Fixes#35981
* well, we probably **should** just build the gdal command to include
the SQL definition of the subset filter, but that's non-trivial, so
this fix is a good simple solution for now
Allows users to override the symbol patch size for individual legend
nodes, by double clicking the node
Width and height can be individually overridden, with the node falling
back to the default width or height when the override isn't set.
Sponsored by SLYR
- filtering of input layers by expressions and min/max zoom level
- custom layer names in the output
- writing of custom metadata for MBTiles output
- auto-calculate output extent (instead of defaulting to the whole world's extent)
- passing transform context to the encoder
Introduce a renderer for 1D mesh edges that can vary width over the line. The line can also have different color based on the actual dataset value on the line's point.
Co-authored-by: Peter Petrik <zilolv@gmail.com>
QgsScopedRenderContextPainterSwap: allows for temporarily swapping
the destination painter object for a QgsRenderContext for the lifetime
of the object
QgsScopedRenderContextScaleToMm: temporarily rescales a render context
destination painter device to use millimeter based units for the lifetime
of the object
QgsScopedRenderContextScaleToPixels: temporarily rescales a render
context (which has been scaled to millimeter based units) back
to pixel based units, for the lifetime of the object
- alias WKT_2018* to new WKT_2019* values, since the spec is actually
2019, not 2018
- add WKT_PREFERRED value which currently aliases to WKT2_2019, but
can be changed if/when future bumps to the WKT spec happen
- add WKT_PREFERRED_GDAL which should be used whenever a CRS is
exported to WKT for use with GDAL API. Aliases to WKT2_2019 currently,
but can be changed if/when a new spec is released and GDAL supports it
Plus removed sql injection protection from
sanitize because:
1. it was not required: the value goes into a QgsExpression and it's
never sent to a provider directly
2. it could have been misused with the wrong assumption that
it was robust implementation (it wasn't)