Allows for handling any kind of corner case, e.g. start/end time in custom
string type fields, start/end time using numeric offsets from a reference
date, etc.
Fixes#36319
Available when the mode is set to "Single Field with Date/Time"
(logically, it ONLY makes sense in this mode!), this setting
causes events to be visible whenever they have occurred before
or during the visible map temporal range.
Fixes#36321
layers set to the "Single Field with Date/Time" mode
This allows layers with a single field representing the start date
but where all features have a constant event duration to play
nicely with the temporal framework
Also add user friendly descriptions for the various temporal modes
inside the widget
Fixes#26398
Allows temporal filtering of layers which store a start time in one
field and a duration in a different numeric field. Users are given
a choice of temporal units for the duration (e.g. seconds, days, etc)
vector layer temporal settings
When a new vector layer is loaded, we scan through the fields
for likely candidates for the start and end field choices. If found,
we initially setup the temporal properties to these guessed fields,
but we DON'T automatically enable temporal properties for the layer.
It's just a nice little shortcut, much like how we auto-guess the
appropriate title field for a newly added layer
XYZ convention has zero Y at the top and increasing downwards,
but various map servers use TMS convention which has zero Y at
the bottom and rising upwards (within tile matrix)
etc
In the hope of eventually removing the QTextDocument dependancy for HTML
labels. We use this ONLY for parsing the HTML/css, and it's VERY
heavy for just these needs.
When enabled, this option will treat label contents as HTML, and
any FOREGROUND COLOR RELATED html formatting options will be
respected in the rendered label.
I repeat: ONLY HTML COLOR TAGS ARE RESPECTED. This is NOT a bug,
rather this feature has been designed as a "test of the waters"
with HTML formatting in labels, and accordingly only formatting
options which do not alter the font shape were considered.
On the plus side, it works correctly with ALL other label settings,
including shadows, buffers, curved labels, etc!
Sponsored by geoProRegio AG (www.geoproregio.ch)
Take the subivisions ticks height into accout, for ticksscalebar box size calculation and horizontal line and labels position, only if the number of subdivisions to draw is greater than 1
When set to this mode, the layer will automatically be redrawn whenever
the temporal range is changed, but no time based filtering will be applied
to the features.
This configuration is useful when the layer has symbology settings which
vary based on the temporal range. For instance, when a layer is using
time-dependent rule-based renderer expressions or data-defined symbology
expressions.
This exposes some basic temporal capabilities for vector layers:
- static time range for layer (to match raster layer possibilities), this
sets a single static time range which applies to the whole layer. ALL
features from the layer will be shown whenever the canvas time
overlaps the layer time range
- "Single field with datetime": Allows selection of a single date
or datetime field from the layer. Features will be shown whenever
this field value is within the canvas time range
- "Separate Fields for Start and End Date/Time": Allows selection
of start and end date/datetime fields from the layer. Features will
be shown whenever the time interval calculated from these fields
overlaps the canvas time range
Some known limitations/inefficiencies:
- currently only date/datetime fields can be used. This was done
to simplify the format handling and avoid the need to worry about
string fields with different datetime formats. In future we should
allow selection of string fields and allow users to enter a custom
datetime format string
- unlike the Time Manager plugin approach, the approach taken here
is to rely completely on QGIS expressions and feature requests to
do the filtering (Time Manager uses layer filter strings and attempts
to set a native SQL filter syntax so that filtering is done on the
backend). This is intentional, because it provides a unified filter
approach regardless of the provider used (i.e. we don't need to worry
about the different SQL syntaxes used natively by the different
providers). The beauty of feature request expression compilation
**should** mean that the QGIS expressions are magically turned into
native backend queries, BUUUUUUUUUUUT... because we lack QGIS expression
support for date time literals, we currently rely on the "to_datetime"
expression function and coerce everything through strings. None of
the expression compilers handle this function, so currently ALL
filtering is done on the QGIS side. We need to add functions for
optimised datetime literal creation, and then ensure that the different
compilers correctly map these literals across to the backend
filter syntax to allow all the filtering work to be done on the database
side...
So currently, performance is much worse with large layers compared
to Time Manager. But, the advantage is that we can use the native
temporal framework and have vector layers animated alongside mesh
and raster layers!