QGIS compatibility
This page lists the settings of a QGIS project and what Groundwork does with each one. The settings are grouped by the dialog and tab where you set them in QGIS.
- Read means that Groundwork follows the setting.
- Partly read means that Groundwork follows part of the setting.
- Not read means that Groundwork ignores the setting. Where there is something to use instead, the row says what.
The list is for a QGIS project in a cloud folder, or one that you drop or choose on the Files source. A map connected to QGIS Server reads fewer of these settings, and the guide pages say which. Each row links to the guide section with the detail.
Layer Properties → Source
| Setting in QGIS | In Groundwork | Details |
|---|---|---|
| A GeoJSON, GeoParquet or FlatGeobuf file beside the project, or in a subfolder with a relative path | Read. The features of the layer. A GeoParquet or FlatGeobuf layer is read-only. | Prepare data in QGIS |
| A table of a GeoPackage beside the project, or in a subfolder with a relative path | Read. The features of the layer, read-only. A lookup list or related records kept in the GeoPackage are read too, and the records are read-only. The whole file counts toward the size limit, whichever tables the project uses. | Prepare data in QGIS |
| One file split into a layer for each geometry type | Read. One layer that holds the shapes of all of them. If they cover fewer than the three geometry types, that layer is read-only in a cloud folder or in a project supplied with Groundwork. | Prepare data in QGIS |
| A filter in Provider Feature Filter, written with the Query Builder, on a file or WFS layer | Partly read. Only the features that the filter keeps, and the layer is read-only in a cloud folder or in a project supplied with Groundwork. Groundwork reads comparisons, IN, LIKE, ILIKE, BETWEEN, IS NULL, AND, OR and NOT. It sends a WFS layer’s filter to the server, and the layer is read-only. It does not load a layer whose filter it cannot use, and lists it in a notice. Use instead: A filter that compares fields with values, such as "status" = 'approved'. | Prepare data in QGIS |
| A layer that points to a WFS service | Read. The features, loaded live from the server. Edits go to the server if it accepts WFS-T. | Prepare data in QGIS |
| A CSV table, added from the Delimited Text tab of the Data Source Manager | Read. A table with no geometry, read only through the project. Every value is text, and Groundwork does not yet save changes to it. | Prepare data in QGIS |
A .tif or .tiff file | Read. An image, with no features to list or edit. | Prepare data in QGIS |
| A layer that points to a public WMS, WMTS or XYZ service | Read. An image layer, with no features to list or edit. An XYZ layer requests tiles only to the deepest zoom level that QGIS sets for it. | Prepare data in QGIS |
| A WMS, WMTS or XYZ service that needs a sign-in or sends its own HTTP headers | Not read. No layer. | Prepare data in QGIS |
| A Shapefile, a QGIS vector tile layer or a database such as PostGIS | Not read. No layer. Use instead: A GeoJSON file, from Export → Save Features As… in QGIS. | Prepare data in QGIS |
Layer Properties → Display
| Setting in QGIS | In Groundwork | Details |
|---|---|---|
| Display Name | Read. The title of each feature in lists, tooltips and headings. | Prepare data in QGIS |
Project Properties → Data Sources
| Setting in QGIS | In Groundwork | Details |
|---|---|---|
| Read-only, under Layer Capabilities | Read. A layer that your team sees but cannot edit. Groundwork cannot read it from QGIS Server. | Prepare data in QGIS |
| Private | Read. A table that stays off the map and out of the layer list. Groundwork cannot read it from QGIS Server. | Prepare data in QGIS |
Project Properties → QGIS Server
| Setting in QGIS | In Groundwork | Details |
|---|---|---|
| Insert, Update and Delete under WFS capabilities, for a layer ticked Published | Read. The edits that your team can make on the layer. Groundwork cannot read them from QGIS Server. | Prepare data in QGIS |
Layer Properties → QField
| Setting in QGIS | In Groundwork | Details |
|---|---|---|
| The Permissions boxes of the QFieldSync plugin, such as Disable feature deletion, and their expressions | Read. The edits that your team cannot make on the layer. Groundwork cannot read them from QGIS Server. | Prepare data in QGIS |
Project Properties → General
| Setting in QGIS | In Groundwork | Details |
|---|---|---|
| Units for area measurement and Units for distance measurement, under Measurements | Read. $area, $length and $perimeter in the unit that the project sets, where Groundwork converts it. An expression that uses a unit Groundwork does not convert is ignored. | Prepare data in QGIS |
| Ellipsoid, under Measurements | Not read. Every shape is measured on the WGS 84 ellipsoid. A project with another ellipsoid, or none, gets a slightly different figure from QGIS Desktop’s. | Prepare data in QGIS |
Project Properties → Colors
| Setting in QGIS | In Groundwork | Details |
|---|---|---|
| A project colour labelled Brand | Read. The colour of buttons, ticked boxes and other controls in the Light and Dark themes. Groundwork makes it lighter or darker where button text would not read clearly. Groundwork cannot read it from QGIS Server. | Prepare data in QGIS |
| Color model and ICC Profile | Not read. Groundwork shows every colour as the browser does. | Prepare data in QGIS |
Project Properties → Variables
| Setting in QGIS | In Groundwork | Details |
|---|---|---|
A variable named quac_logo, and quac_logo_dark for the Dark theme | Read. Your logo in place of the Groundwork mark, from a file in the map’s folder. Groundwork cannot read it from QGIS Server or from a dropped project. | Prepare data in QGIS |
| Any other project variable | Not read. Groundwork does not read an expression that uses a variable. | Prepare data in QGIS |
Layer Properties → Symbology
| Setting in QGIS | In Groundwork | Details |
|---|---|---|
| A Single Symbol, Categorized, Graduated or Rule-based style | Read. The layer in that style. A rule that you limit to a scale range draws only in that range. | Style a layer in QGIS |
| A Simple Marker, an icon from the built-in QGIS library, or an SVG that you embed in the project | Read. The point symbol, with its shape, fill colour, size, rotation and outline. A symbol with several symbol layers draws all of them. | Style a layer in QGIS |
| An SVG Marker from a web address, set with From URL… | Read. The icon, with its colour placeholders filled. An icon from Maki, Temaki or another icon set on jsDelivr is drawn in the Fill color. | Style a layer in QGIS |
| A Simple Line, and a Marker Line placed On last vertex | Read. The line, with its colour, width and dash pattern, and the arrowhead at the end of the line. | Style a layer in QGIS |
| A Simple Fill, a fill with No Brush, or a Point Pattern Fill | Read. The fill colour and the outline, only the outline, or the marker across the polygon. | Style a layer in QGIS |
| A Font Marker, Filled Marker, Raster Image Marker or Ellipse Marker | Not read. The full layer in a palette colour. Use instead: A simple marker, or an icon from the built-in QGIS library. | Style a layer in QGIS |
| An SVG Marker from your own file | Partly read. A plain marker in the same colour. Use instead: An icon from the built-in QGIS library, or an icon from a web address. | Style a layer in QGIS |
| An Arrow, Hashed Line or other decorated line (a Marker Line on the last vertex draws its arrowhead) | Partly read. A plain line. Use instead: A simple line. | Style a layer in QGIS |
| A preset Stroke style of a line, such as Dash Line | Partly read. A small, fixed pattern on the screen. Use instead: Use custom dash pattern, with a pattern in millimetres. It is correct at any width. | Style a layer in QGIS |
A simple fill with any Fill style other than Solid or No Brush | Not read. Solid black. If the Stroke style is No Line, nothing. Use instead: A solid fill, or No Brush for polygons with only an outline. | Style a layer in QGIS |
| No Symbols, Heatmap, Point Displacement, Point Cluster, Merged Features, Inverted Polygons or 2.5 D | Not read. Nothing on the map. The features still show in the list, and users can still edit them. Use instead: A single-symbol, categorised or graduated style. | Style a layer in QGIS |
A rule condition with a variable such as @layer_name, or a function that Groundwork does not read | Not read. That rule’s symbol on every feature, because Groundwork cannot read its condition. Use instead: A condition that compares fields with values, with the operators and functions that a label expression can use. | Style a layer in QGIS |
| A Data-defined override on the fill colour or stroke colour of a simple marker, line or fill, that reads a field | Read. Each feature in the colour that its field holds, such as #2ca02c. A blank value, or a value that is not a colour, draws the fixed colour. | Style a layer in QGIS |
That override as set_color_part("color", 'alpha', 38) | Read. The colour of the field at the opacity that the number sets, from 0 to 255. | Style a layer in QGIS |
| Other data-defined overrides, symbol levels and blend modes | Not read. None of these settings. | Style a layer in QGIS |
Layer Properties → Labels
| Setting in QGIS | In Groundwork | Details |
|---|---|---|
| Single Labels and Rule-based Labeling | Read. Labels from a field or from an expression such as "street" || ', ' || "suburb". Groundwork reads the font, size, colour, text buffer, a simple offset and the Overlapping labels setting. | Style a layer in QGIS |
| A Data-defined override on the Color of a label’s text, that reads a field | Read. Each label in the colour that its field holds. A blank value, or a value that is not a colour, draws the fixed colour. | Style a layer in QGIS |
| Functions and operators in a label expression | Read. The ones in Write expressions in QGIS. | Style a layer in QGIS |
| A label expression with a function that Groundwork does not read, callouts or other placement settings | Not read. None of these settings. Use instead: A label’s field, or an expression such as "street" || ', ' || "suburb", from single labels or from label rules. Groundwork reads its font, colour, text buffer, a simple offset and the Overlapping labels setting. | Style a layer in QGIS |
Layer Properties → Legend
| Setting in QGIS | In Groundwork | Details |
|---|---|---|
| Legend placeholder image, embedded with Embed File… | Read. That image in place of the legend, while the layer draws its own style. A fully transparent image shows no legend. | Style a layer in QGIS |
| A Legend placeholder image that names a file or a web address | Not read. The legend of the style. Use instead: The same image, embedded with Embed File…. | Style a layer in QGIS |
Layer Properties → Attributes Form
| Setting in QGIS | In Groundwork | Details |
|---|---|---|
| Alias | Read. The alias in place of the name of the field, wherever your team reads or chooses the field. | Set up the edit form in QGIS |
| Widget Type set to Hidden | Read. No sign of the field. The value stays in the data file. | Set up the edit form in QGIS |
| Widget Type set to Value Map | Read. A label in place of each stored code, and a list of the labels in the edit form. | Set up the edit form in QGIS |
| Widget Type set to Value Relation | Read. A name in place of each stored code, read from another table, and a list of the names in the edit form. | Set up the edit form in QGIS |
| Widget Type set to Checkbox | Read. A yes/no field that stores your checked and unchecked values. | Set up the edit form in QGIS |
| Widget Type set to Range | Read. A number box that refuses a value outside the range when your team saves. | Set up the edit form in QGIS |
| Widget Type set to Date/Time, with a custom format | Read. A date that Groundwork reads and writes in your pattern. | Set up the edit form in QGIS |
| Widget Type set to Color | Read. A swatch of the colour beside its code, and a colour picker in the edit form. | Set up the edit form in QGIS |
| Widget Type set to Uuid Generator | Read. A new ID on each new feature, in a field that your team cannot change. | Set up the edit form in QGIS |
| Widget Type set to Attachment, with the Type of its Integrated Document Viewer set to Image | Read. A photo on each related record, on a map in a Dropbox folder. | Set up the edit form in QGIS |
| Editable unticked | Read. The value of the field, with no box to type in. | Set up the edit form in QGIS |
| Default value and Apply default value on update | Read. A value that Groundwork fills in by itself. | Set up the edit form in QGIS |
| When adding features set to Reuse Last Entered Value, under Policies | Read. A new feature or record that starts with the value that the last one was given. | Set up the edit form in QGIS |
| Not null, Unique and Expression, under Constraints | Read. A refused save, or a notice under the field, when a value breaks the rule. | Set up the edit form in QGIS |
| When duplicating features, under Policies | Read. The values that a copy keeps when your team pastes a feature into the layer that they copied it from. | Set up the edit form in QGIS |
| The layout of the form in the Drag and Drop Designer, with a group shown by an expression | Partly read. A field that appears only while the expression is true, and the fields in the order of the layout. The tabs and groups are not drawn. | Set up the edit form in QGIS |
| The Data defined override button beside Editable, in the Drag and Drop Designer | Read. A field locked in the edit form while the expression is false. The Editable box still locks the field when it is unticked. | Set up the edit form in QGIS |
| Other widget types, such as Relation Reference | Not read. The field as a field with no widget. | Set up the edit form in QGIS |
Layer Properties → Variables
| Setting in QGIS | In Groundwork | Details |
|---|---|---|
A variable named quac_icon_ and the field’s name, such as quac_icon_species | Read. An icon beside the field’s name in the details and the edit form, and in the field lists of the layer’s menus. | Set up the edit form in QGIS |
A variable named quac_icon | Read. An icon beside the layer’s name in the layer picker, above the feature list, in a feature’s details and on a related table’s tab. | Prepare data in QGIS |
A variable named quac_control_ and the field’s name, such as quac_control_condition, set to buttons | Read. The field’s choices as buttons in the edit form, in place of a list that opens. | Set up the edit form in QGIS |
Project Properties → Relations
| Setting in QGIS | In Groundwork | Details |
|---|---|---|
| A relation between a layer of features and a layer of records | Read. The records on a tab in the details of each feature, not on the map. Groundwork cannot read it from QGIS Server. | Link records to a feature |
| The field pairs of a relation | Read. A record linked to its feature when every field pair matches, compared as text. | Link records to a feature |
| The style of the layer of records | Read. A symbol beside each record. | Link records to a feature |
Expression Builder
| Setting in QGIS | In Groundwork | Details |
|---|---|---|
"field", 'text', numbers, TRUE, FALSE and NULL | Read. The field’s value, or the value as written. Where it works: Everywhere. | Write expressions in QGIS |
|| and concat | Read. Join text. concat leaves out a field with no value, and || gives no value. Where it works: Everywhere. | Write expressions in QGIS |
+, -, * and / | Read. Calculate with numbers, and + also joins two pieces of text. A field with no value, or other text that is not a number, gives no value. + and - with make_interval move a date. Groundwork does not calculate with other dates. Where it works: Everywhere. | Write expressions in QGIS |
//, % and ^ | Read. Divide and round down to a whole number, take the remainder of a division, or raise to a power. A division by zero gives no value. ^ comes before * and /, and after a minus sign, so -2 ^ 2 is 4, as in QGIS. Where it works: Everywhere. | Write expressions in QGIS |
=, <>, !=, <, <=, > and >= | Read. Compare two values. A comparison with a field that has no value is neither true nor false. Groundwork compares dates as text. Where it works: Everywhere. | Write expressions in QGIS |
AND, OR and NOT | Read. Join or reverse conditions, as in QGIS. Where it works: Everywhere. | Write expressions in QGIS |
IS, LIKE, ILIKE, IN and BETWEEN | Read. Test a value, as in QGIS. IS NOT, NOT LIKE, NOT ILIKE, NOT IN and NOT BETWEEN work too. Where it works: Everywhere. | Write expressions in QGIS |
~ | Read. Test text against a regular expression, such as "asset_id" ~ '^A\\d{3}$'. As in QGIS, \\w and \\d match only A to Z, 0 to 9 and _ here, not a letter such as é. Where it works: Everywhere. | Write expressions in QGIS |
CASE WHEN … THEN … ELSE … END and if | Read. Choose a value by a condition. Where it works: Everywhere. | Write expressions in QGIS |
coalesce and nullif | Read. The first value that is not empty. nullif gives no value where two values are the same, such as nullif("status", '(none)'). Where it works: Everywhere. | Write expressions in QGIS |
upper, lower, title and trim | Read. Change the case of text, or remove the spaces at its ends. Where it works: Everywhere. | Write expressions in QGIS |
length, strpos, left, right, substr and replace | Read. Count, find, cut or change text. replace takes the text, what to find and what to put in its place, not a map. Where it works: Everywhere. | Write expressions in QGIS |
lpad and rpad | Read. Pad text on the left or the right to a width. Where it works: Everywhere. | Write expressions in QGIS |
wordwrap | Read. Break text into lines of a length, at its spaces or at a character you name, such as wordwrap("species", 12). Where it works: Everywhere. | Write expressions in QGIS |
regexp_match, regexp_replace and regexp_substr | Read. Find, replace or take out the text that a regular expression matches. In the replacement, \\1 is the first group. The pattern must be written into the expression. Groundwork reads the everyday forms of a pattern, such as [A-Z], \\d+, (…) and |. It does not read a rarer form, such as (?s), [[:alpha:]], a named group or \\1. Where it works: Everywhere. | Write expressions in QGIS |
round and format_number | Read. Round a number, or write it with separators. Without a language, format_number uses Australian English. Where it works: Everywhere. | Write expressions in QGIS |
max and min | Read. The largest or smallest of several numbers. A field with no value is skipped. Where it works: Everywhere. | Write expressions in QGIS |
abs, floor and ceil | Read. A number without its sign, or rounded down or up to a whole number. Where it works: Everywhere. | Write expressions in QGIS |
to_int, to_real and to_string | Read. Turn text into a whole number or a decimal number, or a number into text. Where it works: Everywhere. | Write expressions in QGIS |
format_date | Read. Write a date in a QGIS pattern, such as 'd MMM yyyy'. A pattern with t, the name of a time zone, is not read. Where it works: Everywhere. | Write expressions in QGIS |
year, month, day, week, day_of_week, hour, minute and second | Read. A part of a date, read as format_date reads one. week is the ISO week of the year, and day_of_week counts from 0 for Sunday. Where it works: Everywhere. | Write expressions in QGIS |
now() and $now | Read. The date and time on the device. Where it works: Inside format_date, year and the other parts of a date. As a whole default value, also in to_date or to_datetime, it fills in today’s date. | Write expressions in QGIS |
make_interval | Read. A length of time, such as make_interval(days:=14), added to a date or taken from one, as in "inspected" + make_interval(days:="days"). A month counts as 30 days and a year as 365.25, as in QGIS. Where it works: Everywhere, after + or - and a date. | Write expressions in QGIS |
char | Read. A character by its number, such as char(10) for a new line. Where it works: Everywhere. | Write expressions in QGIS |
$area, $length and $perimeter | Read. Measure the shape, in the units that the project sets. A record with no shape has no value. Where it works: Everywhere except the filter of a Value Relation. | Write expressions in QGIS |
current_value | Read. The value of a field in the form, such as current_value('family'). Where it works: The filter of a Value Relation, Control Visibility by Expression and the override on Editable. In a label or a style rule it has no value. A default value or a constraint that uses it is not read. | Write expressions in QGIS |
maximum and minimum | Read. The largest or smallest value of an expression among the layer’s records. With group_by or filter, it is not read. Where it works: Default values only. | Write expressions in QGIS |
overlay_within and overlay_intersects, read by array_first, array_get or an index such as [0] | Partly read. The value of an expression on a feature of another layer that a new point lies within or meets, such as array_first(overlay_within('Properties', "prop_propnum")). Groundwork asks that layer’s source for the features around the point, as QGIS does. A line or a polygon is not looked up, and only polygons are matched. Where it works: Default values only. | Write expressions in QGIS |
aggregate with the filter intersects($geometry, geometry(@parent)), which takes geometry and @parent | Partly read. A count, min, max or concatenate of the features of another layer under a new point, in the form that QField’s guide gives. Any other kind of aggregate, filter or order_by is not read. Where it works: Default values only. | Write expressions in QGIS |
uuid() | Read. A new ID. Where it works: A whole default value only. | Write expressions in QGIS |
Any other function, such as regexp_matches, a variable other than @parent in aggregate, or a named value such as places:=2 outside make_interval | Not read. Groundwork does not read the expression. What happens then depends on where it is. Where it works: Nowhere. | Write expressions in QGIS |
The layers panel and the map canvas
| Setting in QGIS | In Groundwork | Details |
|---|---|---|
| The view of the map canvas when you save the project | Read. The view that the map opens on. A map connected to QGIS Server opens on the area of its layers. | Prepare data in QGIS |
| The order of the layers | Read. The top layer opens active, unless QFieldSync names another, and its features fill the Data panel. | Prepare data in QGIS |
| An unticked layer | Read. A hidden layer that users can show. | Prepare data in QGIS |
| A Mutually Exclusive Group | Read. The basemaps of the map, when the source has no folder named Basemaps. | Connect a data source |
Project Properties → QField
| Setting in QGIS | In Groundwork | Details |
|---|---|---|
| Initial active layer, a setting of the QFieldSync plugin | Read. The layer that opens active the first time a user opens the map. Groundwork cannot read it from QGIS Server. | Prepare data in QGIS |
Project Properties → Mergin Maps
| Setting in QGIS | In Groundwork | Details |
|---|---|---|
| Filtering, a setting of the Mergin Maps plugin: Enable filtering and its list of filters | Read. The filters in each layer’s filter row when the map opens, under their titles. A Text filter is left out. Groundwork cannot read them from QGIS Server. | Prepare data in QGIS |