Skip to content

Project 3 — Food Desert Analysis

Difficulty

🟡 Intermediate. ~10–14 hours.


Goal

"Which census tracts in [your city or county] meet USDA food desert criteria — low income and low access to grocery stores?"

Apply the USDA Food Access Research Atlas methodology, a published, citable methodology hiring managers will recognize.

Data needed

Layer Source
Census tracts TIGER/Line
Tract-level demographics ACS — median income, % no vehicle, total population
Grocery store locations OSM (shop=supermarket), or scrape state license boards
(Optional) Block-group population centroids TIGER/Line
Road network OSM, or use ArcGIS Online network

OSM grocery extract: https://overpass-turbo.eu with query:

[out:json][timeout:60];
area["name"="Atlanta"]->.searchArea;
(
  node["shop"="supermarket"](area.searchArea);
  way["shop"="supermarket"](area.searchArea);
);
out center;

Tools used

  • ArcGIS Pro: Buffer OR Network Analyst (OD Cost Matrix)
  • Spatial Join, Calculate Field
  • Definition Queries with SQL

USDA criteria (simplified)

A tract is a food desert if both:

  1. Low income: poverty rate ≥ 20% OR median income ≤ 80% of metro median.
  2. Low access: significant share of population lives more than:
    • 1 mile from grocery (urban), or
    • 10 miles (rural).

There's a stricter version (½ mile + low vehicle access). We'll start with the basic urban version.

Workflow

Step 1 — Set up

  1. Project: food_desert_<area>.
  2. Project all to State Plane.
  3. Filter tracts to your study area (Definition Query).

Step 2 — Tag low-income tracts

Add field LOW_INCOME (Text 1).

def low_income(pct_poverty, median_inc, metro_median_inc):
    if pct_poverty is None: pct_poverty = 0
    if median_inc is None: return "N"
    if pct_poverty >= 20 or median_inc <= 0.80 * metro_median_inc:
        return "Y"
    return "N"

Expression: low_income(!PCT_POVERTY!, !MEDIAN_INC!, 65000). Replace 65000 with your metro median.

Step 3 — Compute distance to nearest grocery

Option A (Quick): Buffer method

  1. Buffer grocery stores by 1 mile, dissolve.
  2. Select by Location: tracts whose centroid is NOT inside the buffer = "low access".

In ArcGIS Pro:

Map → Select by Location
  Input:    tracts
  Relationship: HAVE_THEIR_CENTER_IN
  Selecting: 1mi-buffer
  → Switch selection to get tracts NOT inside.

Tag those tracts as LOW_ACCESS = 'Y'.

Option B (Better): Network analysis

  1. Generate block-group population centroids.
  2. OD Cost Matrix (Network Analyst): origins = centroids, destinations = grocery stores, mode = walking, cutoff = 30 min.
  3. Compute the closest grocery for each centroid → distance.
  4. Aggregate to tract: % of population beyond 1-mile walking distance.
  5. Tag low-access if > 33% of the tract's population.

Step 4 — Combine criteria

def is_food_desert(low_income, low_access):
    if low_income == 'Y' and low_access == 'Y':
        return "Y"
    return "N"

Add FOOD_DESERT field, calculate.

Step 5 — Symbolize and map

  1. Symbology: Unique Values on FOOD_DESERT.
  2. Y = bright red, N = light gray.
  3. Add grocery stores as point overlay.
  4. Optional: chart of % of city population in food deserts.

Step 6 — Validate

Compare to the USDA Food Access Research Atlas for your area: https://www.ers.usda.gov/data-products/food-access-research-atlas/. Your tracts should mostly match the official designation. Diverge points are interesting — explain them in your write-up.

Step 7 — Layout / Story Map

Build a 3-section Story Map:

  1. What is a food desert? Explain the USDA criteria.
  2. Methodology. Your data sources, distance method, thresholds.
  3. Result. The map, top tracts, recommendations.

Skills learned

  • Applying a published methodology
  • Network Analyst (if Option B)
  • Multi-criteria attribute logic
  • Citable, defendable analysis

Portfolio value

The USDA designation makes this project citable and policy-relevant. Strong for public-sector and consulting roles.

Stretch goals

  • Add vehicle access as a third criterion (USDA's full definition).
  • Compare to community food assets (farmers markets, food pantries).
  • Animate the change over multiple ACS years.
  • Produce a dashboard for advocacy use.

→ Next: Emergency Response Optimization.