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).
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.
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.
Flood (FEMA NFHL). Point-in-polygon against NFHL
flood-hazard areas. An asset is flagged high-risk if it
intersects a Special Flood Hazard Area — FLD_ZONE ∈ {A, AE,
AH, AO, AR, A99, V, VE} or SFHA_TF == "T". The zone code is
tagged on each asset.
Landslide. Point-in-polygon against
us-landslide-regions. In this dataset that layer is the
CGS/USGS mapped-landslide inventory (specific
historical slides), not a continuous susceptibility surface.
Earthquake faults. Distance in metres (EPSG:26910) from each asset to the nearest Quaternary fault line, with ≤200 m / ≤500 m / ≤1000 m buffer flags. Faults were retained at the bounding-box level (not county-clipped), because the relevant traces run just offshore and through Daly City rather than through SF County land.
Seismic shaking. Spatial join to
uniform-hazard-ground-motion — PGA with 2%
probability of exceedance in 50 years (≈2,475-year return
period, the standard design-level metric). Each asset is tagged with the
highest containing PGA contour (g) and a relative within-county band
(Lower / Moderate / Higher).
Lines (transmission lines, transit routes, railroads). Length-in-zone: metres of line intersecting each hazard polygon, and metres within the 500 m fault buffer.
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 |
234 assets sit in a FEMA high-risk flood zone, and they trace the shoreline almost perfectly. The exposure concentrates by category:
Ferry terminals — 10 of 19 (53%). Expected: the Ferry Building gates, Pier 33/39/41, and the bayfront stadium landings (Oracle Park, Chase Center) are by definition at the water’s edge, in VE/AE zones.
Transit routes — 200 of 493 (41%) carry some length through a flood zone. The most flood-exposed segments serve Treasure Island (~2.8 km of route in zone) and the Embarcadero/Alameda-Seaplane bay crossings — low-lying, made-land, and causeway corridors.
Transmission lines — 5 of 24 (21%). One PG&E line runs ~4.0 km of its 5.2 km SF length through a flood zone (the southeastern bayshore industrial corridor).
Wastewater treatment — 2 of 6 (33%). The bayside plants (the Southeast/North Point complex area) sit in VE zones — a classic lifeline-in-flood exposure.
Lifeline facilities are essentially clear of mapped flood risk: 0 of 27 hospitals, 0 of 45 fire/EMS stations, 0 of 22 law-enforcement sites, and the single EOC are in a high-risk flood zone. San Francisco’s hospitals and stations sit on the city’s hills and higher ground. The lone flood-exposed shelter is the Treasure Island Administrative Building.
Schools and vulnerable-population facilities: 0 exposed (133 public + 90 private schools, 20 colleges, 67 nursing homes, 16 dialysis centers, 426 child-care centers). None intersect a mapped high-risk flood zone.
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.
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.
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.
| 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 |
No liquefaction layer. The biggest limitation. SF’s defining infrastructure hazard — liquefaction of bay-fill in the Marina, SoMa, Mission Bay, and the eastern waterfront — is not represented in any HIFLD layer used here. The flood footprint overlaps some of the same made-land but must not be read as a liquefaction map. For decision-making, pair this with the CGS Seismic Hazard Zones (liquefaction/landslide) for San Francisco.
Faults are linework, not rupture probability. “0 within 500 m” means no mapped surface trace is nearby; it says nothing about shaking, blind faults, or the regional ~72% 30-year Bay Area rupture probability.
Landslide layer is an inventory, not a susceptibility surface — absence of a polygon under an asset is not evidence of slope safety.
Point geocoding accuracy. Facility points are vendor/agency geocodes; a point near a zone boundary may be mis-flagged. Bridge and transit assets are especially sensitive to small location errors.
Hazard-layer resolution / vintage. NFHL reflects FEMA effective FIRM dates, which vary by panel; ground-motion is the USGS National Seismic Hazard Model (2%/50 yr). Always check the effective date for a specific FIRM panel before relying on a zone call.
HIFLD file versions used:
nfhl / national-flood-hazard-layer-area-nfhl-1-west v1.0.0
(California state_fips=06 partition)uniform-hazard-ground-motion / us-pga-2pct50yrs-bc-poly
v1.0.0quaternary-fault-lines v1.0.0us-landslide-regions v1.0.0hospitals-3 v1.1.0us-county-boundaries-1 v1.0.0resolved.json.)Pipeline scripts (run with
uv run python <script>):
discover.py — resolve dataset slugs → newest GeoParquet
URLs (resolved.json).download.py — fetch raw GeoParquet into
raw/.clip.py — bbox pre-filter + precise county clip →
clipped/*.geojson.analyze.py — exposure joins →
out/sf_exposure_table.csv,
out/sf_exposure_matrix.csv,
out/enriched/*.geojson.map.py — build
out/sf_hifld_risk_map.html.