Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
25 commits
Select commit Hold shift + click to select a range
eee1da2
Replacing plugins section picture
SeqLaz Jul 31, 2025
22bf8dd
Replacing create project picture
SeqLaz Jul 31, 2025
5cc202f
Replacing getting started project properties
SeqLaz Jul 31, 2025
ffc99e5
Replacing getting started synchronize
SeqLaz Jul 31, 2025
34efd18
Replacing getting started working on your project
SeqLaz Jul 31, 2025
b63568a
Replacing changing default qfieldcloud servier qfield
SeqLaz Jul 31, 2025
abab006
Replacing picture qfieldsync config
SeqLaz Jul 31, 2025
ab87de5
Replacing qfieldsync properties
SeqLaz Jul 31, 2025
e20f76e
Replacing piture qfieldsync items visible
SeqLaz Jul 31, 2025
ccadb1e
Replacing piture qfieldsync items visible qfield
SeqLaz Jul 31, 2025
19375f3
Replacing piture qfieldsync base map configuration
SeqLaz Jul 31, 2025
65ac1cb
Replacing piture qfieldsync subdir exporting
SeqLaz Jul 31, 2025
daa853a
Replacing piture qfieldsync sync
SeqLaz Jul 31, 2025
4964f7d
Replacing piture maximum size attachments
SeqLaz Jul 31, 2025
420c3c3
Replacing piture attachments directories
SeqLaz Jul 31, 2025
509c58b
Replacing piture picture path
SeqLaz Jul 31, 2025
1426dc5
Replacing pictures for vertex logs
SeqLaz Aug 1, 2025
34dbb87
changed a little bit and obey one sentence per line rule
beanzmo Aug 4, 2025
92ddec7
Other improvements
SeqLaz Aug 4, 2025
eec0709
Update documentation/how-to/gnss.en.md
SeqLaz Aug 4, 2025
63ce178
Syncing Attachment Folders to Devices section
SeqLaz Aug 6, 2025
aea2b1a
a few suggestions
beanzmo Aug 12, 2025
e56bcae
Some little improvements
SeqLaz Aug 13, 2025
d36f5ea
Some little improvements
SeqLaz Aug 13, 2025
8b11cbd
Merge pull request #602 from opengisch/QF-6443-review_the_attachment_…
beanzmo Aug 13, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file modified documentation/assets/images/application-plugins.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified documentation/assets/images/attachments_directories.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified documentation/assets/images/base_map_configuration.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified documentation/assets/images/create_project.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified documentation/assets/images/getting_started_login.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified documentation/assets/images/getting_started_splashscreen.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified documentation/assets/images/getting_started_synchronize.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified documentation/assets/images/picture_path.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified documentation/assets/images/qfield-sync-properties.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified documentation/assets/images/qfield-sync_config.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified documentation/assets/images/qfield-sync_sync.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified documentation/assets/images/vertex_log1.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified documentation/assets/images/vertex_log2.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
18 changes: 16 additions & 2 deletions documentation/get-started/tutorials/advanced-setup-qfc.en.md
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,7 @@ Please be aware of the security implications of such requirements, and remember

You can find more information on [QFieldCloud technical reference](../../reference/qfieldcloud/concepts.md).

## Restricting Project Files Modification to Administrators and Managers
## Restriction of Project Files

To prevent any modification to the core QGIS project file, **the project administrators** can restrict the access to these files.
This can be achieved under the settings section in QFieldCloud.
Expand All @@ -102,7 +102,7 @@ Other project collaborators can still upload and modify other project files, suc

!![](../../assets/images/restric_qfc_project_files.png)

## Enabling automatic pushing of changes to QFieldCloud
## Automatic push to QFieldCloud

With this functionality, users and managers of QFieldCloud projects can enforce automatic pushing of pending changes to QField devices in the field, as well as specify the interval in between automated pushes.
The functionality is activated through a project setting, allowing remote activation.
Expand Down Expand Up @@ -260,6 +260,20 @@ For the old (QGIS) offliner:
!!! note
This configuration must be set in the Settings page of each project in [QFieldCloud](https://app.qfield.cloud/).

## Synchronisation of Attachment Folders

To ensure an entire folder and its contents is downloaded to your QField device, you must add it under "Attachments and Directories".

1. In QGIS navigate to `Project` > `Properties` > `QField`.
2. Add your folder's path to the "Attachments and Directories" list.
The path you enter must be relative to the location of your project file.

!!! example
You used pictures for a specific symbology.
These are stored in a folder named `assets` located inside your project home folder. Add them under the folder name to the list.

!![](../../assets/images/attachments_and_directories_list.png)

## On-Demand Attachment Downloads

For projects with many attachment files, you can enable on-demand downloading in QField.
Expand Down
120 changes: 55 additions & 65 deletions documentation/get-started/tutorials/get-started-qfs.en.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,29 +6,29 @@ tx_slug: documentation_get-started_tutorials_get-started-qfs

# QFieldSync

The [QFieldSync plugin for QGIS](https://plugins.qgis.org/plugins/qfieldsync/) helps preparing and packaging QGIS projects for
The [QFieldSync plugin for QGIS](https://plugins.qgis.org/plugins/qfieldsync/) <!-- markdown-link-check-disable-line -->
helps preparing and packaging QGIS projects for
QField.

QFieldSync supports your project preparation with automating the
following:

- Required steps for project setup (e.g.
`portable_project`)
- Creating basemaps from a single raster layer or from a style defined
in a map theme.
- Configuring the offline editing functionality and synchronizing
changes back.
- Required steps for project setup (e.g. `portable_project`)
- Creating basemaps from a single raster layer or from a style defined
in a map theme.
- Configuring the offline editing functionality and synchronizing
changes back.

## Workflow

To get a quick overview of the process, here is a list of typical steps:

1. Create a QField package. This is a working copy in a separate
1. Create a QField package. This is a working copy in a separate
folder.
2. Copy the QField package to the target device.
3. Go out and collect data.
4. Copy the modified data back to your desktop computer.
5. Synchronize the modified data with your database or files.
2. Copy the QField package to the target device.
3. Go out and collect data.
4. Copy the modified data back to your desktop computer.
5. Synchronize the modified data with your database or files.

## Installation

Expand All @@ -39,49 +39,46 @@ the plugin in the list and click on **Install**.

## Configuration

The project configuration is saved in the master .qgs project file. This
way it is possible to pre-configure a project once and use it
repeatedly.
The project configuration is saved in the master .qgs project file.
This way it is possible to pre-configure a project once and use it repeatedly.

!![Configure project](../../assets/images/qfield-sync_configmenu.png)

### Layer configuration

!![Configure the project layers](../../assets/images/qfield-sync_config.png)

In the project configuration dialog, an *action* can be defined for each
layer individually. Depending on the layer type, different types of
actions are available.
In the project configuration dialog, an *action* can be defined for each layer individually.
Depending on the layer type, different types of actions are available.

Copy
***Copy***

: The layer will be copied to the package folder. This is only
available for file-based layers.
: The layer will be copied to the package folder.
This is only available for file-based layers.

No action
***No action***

: The layer source will be left untouched. This is only available for
non-file-based layers like WMS, WFS, Postgis\...

Offline editing
***Offline editing***

: A working copy of the layer is copied into the package folder. Every
change which is done in the packaged project during work is recorded
in a changelog. When synchronizing the changes back later on, this
log will be replaced and all changes also be applied to the main
data base. There is no conflict handling in place.
: A working copy of the layer is copied into the package folder.
Every change which is done in the packaged project during work is recorded in a changelog.
When synchronizing the changes back later on, this log will be replaced and all changes also be applied to the main data base.
There is no conflict handling in place.

Remove
***Remove***

: The layer will be removed from the working copy. This is useful if a
layer is used in the basemap and will not be available in the
: The layer will be removed from the working copy.
This is useful if a layer is used in the basemap and will not be available in the
packaged project.

Properties
***Properties***

: There are some additional options to fine tune your QField project in the properties
: There are some additional options to fine tune your QField project in the properties:

1. Lock geometries: do not allow changing geometries and only allow changing attributes on this layer.
1. Permissions: Disable options for feature addition, feature deletion, attribute editing, or geometry editing.

2. Set up the attachment default naming, please refer to the [Configurable picture path](../../how-to/pictures.md#configurable-attachment-path)

Expand Down Expand Up @@ -124,32 +121,30 @@ There are two possible sources for a base map:

Layer

: A raster layer. This is useful to take an offline copy of an online
layer like a WMS or to take a working copy of an unsupported format
like an ECW or MrSID layer.
: A raster layer is useful for taking an offline copy of an online layer like a WMS or to take a working copy of an unsupported format like an ECW or MrSID layer.

Map Theme

: A map theme. This is useful to create a base map based on a
combination of several layers with styling. These layers can then be
removed from the working package and do not need to be rendered on
the device. This can save some disk space and battery on the device.
: A map theme is useful for creating a base map based on a combination of several layers with styling.
These layers can then be removed from the working package and do not need to be rendered on the device.
This can save some disk space and battery on the device.

The tile size defines the spatial resolution. It determines the number
of map units per pixel. If the map canvas CRS has meters as units and
tile size is set to 1, each raster pixel will have a spatial extent of
1x1 m, if it is set to 1000, each raster pixel will have a spatial
extent of 1 square kilometer.
The tile size defines the spatial resolution.
It determines the number of map units per pixel.
If the map canvas CRS has meters as units and tile size is set to 1, each raster pixel will have a spatial extent of 1x1 m, if it is set to 1000, each raster pixel will have a spatial extent of 1 square kilometer.

You can package a raster layer into an **MBTiles** file with multiple zoom levels for offline use.

- **Tiles min zoom level**: Defines the **minimum** zoom level for the raster tiles. A lower value increases the spatial coverage but the spatial resolution is limited. *(Default: 14)*
- **Tiles max zoom level**: Defines the **maximum** zoom level for the raster tiles. A higher value increases detail but may require more storage space, as well as increase the duration of the offline export. *(Default: 14)*
- **Tiles min zoom level**: Defines the **minimum** zoom level for the raster tiles.
A lower value increases the spatial coverage but the spatial resolution is limited. *(Default: 14)*
- **Tiles max zoom level**: Defines the **maximum** zoom level for the raster tiles.
A higher value increases detail but may require more storage space, as well as increase the duration of the offline export. *(Default: 14)*

!![Base Map Configuration QFieldSync](../../assets/images/base_map_configuration.png)

!!! note
Base map generation is disabled on QFieldCloud. You can still manually add your basemaps by running "Generate XYZ tiles (MBTiles)" or "Convert map to raster" algorithms in the processing framework.
Base map generation is disabled on QFieldCloud.
You can still manually add your basemaps by running "Generate XYZ tiles (MBTiles)" or "Convert map to raster" algorithms in the processing framework.

### Offline editing configuration

Expand All @@ -160,7 +155,8 @@ If *"Only synchronize features in area of interest"* is selected, only features

## Package for QField

To package your project, click on Plugins > QFieldSync > Package for QField. Once the project is configured, proceed to package it into a folder. This folder will contain both the QGIS project file (`.qgs`) and the associated data.
To package your project, click on `Plugins` > `QFieldSync` > `Package for QField`.
Once the project is configured, proceed to package it into a folder. This folder will contain both the QGIS project file (`.qgs`) and the associated data.

!![Package the project for QField](../../assets/images/qfield-sync_package1.png)

Expand All @@ -176,16 +172,14 @@ Simply activate the checkbox labeled "Show the packaging options in the toolbar.

!![](../../assets/images/checked-show-package.png,150px)

Copy the folder on your device. Open QField, open the project and start
collecting data.
Copy the folder on your device.
Open QField, open the project and start collecting data.

Also make sure to save the QGIS project using the regular Save As of
QGIS as you'll have to re-open it later when you want to synchronize
the changes.
Also make sure to save the QGIS project using the regular Save As of QGIS as you'll have to re-open it later when you want to synchronize the changes.

During packaging your project you can select which subdirectories to be copied by checking the directories in `Advanced` -> `Directories to be copied`.

!![Select subdirectories](../../assets/images/qfield-syinc-subdirs-exporting-project.png)
!![Select subdirectories](../../assets/images/qfield-syinc-subdirs-exporting-project.png,400px)

## How to sync from/to iOS device without QFieldCloud

Expand All @@ -198,15 +192,11 @@ Use iTunes' File Sharing function to import into the QField root folder.

## Synchronize from QField

When you want to synchronize what you have collected, re-open the
project in QGIS (the one you saved with a regular Save As).
When you want to synchronize what you have collected, re-open the project in QGIS (the one you saved with a regular Save As).

Copy the project folder from your device to your computer, and use the
**Synchronize from QField** menu to synchronize your changes from the
protable project to the main project.
Copy the project folder from your device to your computer, and use the **Synchronize from QField** menu to synchronize your changes from the protable project to the main project.

!![Synchronize from QField](../../assets/images/qfield-sync_sync.png)
!![Synchronize from QField](../../assets/images/qfield-sync_sync.png,400px)

Make sure that you synchronize your data back only once. That means, if
you go out again to collect more data, you should create a new QField
package before to avoid sync problems later on (like e.g. duplicates).
Make sure that you synchronize your data back only once.
That means, if you go out again to collect more data, you should create a new QField package before to avoid sync problems later on (like e.g. duplicates).
21 changes: 10 additions & 11 deletions documentation/how-to/gnss.en.md
Original file line number Diff line number Diff line change
Expand Up @@ -209,20 +209,19 @@ Information for GNSS Z value with Vertical grid shift in use:
| Orthometric from device | Z orthometric device value| Z orthometric device value | Z orthometric device value | Altitude: xxx.xxxx m (ortho.) |
| USER_Shift_Grid.GTX <br> [vertical grid shift](#altitude-correction-vertical-grid-shift) | Z shiftgrid value | Z ellipsoidal device value | Z shiftgrid value | Altitude: xxx.xxxx m (grid) |

### Vertex logger
### Vertex log layer

It is possible to setup a log layer of the collected vertices. This
allows to keep track of meta data for each vertex like GNSS quality
attributes and more. To set this up, a point layer can be added to the
project and attributes configured to store this information.
It is good practice to create a log layer of the collected vertices.
It enables you to keep track of the meta data for each vertex like [GNSS quality attributes](../reference/expression_variables.md) and more.

![](../assets/images/vertex_log1.png){width="600px"}
#### Setup

Then you should assign the role *digitizing logger* to a point layer.
1. Add a point layer to the project and attributes configured to store this information.
!![](../assets/images/vertex_log1.png)

Go to *QFieldSync > Project Properties*
2. Assign the role *digitizing logger* to a point layer.

![](../assets/images/vertex_log2.png){width="600px"}
3. Go to *QFieldSync > Project Properties*
!![](../assets/images/vertex_log2.png)

To be most effective, the layer attributes should have default values that
relies on the positioning variables enumerated above.
4. Set default values to the attributes using the positioning variables mentioned above.
17 changes: 9 additions & 8 deletions documentation/how-to/pictures.en.md
Original file line number Diff line number Diff line change
Expand Up @@ -55,8 +55,9 @@ Create a relation with:
### Widgets

#### Apiary
Set the default value of the field id to `uuid()` or use the *UUID Generator* widget.
There is no need to show it in the form.
You can either choose the *Text Edit* or *UUID Generator* widget.
Its default value in any case has to be *uuid('WithoutBraces')*.
Hide it from the view as it should not be edited by the user.

!![widgets](../assets/images/add-1-n-pictures-widgets_hive.png "")

Expand Down Expand Up @@ -85,7 +86,7 @@ Whenever that project is loaded, QField will register all images within that fol
- Alternatively, you can add images into the `drawing_templates` folder found inside your QField app folder.
If you are not familiar with that app folder, its location is shown at the bottom of the About QField overlay.

Templates shipped alongside projects as well as the QField app folder will be shown when users choose 'Draw a sketch' within attachments widget's 3-dot menu.
Templates shipped alongside projects as well as the QField app folder will be shown when users choose 'Draw a sketch' by pressing the 3-dotted menu icon of the attachment widget.

!![picture path](../assets/images/drawing_templates.png "")

Expand All @@ -104,7 +105,7 @@ Information about location and direction of the pictures will therefore be baked

QField allows you to add image stamping.
This is configured directly from the QFieldSync plugin in QGIS.
With this functionality you can add detailed and formatted information when taking photos in the field .
With this functionality you can add detailed and formatted information when taking photos in the field.

### Styling Settings

Expand Down Expand Up @@ -165,7 +166,7 @@ Be sure to reflect this in the QGIS expression.

The advanced settings allow rescaling the photos to a maximum width/height in *QFieldSync plugin > Project configuration*

![image](https://user-images.githubusercontent.com/4992805/189456560-3e251c44-c85c-40bd-a3cc-039c49090e03.png)
!![](../assets/images/maximum_picture_size_attachments.png, 800px)

## Configurable attachment path
:material-monitor: Desktop preparation
Expand All @@ -178,10 +179,10 @@ QFieldSync provides the possibility to configure the path and the file names of
Use expressions to specify the path of the attachments.
By default, pictures are saved into the "DCIM" folder, audio are saved into the "audio" folder and videos are saved into "video" with a timestamp as name.

!![picture path](../assets/images/picture_path.png "")
!![picture path](../assets/images/picture_path.png, 800 px)

Additional directories can be synchronized with pictures or other attachments.
Extra paths can be configured in _Attachment directories_ in the QFieldSync settings under *project properties*.
Extra paths can be configured in _Attachment and Directories_ tab in the QFieldSync settings under *project properties*.
All paths are relative to the project directory.

!![attachments directories](../assets/images/attachments_directories.png "")
!![attachments directories](../assets/images/attachments_directories.png, 1000px)
26 changes: 10 additions & 16 deletions documentation/how-to/plugins.en.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,7 @@ tx_slug: documentation_how-to_plugins

# QField Plugins

QField has a QML/Javascript plugin framework through which additional functionalities and
features can be scripted.
QField has a QML/Javascript plugin framework through which additional functionalities and features can be scripted.

## Types of plugins

Expand All @@ -16,29 +15,24 @@ Plugins can be served in two ways:
- as an application plugin that will be activated when QField launches.

!!! note
A permission dialog is shown prior to activating a plugin, providing you with the possibility
of granting or denying individual plugins.
A permission dialog is shown prior to activating a plugin, providing you with the possibility of granting or denying individual plugins.

### Project plugins

Project plugins are deployed as a sidecar file to a given project file and must share the same
file name with a .qml extension. For example, if your project file is “tree_inventory_qfield.qgs”,
the plugin’s main QML file must be “tree_inventory_qfield.qml”.
Project plugins are deployed as a sidecar file to a given project file and must share the same file name with a .qml extension.
For example, if your project file is “tree_inventory_qfield.qgs”, the plugin’s main QML file must be “tree_inventory_qfield.qml”.

For cloud projects, you simply add the relevant QML file into your local cloud project folder
and upload the newly added file on QGIS using qfieldsync. This method insures a smooth plugin
deployment and update to devices on the field.
For cloud projects, you simply add the relevant QML file into your local cloud project folderand upload the newly added file on QGIS using qfieldsync.
This method insures a smooth plugin deployment and update to devices on the field.

For non-cloud projects, refer to the QField [storage handling documentation page](../get-started/storage.md)
to learn how to import projects onto devices.

### Application plugins

Application plugins are installed through a plugins popup accessed from QField’s Settings
panel. Simply hit the ‘Install plugin from URL’ button and paste in a URL pointing to a
zipped plugin file.
Application plugins are installed through a plugins popup accessed from QField’s Settings panel.
Click on the ‘Install plugin from URL’ button and paste in a URL pointing to a zipped plugin file, or download one of the "Available Plugins" already developed by the [community](../reference/plugins.md).

!![](../assets/images/application-plugins.png)
!![](../assets/images/application-plugins.png,400px)

Once installed, the plugin will appear in the plugins list found in the popup, with a switch
to toggle the activation of the plugin.
Once installed, the plugin will appear in the plugins list found in the popup, with a switch to toggle the activation of the plugin.