Skip to content

Positioning (GNSS)

QField can make use of the internal GNSS (Global Navigation Satellite System, like GPS, GLONASS, Galileo or Beidou). QField can also connect to external antennas through bluetooth and directly integrate their NMEA stream.

GNSS devices are also capable of measuring the altitude next to the current 2D position on the earth surface.

Configuration

Desktop preparation

Vertex log

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.

Then you should assign the role digitizing logger on a point layer.

Go to QFieldSync > Project Properties

The layer fields must have default value with GNSS variables.

Accuracy requirement

A minimum desired accuracy for measurements can be defined. The quality will be reported in three classes, bad (red), ok (yellow) and excellent (green). These colors will show up as a dot on top of the GNSS button.

The thresholds can be defined in the positioning settings.

If the Enable accuracy requirement setting is activated, you will not be able to collect new measurements with the cursor snapped to the position with an accuracy value which is bad (red).

Antenna height compensation

The height of the antenna pole in use can be defined in the settings. Any measured altitude will be corrected by this value.

Altitude correction / vertical grid shift

Altitude values can be corrected with vertical grid shift files to calculate orthometric height

Vertical grid shift files have to be made available to QField by putting them into the QField app folder <drive>:/Android/data/ch.opengis.qfield/files/QField/proj.

Note

Since QField 2 the proj files needs to be stored in the app directory <drive>:/Android/data/ch.opengis.qfield/files/QField/proj instead of the devices main directory <drive>:/QField/proj.

Once the grid shift file is placed there, it is available in QField in the Positioning settings under Vertical grid shift in use.

If you are using altitude correction and an external bluetooth connected antenna consider turning Use orthometric altitude from device off.

Additional variables

You can get access to positioning information through additional expression variables. These will only be available when positioning is enabled.

These variables are commonly used as default values for fields to keep track of the quality of individual measured points.

  • @position_source_name - The name of the device that gave location information as reported by the sensor. To differenciate between internal and external sensor. If the position is manually set, and the position is not snapped to the cursor, the source name is "manual". In case the cursor is not snapped to the position, all other variables will be null, if you need this, use the gnss_ variables instead.
  • @position_quality_description - A human readable and translated string for the quality as reported by the sensor. E.g. "Fixed RTK". It is only available when the crosshair is snapped to the sensor. - IE
  • @position_coordinate - A point with the coordinate in WGS84. Lon, Lat, Altitude as delivered by the sensor. It is only available when the crosshair is snapped to the sensor. - x(@position_coordinate) - IE
  • @position_horizontal_accuracy - The horizontal accuracy of the coordinate (in meters) as reported by the sensor. It is only available when the crosshair is snapped to the sensor. - IE
  • @position_timestamp - The timestamp of the position in UTC as reported by the sensor. It is only available when the crosshair is snapped to the sensor. - IE
  • @position_direction - The direction of movement in degrees from true north as reported by the sensor. It is only available when the crosshair is snapped to the sensor. - IE
  • @position_ground_speed - Groundspeed (in m/s) as reported by the sensor. It is only available when the crosshair is snapped to the sensor. - IE
  • @position_magnetic_variation - The angle between the horizontal component of the magnetic field and true north, in degrees as reported by the sensor. Also known as magnetic declination. A positive value indicates a clockwise direction from true north and a negative value indicates a counter-clockwise direction. It is only available when the crosshair is snapped to the sensor. - IE
  • @position_vertical_accuracy - The vertical accuracy of the coordinate (in meters) as reported by the sensor. It is only available when the crosshair is snapped to the sensor. - IE
  • @position_3d_accuracy - The 3 dimensional accuracy of the coordinate (in meters), 3D-RMS as reported by the sensor. It is only available when the crosshair is snapped to the sensor. - IE
  • @position_vertical_speed - The vertical speed (in m/s) as reported by the sensor. It is only available when the crosshair is snapped to the sensor. - IE
  • @position_averaged_count - This variable holds the number of collected positions from which an averaged position was calculated when digitizing in this mode. For non-averaged positions, the value will be set to 0 (zero). - IE
  • @position_pdop - Position dilution of precision as reported by the sensor. It is only available when the crosshair is snapped to the sensor. - E
  • @position_hdop - Horizontal dilution of precision as reported by the sensor. It is only available when the crosshair is snapped to the sensor. - E
  • @position_vdop - Vertical dilution of precision as reported by the sensor. It is only available when the crosshair is snapped to the sensor. - E
  • @position_number_of_used_satellites - Number of satellites as reported by the sensor. It is only available when the crosshair is snapped to the sensor. - E
  • @position_used_satellites - A list of satellites in use (pri) as reported by the sensor. It is only available when the crosshair is snapped to the sensor. - array_count(@position_used_satellites) - E
  • @position_fix_status_description - The GPS Fix Status "NoData", "NoFix", "Fix2D" or "Fix3D" as reported by the sensor. It is only available when the crosshair is snapped to the sensor. - E
  • @position_fix_mode - Fix mode (where "M" = Manual, forced to operate in 2D or 3D or "A" = Automatic, 3D/2D) as reported by the sensor. It is only available when the crosshair is snapped to the sensor. - E

Info

I: Internal position source E: External (NMEA) position source

All @position_* variables have a corresponding @gnss_* variable. The gnss variables always report the gnss sensor values, even when the crosshair is not snapped.

Examples:
  • when the crosshair is snapped to the sensor - @gnss_horizontal_accuracy > The horizontal accuracy of the coordinate (in meters) as reported by the sensor. - @position_horizontal_accuracy > The horizontal accuracy of the coordinate (in meters) as reported by the sensor. - @position_source_name --> sensor name.
  • when the crosshair is manually moved - @gnss_horizontal_accuracy > The horizontal accuracy of the coordinate (in meters) as reported by the sensor. - @position_horizontal_accuracy > The value is NULL. - @position_source_name > The value is manual.

Usage

Fieldwork

A short press on the GNSS button will turn on the GNSS and center to the current location once positioning information is available.

Activate edit mode and press on the target button, the cross in the center means it is using GNSS positioning.

A long press on the GNSS button will show the positioning menu.

Inside the positioning menu you can turn on the positioning display which will show the current coordinates which are reprojected into the project CRS along with precision information.

Note

If you see WGS 84 lat/lon information instead of information in your project CRS, you probably have no signal yet.

Using an external GNSS-Receiver

Fieldwork

QField supports connecting external GNSS antennas via bluetooth.

In Settings > Positioning, paired bluetooth devices can be scanned and chosen as position source.

Make sure no other app like mock location providers are using the bluetooth antenna.

Mock location

Fieldwork

It is possible to provide a mock location via a separate android app to QField. There are several options for this, one of them is Android NTRIP Client.

To use this you have to enable mock locations on your Android device.

Back to top