Select by Attributes vs Select by Location¶
Goal: Master the two ways ArcGIS Pro filters features — attribute (SQL) and spatial (geographic relationship). Then chain them together.
The simplest distinction¶
| Select by Attributes | Select by Location | |
|---|---|---|
| Filters by | A field value (SQL) | Geographic relationship |
| Example | STATE_NAME = 'GA' | "Within 1 mile of a road" |
| Tool ribbon | Map → Select by Attributes | Map → Select by Location |
| Underlying tool | Select Layer By Attribute | Select Layer By Location |
When to use each¶
✅ Select by Attributes when:
- You know what you're looking for in the data (a state, a category, a range).
- The filter is a SQL expression.
- It's faster — no spatial computation needed.
✅ Select by Location when:
- The filter depends on where features are.
- You don't have the answer encoded in any field.
- E.g., "schools near a flood zone" — there's no
near_flood_zonefield; you compute it from geometry.
Combining them¶
Real workflows combine both. Use the Selection method dropdown:
| Method | Effect |
|---|---|
| New selection | Replace |
| Add to current selection | Union |
| Remove from current selection | Subtract |
| Select subset of current selection | Intersect — keep only those also matching this filter |
Example workflow¶
"Find Title I elementary schools within 0.5 miles of a major road, in Fulton County."
- Select by Attributes on schools:
TITLE1 = 'Y' AND LEVEL = 'Elementary'. (Method: New) - Select by Location with method = Subset selection: target = schools, relationship = WITHIN_A_DISTANCE 0.5 mi of major roads.
- Select by Location again, method = Subset selection: target = schools, relationship = WITHIN, selecting layer = Fulton County.
You're left with just the schools that pass all three tests.
flowchart LR
A[All schools<br/>1,200] -->|"Attr: Title I + Elementary"| B[300]
B -->|"Loc: within 0.5 mi of road"| C[120]
C -->|"Loc: within Fulton"| D[35]
classDef start fill:#fef3c7,stroke:#f59e0b,color:#92400e
classDef step fill:#dbeafe,stroke:#1e40af,color:#1e3a8a
classDef finish fill:#dcfce7,stroke:#10b981,color:#065f46
class A start
class B,C step
class D finish That's a 3-line analysis. Each step uses the previous selection as input.
The 3 most useful spatial relationships¶
| Relationship | Most-used scenario |
|---|---|
| Intersect | Anything overlapping a region (most common) |
| Within a distance | Distance-based filtering ("near", "within X") |
| Within | Fully inside a boundary |
The other relationships (touch the boundary of, are crossed by, share a line segment with) come up less often, but they're invaluable when they fit.
Selection vs Definition Query — yet again¶
A selection is temporary and visible (highlighted). A definition query hides features that don't match.
If you find yourself running the same selection every time you open the project, convert it into a Definition Query (Layer Properties → Definition Query). It runs automatically.
Common pitfalls¶
Watch the layer's projection
"Within 500 meters" is meaningless if your layer is in lat/long. Project to a projected CRS first.
Selection persists
A selection stays active until you clear it. If your subsequent geoprocessing tool seems to ignore most of your data, check if you have a selection still on. Right-click layer → Selection → Clear Selection.
Practice¶
Combine to find a useful subset
- Add: parcels (with
LANDUSE), floodplain. - Select by Attributes:
LANDUSE = 'Residential'. - Subset by Location: parcels that intersect floodplain.
- Right-click → Convert Selection To Layer. Name it "Residential parcels at flood risk".