Filtering point layer by features of polygon layer(s) that the point belongs to

12-16-2020 02:33 PM
Labels (2)
New Contributor II

Consider the following screenshot. What I have there is a point feature layer (Properties), containing some attribute data pertaining to every blue pin on the map. I also have multiple polygon layers covering the map, so that "under" each pin there are three polygon layers, each of which contains its own attributes. The polygons from different layers overlap, but they are not the same.

Here is the question: how can I filter the point layer (the pins) not only by the point attributes, but also by the attributes of the polygon layers that the point belongs to? So, in my specific example, I want the map to only show pins where, for example (using the layers found on the screenshot):

* the pin attribute of "number of floors"  is greater than 3 (from the Properties layer) AND
* the census tract that the pin is in has Affordability Index of greater than 50 (from the Location Affordability Index Data layer) AND
* the statistical area that the pin is in has Median Age of greater than 30 (from the usa_cbsa layer) AND
* the school attendance area that the pin belongs to has Total Enrollment of less than 300 (from the SABS_1516_Primary layer)

I understand that I could run a Spatial Join and merge all the attributes of all the polygon layers into the point layer and then just filter by that joined layer's attributes, but it would burn through a ton of credits and will result in a monster layer with hundreds of attributes (possibly pushing up against the limit of 255).

Is there a way to query this data across the multiple layers on the fly, without pre-joining it?

2020-12-16 16_18_25-.png

Tags (3)
0 Kudos
4 Replies
MVP Esteemed Contributor

Your procedure of spatial join to get all the attributes is the way to go.  

You have this posted in the ArcGIS Pro community.  If preprocessing before publishing is not an option and If you need an AGOL solution, I could move it there if you like

... sort of retired...
0 Kudos
New Contributor II

Thank you Dan! If you think AGOL has the tools that would allow me to do this kind of filtering on-the-fly -- then yes, I would appreciate you moving the thread there.

0 Kudos
by Anonymous User
Not applicable

Hi James,

If you have access to ArcGIS Pro you can use the processing power of your computer or server that will help with reducing the credits usage as geoprocessing tools can consume quite a few credits, you can always check before you confirm. 

In ArcGIS Pro, you can use a number of SQL queries that can report on both searches. Will this search be used on the fly for multiple people or just yourself? you can save the query for reuse later 

in ArcGIS Online there is a limited number of geoprocessing tools but they can be quite useful, they are on above the map on the lefthand side. 

0 Kudos
Esri Contributor

@JamesCliver this is probably way too late, but if you have a similar workflow in the future, ArcGIS Online has an analysis tool that can help you accomplish your goal using just one tool.
Under the Analysis toolbar, under Find Locations, select the tool Find Existing Locations.

Choose Properties as the initial layer, then click Add Expression to start building your query.
You would then want to add the following expressions:

  • Properties -  Where (attribute query) - number of floors - is greater than - 3
  • Properties - Intersects (or Completely Within) Location Affordability Index Data
  • Location Affordability Index Data  -  Where (attribute query) - Affordability Index  - is greater than - 50
  • Properties - Intersects (or Completely Within) - usa_cbsa
  • usa_cbsa  -  Where (attribute query) - Median Age - is greater than - 30
  • Properties - Intersects (or Completely Within) - SABS_1516_Primary layer
  • SABS_1516_Primary layer  -  Where (attribute query) - Total Enrollment - is less than - 300

Make sure all the expressions have an AND between them, provide an output name, uncheck Use Current Map Extent, and then hit Run Analysis

Note that this would produce a separate output layer as opposed to simply filtering the input input layer. It would also only return the fields from the input Properties layer, not any of the fields from the other layers used in the queries.
If you are concerned about how many credits this would consume, you can always click on Show Credits before you hit Run Analysis, which will give you the maximum amount of credits that this analysis job could consume.



Product Engineer - Web Analysis
0 Kudos