Skip to content

Catchment Area

The Catchment Area model defines the population reachable from the site within 5, 10, and 15-minute travel bands. It gives a ground-truth picture of how many people can realistically reach you without effort — and how many restaurants they’re also choosing from.

ZoneDistanceSource
5-min walk400 m radiusSTPU census ring (maxM=400)
10-min walk800 m radiusSTPU census ring (maxM=800)
15-min transit2000 m MTR filterNearest MTR stations within 2 km

When STPU data is unavailable, population falls back to:

pop5 = density × π × 0.4² × 0.85
pop10 = density × π × 0.8² × 0.85

Competitors are not geo-coded by ring — the total FEHD count is redistributed:

comp5 = round(total × 0.5) ← roughly half within 400 m
comp10 = total ← all within 800 m

This is an estimate. The actual spatial distribution of FEHD licences is not ring-bucketed in the current API.

transitPop = Σ ridership × 0.05 for all MTR stations within 2 km

5% of daily station ridership is assumed to reach the restaurant (very conservative — accounts for multi-exit catchment, destination variety, etc.).

  • Population: Census 2021 STPU (211 zones), cumulative ring aggregation
  • Competitors: FEHD licence data, 800 m radius query
  • Transit ridership: MTR Annual ridership per station (static dataset)
5-min popContext
50,000+Extremely dense urban core (Mong Kok, Central)
20,000–50,000Dense residential or mixed-use area
5,000–20,000Typical suburban town centre
< 5,000Low-density or waterfront/park-adjacent site
  • Competitor distribution (50/100% split) is an estimate — no ring-level breakdown available from FEHD query
  • Transit catchment assumes 5% capture of all station ridership, regardless of station type or line
  • No adjustment for actual street network (Euclidean distance, not walk-time distance)
  • MTR ridership data is annual average — peak/off-peak variation not modelled
DateChange
2026-03-25Population now uses STPU census zones (cumulative rings) instead of density×area estimation; competitor distribution estimate (50% at 400 m, 100% at 800 m) documented
2026-02-10Initial implementation with density-based fallback