CBS facilities data – identifying opportunities for growth

Goal: Through these interactive dashboards, we unlock CBS facilities data to clearly show—both qualitatively and quantitatively—where supply is sufficient and where opportunities for growth lie. The current focus is on cafés, snack bars, restaurants, and supermarkets, but additional facilities can be added with ease.

What’s possible?

  • Zoom in seamlessly from province to municipality, district, and neighborhood.
  • Benchmark performance against the Netherlands (= 1.00) and against peers within the same urbanization level.
  • Spot underserved and overserved areas based on facilities per 10,000 residents and their accessibility in terms of proximity and distance.

Tailored extension (non-public)


A coverage analysis can be created using your branch or distribution locations. By specifying locations and a radius, you gain insights into the population served, areas of overlap, and untapped opportunities. This provides a solid foundation for network optimization and expansion strategies.

Source and methodology
CBS StatLine 2024 (core figures by district and neighborhood, environmental address density). Values are population-weighted and aggregated at the provincial level; indices present performance compared to the national benchmark (= 1.00). For definitions and assumptions, please refer to the explanatory notes at the end of the report.

Open in volledig scherm

What does the dashboard show?

Methodology and normalization

What is being measured?

Ruwe telling binnen straal
We tellen het aantal {Faciliteiten} binnen {Straal} rond het (inwoner-gewogen) centrum van het gebied.

Oppervlakte-normalisatie
De straal definieert een oppervlak A = π·R² km². We delen de telling door A → voorzieningen per km².

Per capita-normalisatie
We delen de dichtheid vervolgens door bevolkingsdichtheid (inwoners/km²). Zo ontstaat:
Facility per 10k (density) = ((# binnen R)/A) ÷ (inwoners/km²) × 10.000
→ een vergelijkbare maat “voorzieningen per 10.000 inwoners binnen {Straal}.

Let op: deel het aantal voorzieningen niet rechtstreeks door het inwonertal van het gebied. We tellen voorzieningen binnen een straal R (catchment) rond het gebiedscentrum, terwijl het inwonertal aan het gebiedspolygon (buurt/wijk/gemeente) is gekoppeld. Die footprints verschillen (en overlappen vaak over grenzen heen), waardoor simpel delen kan vertekenen en dubbeltellen. Daarom normaliseren we eerst naar voorzieningen per km² en delen dat vervolgens door de bevolkingsdichtheid (inwoners per km²) → voorzieningen per 10.000 inwoners binnen R.

Why this approach?

Enables fair comparisons across radii and areas (standardized by km²).

Corrects for demand (per capita) rather than focusing solely on supply.

Provides decision support for coverage and expansion (identifying gaps, under- and overserved areas).

Limitations

The circular area approximates straight-line distance and does not reflect actual routes or travel times.

The distribution of facilities within the circle is uneven, and facilities may overlap.

Small sample sizes can produce volatility → applying a minimum population threshold is recommended.

Index vs NL (=1,00)

Accessibility compared to the Netherlands = value ÷ national average (>1 indicates better accessibility).

Distance compared to the Netherlands = national average ÷ value (>1 indicates better performance, as it reflects shorter distance).

Aggregation

Province: aggregated as population-weighted averages of municipalities.

Neighborhood, district, municipality, and national level: original source values (not sums).

STED comparison – rationale

Ensures like-for-like comparison within Degree of Urbanization (1 = very highly urbanized … 5 = non-urban).

Avoids bias between city and countryside; generates robust Under-served / Average / Over-served classifications using the P25–P75 range.

Page 1 – Overview (map & rankings)

Overview of this page

Interactive map with {Facility} within {Radius}; drill-down from province → municipality → district → neighborhood.

Tiles display the national average and indices relative to the Netherlands (accessibility & distance).

Rankings show which areas perform above or below the national benchmark.

How to interpret the visuals

Map: color = index vs NL (green = better), size = accessibility. Click to filter; zoom/pan enabled.

Tiles: provide a quick interpretation of your selection compared to NL (= 1.00).

Ranking: dotted line = NL; bars to the right of the line perform better than NL.

Limitations

Province is calculated (weighted); other levels reflect source values.

If a municipality has no value, it is not included in the provincial weighting.

Classification is based on 2024; historical readings use these fixed boundaries.

Tips for exploration

Start at the Netherlands → {Facility}{Radius}, then zoom into province/municipality.

Compare municipalities within a single province; switch between 1/3/5 km for robustness.

Page 2 – Peer analysis (degree of urbanization)

Overview of this page

Table with facilities per 10k (density), number of facilities, population, population density, rank, and label Under-served / Average / Over-served.

Bar chart with the same metric, including markers for the median (P50) and average within the selected STED class.

Filter for minimum number of inhabitants to reduce noise.

Definitions & calculation rules

STED (CBS/OAD): 1 very highly urban, 2 highly urban, 3 moderately urban, 4 low urban, 5 non-urban.

Peer baseline within the selected STED: average, median (P50), and IQR [P25–P75] of facilities per 10k.

Labels: Under-served (<P25), Average (P25–P75), Over-served (>P75).

Aggregation: only provinces are weighted; other levels reflect source values.

How to interpret the visuals

Select one STED class (single select) and set a minimum number of inhabitants (e.g., 20,000).

Table: check label and rank against peers.

Chart: if your bar is above P75 → over-served; below P25 → under-served.

Tips for exploration

Sort by facilities per 10k or by label to view top and bottom performers.

Compare results at 1/3/5 km: does the label remain consistent?

Filter on specific provinces to identify intra-class differences.

Use the ‘Min # inhabitants’ setting to down-weight small localities.

New: Insights & Analysis

We highlight the key findings and demonstrate how to use the STED peer analysis to identify under- and over-served areas.

Read the news article

Frequently asked questions

Here you’ll find answers to frequently asked questions — your question may already be among them.

What does 'accessibility (weighted)' mean in these dashboards?

This is the (average) number of selected facilities within the chosen radius (e.g., 1/3/5 km) around the area center.

Neighborhood, district, municipality, country: we display the provided source values.

Province: we calculate a population-weighted value from the municipalities within that province.

So that you can make fair comparisons across areas and radii. We first convert the count within the radius into a density per km², and then divide this by population density (inhabitants/km²):

Facility per 10k = ((# within R) / (π·R²)) ÷ (inhabitants/km²) × 10,000

This way, supply (facilities) and demand (inhabitants) are combined into a single comparable measure.

CBS classification based on address density (OAD). We use five classes:
1 = very highly urban (≥ 2,500 addresses/km²)
2 = highly urban (1,500–2,500)
3 = moderately urban (1,000–1,500)
4 = low urban (500–1,000)
5 = non-urban (< 500)

Where possible, we compare areas within the same STED class (peer comparison) to avoid distortions between urban and rural contexts.

Only at the provincial level do we aggregate population-weighted values from the underlying municipalities (municipalities without values are excluded). At neighborhood, district, municipality, and national level we display the source values.

Yes, as a custom service. Provide your branch or distribution locations (address/lat-lon) and desired radius; we then calculate served population, overlap, and gaps, and deliver a map plus summary. (Not part of the public dashboard version.)

The dashboard is based on CBS (Statistics Netherlands) data, which is published in Dutch. To ensure consistency with the official classifications and terminology, the dashboard is currently available in Dutch only. If there is sufficient interest, we may consider providing an English version in the future.

Scroll to Top