5661 Commits

Author SHA1 Message Date
nirvn
756964620a [FEATURE][symbology] Add offset settings for point pattern fill symbol layer 2019-04-24 16:53:40 +07:00
Nyall Dawson
9da6a03b50 Add API for specifying fallback CRS and layer WKB type to use
for QgsVectorLayer, when constructing a layer with a URI which
may be invalid

These may be used for layers where the geometry type/CRS is
known in advance, and where the layer path may not be
initially resolvable. (E.g. layers with a URI pointing to a
non-existant file). It is only ever used if the layer cannot
be resolved, otherwise the actual layer geometry type will be
detected and used for the layer.
2019-04-19 06:07:13 +10:00
Alessandro Pasotti
63711510b6 Dear Qt, I love you but ...
... you are too slow and QJson API is so ugly.

Now using this wonderful json lib:
https://github.com/nlohmann/json

Results in release mode (QJson tests are not shown but
QJson was even slower than string concat).

PASS   : TestQgsJsonUtils::testExportAttributesJson(Use json)
RESULT : TestQgsJsonUtils::testExportAttributesJson():"Use json":
     0.0022 msecs per iteration (total: 75, iterations: 32768)
PASS   : TestQgsJsonUtils::testExportAttributesJson(Use old string concat)
RESULT : TestQgsJsonUtils::testExportAttributesJson():"Use old string concat":
     0.0032 msecs per iteration (total: 54, iterations: 16384)
PASS   : TestQgsJsonUtils::testExportFeatureJson(Use json)
RESULT : TestQgsJsonUtils::testExportFeatureJson():"Use json":
     0.011 msecs per iteration (total: 96, iterations: 8192)
PASS   : TestQgsJsonUtils::testExportFeatureJson(Use old string concat)
RESULT : TestQgsJsonUtils::testExportFeatureJson():"Use old string concat":
     0.015 msecs per iteration (total: 64, iterations: 4096)
PASS   : TestQgsJsonUtils::testExportGeomToJson(Use json)
RESULT : TestQgsJsonUtils::testExportGeomToJson():"Use json":
     0.76 msecs per iteration (total: 98, iterations: 128)
PASS   : TestQgsJsonUtils::testExportGeomToJson(Use old string concat)
RESULT : TestQgsJsonUtils::testExportGeomToJson():"Use old string concat":
     0.85 msecs per iteration (total: 55, iterations: 64)
PASS   : TestQgsJsonUtils::cleanupTestCase()
2019-04-18 17:04:30 +02:00
Nyall Dawson
0f1660990f Store vector layer wkb type in xml
We can use this when restoring the layer, if the uri turns out
to be invalid at that stage (e.g. a file has moved). By storing
and falling back to the last known wkb type, we avoid unnecessarily
discarding the existing layer renderer, and can still show the
expected layer type in the layer tree.
2019-04-18 18:41:09 +10:00
Alessandro Pasotti
7032db27fa [server] Implement LAYERFONTCOLOR and ITEMFONTCOLOR
Fixes #21871
Fixes #21870

Funded by: Gis3w
2019-04-17 12:01:06 +02:00
Matthias Kuhn
8416e7588c
Merge pull request #9781 from m-kuhn/processing_parameter_as_boolean
Add QgsProcessingAlgorithm::parameterAsBoolean
2019-04-17 09:20:07 +02:00
Alessandro Pasotti
56a6df4d71 Fix doxy deprecated 2019-04-17 10:06:41 +10:00
Alessandro Pasotti
3d687e5558 Add transform context to raster file writer task 2019-04-17 10:06:41 +10:00
Alessandro Pasotti
87998f7f7d Pass transformContext to raster writer 2019-04-17 10:06:41 +10:00
Alessandro Pasotti
394a189682 Fix class documentation 2019-04-17 10:06:41 +10:00
Alessandro Pasotti
654a78d6ff Raster transform context 2019-04-17 10:06:41 +10:00
Alessandro Pasotti
b3a448a2b2 Do not store context in layer (but in provider) ...
... also use transform context in raster projector
and deprecate setCrs without context
2019-04-17 10:06:41 +10:00
Alessandro Pasotti
7f52e2938a doxy 2019-04-17 10:06:41 +10:00
Alessandro Pasotti
7b6f9c0dbc Restore default ctor for options and layer 2019-04-17 10:06:41 +10:00
Nyall Dawson
b6bc1ee2d4 Tweak QgsProcessingUtils::combineLayerExtents for future proofing, remove deprecated usage 2019-04-17 10:06:41 +10:00
Alessandro Pasotti
82f2cb18b2 Deprecate default ctor for mesh layer options 2019-04-17 10:06:41 +10:00
Alessandro Pasotti
f8dfdc4aa0 Deprecate method without transformContext 2019-04-17 10:06:41 +10:00
Alessandro Pasotti
e930bee9e2 Add mandatory options to QgsVectorLayer ctor
... and deprecate the rest.

In QGIS 4 we'll have to get rid of the deprecated default ctor and
create a new one which takes no arguments.
2019-04-17 10:06:41 +10:00
Alessandro Pasotti
6813a55fce Deprecate vector layer ctor with default constructed options
replaced by QgsVectorLayer( const QgsVectorLayer::LayerOptions &options,
...
2019-04-17 10:06:41 +10:00
Alessandro Pasotti
4614c3e0bd Dox typos 2019-04-17 10:06:41 +10:00
Alessandro Pasotti
5f3dc50ccc Remove deprecated QgsCoordinateTransform ctor ...
... and add a getter for coordinateTransform to QgsMapLayer

The reason is that I think we should reduce the dataProvider API
usage and rely on the higher level QgsMapLayer API whenever it
is possible, QgsMapLayer checks for data provider validity
and returns a default constructed QgsCoordinateTransform instead
of crashing.
2019-04-17 10:06:41 +10:00
Alessandro Pasotti
7f271d1ebd More coordinateTranformContext -> tranformContext 2019-04-17 10:06:41 +10:00
Alessandro Pasotti
470759833e coordinateTransformContext -> transformContext for consistency
I like "coordinateTransformContext" more btw.
2019-04-17 10:06:41 +10:00
Alessandro Pasotti
df2bdf9c1a Handle the coordinate tranform context in the layer ctor
Also use the context when read/write XML by passing it
in the R/W context
2019-04-17 10:06:41 +10:00
Alessandro Pasotti
71698bf707 Remove all deprecated usages of QgsCoordinateTransform without context 2019-04-17 10:06:41 +10:00
Alessandro Pasotti
3d5e67e72c Fix SIP (sipify does not like inline initializers) 2019-04-17 10:06:41 +10:00
Alessandro Pasotti
dcf206232c Step2 of coordinate traform context passing: SIP broken 2019-04-17 10:06:41 +10:00
Alessandro Pasotti
c21cd35fe0 Add coordinate transform context to data provider options
First step to pass the context down into the rabbit hole.
2019-04-17 10:06:41 +10:00
Alessandro Pasotti
a809625be9 Add default precision value 2019-04-16 19:26:10 +02:00
Alessandro Pasotti
64fdbe3d76 Added tests and doxy 2019-04-16 15:17:25 +02:00
Alessandro Pasotti
be8822ed8b Precision and 3d 2019-04-16 14:00:59 +02:00
Alessandro Pasotti
6967a21882 toJsonV2 2019-04-16 14:00:59 +02:00
Alessandro Pasotti
722282828e Use QJson for JSON encoding of features 2019-04-16 14:00:59 +02:00
Matthias Kuhn
4771f802fc
Add QgsProcessingParameters::parameterAsBoolean for consistency 2019-04-15 14:08:41 +02:00
Matthias Kuhn
d0e24e8bc4
Add QgsProcessingAlgorithm::parameterAsBoolean
For consistency

Alias to QgsProcessingAlgorithm::parameterAsBool(), because the parameter class is called
QgsProcessingParameterBoolean
2019-04-12 21:26:09 +02:00
Blottiere Paul
c09e10ceb2 Update doc and sip binding 2019-04-09 15:43:11 +02:00
Blottiere Paul
911ef98677 Update sip binding 2019-04-09 15:43:11 +02:00
Nyall Dawson
933559b655 [processing] Report provider version string alongside QGIS version in log
Helpful for debugging and reproducability of results
2019-04-08 16:59:15 +10:00
Nyall Dawson
708bf4425b [processing] Add version method to QgsProcessingProvider
Allows retrieving provider version
2019-04-08 16:59:15 +10:00
Nyall Dawson
d3016d73d4 [processing] Add method to specify additional expression context variables
which will be available to a parameter when it is evaluated.

Specifying variables via this method is for metadata purposes only.
It is the algorithm's responsibility to correctly set the value of
these additional variables in all expression context used when evaluating
the parameter, in whichever way is appropriate for that particular variable.
2019-04-08 07:07:12 +10:00
Nyall Dawson
ee51551baa Add method to retrieve highlighted variable list from QgsExpressionContext 2019-04-08 07:07:12 +10:00
nirvn
9fd5509ad0 Add a aggregation method to concatenate unique values 2019-04-05 12:01:06 +07:00
Nyall Dawson
426382c919 [FEATURE] Average line angles for marker and hashed line symbology
Previously, when marker or hash lines were rendered using interval
or center point place placement, the symbol angles were determined
by taking the exact line orientation at the position of the symbol.

This often leads to undesirable rendering effects, where little
jaggies or corners in lines which occur at the position of the
symbol cause the marker or hash line to be oriented at a very
different angle to what the eye expects to see.

With this new option, the angle is instead calculated by averaging
the line over a specified distance either side of the symbol. E.g.
averaging the line angle over 4mm means we take the points along
the line 2mm from either side of the symbol placement, and use these
instead to calculate the line angle for that symbol. This has the
effect of smoothing (or removing) any tiny local deviations from
the overall line direction, resulting in much nicer visual
orientation of marker or hash lines.

Like all symbol settings, the average angle smoothing distance
can be set using mm/pixels/map units/etc, and supports data-defined
values.

Closed rings also correctly consider wrapping around these average
angles from the start/end vertex.

(Sponsored by an anonymous corporate backer)
2019-04-05 12:00:47 +10:00
Nyall Dawson
c2cac5aab0 Use unique_ptrs for proj object storage
Sponsored by ICSM
2019-04-05 11:33:08 +10:00
Nyall Dawson
f8f319b6e0 Fix dox 2019-04-03 02:31:27 +10:00
Nyall Dawson
48d2a37057 [FEATURE] New line symbol type: Hash line
This line symbol type is designed to replicate the ArcGIS Hash Line
symbol layer type. It allows for a repeating line segment to be
drawn over the length of a feature, with a line-sub symbol used
to render each individual segment.

To reduce code duplication, this is heavily based off the current
line marker symbol layer, since the functionality is almost
identical (draw some sub symbol at some interval along a line).
Accordingly, I've split off QgsMarkerLineSymbolLayer to move
as much of the common functionality as possible to a new abstract
base class, so that only the actual marker/line segment rendering
occurs in the marker line/hash line subclasses.

This also gives the hash line all the existing placement options
permissible for marker lines -- e.g. first/last vertex, mid points,
regular intervals, etc.

The hash line length and angle can have data defined overrides,
which are evaluated per-line segment, allowing for the hash line
to change size and angle over the length of a single rendered
feature.
2019-04-03 02:31:27 +10:00
Nyall Dawson
8d6e3dc911 [FEATURE][API] Add method to QgsSpatialIndex to perform
nearest neighbor search based on QgsGeometry to QgsGeometries

Previously only point - geometry was possible. But with this
change, you can safely and accurately use QgsSpatialIndex
to determine the nearest neighbours between any types of
geometries.
2019-04-03 02:31:03 +10:00
Nyall Dawson
6248bb8eea Fix failing TestQgsJsonUtils 2019-04-02 14:34:46 +10:00
Matthias Kuhn
1bb3f99f0e Properly convert to QgsVectorLayerEditpassTrough subclass 2019-04-02 06:18:45 +10:00
Nyall Dawson
7674e1657b [processing] Include version information at start of log
Start the log text with QGIS/Qt/GEOS/GDAL version information strings.
This is helpful for debugging and accountability.
2019-04-02 06:16:45 +10:00