Forces polygons to follow the right hand rule, in which the area that
is bounded by a polygon is to the right of the boundary. In particular,
the exterior ring is oriented in a clockwise direction and the
interior rings in a counter-clockwise direction.
not point at an individual service endpoint
Previously the provider would only show layers if a FeatureService
endpoint was used for the url, and would show nothing if
users enter the base server url.
Fix this by implementing a tree view for AFS items so that
if users enter a connection url at a higher level than we
show nested services/folders containing the layers.
This was causing problems in 3D view when raster was used as DEM... terrain
tiles were generated also where they should not appear and contained random
heights that caused failures of camera center adjustment to terrain. In the areas
completely outside of raster's extent the block was being returned with some
values uninitialized (instead of having correctly set no-data values)
using of the createFeature function with tool move and copy and there the logic of unique not null fields (like primary keys) is used.
This would fix#20347
We used Qt3DInput::QLogicalDevice with its axes and actions for camera
controller, but over time this got quite impractical, moreover we started
to have problems with shift/ctrl actions getting stuck in wrong state
in case they were pressed or released while 3D canvas was not focused
(which is in fact relatively common when using other widgets in the GUI)
This commit switches over to using just QMouseHandler and QKeyboardHandler
for handling key and mouse events and this not only makes the code easier
to read, but also the issues with shift/ctrl go away (because we do not
keep their status anymore, we just check whether they are active inside
event handlers).
The speed of change with mouse wheel and keys should be similar or a bit
less than what it was before.
re-apply the style with no checks for geometry type
This is a temporary workaround, the solution will probably
need some storage for the original geometry type.
Turned out we were getting an old version of OpenGL that does not
support the "primitive restart" functionality and so wherever
a linestring should be broken it was connected through (0,0,0)
to the next linestring.