123 Commits

Author SHA1 Message Date
Nyall Dawson
fd7a4bd900 [FEATURE] New project(point, distance, bearing) expression function
Projects a point geometry by the specified distance and bearing
2016-04-06 20:55:26 +10:00
Nyall Dawson
ae00eb965c [FEATURE] Allow expression functions to use named parameters
This commit sets the framework for allowing expression functions to
use named parameters. Ie, instead of:

clamp(1,2,3)

you can use:

clamp( min:=1, value:=2, max:=3)

This also allows arguments to be switched, eg:

clamp( value:=2, max:=3, min:=1)

Additionally, it allows for a more structured definition of function
parameters to handle optional arguments and default values for
parameters. These are currently being done using a hacky infinite
argument list.

I've utilised the postgres ':=' syntax for specifying named arguments
to avoid potential collisions which may arise with the equality test
if we re-used just the '=' operator alone.

Sponsored by North Road
2016-04-04 13:59:13 +10:00
Matthias Kuhn
ec17e3cc8e Fix expression "if" documentation 2016-03-31 13:13:32 +02:00
Harrissou Sant-anna
b3edfa8080 Fix if function example 2016-03-31 13:12:35 +02:00
Juergen E. Fischer
b89956e247 fix linebreaks in function help and CASE (fixes #14189) 2016-02-26 00:27:48 +01:00
Nyall Dawson
c23e3096fe More descriptive function help for area/length/perimeter functions
...which better clarify how project ellipsoid and unit settings are
respected by the functions
2016-02-23 11:48:10 +11:00
Matthias Kuhn
a2030d53fe Fix 2.5D renderer problem when order of walls matters
E.g. when the walls have different styles
2016-01-15 16:23:13 +01:00
Nyall Dawson
275eb9463d [FEATURE] Add closest_point and shortest_line expression functions
closest_point: returns closest point a geometry to a second geometry
shortest_line: returns the shortest possible line joining two
geometries
2016-01-15 12:50:17 +11:00
Matthias Kuhn
542541007c Add extrude function to QgsGeometry 2016-01-14 12:28:31 +01:00
Matthias Kuhn
b7170b82d3 Add azimuth function 2016-01-13 11:14:25 +01:00
Nyall Dawson
5b244ae88c [FEATURE] More geometry functions for expressions
- add accessors: geometry_n, interior_ring_n
- add num_geometries, num_rings, num_interior_rings
- add nodes_to_points for converting every node in a geometry
to a multipoint geometry
- add segments_to_lines for converting every segment in a geometry
to a multiline geometry

nodes_to_points and segments_to_lines are intended for use with
geometry generator symbology, eg to allow use of m and z values
for nodes/lines with data defined symbology.
2015-12-15 11:22:39 +11:00
Nyall Dawson
ceddb7eb97 [FEATURE] is_closed function for expressions
Returns whether a linestring is closed
2015-12-13 22:06:22 +11:00
Nyall Dawson
262514d97d [FEATURE] exterior_ring function for expressions
Returns exterior ring of a polygon as a line. Useful for geometry
generator symbology for styling only the exterior ring of
polygons.
2015-12-13 20:11:19 +11:00
nirvn
35fea9c986 [expression] add point_on_surface function 2015-12-12 17:16:34 +07:00
Matthias Kuhn
28cabbe4d0 [Expression] radians and degrees 2015-12-10 00:41:42 +01:00
nirvn
a5d670233b [FEATURE] add darker() and lighter() expression functions 2015-12-09 15:50:59 +11:00
Matthias Kuhn
4b3083d9a7 [FEATURE] Add translate expression function
Funded by
 * Regional Council of Picardy
 * ADUGA
 * Ville de Nyon
 * Wetu GIT cc
2015-12-08 08:49:05 +01:00
Matthias Kuhn
f961ecef46 [FEATURE] Add an eval expression
Funded by
 * Regional Council of Picardy
 * ADUGA
 * Ville de Nyon
 * Wetu GIT cc
2015-12-08 08:43:45 +01:00
Nyall Dawson
da436f926b [FEATURE] New 'reverse' expression for reversing linestrings 2015-11-26 16:53:55 +11:00
Juergen E. Fischer
90053c52d6 also update strpos function help (followup 2a557db) 2015-11-20 19:53:30 +01:00
Nyall Dawson
de1540357b [expressions] Add make_line and make_polygon functions 2015-11-06 20:09:48 +11:00
Nyall Dawson
12e34f2672 [expressions] Allow make_point to accept z/m values, add new
make_point_m for creation of PointM geometries. Also add
m(point) and z(point) functions for retrieving z/m value of
a point or node.
2015-11-06 20:09:13 +11:00
Nyall Dawson
da942233e7 Add DE-9IM variant which tests against a specified pattern
(available in PyQGIS/expression engine)
2015-11-04 16:03:55 +11:00
Nyall Dawson
9d4e995de6 [FEATURE] Add geometry relation DE-9IM expression function 2015-10-26 22:46:53 +11:00
Juergen E. Fischer
3c324c9985 fix lpad/rpad context help (followup b46cbbe) 2015-09-27 01:52:20 +02:00
Juergen E. Fischer
b46cbbe425 fix mixup between lpad/rpad help (fixes #13433) 2015-09-26 21:32:27 +02:00
Nyall Dawson
a4d980d055 Port from expressions+ plugin: color_part, set_color_part, day_of_week 2015-09-21 19:57:58 +10:00
Juergen E. Fischer
82b34afe03 move remaining function_help to json and update it's translation handling 2015-09-20 18:35:27 +02:00
Matthias Kuhn
41a330f271 More expression help 2015-09-20 14:18:25 +02:00
Matthias Kuhn
2a6cff403b More examples for the expression function help 2015-09-20 13:59:54 +02:00
Matthias Kuhn
b2c404d17c Improve expression help 2015-09-20 13:51:10 +02:00
Nyall Dawson
55027e545f Clean up and extend expression geometry functions:
- New expression functions for area(geom), perimeter(geom),
point_n(geom), start_point(geom), end_point(geom), make_point(x,y)
- Add new variant to length() function which takes a geometry object,
allows for length(geom) evaluation.
- Rename x_at, y_at to $x_at, $y_at (alias old names) to reflect that
these only work on current feature geometry
- Add x(geom), y(geom) functions which return x and y coordinate
for point geometries or centroid x/y for non-point geometries
(fix #11008)
2015-09-18 09:09:09 +10:00
Sandro Santilli
55dbc041a8 [FEATURE] Add num_points(geometry) support in expression evaluator
Includes tests and help text.
2015-09-17 14:23:19 +02:00
Matthias Kuhn
25af142456 Add expression function help for $length 2015-09-17 11:08:29 +02:00
Juergen E. Fischer
e2816256f6 translation fix 2015-09-13 20:24:42 +02:00
Nyall Dawson
709c14391b Change expression help from free form html files to structured json
A new script then parses these json help files into the html help
contents, in a standardised manner. Previously, the function help
was a bunch of different formats and structures.

Now, a custom stylesheet can be applied (and later tweaked!) to
format these help. Eg, this commit colors variables and function
names in the syntax section for greater readability.
2015-09-02 14:22:50 +10:00
Nyall Dawson
7871d6c5fc Remove a bunch of layer variables, replace with new layer_property
function

layer_property takes a layer name/id and a property (eg 'crs')
and returns the matching value. This approach is more flexible than
having all these values as variables, since it allows retrieval
of properties of a layer from contexts which aren't layer-aware
(eg a composer label showing the metadata of a layer).
2015-08-24 12:00:11 +10:00
Nyall Dawson
334ea504db Add help for project_color function 2015-08-22 19:01:42 +10:00
Nyall Dawson
2a951ec945 Add some missing expression group help 2015-08-22 19:01:42 +10:00
Nyall Dawson
6487f1716c Add help text for variables 2015-08-22 19:01:42 +10:00
Matthias Kuhn
de2b6a9688 Add function help for IF expression
Fix #13015
2015-07-13 08:45:23 +02:00
Nyall Dawson
7b18f67662 Include NULL in expression builder available functions list 2015-07-08 16:14:15 +10:00
Nyall Dawson
feb3bee858 Add a bunch of optimised fuzzy string matching algorithms.
A new QgsStringUtils class has been added containing some
common fuzzy matching algorithms, including Levenshtein edit
distance and Soundex. These can be used for finding "similar"
strings in a table.

Expression functions for these algorithms have also been
added to a new "Fuzzy Matching" group.
2015-06-27 11:51:56 +10:00
Tomáš Pospíšek
0af69ed9fb Add pertinent example for 'LIKE' operator
The usage examples for the 'LIKE' operator are not really pertinent. The proposed change adds an example that actually illustrates the usual usage of the 'LIKE' operator.
2015-06-03 12:51:04 +02:00
Nyall Dawson
bae9cea4f9 Add missing files from 96db1bd 2015-05-03 21:09:47 +10:00
Nyall Dawson
96db1bdb7e Allow expression functions to include 0 length parameter lists
This change allows for some cleanups to the built in expression
functions, by making it possible to differentiate variables
(eg $feature) from functions which don't require parameters
(eg uuid(), now()... ). Also adds aliases for uuid(), now(), and
pi().
2015-05-03 20:57:37 +10:00
Nyall Dawson
bd9e02be95 Add alias support for expression functions
Standardise naming of all internal functions to lowercase with
underscore convention. Add aliases for old names to avoid
breakage.
2015-05-03 20:57:36 +10:00
Juergen E. Fischer
bdcbeb19ad fix format_date example (fixes #12016) 2015-01-20 21:17:18 +01:00
Juergen E. Fischer
8d20272748 function help fixes 2015-01-09 19:49:01 +01:00
Juergen E. Fischer
b52fff303f avoid duplicate function help entry 2015-01-09 19:33:22 +01:00