San Francisco · 200 m hex grid · cells

SF Block Score

Weight 29 factors live and the map redraws. Scroll to zoom, drag to pan, click a hex for its breakdown. Dots mark whether a layer is measured, derived, or estimated.

Basemap

Hazard zones

Grid

OPACITY
scroll to zoom · drag to pan
WorseBetter
Faded hexes are parkland, not housing

Best cells, current weights

    Weights

    What changed in this version

    • 200 m hexes — four times the resolution, on a fresh USGS 3DEP 1 m elevation pull for all 3,552 points. Cross-checked against the 400 m grid at 0.02 m mean difference.
    • Real liquefaction and tsunami zones replaced my hand-drawn polygons. Both are now measured.
    • Real traffic volumes. Caltrans 2023 AADT drives the air and noise model on state routes.
    • Real street basemap drawn from DataSF centerlines, real parks, and a real 409-vertex shoreline replacing a 42-vertex sketch.
    • 3,260 real Muni stops plus 8 BART stations now drive transit stop access.
    • Groceries split in two — walkable and 5-minute drive, weighted independently.
    • Federal open space added. Rec & Parks covers only city property, so the Presidio, Ocean Beach, Fort Funston, Crissy Field, Lands End, Fort Mason, Mount Sutro and Baker Beach were invisible — homes bordering a national park scored in the bottom third. 23 units and 2,236 acres now come from the California Protected Areas Database.
    • Park distance is measured to the boundary, not the centroid. Golden Gate Park's centroid sits 2.5 km from its own edge, so living across the street from it used to score as though the park were miles away.

    A correction worth knowing

    19th Ave is widely cited at 90,000–110,000 vehicles a day. Caltrans 2023 puts 19th Ave proper, Winston Dr to Lake St, at 61,000–69,000. The 85,000–94,000 readings people quote are on Junipero Serra, south of 19th Ave.

    My first version hand-set 19th Ave at the same weight as the Bay Bridge approach, about 3.5× too high. Emission strength now scales with measured volume, so freeways (I-80 at 236,000, US-101 Bayshore at 225,000) dominate correctly and 19th Ave sits where the data puts it — still the worst surface arterial in the west of the city, just not freeway-grade.

    City arterials like Geary and Mission remain estimated: Caltrans has no jurisdiction over them and DataSF publishes no vehicle counts.

    Resolution is not uniform

    Every layer keeps its own native resolution, shown next to the layer picker. Reading a 200 m hex does not mean every input is 200 m:

    • 1 m DEM — slope, sea level rise, flood, landslide. Genuinely fine-grained.
    • Point — shops, parks, schools, transit stops. Fine-grained.
    • Corridor — air, noise, transit times. As good as the road and route geometry.
    • Regulatory zone — liquefaction and tsunami. Statutory in/out lines, so genuinely binary rather than graded.
    • Neighbourhood — crime and 311, native to 41 areas. Smoothed between centroids so the map does not imply a false hard edge, but it is still 41-area data.

    Still open

    • Sea level rise stays derived from elevation. BCDC's 66-inch layer exists but its service rejects spatial filters, and each feature is a bay-wide polygon too large to move. Elevation modelling is how those layers are built anyway.
    • Residential streets are partial in the basemap — the freeway, ramp and major-arterial network is complete, but only about 2,700 of 17,000 total segments came through. Finishing it needs roughly 19 more paged fetches.
    • Muni routes and modes are absent from the stops dataset, so every Muni stop counts equally and a bus shelter weighs the same as a Metro portal. Fixing it means a spatial join against route geometry, or a keyed GTFS feed.
    • Liquefaction is binary. CGS publishes graded susceptibility too, but not as a queryable service.
    • No fog data. The microclimate layer is an analytic model, and it is the least defensible thing here.