Tools & data
Size H3 cells to your thinnest month: Turin's permit counts are too sparse for resolution 9
A hexagonal index makes joins cheap, but the cell size sets how noisy every cell is. Worked through for Turin's permit register, resolution 9 and finer hold about one application per cell per month.
Turin covers about 130 km2, according to Istat's municipal report. Tile it with average H3 cells and you get roughly 1,234 cells at resolution 9 and roughly 8,639 at resolution 10, using the average areas of 0.105 and 0.015 km2 in the H3 cell statistics table. In October 2026, our count of the city's public building-permit register shows 1,372 applications filed. Spread evenly, that is 1.1 per resolution-9 cell and 0.16 per resolution-10 cell. A map at either resolution would show mostly noise. The cell size should come from the thinnest month and the thinnest category you need to read, not from the finest map you can draw.
A cell needs about 100 events before a 10% change means anything
H3 is a hierarchical hexagonal grid whose cells carry 64-bit integer identifiers, so joining one table of points to another is a key match, not a spatial query. Uber's design note adds that a hexagon has one distance from its centre to its neighbours' centres, against two for squares, which simplifies smoothing over a ring of cells. Those are real advantages. They say nothing about how many observations a cell holds.
Counts of independent events behave like Poisson draws, so the relative noise on a count of n is about 1 divided by the square root of n. A cell with 100 events carries about 10% noise. A cell with 18 carries about 24%. A cell with one carries about 100%. Each ring of neighbours you average in raises n, but also blurs the map.
Apply that to Turin. Treat the permit register as spread evenly over 130 km2, which is a simplification, because filings cluster in the dense core and thin out on the hills. The average cell then holds the following per month.
| Resolution | Cells in Turin | October 2026 (1,372) | August 2026 (891) | |---|---|---|---| | 6 | about 4 | 381 | 248 | | 7 | about 25 | 54 | 35 | | 8 | about 176 | 7.8 | 5.1 | | 9 | about 1,234 | 1.1 | 0.7 | | 10 | about 8,639 | 0.16 | 0.10 |
This is arithmetic on our monthly counts and the published average cell areas, not a measurement. Even the whole register at resolution 7 carries noise of about 14% in October and 17% in August. The monthly series ranges from 891 in August 2026 to 2,330 in March 2025. Reaching 100 events in an average resolution-7 cell would take about 2,500 applications in a month, more than any of the 24 months we counted.
The thinnest category sets the resolution, and for some it sets none
The register splits by kind of work. Over the last 12 months, the largest kind of work has 16,217 applications and the smallest has 449, in our sort of the register. The totals hide the problem.
The largest category runs at about 13 per resolution-9 cell per year. That supports a yearly map at that size and nothing monthly. The smallest category averages about 0.36 per resolution-9 cell and about 2.6 per resolution-8 cell for the whole year. At resolution 7 it reaches about 18 per cell, which is noise near 24%: enough to spot a cell that is several times the average, not enough to rank two neighbouring cells. Only at resolution 6 does it pass 100 per cell (about 110), and there Turin is about four cells. A four-cell map is a table. For that category, report a city or zone total and say so.
Three practical rules follow:
- Size cells to the trough month. August 2026 had 891 filings against 2,135 in July. A resolution that works in July fails in August.
- Pool time before you shrink cells. A year of the smallest category at resolution 7 beats a month of it at resolution 9.
- Store the resolution and the event count beside every cell value, and suppress cells below a floor you state. Never average rates computed on cells of different sizes.
One caveat on the geometry: the published cell area is an average, and the table lists a minimum and a maximum that differ by position on the globe. That matters little at Turin's scale, but a cell count derived from area is an approximation, not an identity.
A zone value spread over hexagons adds no information
Many property series are not points. Our median of the mid-points of the half-yearly official value quotations for ordinary homes across Turin's zones was EUR 2,425 per m2 in 2026 H1, against EUR 2,312 in 2025 H2 and EUR 2,125 in 2021 H2. That is a statistic about zones. Painting it on hexagons gives flat colour inside each zone and a step at each border. The step is the zone definition, and the flat colour is missing data.
When a hexagon straddles two zones, the defensible transfer is a weighted blend with the shares kept as fields: value = sum of (share of zone i × value of zone i). Weighting by land area is the simplest choice, and for homes it is the wrong one. A zone quotation describes dwellings, so the weights should track dwellings, for example residential building footprint area inside each overlap. This is the idea behind dasymetric mapping. A hexagon half in a park and half in a block of flats should take almost all of its value from the flats. Overture's open building footprints or OpenStreetMap can supply the weights, with the caveat that footprints are drafts and carry errors of their own.
Two checks keep the layer honest. Shares must sum to one per hexagon, and a hexagon with no residential footprint should be null, not filled from the nearest zone.
The reverse direction needs the same care. To roll cells up to a zone, aggregate the underlying points and report how many fell inside, rather than averaging cell values. Averages of averages over unequal cells give different answers for different grids.
The quotation series also shows how much a layer can move between releases. From 2021 H2 to 2026 H1 the half-year changes in the median ran from a fall of EUR 63 per m2 (2024 H2) to a rise of EUR 113 (2026 H1). Any layer built on one half-year is out of date at the next, so each needs a half-year version stamp.
What to watch
Two releases would test the argument against Turin's own data.
First, the November 2026 permit count, set against November 2025's 1,795. August, September and October 2026 (891, 1,518 and 1,372) each came in below the same month of 2025 (1,053, 1,646 and 2,097). October's gap is the widest. One more low month would not make a trend, because the series is seasonal and January sits low in both years (1,351 in 2025, 1,391 in 2026). A November below 1,795 followed by a December below 1,800 would be five straight months under the year before and would argue for quarterly pooling in every monthly map. A rebound toward 1,795 would leave the October figure as one thin month.
Second, the next half-year quotations for Turin's zones. The new median step either stays inside the range of -63 to +113 EUR per m2 seen since 2021 H2 or it does not. Inside the range, 2026 H1's rise reads as one of several comparable moves. A second large rise would suggest the 2026 H1 jump was the start of a re-rating, not an outlier. Either way, the hexagon layer needs a new version stamp, and the library version that built each derived column belongs in the same record.
Questions
- Which H3 resolution suits monthly city-level permit data?
- For Turin, with about 130 km2 and 1,372 applications in October 2026, resolution 7 gives about 54 applications per average cell and about 14% count noise. Resolutions 9 and 10 give about 1.1 and 0.16 per cell, which is mostly noise. This assumes an even spread, which real permits do not follow.
- How many events does a cell need?
- Count noise is roughly 1 divided by the square root of the count, so about 100 events per cell and period gives about 10% noise, and 18 events gives about 24%. Pool over time or coarsen the grid until the thinnest series you need clears the floor you state.
- How should an official zone value be moved onto hexagons?
- Use a weighted blend of the zones a hexagon overlaps and keep the shares as fields. For home values, weight by a dwelling proxy such as residential footprint area, not land area, leave hexagons without dwellings null, and label the layer as zone-derived with a half-year version stamp.
Sources
How we write: each note starts from published data and the sources listed above, is drafted with AI and passes automatic checks on every figure, link and claim before it goes out. Analysis, not investment advice.
More research notes
Italian mortgage rates reach 3.60% in September, and the ECB's October hold offers no relief
New house-purchase loans in Italy averaged 3.60% in September 2026, up from 3.28% a year earlier. The ECB kept its deposit rate at 2.50% on 29 October, so a household's borrowing ceiling stays lower for now.
Publish the error the way assessors do: ratio studies, time splits and coverage checks for valuation models
Philadelphia's assessors reported a COD of 13.1% and a PRD of 1.024 across 27,382 sales. A valuation model should be held to the same two numbers, tested on later periods, with interval coverage checked window by window.
Overture's 2.53 billion building footprints: keep the ID, treat the polygon as a draft
The October 2026 Overture release holds 2,533,842,612 open building footprints from seven listed sources. For anyone tying permits, valuations or auctions to buildings, the identifier and the source of each polygon matter more than its shape.