6762 Commits

Author SHA1 Message Date
Nyall Dawson
e75a888256 Fix shortest path algorithm can "shortcut" when using network in geographic coordinates
Fixes #20997
2019-01-22 20:20:44 +11:00
Alessandro Pasotti
0e0146d82d
Merge pull request #8924 from elpaso/bugfix-20927-server_exp_filter
Server WFS EXP_FILTER bugfixes
2019-01-22 08:05:32 +01:00
Nyall Dawson
ddd357c2ea Add API to QgsRasterBlock to obtain both pixel value AND no data
flag in a single call

This is much more efficient then making two calls, since the
QgsRasterBlock::isNoData() check internally calls QgsRasterBlock::value().
So by requiring API users to make the two separate calls individually,
we double the time this process takes...
2019-01-22 12:13:39 +11:00
Julien Cabieces
49cb397f89 Update layer statistics when adding column to table in order to be displayed by QGIS
fixes #13504
2019-01-22 07:54:12 +11:00
Nyall Dawson
d57c182d8b Allow QgsRasterIterator to iterate over a raster layer, WITHOUT
actually fetching the raster block data

This allows for efficient iteration over a "reference" layer, where
you require the block extent/origin/pixel size/etc (but not the
reference layer block data itself!), in order to fetch a block from
a DIFFERENT set of rasters (but keeping these pixel-aligned to the
reference raster).
2019-01-22 07:52:45 +11:00
Matthias Kuhn
b391c0876f
Merge pull request #8923 from m-kuhn/native_densify_by_interval
Add native densify by interval algorithm
2019-01-21 14:59:47 +01:00
Alessandro Pasotti
9b7e1912d4 Add tests for WFS GetFeature EXP_FILTER
Fixes #20927 - QGIS Server: WFS issue using the EXP_FILTER parameter
2019-01-21 12:37:21 +01:00
Peter Petrik
7423a74915 add option to export mesh dataset to raster block (for processing algs) 2019-01-21 11:01:12 +01:00
Matthias Kuhn
9452667af3
Add native densify by interval algorithm 2019-01-21 09:49:38 +01:00
Matthias Kuhn
23885e5141
Add tests for native polygonstolines algorithm 2019-01-20 13:07:57 +01:00
Matthias Kuhn
f4a25ebd87
Fix QgsGeometryCollection (and subclasses) equal
The previous behavior was to check if all parts of the collection are exactly the same.
The new check will check if all parts are equal (same vertice count, same vertice order, same vertice values).
2019-01-20 12:39:31 +01:00
Martin Dobias
8709ab61eb
Merge pull request #8893 from wonder-sk/rule-based-3d-renderer
Rule-based 3D renderer
2019-01-18 12:58:11 +01:00
Matthias Kuhn
008dfeed40 Rename json functions to postgres names 2019-01-18 17:45:12 +07:00
Matthias Kuhn
6e0930ad79 Add tests for load_json and write_json 2019-01-18 17:45:12 +07:00
Nyall Dawson
fccb808c48 Indentation 2019-01-18 20:36:30 +11:00
Nyall Dawson
349946c669 Layer and layer node items have access to map layer expression context scope 2019-01-18 20:36:30 +11:00
Nyall Dawson
7ba5998db2 Calculate correct legend size when using expression based labels 2019-01-18 20:36:30 +11:00
Nyall Dawson
d70b60d48f [FEATURE][layouts] Allow expressions to be embedded inside legend item text
This feature allows for expressions to be embedded directly inside
legend item text (e.g. group, subgroup and item text). The expressions
are evaluated at render time, with full knowledge of the legend's
expression context (so can utilise variables from the layout/layout item/
etc)

There's no UI for this yet (that will come in 3.8), but expressions are
entered using the standard [% 1 + 2 %] format.

E.g. a legend item text of

    My layer (rendered at 1:[% @map_scale %])

will show in the output as

    My layer (renderer at 1:1000)
2019-01-18 20:36:30 +11:00
Alex
b43943a9b0 [FEATURE] New expression variables for legend items
Adds new variables for use in data defined expressions for layout legend items, including

- @legend_title
- @legend_column_count
- @legend_split_layers
- @legend_wrap_string
- @legend_filter_by_map
- @legend_filter_out_atlas

Additionally, if the legend is linked to a map, then expressions used in that legend will also have access to the linked variables, including @map_scale, @map_extent, etc.
2019-01-18 13:38:21 +11:00
Nyall Dawson
7c5dcd67ba Persist canvas expression context scope variables to project
and restore individual scope variables for each canvas on project
load.
2019-01-18 12:56:05 +11:00
Nyall Dawson
a0e91f3798 Add API to read/write QgsExpressionContextScope from/to XML 2019-01-18 12:56:05 +11:00
Martin Dobias
f069342b35 Rendering test for rule-based 3D renderer 2019-01-17 21:02:31 +01:00
rldhont
67938e5426
Merge pull request #8863 from rldhont/server-wmts-config-matrices
WMTS tile matrices configuration [Server][Feature]
2019-01-17 19:00:34 +01:00
Denis Rouzaud
5fa5631bbd
add enum value to key and reverse helpers (#8879)
* add enum value to key and reverse helpers

* cast cont char* to QString

* use QStringLiteral
2019-01-17 09:40:13 -05:00
rldhont
81aa143923 [Server][Feature][needs-docs] WMTS tile matrices configuration
In QGIS Server 3.4, the WMTS API has been added in which the tile matrices are calculated except fro EPSG:3857 and EPSG:4326.

This commit adds the capability to select the tile matrices to use with the project and to configure the top-left corner and the last level of the tile matrix. In the case of EPSG:3857 and EPSG:4326, the user can only choose the last level of the tile matrices.

Funded by Ifremer.
2019-01-17 15:29:30 +01:00
Nyall Dawson
3d283c1b05 [needs-docs] Show actual linked color in color buttons when color
has been linked to a project color

Instead of only showing linked color status in the accompanying
data defined button, we now also show it inside the color button
itself. So now the button color is a live reflection of the
project color it is linked to.

Additionally, when the color is linked, the button only allows
users the choice of "unlinking" the color from the linked
project color. The usual color button options allowing users
to directly change the color are not present. (As linked
colors must be edited in the project colors section from
the project properties dialog)
2019-01-17 16:14:32 +11:00
rldhont
1f9a14d984 [BUGFIX] SLD : Support escapeChar attribute of PropertyIsLike
In OGC FilterEncoding standard, the PropertyIsLike element has an escapeChar attribute in place of escape attribute.

In the QgsOgcUtils class, the attribute escape or escapeChar is added to PropertyIsLike element, but it only checks escape attribute when it decodes it.

The commit fixed it and adds test.
2019-01-16 17:46:14 +01:00
lbartoletti
aaede28b43 [feature] Add expression for square by diagonal and rectangle from 3 points
With the new class QgsQuadrilateral, we can add expressions to create a square by a diagonal and rectangles by 3 points
2019-01-17 03:42:20 +11:00
Nyall Dawson
1248bea156 Fix determination of geodesic line when first segment is small and coordinates are reprojected 2019-01-17 03:39:20 +11:00
Peter Petrik
0a7c8a7011 test quad_flower.2dm also in the mesh read tests 2019-01-16 11:02:20 +01:00
Martin Dobias
d2834bbb44 fix 3d mesh test 2019-01-16 11:02:20 +01:00
Peter Petrik
d695c4b34b [feature] [3d] [mesh] Display mesh faces in 3D view as terrain 2019-01-16 11:02:20 +01:00
Nyall Dawson
83340d0dfb [layouts] Fix loss of composition variables when converting 2.x compositions 2019-01-16 20:26:11 +11:00
Nyall Dawson
2aab28380c [browser] Don't show gdal/ogr layer items for QGIS style xml files
These aren't layers, so the extra entries are just distracting noise.
2019-01-16 12:10:25 +11:00
lbartoletti
c885cd7267 add toString and repr for qgsvector 2019-01-16 01:10:33 +11:00
Peter Petrik
9aacf4bac6 fix #20316 not possible to assign mesh crs 2019-01-15 12:41:39 +01:00
lbartoletti
edadcb773f Refactoring of rectangle maptools
Adds a new geometry class QgsQuadrilateral, for 4 sided geometries.
2019-01-15 10:24:16 +11:00
Peter Petrik
cd9a84e11c [feature] [mesh] Mesh Calculator
Similarly to raster calculator, mesh calculator can take dataset groups from current mesh layer and
combine them with various aritmentic/logical operators to new dataset group.
2019-01-14 12:32:36 +01:00
Raymond Nijssen
0ba9a326ec Add API to calculate innerTangents for 2 circles 2019-01-14 05:27:19 +10:00
Nyall Dawson
ac10769809 Move method for detecting project colors to QgsProperty 2019-01-12 18:11:44 +10:00
Nyall Dawson
b0de40d9ab Fix crash on exit when project signal is emitted during project destruction 2019-01-12 18:11:44 +10:00
Nyall Dawson
f7745c94d9 Add a signal to QgsProject for when project color scheme changes 2019-01-12 18:11:44 +10:00
Matthias Kuhn
b61d6f8f90
Merge pull request #8832 from troopa81/fix_20547
fixes #20547 : Fix error when using a spatialite layer with a non-int primary key an a spatial index
2019-01-11 23:07:10 +01:00
Nyall Dawson
629de0c651 Fix some corner cases 2019-01-12 05:31:00 +10:00
Nyall Dawson
2a774d6dac [FEATURE][processing] New algorithm "Geodesic line split at antimeridian"
Ports the similar algorithm from the shape tools plugin to c++, and utilises
built in QgsDistanceArea ellipsoidal calculations to split the lines.

This algorithm splits a line into multiple geodesic segments, whenever the
line crosses the antimeridian (±180 degrees longitude)

Splitting at the antimeridian helps the visual display of the lines in some
projections. The returned geometry will always be a multi-part geometry.

Whenever line segments in the input geometry cross the antimeridian,
they will be split into two segments, with the latitude of the breakpoint
being determined using a geodesic line connecting the points either side
of this segment. The current project ellipsoid setting will be used when
calculating this breakpoint.

If the input geometry contains M or Z values, these will be linearly
interpolated for the new vertices created at the antimeridian.

Supports in-place edit mode also.
2019-01-12 05:31:00 +10:00
Nyall Dawson
021f5ea366 [needs-docs][api] Rename QgsDistanceArea methods to change "date line"
to "antimeridian"

Because the date line =/= +/-180 degree longitude, which is what
we were incorrectly using it to mean.
2019-01-12 05:31:00 +10:00
Nyall Dawson
a8bd12c4e3 [FEATURE][API] Add method to QgsDistanceArea to split a (multi)line geometry
at the antimeridian

Whenever line segments in the input geometry cross the antimeridian, they
will be split into two segments, with the latitude of the breakpoint being
determined using a geodesic line connecting the points either side of this
segment.

If the geometry contains M or Z values, these will be linearly interpolated
for the new vertices created at the antimeridian.
2019-01-12 05:31:00 +10:00
Alessandro Pasotti
4d609ff46f
Merge pull request #8830 from elpaso/bugfix-server-fcgi-rewritten-uri
[server] Use REQUEST_URI as default URL for FCGI requests
2019-01-11 15:58:26 +01:00
Julien Cabieces
8efc68984f Use mkdtemp for temporary directory and clean at the end of the test 2019-01-11 15:39:58 +01:00
Julien Cabieces
99076c94e4 Correct spell problems 2019-01-11 15:36:24 +01:00