Street Spots vs. Skateparks Across 20 Cities

City Guides ·

Street Spots vs. Skateparks Across 20 Cities

Atlanta has 82 street spots and one skatepark. Rotterdam has 19 and seven. We tested whether climate explains the gap, and found something else.

Atlanta has 82 street spots mapped and exactly one skatepark: a park on Willoughby Way in the Old Fourth Ward. Rotterdam has 19 street spots and seven parks, including Westblaak sitting in the median of a main road downtown. Same database, same spot types, and a ratio that differs by a factor of thirty.

Across all 20 cities: 3,025 spots, 2,533 street, 228 park, the rest shops, private and DIY. That's 11.1 street spots per park. But the pooled figure hides the interesting part, which is how far individual cities sit from it.

The full spread

Park share is parks divided by street-plus-parks. The interval is a Wilson score interval, the honest way to put error bars on a proportion when the numerator is sometimes 1. Latitude is the centre of each city's bounding box in the data.

| City | Lat | Total | Street | Park | Park share | 95% CI | Street:Park | |---|---|---|---|---|---|---|---| | Atlanta | 33.8 | 83 | 82 | 1 | 1.2% | 0.2–6.5% | 82.0:1 | | San Francisco | 37.8 | 227 | 212 | 6 | 2.8% | 1.3–5.9% | 35.3:1 | | Barcelona | 41.4 | 254 | 211 | 9 | 4.1% | 2.2–7.6% | 23.4:1 | | Denver | 39.8 | 44 | 41 | 2 | 4.7% | 1.3–15.5% | 20.5:1 | | Paris | 48.9 | 438 | 378 | 22 | 5.5% | 3.7–8.2% | 17.2:1 | | Brussels | 50.8 | 105 | 96 | 6 | 5.9% | 2.7–12.2% | 16.0:1 | | Seattle | 47.6 | 142 | 132 | 9 | 6.4% | 3.4–11.7% | 14.7:1 | | Los Angeles | 34.0 | 508 | 426 | 30 | 6.6% | 4.6–9.2% | 14.2:1 | | San Diego | 32.8 | 97 | 83 | 7 | 7.8% | 3.8–15.2% | 11.9:1 | | Chicago | 41.8 | 104 | 93 | 8 | 7.9% | 4.1–14.9% | 11.6:1 | | Lyon | 45.8 | 160 | 131 | 12 | 8.4% | 4.9–14.1% | 10.9:1 | | Marseille | 43.3 | 102 | 82 | 8 | 8.9% | 4.6–16.6% | 10.2:1 | | Bordeaux | 44.9 | 77 | 58 | 6 | 9.4% | 4.4–19.0% | 9.7:1 | | Milan | 45.5 | 74 | 57 | 6 | 9.5% | 4.4–19.3% | 9.5:1 | | Amsterdam | 52.4 | 134 | 100 | 15 | 13.0% | 8.1–20.4% | 6.7:1 | | Montréal | 45.5 | 139 | 115 | 22 | 16.1% | 10.9–23.1% | 5.2:1 | | Toronto | 43.7 | 115 | 92 | 21 | 18.6% | 12.5–26.7% | 4.4:1 | | Berlin | 52.5 | 119 | 78 | 19 | 19.6% | 12.9–28.6% | 4.1:1 | | Madrid | 40.4 | 71 | 47 | 12 | 20.3% | 12.0–32.3% | 3.9:1 | | Rotterdam | 51.9 | 32 | 19 | 7 | 26.9% | 13.7–46.1% | 2.7:1 |

Look at how wide those intervals get at the bottom of the table. Rotterdam's 26.9% is built on seven parks. Its true share could plausibly be anywhere from 14% to 46%. Any story you tell about Rotterdam specifically is a story about seven data points.

Testing the cold-weather theory

The intuitive explanation is climate. If it rains for eight months you build concrete bowls; if it's dry and warm you skate the city as it is. Latitude is the only climate-adjacent variable we can derive from the dataset itself, so that's what we tested.

The correlation is real and it points the right way. Spearman's rho between latitude and park share is +0.475, and a permutation test with 200,000 shuffles puts the two-sided p at 0.036.

Then the caveats, which matter more than the headline. A bootstrap 95% confidence interval for that rho runs from −0.01 to +0.80. It includes zero. With 20 cities you get a number that looks significant and an interval that admits the relationship might not exist at all, and both are correct descriptions of the same weak evidence. Latitude explains about 24% of the variance in park share. Roughly three quarters of what makes cities differ is something else.

Split the sample and it gets weaker still. North America alone gives rho = +0.433 across nine cities; Europe alone gives +0.273 across eleven. Neither subsample is worth a p-value.

So: the pattern is there, it's in the predicted direction, and it is nowhere near strong enough to predict a city you haven't looked at. Treat it as a hint, not a finding.

Who breaks it

Fit a straight line through latitude and park share and the residuals are more instructive than the fit.

Madrid is the biggest problem for the climate story: 40.4°N, brutal dry summers, and the second-highest park share in the set at 20.3%, twelve points above what latitude predicts. Tetuan Skatepark is one of twelve parks in a city with only 47 street spots mapped.

Brussels (−8.1) and Paris (−7.4) go the other way: cold, wet northern capitals that are overwhelmingly street. Paris has 378 street spots against 22 parks, among them Skatepark de Bercy and EGP 18. Brussels has 96 street to six, including Skatepark des Ursulines.

Seattle (−5.9) is the counterexample I'd stake the most on, because the ground truth is wrong. Seattle has been building public skateparks deliberately for two decades and has one of the better municipal networks in the United States. The dataset knows nine, including Judkins Park, Jefferson Park Skatepark and Marginal Way, which the data files as a park. Nine is an undercount and the 6.4% share is therefore too low. Hold that thought.

One correction worth making: Chicago does not break the pattern. Its residual is −1.2, as close to the fitted line as anything in the set. At 7.9% with Wilson and La Villita Skatepark among its eight, Chicago is boringly average. The cities that break the line are Madrid, Rotterdam and Toronto on one side, Brussels and Paris on the other.

The indoor test the data can't answer

An outdoor bowl is an ambiguous response to weather. A roof is not. The dataset flags `indoor`, so this should be the sharper version of the same question.

It isn't, because of what "indoor" turns out to mean. Of 3,025 records, 110 are flagged indoor and 65 of those are shops. A skate shop has a roof; that is not a climate signal. Strip them and the dataset holds 45 covered skateable spots across 20 cities, about two each. San Diego illustrates it: seven indoor spots, all seven shops, nothing covered you can actually skate.

We ran it both ways anyway. Indoor share of parks against latitude gives rho = −0.070, p = 0.771, sign slightly the wrong way, on 11 indoor parks. The broader covered-skateable measure (street, park and private) gives rho = +0.281, p = 0.227, bootstrap CI [−0.21, +0.69]. Right direction, indistinguishable from nothing, and six cities have zero covered spots at all, including Rotterdam: rainy, Dutch, top of the park-share table, not one covered spot on the map.

Two definitions, two nulls. That isn't a finding about cities, it's the data declining to answer, and 45 spots was never going to answer it.

One note the coefficients miss: the indoor parks that exist skew toward contest venues rather than shelter. LA's SLS Galen Center, X Games Los Angeles and Sixth & Mill, plus SLS UIC Pavilion in Chicago. That's broadcast infrastructure, not weatherproofing.

The other explanation

Here is the case that the ratio measures the people who filled in the map rather than the city underneath it. Every spot URL ends in a MongoDB ObjectId, whose first four bytes are a Unix timestamp. That gives a creation date for all 3,025 records free, and the dates are damning.

Sort by the year a spot was added and 2022 stands out: that year's additions were 18.1% parks, against 6.3% for the 2017 seed. They did not land evenly. Montréal picked up 11 parks on 9 June 2022, Toronto 15 across 7–8 June, Madrid 11 across two days in May. Those three hold three of the top five park shares in the set, each dominated by a couple of sessions in a single month.

The names give it away too. Sixteen of Montréal's 22 parks are called nothing but "Skatepark", as are 13 of Toronto's 21 and nine of Madrid's 12. Compare Berlin, where all 19 carry real names: Gleidsdreieck bowls, Böcklerpark Skatepark, Skatehalle Berlin. Seventeen of them were logged on a single day in 2017 by someone who clearly knew the city.

A second tell: four cities have zero skate shops mapped (Atlanta, Denver, Brussels, Montréal), and a city has shops whether or not anyone logs them. Atlanta's catalogue contains two of the five possible spot types and nothing else. Whoever mapped Atlanta was logging street spots, full stop. Its 82:1 ratio is a fact about that person's priorities, not about Georgia.

The `indoor` flag has the same problem from a different direction. Three parks whose names announce they are indoors are flagged outdoor: Amsterdam's "Indoor Skatepark", Madrid's "50-Project Indoor Skatepark", and Skatehalle Berlin, which is a hall. All three are missing from a corpus recording only 11 indoor parks, so the true count is at least 14.

What survives

We re-ran everything after dropping generically-named parks, on the theory that a park called "Skatepark" is a bulk entry and one called Bowl de Marseille is local knowledge. Crude, but it separates the two hypotheses.

The correlation barely moved: rho +0.475 to +0.441, p 0.036 to 0.053. The latitude signal is not an artefact of the 2022 bulk wave.

The rankings fell apart. Madrid dropped from 2nd to 10th, Montréal 5th to 13th, Toronto 4th to 9th, Milan 7th to 19th, while San Diego climbed 12th to 7th and Brussels 15th to 11th. Berlin, whose parks are all distinctly named, went to 1st.

A split decision. The broad tendency for higher-latitude cities to show more parks holds up. Any individual city's rank does not.

What the ratio is good for

Not for judging cities. A low park share tells you very little about whether a city has skateparks, and quite a lot about whether the people mapping it bothered to log them.

It is useful as a trip-planning signal in one narrow direction. A city that keeps a high park share after you throw out the generically-named entries has a park culture somebody actually documented. Only Berlin comes through cleanly, all 19 parks distinctly named and 19.6% still standing. Rotterdam holds second at 13.6%, though four of its seven are called nothing but "Skatepark" or "Bowl". Amsterdam drops to 8.3%, keeping Olympiaplein.

When park share is low, as in San Francisco at 2.8% despite Potrero Del Sol and Soma West both being mapped, assume the parks exist and are under-logged.

The honest summary: 20 cities, a correlation whose confidence interval touches zero, a sharper test the data was too thin to answer, and clear evidence that much of the variation comes from contribution history. If you want the ratio to mean more than that, the fix isn't better statistics. It's adding the missing parks.

More from the SkateApp blog