With the 2.4 release of Survey123 Connect, a null value is now supported in the bind::esri:fieldType column of an XLSForm. When the field type is null, Survey123 Connect will not create a field when publishing. I’d like to highlight 3 cases where this can really enhance your forms:
- Intermediate Calculations
- Multiple Geopoints
- More easily match an existing feature services
Intermediate Calculations
When doing a set of complex calculations, it’s often easier to break out sub calculations into their own question to make them more manageable. While this was easier for you as a survey author to manage, this meant that you would have these intermediate steps stored in the database. By assigning these the null field type, we simplify the data being stored to only the final calculations.
For example, this Excel sheet calculates the linear regression of three observations. This involves a number of intermediate calculations, beginning with calculating the mean value of X & Y and then the distance an observation is from the mean value.
Multiple Geopoints
Another popular request the null value solves is the ability to capture multiple locations in a form; one location can be stored as the geometry of the feature with the other points being stored in x & y fields. Note that as the survey submission needs to have a geometry, you must have 1 geopoint question not set to null.
An example where multiple geopoints are useful is when collecting the location of a culvert or other relatively straight linear asset.
To store the point information, get started by creating 3 (or more) questions for each point after the first:
- The geopoint question to record the value
- Two decimal (or calculate/hidden) questions to store the points x and y values (add additional fields for z and accuracy, if desired)
Set the field type to null for the geopoint and use the pulldata(‘@geopoint’) function to extract the value after the point is set. Here's a basic sample with a start and end point.
Matching an existing feature service
While Survey123 can automatically create a form based on an existing feature service, it may not create the form you quite want. For example, a field storing how long someone has lived at a place might be better shown on the form by asking when did they move in – the length of time can then be calculated. By creating a separate question to be asked with the null field type, you can create some flexibility between what is asked and the data that gets stored.
Have another use for the null field type? Share in the comments below!