© OpenStreetMap · GUS · GUGiK
GIS case study · Warsaw

01The client's question

Where in Warsaw should FitDemo look for its first users?

FitDemo is a fitness class booking app: a test brand made up for this case study. Before launching in Warsaw, its marketing team came with one question:

We have PLN 20,000 for Meta ads and a crew for five stands at metro stations. Where do the people most likely to book classes with us live, and where can we meet them?

FitDemo marketing team
  • 4721 km² grid cells (2021 census)
  • 1.9Mresidents in the grid
  • 7resident segments
  • 5stands at metro stations
  • 30pins in the Meta Ads campaign
  • 20,000 PLNad budget

Scroll: the map changes with the text. First up: population density.

02Data and method

A 1 km grid, three sources, four steps

Every cell of the 2021 National Census grid (ETRS89-LAEA, EPSG:3035) got a full set of variables on residents, buildings and nearby services. The whole analysis was done in ArcGIS Pro. This page only presents its results.

  • NSP 2021 · Statistics PolandPopulation on a 1 km grid: total residents and age groups 0–14, 15–64, 65+.
  • BDOT10k · GUGiKBuildings: floor area × number of storeys, split into multi-family, single-family and office use.
  • OpenStreetMapRestaurants and cafés, fitness studios and metro stations.
  1. SegmentationMultivariate Clustering (K-means): 7 clusters, 7 variables.
  2. ScoringPopulation 15–64 × segment weight × access to fitness studios, normalised to 0–100.
  3. StandsLocation-Allocation in Network Analyst: Maximize Coverage, 10-minute walk, 5 metro stations.
  4. PinsThe 30 highest-scoring cells. Budget split in proportion to score.

Variables on the map

Colours are quantile classes: each class holds roughly a fifth of the cells. Click a cell to see its values.

03Segmentation

Seven Warsaws

K-means grouped the 472 cells into seven segments with similar profiles: density, residents' age, housing type and nearby services. Click a segment or a cell on the map to open its profile card.

    The card compares the segment average with the average for the whole grid. Figures next to each name: cells and residents.

    04Scoring

    Where the potential is highest

    Each cell's score combines three things: how many people aged 15–64 live there, how well its segment fits FitDemo, and whether there are studios nearby where classes can be booked.

    score = population 15–64 × segment weight × f(fitness)
    score_100 = score ÷ max(score) × 100

    Segment weight

    f(fitness)

    0.5 plus 0.05 for every fitness studio within 1.5 km, capped at 1.0 (from 10 studios up). 136 cells have no studio in range.

    The map is tilted: bar height and brightness show score_100. Cell 88 scores 100. Hold Ctrl and drag to orbit around the city. Click a cell to see its calculation.

    05Stands

    Five stands at metro stations

    Location-Allocation (Maximize Coverage) picked the five metro stations whose 10-minute walking catchment covers the cells with the highest total score.

    Together: 9 cells and … residents within a 10-minute walk. Points are the sum of score_100 across the allocated cells. Lines join each cell's centre to the station it was allocated to. Grey dots are the other metro stations.

    06Meta Ads pins

    30 pins, PLN 20,000

    The 30 highest-scoring cells (63.8 to 100 pts) become the targeting points of the Meta Ads campaign. The budget was split in proportion to score_100, so bubble area on the map matches the amount.

    Click a row to zoom the map.
    #CellSegmentScoreBudgetlatlon

    07Takeaways

    What this means for FitDemo

    • In practice, the campaign is the “Dense core”

      29 of the 30 pins fall in this segment. The only exception is a cell from the New young-family estates segment in Miasteczko Wilanów.

    • …but it's not just the city centre

      The Dense core covers 87 cells and 54% of the grid's residents. Pins stretch from Bemowo to Gocław and from Praga to Kabaty: wherever there are large housing estates and plenty of studios nearby.

    • Stands and ads complement each other

      The five stands cover 9 cells, 6 of them in the top 30. Meanwhile 8 of the 30 pins lie more than 2 km from the metro (including Gocław, Grochów and Miasteczko Wilanów). There, Meta Ads carries the campaign on its own.

    • The budget is spread evenly

      The top 30 have similar scores (63.8–100 pts), so a proportional split gives PLN 547 to PLN 857 per pin. The largest share goes to cell 88.

    • Suburbs and the periphery stay out of the paid campaign

      Quiet house suburbs (0.2) and Underserved periphery (0.3) have the lowest weights. None of their cells scores above 6.6 pts: few people live there, and there are few studios to book.