Select to view content in your preferred language

No z value when updating existing point

3276
10
Jump to solution
02-12-2023 10:32 AM
JacobBradley
New Contributor II

I am doing a utility survey that requires all new waste water junctions(manholes) collected to have Rim elevation attributed. All existing junctions in the data that are missing these attributes need to be populated as well. I've added the GPS Metadata Field ESRIGNSS_ALTITUDE to the junction feature so I can populate Rim elevation in the field.

When I collect a new junction, this GPS field populates. Yet when I select an existing junction and hit update point, the GPS field remains NULL. 

Any idea as to why this is and whether there is a solution?

0 Kudos
1 Solution

Accepted Solutions
JustinReynolds
Regular Contributor

The expression I gave gives an error... at least in part because I botched it.  Try this

 

var geom = Geometry($feature);
IIF(!IsEmpty(geom), geom.z, null);

 


A feature represents both the attributes assigned and its physical geometry.  The esrignss fields are just metadata.  A feature's geometry is what is used to draw the feature and is the source of truth... in the web and mobile environment you can't really have a feature without geometry.  You can have a feature without gnss metadata however.

The "if check" in the expression isn't really needed if you are putting the arcade in the popup, but if you are working with the geometry in the form (while collecting the data) then you would to make sure that the geometry exists before trying to access any of its properties.

The fact that your expression is returning 0 for the msl calculation seems to be telling you that the z-value in the actual geometry is 0.

- Justin Reynolds, PE

View solution in original post

10 Replies
JacobBradley
New Contributor II

Upon further investigation, not all of my new features are populating any z-values. I checked to make sure they all have the z-values option turned on. I am using the same Trimble R2 with an RTX subscription for all my collection. Why is field maps only giving some features a z-value but not all?

0 Kudos
JustinReynolds
Regular Contributor

Hi Jacob,

In the case of new features I suspect that it is due to the nature of how the feature's geometry is collected or subsequently modified.

The esrignss metadata fields are only populated if the data collection mode is gps... i.e. the "+" was used to collect the data or you centered to your location then hit "Update Point" button. If you use the "+" but then move the crosshair on the map and hit "Update Point" then it will wipe the esrignss metadata fields as the mode of collection is now "User-Defined".  This would also be the case if the snapping was used to capture the geometry or the user dropped a pin and initiated data collection by choosing the "Collect Here" option.

In the case of updating existing features, I suspect that the metadata fields are not populating because the feature's geometry already exists.  You would need to force the geometry to update using the "Update Point" button after making sure the crosshair is following your current location.

The metadata fields can be finicky because they are pretty easy to wipe if the user is not careful or too easy to never populate if you happen to be using manual placed or snapping methods to collect the geometry.  

Working with the actual geometry instead of the gnss metadata is going to be a more robust solution.

- Justin Reynolds, PE
0 Kudos
JacobBradley
New Contributor II

These features were collected using the "+" and "Update Point" buttons. The only time we use snapping is when we are adding utility lines between points.

When you say "Working with the actual geometry...", are you referring to the "+" and "Update Point" buttons or is there another way to view a features z-value?

0 Kudos
JustinReynolds
Regular Contributor

Be careful with the "Update Point" button.  If it is used and your crosshair isn't following your location, you may be wiping the gnss metadata.  The halo around your position should be grey with a blue inner circle.  If only the grey one shows up, then the user has dragged the map and this will then be considered user-defined location and will wipe the gnss metadata, assuming it was already there.  Snapping should also wipe the gnss metadata.

By working with the actual geometry, I mean using arcade to access the feature's geometry... what you do or don't see in the gnss metadata fields is not the feature's geometry and it may or may not be there depending on various scenarios. When the meta data is present, it should be the same as what you will find in the feature's geometry... though you may need to convert the x. y to lat long first for it to be obvious.

If you want to see the z value, no matter how the feature was collected then you can add a field and create an arcade expression to pull and display the information.

https://developers.arcgis.com/arcade/guide/types/#geometry

The simplest case for an expression

IIF(!IsEmpty(Geometry($feature)), geom.z, null);




- Justin Reynolds, PE
0 Kudos
JacobBradley
New Contributor II

First off, I appreciate you taking the time to assist me on this.

So I tried to add an arcade expression to the junctions popup using your code from above. It gave me an error revolving around "geom.z". I found a youtube video from NEIGPS (https://youtu.be/H5fBlOtKmKU) that showed a way to add the Mean Sea Level, using geometry.z, to the pop up. This did not show the z-value regardless if esrignss did or not. I've added photos for reference below.

Also, when you run calculate geometry in the attribute field for z-coordinate, where does it get this data.

In this video, Eric Bock with NEI goes over setting up a Trimble R2 cm GNSS receiver to use with Esri's Collector for GIS Andriod (v20.1.0) app. We start off configuring Trimble Mobile Manager (TMM) v2.30 to use a local VRS real-time network, along with setting up NAD83 2011 datum output and ...
JustinReynolds
Regular Contributor

The expression I gave gives an error... at least in part because I botched it.  Try this

 

var geom = Geometry($feature);
IIF(!IsEmpty(geom), geom.z, null);

 


A feature represents both the attributes assigned and its physical geometry.  The esrignss fields are just metadata.  A feature's geometry is what is used to draw the feature and is the source of truth... in the web and mobile environment you can't really have a feature without geometry.  You can have a feature without gnss metadata however.

The "if check" in the expression isn't really needed if you are putting the arcade in the popup, but if you are working with the geometry in the form (while collecting the data) then you would to make sure that the geometry exists before trying to access any of its properties.

The fact that your expression is returning 0 for the msl calculation seems to be telling you that the z-value in the actual geometry is 0.

- Justin Reynolds, PE
JacobBradley
New Contributor II

Sorry for the late reply but I wanted to get in a full days worth of testing. The new script you gave me worked flawlessly! I did modify it to show the value in feet as it was populating in meters.

var geom = Geometry($feature);
IIF(!IsEmpty(geom), (geom.z *3.28084), null);

I also read that you must have the GPS Metadata fields add to your feature before collecting. Because if you add it later, they would not populate. This would explain as to why some features were populating and the others not.

However I am glad you took me on this z-value journey as I have learned a lot. Because of you I now know what orthometric and ellipsoidal height are and their differences. The client that I am working for did not specify which height they wanted, but after investigating their data it seems they use orthometric.

Thank you again for all your help!

0 Kudos
JustinReynolds
Regular Contributor

Great to hear.  If you are looking for more information about elevation then you might find this brief article of use.  It is perhaps the most concise document I've come across on the topic.
https://eos-gnss.com/knowledge-base/articles/elevation-for-beginners

 

- Justin Reynolds, PE
PaulLohr
Regular Contributor

Jacob, this may be related to the issue you've seen.

I have seen that Z values do not get updated while trying to update a point using an R2 GNSS unit and the Update Point button when using Field Maps and Trimble Mobile Manager. The GNSS metadata remains intact. The workflow goes like this: first, get the GNSS unit powered up and connected, open Field Maps, open the map, tap an existing point which has a Z value already assigned, scroll down to the edit button, tap the Update Point button, then tap Submit. The Z value does not change. This can  be seen by checking it with ArcMap (if you don't have an expression setup to show the Z values in ArcGIS Online).

We did some testing with the Collector app. It was able to update Z values on existing points which already had Z values assigned. If you can find a device that still has Collector installed, this may be a helpful test. I have found the older apps (Collector, Collector Classic) to be helpful diagnostic tools when the current app (Field Maps) has trouble.

This issue is filed with ESRI technical support under case # 03253130.