Add a filter widget to ArcGIS Field Maps

16007
75
03-03-2021 06:50 AM
Status: In Product Plan
Rose_Geater
New Contributor II

Add a configurable filter widget to ArcGIS Field Maps, much like the filter widget in Web AppBuilder. 

ArcGIS Field Maps is commonly used where users collect additional information on, or collect a related record against an existing feature. It would be really useful to be able to filter between different attributes on those layers, e.g. for priority points. Symbolising according to the feature works only when a few distinct attributes need highlighting. For anything more, different field maps need to be created with the different filters set as default. This can lead to having to manage, maintain and download multiple maps. If the user could filter on attributes of a layer from a single map this would be really useful. 

75 Comments
ZoltanKelly

Hi @Anonymous User just saw your status change for this Idea which is great. Really happy to contribute with further clarification on requirements as a client, early adopter testing, whatever you need on this one. i'm sure others on this thread would be also

GayleNeufeld

@Anonymous User Glad to see this is under consideration!  I'm also willing to provide further clarification, and help out with testing.  My team will be thrilled to adopt this!

by Anonymous User

Hi All, we are considering implementing this feature and have some questions for all of you.

1. Should the mobile worker have the ability to create a filter using any field? Some products allow the map author to configure pre-defined filters/selectors where the user either enables/disables the filter or the user only selects the value (not the field).

2. We are looking for specific examples of the layer you would use, and the filter you would like to use. For example "I would like to filter a trees layer by the age of tree and specie of the tree." We're trying to understand the complexity of the filters that are needed. How many conditions are expected?

3. Why do you need to filter a layer? Is it reduce the visual complexity of the map to find nearby features? Is it to reduce search results for searching for specific features?

4. Should filters be persisted/saved so they can easily be turned on/off for a layer?

@DougBrowning @GayleNeufeld @ZoltanKelly 

ZoltanKelly

Hi @Anonymous User , see below. A lot of our example is for work orders as that's our immediate business need, and appreciating that you are looking to integrate the Esri Workforce capability into field maps. While we could consider this, the need for filtering remains valid for non-works related information, so using workforce might be relevant but wouldn't remove the driver for this..

Also noting we're a state water/wastewater/stormwater utility (Melbourne Water, Australia), so this is very 'asset-centric' / 'works-centric'.

1. Should the mobile worker have the ability to create a filter using any field? Some products allow the map author to configure pre-defined filters/selectors where the user either enables/disables the filter or the user only selects the value (not the field). For us, these would be fine if predefined per layer by the webmap/field maps author and field, and then user could choose to use one or more filters on a given layer. No expectation end users can define this 'on the fly'.

2. We are looking for specific examples of the layer you would use, and the filter you would like to use. For example "I would like to filter a trees layer by the age of tree and specie of the tree." We're trying to understand the complexity of the filters that are needed. How many conditions are expected?

If we had to constrain it, 5 fields max, but 3 would make a huge difference (so 3-5). Expectation is user could apply 0-n of these and they would combine (i.e. 'AND' join). Use cases for us are 2:

A. 'Activities' we have represented spatially (e.g. 'stuff happening on ground'). These are usually generated from EAM/CRM type systems. purpose of exposing to field users is so they can understand other on ground works occurring at site. e.g.

  • Maintenance Work Orders (from our Maximo EAM; it has complex appland a non-spatial mobile app, so looking to use it in a complementary fashion. Further details below on an example workflow.
  • CRM activities. This could be construction work near our asset, call centre enquiries/complaints
  • Capital projects. New greenfield works, ours or from externals
  • Operational activities, e.g. water valve testing, routine site inspections

As these all come from different systems, intent is to be able to use GIS to provide the overlay of all this information. This means it's a high volume of data, so for field works to filter what they can see they can cut through the noise depending on the activity they are performing at site. 

B. Assets. We have a large # of assets (~300k) across 14000km2 area, plus there are another 1 million of other agencies assets. While have used definition queries, subtypes to provide a tiered list of assets, if they are at a complex site like a treatment plant, there's a lot of data on the screen for them to drill into. Having filters we could apply to asset layers means uses can self-service to identify information not be represented by symbology and layer structure alone. e.g.

- layers are used to separate out asset ownership and top level asset type (pipes, valves)

- symbology is used to further delineate asset types (aqueducts, scour valves) and asset status.

- so if user wants to see all pipes of x diameter, then the currently need to use the info tool repeatedly,  or if they want to just show a subset of asset classes within a layer they have no way to do that.

Generally, our field maps are designed for one business use, e.g. Work Order execution for maintenance crew - they're focused on work orders; Customer Response - they're focused on their CRM cases (e.g. a field inspection of a CRM case to ensure a building permit has been completed without damaging our asset); Asset Managers - undertaking a site inspection to plan a new capital project; focused on the asset data. So in each case there's really a single 'primary' layer they'd want to filter by, having the ability to filter on multiple layers would be fantastic, but appreciate that could become quite unwieldy.

3. Why do you need to filter a layer? Is it reduce the visual complexity of the map to find nearby features? Is it to reduce search results for searching for specific features?

Yes for both:

- to reduce visual clutter

- to narrow search results

one of the issues with Field Maps is that search doesn't constrain to the visible map area (that would also be amazing), so applying a 'filter' on a work area (geographic zone) that is populated as an attribute is one way we see to allow users to only see that relevant context. Or to filter to work orders assigned to a given user, as also the issue is that only one search term can be entered (so user can't use a layer attribute search to find 'all work orders assigned to me scheduled for today).

4. Should filters be persisted/saved so they can easily be turned on/off for a layer?

This would be ideal and would be great to save PER USER, as if users are searching for work orders 'assigned to me', then they would want to return to this same filter. Reason for this is we haven't worked out an OOTB method to pass a logged in user as a filter criteria to a definition query, so we can't create e.g. a view or a map service that has a layer that shows 'work orders where ASSIGNED = '<logged in username>'. maybe this is something we could address with a SOI or something but haven't explored that yet.

Further context:

re: work orders as an example workflow for maintenance crew

  • One week to one month of work is scheduled assigned at a time to a field member (depending on site/provider). These will be allocated to the nearest day, not to a specific time within a day due to volumes of work.
  • The field worker then has autonomy on which jobs to complete ‘first’ from their backlog – they just need to ensure all work is completed by end of day/week
  • Subsequently, the field worker is looking to use filters in the Field Apps to:
    • Use a filter to only view work orders assigned to them
    • Further filter down that ‘list’ of assigned work orders to determine which job to undertake first, based on location and closeness, priority, or type of work

OR

  • View work orders assigned to another user. e.g. if they have 3 hours left in the work day, and no work orders within drivetime with suitable duration, they can self-service identifying another work order by:
    • viewing spatially to find a close work order
    • filter where activity type matches (e.g. grass crew can find other grass cutting jobs). They can then ‘pick up’ that work instead of relying on a central dispatch to coordinate this work.

As mentioned, we have an existing non-spatial work order mobile app for Maximo that is used to execute workflows for in the field (status changes, booking time to job, updating comments). These have complex backend interaction to application/database so we are currently using Field Maps as a complementary product to provide the 'GIS view', and then have set up launch in context via URLs in popups to<>from to our other dedicated enterprise apps to complete workflows.

Two options we’ve considered:

  • Option 1 - Using a group layer, and then a set of sublayers under that with various definition queries applied e.g.:
    • Work Orders
      • Work Orders In Progress (def query status = ‘In Progress’)
      • Work Orders Scheduled (def query status = ‘Scheduled’)
    • Users can then ‘turn on’ the group layer to see all records, or individual sublayers to see filtered subsets
    • However, this has two limitations:
      • def queries have to be predefined and published, so doesn’t work where requirement is a changing free text list like ‘work order lead’ as a person name
      • this only allows for one attribute to be set as the filter, and we can’t have that cascading/nested/shopping cart type filter experience
  • Option 2 – use an SOI as described earlier in this post to to address the lack of capability in Esri OOTB products to have a ‘dynamic’ definition query that can use the logged in user as an input to that query. Our proposed design is have two services defined in the map:
    • All work orders (no def query)
    • ‘My’ work orders (same dataset on a different service, with an SOI that applies a definition query where logged in user = lead)
  • However this also has limitations:
    • Only one query could be defined in this way, and it would be predefined
    • Cascading filters couldn’t be used (show work orders where lead is me and priority is 1 and activity type is repair)

Here’s a WAB webapp with the OOTB filter widget we have been using to provide this type of functionality for equivalent desktop flows for field crew supervisors and leading hands when they’re in the office (disregard the word Operational Dashboard title, it’s a WAB webapp).

Similar equivalent filters have been really useful in ArcGIS Dashboards, but issue with both of these are they only work online as webapps.

ZoltanKelly_0-1638748766158.png

We also have been using a non-Esri mobile GIS product that we're looking to transition away from that has this functionality implemented in a mature fashion that works really well - not sure on forum policy on publishing screenshots and content for other vendors' products, but happy to share via DM/email.

DougBrowning

Awesome!  Thanks for asking.

1. Should the mobile worker have the ability to create a filter using any field? Some products allow the map author to configure pre-defined filters/selectors where the user either enables/disables the filter or the user only selects the value (not the field).

Pre config is probably fine.  Could use a setting just like for search or in Ops Dashboard. We know the field so just a drop down list of values would work.  The ability to have more than one would be nice.

2. We are looking for specific examples of the layer you would use, and the filter you would like to use. For example "I would like to filter a trees layer by the age of tree and specie of the tree." We're trying to understand the complexity of the filters that are needed. How many conditions are expected?

We have state wide maps with 1,000 or more points.  We have 3-10+ contractors across the state.  Our most common ask from the contractors is to see just their points.  We could have a Contractor field to narrow it down.  They get paid per point, and they take all day, so if a crew goes to the wrong point it is costly.   We have this across 12 states so making one map for each contractor is just too much for us.  Workforce forces a schema on us that does not work.  Plus all the offline for us is just too much overhead.

3. Why do you need to filter a layer? Is it reduce the visual complexity of the map to find nearby features? Is it to reduce search results for searching for specific features?

I think I got this above but some also want to filter for their current hitch.  This could be a second field.  So they can see just Contractor A and just this week of points.  We combine them now, Contractor A week 5 for example, but it is harder to get the naming just right.

4. Should filters be persisted/saved so they can easily be turned on/off for a layer?

Yes they will probably have the filter for their company the entire season.  Not the end of the world but would be nice.  Even just having the drop down start with the last value selected would be great.

thanks and let me know if you need anything more.

GayleNeufeld

Hi @AaronPulver,

this is great!  Thanks for starting the process.

1. Should the mobile worker have the ability to create a filter using any field? Some products allow the map author to configure pre-defined filters/selectors where the user either enables/disables the filter or the user only selects the value (not the field).

Yes, being able to create a filter using any field would be very helpful for us.  We conduct interviews with rural Alaskans on their subsistence harvests.  We would need to be able to filter by our assigned Community and Household identifiers.

We work in areas without wifi and would therefore need it to be something that can be done in the field offline.  Dropdown menus would be ideal.  I don't think predefined filters would work for us.

2. We are looking for specific examples of the layer you would use, and the filter you would like to use. For example "I would like to filter a trees layer by the age of tree and specie of the tree." We're trying to understand the complexity of the filters that are needed. How many conditions are expected?

We conduct interviews in which we gather information about rural Alaskans subsistence activities and harvests.  We aim to interview an adult from each household within the community, and each household has a number assigned to it as an identifier.  We would need to filter by the community number first, and then household number so that only the data from that household is showing up on the map.  We would need to filter it as we are collecting the data so that no other household's data shows up.  

For the most part, filtering by two fields (Community ID, Household ID) is absolutely required.  If there was an ability to filter by more than that, such as resource (the plant or animal harvested), it would be helpful.  If we needed to search for the moose harvest for household 5 in community 56, being able to do that would make the field worker's job much easier.

3. Why do you need to filter a layer? Is it reduce the visual complexity of the map to find nearby features? Is it to reduce search results for searching for specific features?

There are several reasons we require a filter.  First and foremost is that by state statute, the data we collect is confidential.  By not being able to filter the data, we as a state agency are in violation of state law.  Obviously, this is not acceptable.  What I've done for a work around is to make a separate map for each household in each community so that only one household's data shows on the map during an interview.  This gets very clunky and overwhelming for my field workers, and it is a lot of extra work for me.  But it is the only way we can collect our data without violating state law.  

Second reason is that seeing the responses from other households is likely to introduce bias into an interviewee's responses.  While there is always some bias when collecting data from interviews, we have developed questions to try to limit it.  But we can't limit bias when we show them where other people hunt, fish and gather resources.  

Third reason is that our field workers go into remote communities without access to wifi, and sometimes they go from one community to another without coming into the office in between.  Each community can result in hundreds of overlapping polygons (see attached photo).  It ends up being a mess, and impossible to collect new data or edit existing data.  Often the data is cleaned up after an interview is completed, so being able to find the correct polygon is essential, and this is where being able to filter by more than one attribute would be helpful.  

This is an example of a subset of overlapping polygons from one community (with location and identifying attributes not shown)

Example of overlapping polygons from one communityExample of overlapping polygons from one community

overlapping polys.PNG

4. Should filters be persisted/saved so they can easily be turned on/off for a layer?

I don't think this is necessary for us but could be useful.   A dropdown for the filter field and then another either dropdown or box for the specific household ID being interviewed/edited is really all we require.  

This is our main attribute table.  

Attribute tableAttribute table

 

Let me know if you need any further explanation, or more information.


Thanks,
Gayle Neufeld

Alaska Department of Fish and Game

 

by Anonymous User

Hi @DougBrowning @ZoltanKelly @GayleNeufeld 

Thanks for the really detailed answers. We have a couple follow-up question to help us prioritize.

What type of fields need to be filtered (e.g. string field with coded value domain, integer field with coded value domain, string field, double etc) ?

From the examples provided it seems like they are all either free text or have a coded value domain. It also seems like the operator is always "equals", is that true?

GayleNeufeld

Hi @AaronPulver,

My main fields for filtering (community ID and household ID) are long and short integers, no coded value domains.  The resource field, which is a plus if you can get it so I can filter but not necessary, is a text field with a coded value domain.

My operator will always be "equals".

 

Thank you!



 

DougBrowning

Yes for us just a drop down of coded values that filters on equal would be great for now.  But they also tell me if could have a unique values drop down based off a string field that would be slick.  Some of our trip planning fields are added by the crew weekly so we cannot domain it.  They add say Trip6 to pick out where they are going this week.  Then they can filter for the 5 points out of 1,000 and only see those.  That was the big ask but I know that is harder than domains for you to code.  Unless you can do a local lookup in the replica to get the list?  Eventually being able to have another sort field that cascades the choices.  Project A only has Trips 1-5 for example.  And then from there a spatial filter maybe.  

Just a simple drop down like Ops dashboard would be a great start.

DougBrowning_0-1638991410326.png

 

Thanks!

MatthewFogarty

Hi @Anonymous User - I apologize for being late to the party. My answers to your initial questions and follow up are pasted below.

1. Yes, a mobile worker should have the ability to create a filter using any field that is configured for viewing on their end. Our field teams work with customers in our forests who have many different preferences and it would be helpful to have flexibility here. The preference would be to not have pre-configured filters as that would make the job difficult for our GIS managers.

2. An example for my team would be filtering for a certain tree product. Let's assume we are a tree farm. A filter could include the following mix of numeric and string attributes:

-tree species

-tree height

-tree price

-tree section (part of the property)

3. On our end, the filter would be most used to reduce the visual complexity of the map you have stated and find trees that meet a customer's desired criteria. Currently there is no functionality in field maps to support this except making an obscene number of hosted view layers.

4. It would be helpful to have the option of saving certain filters for our field staff if there are certain ones that they find themselves using often.

Follow up:

I expect that we would be filtering using several combinations of string and integer fields. Several would be without coded value domains (ex: tree height, diameter, distance to a trail). 

It's very important that we have operators that go beyond "equals" - our team would like to be able to say height is > value, species does not include value etc. We need the same functionality that exists in AGOL web map.

 

Hope this is helpful! Happy to clarify any of my responses or talk in more detail.