Flood risk vs.
home listings
Drop 32257_flood_enriched.csv to load real NFHL data
Homes per zone
Median price by zone
Price vs. risk score
Flood zone map
Key insights
AUTO · ZIP 32257| Address | Price | Beds/Ba | Sqft | $/sqft | Zone | Risk | Src | Panel |
|---|
Florida coastal flood exposure
Comparing flood zone distribution and pricing across 5 high-activity Jacksonville-area ZIP codes.
AE zone % by ZIP
Median price vs. avg risk
| ZIP | Area | Properties | % AE | % X-500 | % X | Median price | Avg risk | Ins. required |
|---|
Live flood lookup
Query FEMA NFHL flood zone data by ZIP code or street address — live data, no seeded values.
Resolves county FIPS → fetches Layer 28 polygons → counts parcels per zone · ~5–15 sec
Flood zone distribution
Zone counts are estimates from the FEMA National Flood Hazard Layer. Always verify at msc.fema.gov for official flood zone determinations.
Flood zone
—
—
Insurance
—
—
Annual flood probability
—
—
FIRM panel
—
—
Flood zone result from the FEMA National Flood Hazard Layer. Always verify at msc.fema.gov for official determinations.
Data methodology
How flood zone assignments, risk scores, and property data are sourced, processed, and visualized in this tool.
Data sources
FEMA · CENSUS · MLSThree independent sources are combined to produce each property record:
- FEMA NFHL — National Flood Hazard Layer, Layer 28 (S_FLD_HAZ_AR flood hazard area polygons). Duval County FIPS 12031. Updated quarterly by FEMA.
- Census Geocoder — Free US address geocoding API (no key required). Returns lat/lng for each property address.
- Property listings — 20 sample addresses in ZIP 32257, representative of active Mandarin market inventory across price tiers.
Processing pipeline
fema_flood_lookup.pyThe fema_flood_lookup.py script runs locally to produce live NFHL assignments:
FEMA zone classification
NFHL LAYER 28| Zone | Risk tier | Ins. req. | Annual probability |
|---|---|---|---|
| AE | High — Special Flood Hazard Area (SFHA) | ✓ Required | ≥1% (100-yr flood) |
| X (shaded) | Moderate — 500-yr floodplain | Not required | 0.2% (500-yr flood) |
| X | Minimal — outside 500-yr floodplain | Not required | <0.2% |
| AO/AH/VE | Treated as AE (high risk) | ✓ Required | ≥1% |
Risk score model (1–10)
COMPOSITE SCORERisk scores are a composite of three inputs, not a direct FEMA output:
- Zone tier — AE anchors 6.5–9.0, X-500 at 3.5–5.5, X at 1.0–2.8.
- River proximity — AE properties closer to St. Johns River (lat ~30.170) receive up to +1.5 score boost, capped at 10.
- Variance — Small random component within each tier range prevents identical scores across same-zone properties.
Seeded data uses pre-assigned scores matching realistic NFHL geography for 32257. Live CSV from fema_flood_lookup.py replaces seeded values with computed scores.
Seeded data vs. live NFHL assignments
SEED
Default state — 20 Mandarin properties with flood zones and risk scores pre-assigned from NFHL geographic knowledge of the 32257 corridor. AE properties are placed in the river-adjacent zone; X properties are in the inland elevated northern section.
No external API calls. Works offline. Suitable for demo and interview contexts.
LIVE
Run fema_flood_lookup.py locally to fetch real NFHL polygons from the FEMA ArcGIS REST API, geocode each address via Census Bureau, and perform a true point-in-polygon join. Upload the resulting 32257_flood_enriched.csv to replace seeded data.
Requires Python + geopandas. Takes ~2 min. Produces ground-truth FEMA zone assignments.