SF County HIFLD Exposure Report

San Francisco County — HIFLD Hazard & Infrastructure-Exposure Report

Area of interest: San Francisco County, California (FIPS 06075).

Prepared: 2026-06-24.

Data source: HIFLD (Homeland Infrastructure Foundation-Level Data), https://hifld.publicenvirodata.org, GeoParquet downloads.

Companion map: sf_hifld_risk_map.html (interactive Folium/Leaflet).

Companion data: sf_exposure_table.csv (one row per asset), sf_exposure_matrix.csv (category × hazard).


1. Summary

This analysis intersects 5,175 infrastructure assets in San Francisco County against four natural-hazard layers — FEMA flood zones, mapped landslides, Quaternary faults, and seismic ground-motion (PGA).

The headline finding: flooding is the only hazard in these datasets that materially differentiates risk across the county, and its footprint is almost entirely the bay/ocean waterfront. 234 assets (4.5% of all assets) fall in a high-risk category, and every one of them is flood-driven. No mapped Quaternary fault trace and no mapped landslide polygon lies under any inventoried asset, and seismic shaking is uniformly severe everywhere (so it ranks no asset above another).

The most important caveat is what these datasets do not contain: they carry no liquefaction or seismic-ground-failure layer, which is San Francisco’s single most consequential infrastructure hazard (the Marina, SoMa, Mission Bay, and the eastern waterfront are built on artificial fill that liquefied in 1906 and 1989). The flood footprint here is a partial proxy for those same low-lying made-land areas, but it is not a liquefaction map. See §6.


2. Methodology

Boundary. San Francisco County was selected from us-county-boundaries-1 by GEOID == "06075" and used as the precise clip polygon for every layer (the county includes the Farallon Islands; the bounding box used for the initial spatial pre-filter was -123.20, 37.60 → -122.28, 37.86).

Extraction. Each nationwide HIFLD GeoParquet file was pre-filtered to the SF bounding box using the file’s GeoParquet 1.1 bbox covering column (with the box transformed into each layer’s native CRS — several layers ship in EPSG:3857, not 4326), then precisely clipped to the county polygon with GeoPandas. All geometry was reprojected to EPSG:4326 for storage and display; all distance and buffer math was done in EPSG:26910 (UTM Zone 10N, metres).

Exposure rules.


3. Exposure matrix

Counts (and % of that layer) of assets exposed to each hazard.

Category Layer Assets Flood (high-risk) Landslide Fault ≤500 m High-risk (any)
Lifeline & Emergency Hospitals 27 0 0 0 0
Lifeline & Emergency Fire / EMS stations 45 0 0 0 0
Lifeline & Emergency Law enforcement 22 0 0 0 0
Lifeline & Emergency Emergency Operations Centers 1 0 0 0 0
Lifeline & Emergency Emergency shelters 102 1 (1.0%) 0 0 1 (1.0%)
Energy & Utilities Power plants 16 0 0 0 0
Energy & Utilities Wastewater treatment 6 2 (33.3%) 0 0 2 (33.3%)
Energy & Utilities Transmission lines 24 5 (20.8%) 0 0 5 (20.8%)
Schools & Vulnerable Pop. Public schools 133 0 0 0 0
Schools & Vulnerable Pop. Private schools 90 0 0 0 0
Schools & Vulnerable Pop. Colleges & universities 20 0 0 0 0
Schools & Vulnerable Pop. Nursing homes 67 0 0 0 0
Schools & Vulnerable Pop. Dialysis centers 16 0 0 0 0
Schools & Vulnerable Pop. Child care centers 426 0 0 0 0
Transport Bridges (NBI) 146 3 (2.1%) 0 0 3 (2.1%)
Transport Transit stops 3516 13 (0.4%) 0 0 13 (0.4%)
Transport Transit routes 493 200 (40.6%) 0 0 200 (40.6%)
Transport Ferry terminals 19 10 (52.6%) 0 0 10 (52.6%)
Transport Railroads 6 0 0 0 0
All Total 5175 234 0 0 234

4. Findings by hazard

Flood (FEMA NFHL) — the only differentiating hazard

234 assets sit in a FEMA high-risk flood zone, and they trace the shoreline almost perfectly. The exposure concentrates by category:

Earthquake faults — none within 1 km, but that is not “no seismic risk”

The nearest mapped Quaternary fault to any SF asset is ~2,280 m (transit routes around Lake Merced / SF State, nearest to the San Andreas and Serra fault zones at the county’s southwest edge). The San Andreas surface trace runs offshore and through Daly City (San Mateo County), not through San Francisco’s land area, so the 200/500/1000 m buffers catch nothing. The faults present in the area are the San Andreas fault zone, the Serra fault zone, and the Pilarcitos fault. Fault distance is reported per asset in the CSV regardless; this is a linework-proximity result, not a rupture-probability statement.

Landslide — negligible mapped footprint

Only ~1.8 hectares of mapped landslides fall inside SF County (small coastal-bluff debris slides/flows along the western shore), and no inventoried asset sits on one. This reflects the inventory’s sparse coverage in SF, not an absence of slope hazard.

Seismic shaking (PGA, 2% in 50 yr) — uniformly severe

Every asset in the county falls in a high-shaking band. At asset locations, PGA ranges roughly 0.77 g to 1.12 g (county-wide contours span ~0.34–1.39 g, rising toward the San Andreas to the southwest). Because the whole county is high, shaking does not rank one asset above another — but in absolute terms it is the dominant ground-motion hazard for all 5,175 assets. The CSV records each asset’s PGA and a relative Lower/Moderate/Higher band.


5. Most-exposed assets (spot list)

Asset Type Hazard Detail
Ferry Building / Pier 33–41 terminals Ferry terminal Flood VE/AE zones, water’s edge
Oracle Park, Chase Center landings Ferry terminal Flood AE zone
Treasure Island transit routes & Admin Building shelter Transit / Shelter Flood ~2.8 km route in zone; AE
PG&E transmission line (SE bayshore) Transmission Flood ~4.0 km of 5.2 km in zone
Southeast / North Point wastewater plants Wastewater Flood VE zone, bayside lifeline
Ferry Building / Pier 41/48½ transit stops Transit stop Flood 13 stops in zone

6. Caveats & data vintage


7. Reproducibility

Pipeline scripts (run with uv run python <script>):

  1. discover.py — resolve dataset slugs → newest GeoParquet URLs (resolved.json).
  2. download.py — fetch raw GeoParquet into raw/.
  3. clip.py — bbox pre-filter + precise county clip → clipped/*.geojson.
  4. analyze.py — exposure joins → out/sf_exposure_table.csv, out/sf_exposure_matrix.csv, out/enriched/*.geojson.
  5. map.py — build out/sf_hifld_risk_map.html.