# Data attribution This data is derived from the National Flood Hazard Layer (NFHL) of the Federal Emergency Management Agency (FEMA), U.S. Department of Homeland Security. Source: https://msc.fema.gov/portal/home (FEMA Flood Map Service Center) https://hazards.fema.gov/femaportal/NFHL/searchResult Product: NFHL, layer S_FLD_HAZ_AR (flood hazard areas), the county-wide deliveries FEMA lists Producer: Federal Emergency Management Agency (FEMA) Licence: U.S. federal government work, public domain. No restriction on use or redistribution. Attribution: FEMA National Flood Hazard Layer # Not for official use These files are a repackaging, not a FEMA product. They are not the effective Flood Insurance Rate Map and must not be used for flood zone determinations, insurance rating, regulatory or legal purposes: for those, use the FEMA Flood Map Service Center. FEMA has not reviewed, approved or endorsed these files. FEMA updates the NFHL continuously: these files are checked against FEMA's list every day, and a delivery FEMA republished is replaced (last check: 2026-10-03). Each row carries the date of its delivery (`fema_update_date`, from 2002-03-04 to 2026-10-02); changes.json lists what each day replaced. # Coverage 2,502 county-wide deliveries in 51 states and territories: every county-wide dataset FEMA lists that holds a flood hazard layer (skipped.json names those that hold none). Counties FEMA has not mapped digitally are absent, as are the community-level deliveries (a town or city published on its own). An absent area is unmapped here, not free of flood hazard. # What was changed 1. Pieces. Flood zone polygons reach hundreds of thousands of vertices. Each one is cut into pieces of at most 100 vertices (ST_Subdivide), so a point lookup tests a small polygon: 5,808,014 zones make 95,572,036 pieces. A row is a piece, not a zone: `piece_id` numbers the pieces of a zone from 0, so `piece_id = 0` counts zones. `source_feature_id` is FEMA's FLD_AR_ID, which FEMA does not keep unique inside every delivery: 117,301 zones in 391 deliveries share theirs with another zone. Elsewhere (`dfirm_id`, `source_feature_id`) identifies the zone and dissolving on it gives the original outline back. Invalid source geometries were made valid first. 2. Columns. `flood_zone` (FLD_ZONE), `zone_subtype` (ZONE_SUBTY), `sfha` (SFHA_TF), `static_bfe` (STATIC_BFE, NULL where FEMA writes -9999), `dual_zone` (DUAL_ZONE), `dfirm_id` and `source_feature_id` (FLD_AR_ID) are FEMA's values. `state` (postal code), `county` and `fema_update_date` come from the delivery. Three columns are not part of the NFHL, they are a reading of FEMA's zone and subtype added by Geomermaids: `risk` (1 percent flood zone, 0.2 percent flood zone, minimal, undetermined, water, unmapped), `floodplain` (the same as `sfha`) and `subzone` (the zone of a dual or AR zone). 3. Layout. One file per delivery, state=/.parquet, sorted along a Hilbert curve in row groups of 20,480 pieces with a covering bbox column. counties.parquet indexes them: filter it on bbox or state, then read the files it names. Coordinates are FEMA's, NAD83 (EPSG:4269), unchanged. The pipeline that builds these files is public: https://github.com/gsueur/nfhl-geoparquet-workshop This data is packaged and hosted by Geomermaids: https://geoparquet.geomermaids.com/ contact: gsueur@geomermaids.com