In the post below it describes using ArcGIS Collector to carry out inspections of assets by creating a relationship to an inspection table. This works really well and is a good way to separate asset edits from maintenance operations, however I cannot work out how to update the symbology to display when an asset has had an inspection.
If you have a large number of assets then you need a method for the field works to keep track of what has been inspected and what is still due, I originally thought of having a 'inspection_status' field that would be set at the start of the season to 'Due' and would have a default setting of 'Not Due' so that every time an inspection took place the field value would automatically change from 'Due' to 'Not Due' without the field worker having to do anything other than fill in their inspection form.
I was then going use the icons below depending on which value the feature had for 'inspection_status' The only problem is that this field is in the inspection table and not accessible from the feature class to use to set the symbology!!!! Arrrgh
Does anyone know another way to achieve the same result please or could this be considered for a future enhancement.
Solved! Go to Solution.
We have managed to symbolize features based on related record field values when we set up the service. Perhaps this will offer a little hope, This is done by setting up definition queries on map document layers.
Kyle I need to do something similar for a project and ran into this old thread. And your suggestion got me thinking. Am I right in assuming the basic concept is to have a feature to feature relationship class (1:m) with the definition query on the "many" side based on something like the the most recent date of inspection to pull in the latest and then symbolize of some other field you want on that same many side? Another question. How would you handle the scenario of "resetting" the map (such as after a flooding event and the inspections are over), but you don't want to delete the data. You just don't want them displayed when the next even starts?
In the simplest case, there is a relationship class between a feature class and a table. In ArcMap, add the feature class and set up a definition query on that layer. The definition query filters features where the foreign key in a related table equals the primary key in the feature class AND any other queries. To use multiple symbol styles, we found that the same layer had to be added for each style of symbol and then the definition query filtered the features based on what we wanted to symbolize. Then publish a service.
For retaining old data when a new event occurs, these are just some ideas that I would consider: the definition query could filter based on a more recent date OR create an attribute field that serves as an event identifier and include these in any definition query.
I confess that this method is not the prettiest and is only a workaround. We have not tested with the latest versions of ArcGIS Server, and I imagine one day this more advanced definition query could be parsed out.
Kyle - I have tried to do as you suggested, however I cannot get Arcmap to "see" the inspection table inside the SQL query editor for the definition query without actually joining the two tables together (ArcGIS online doesn't support uploading joined tables together, so I'm stuck). I've tried this in both ArcMap and Pro. I would have thought having the 1:M relationship class present would be enough, but it doesn't appear to be. The relationship class is working just fine and keeping the records straight when I'm adding things - I just can't seem to get the parent layer I want to symbolize to reference or see the inspection table in the definition query with just relying on the relationship class. Is there some kind of trick or SQL syntax or something I'm missing? This is in a file geodatabase. See below for screenshots. The only difference between is the top doesn't have a join and the bottom does.
I am trying to achieve the same thing here. I read the update to your previous article. The SQL statement makes sense. However, I noticed that Devin above needed to apply a join first in ArcPro before it would work. And like Devin, my data is is an AGOL hosted feature, not on ArcServer. Are you writing that SQL statement in ArcGIS software(AGOL, ArcMap, etc..), or is it and SDE layer that you are accessing through SQL Studio?
I tried this, and it works for me;
I joined the feature layer with the related table, and add the query to get the related values only. Then publish them as a services in GIS Server or AGOL. After that, apply the map service, and enable the pop up. This will show the related tables points only. Also, you can make many copies, and filter by attributes if you want. However, I couldn't able to make it happen with the feature service. After the join, I only got a table as a feature access. It's only work as a map service for me.