GDAL commands for invalid layers
This is a partial fix, which at least removes the uncaught exception.
Ideally we'd gracefully fall back to using the layer's source
(even if it doesn't exist!) in the generated GDAL commands. But that's
far from trivial to do.
Fixes#51958
Qgs3DMapScene.openScenes() will now return a map of
open Qgs3DMapScene objects (by name) visible in the app. Various
basic properties of the scene are exposed, including
the camera controller, allowing access to navigate 3d
scenes via python
Conversion between relative and absolute paths when reading/writing project files
has been inconveniently done in subclasses of QgsMapLayer in encodedSource() and
decodedSource() methods, with a lot of provider specific code.
This is a refactoring to finally fix this - there is a new pair of functions added
to QgsProviderMetadata and QgsProviderRegistry:
- absoluteToRelativeUri()
- relativeToAbsoluteUri()
This new pair of functions delegates the actual conversion between absolute and
relative path to provider code - where it belongs.
The existing code from encodedSource() and decodedSource() functions has been moved
to providers. Unit tests were added to confirm the existing behavior.
There should be no change of behavior apart from removal of old compatibility code
for WMS provider for projects from QGIS < 1.9 (10 years ago).
A new widget which stores a referenced geometry value, and provides
handy methods for copying the value as WKT or GeoJSON, pasting
a WKT/GeoJSON value from the clipboard, or clearing the geometry
needlessly iterate through all features in the layer
Previously when the rules all resulted in filtering out all
features due to the map scale falling outside all rule scale
ranges, we'd still fetch every feature from the layer and
attempt to draw them...
The default field datetime formats has to be const and equal to the international format.
The default display datetime formats has to be localized.
Funded by 3liz https://3liz.com