{
  "dataset": {
    "id": "portland-metro-climate-housing",
    "title": "Portland Metro Crawlspace Climate and Housing Data",
    "description": "Precipitation normals, housing-age distribution and soil drainage context for 18 cities and 10 weather stations across the Portland/Vancouver metro, assembled from NOAA, the US Census Bureau and the USDA Natural Resources Conservation Service. Published as descriptive context for crawl space moisture and construction, with every source, measurement period and geographic limitation stated. It contains no crawl space failure rates, no risk score, and no claim that any variable here predicts a crawl space problem.",
    "publisher": "Portland Crawlspace Pros",
    "publisher_url": "https://portlandcrawlspacepros.com/",
    "url": "https://portlandcrawlspacepros.com/data/portland-metro-climate-housing/",
    "retrieved": "2026-08-28",
    "last_reviewed": "2026-09-28",
    "next_review": "2027-08-01",
    "geography": "Portland / Vancouver metropolitan area, Oregon and Washington, United States",
    "temporal_coverage": "1991-01-01/2023-12-31",
    "corrections_url": "https://portlandcrawlspacepros.com/corrections/",
    "license": "The underlying data is US federal public-domain data from NOAA, the US Census Bureau and the USDA. This compilation - the station selection, the city pairing, the soil intersection and the limitations - may be quoted and republished with attribution to Portland Crawlspace Pros and a link to the dataset page. Please carry the measurement period with any figure.",
    "citation": "Portland Crawlspace Pros. \"Portland Metro Crawlspace Climate and Housing Data.\" Compiled from NOAA, US Census Bureau and USDA NRCS data. Updated September 2026. PortlandCrawlspacePros.com.",
    "caveat": "Descriptive environmental and housing context only. This dataset contains no crawl space failure, moisture or mould rates, and no composite risk score. The two tables have different geographies — precipitation is measured at a point, housing and soil are summarised over a city boundary — and must not be joined into a city-level rainfall figure. The city table carries a nearest-station pointer and the spread among nearby stations for exactly that reason.",
    "sources": [
      {
        "variable": "precipitation",
        "publisher": "NOAA National Centers for Environmental Information",
        "dataset": "U.S. Climate Normals 1991-2020"
      },
      {
        "variable": "housing age",
        "publisher": "US Census Bureau",
        "dataset": "American Community Survey 2019-2023 5-year estimates, B25034 and B25035"
      },
      {
        "variable": "soil drainage",
        "publisher": "USDA Natural Resources Conservation Service",
        "dataset": "SSURGO via Soil Data Access, muaggatt.drclassdcd"
      },
      {
        "variable": "city boundaries",
        "publisher": "US Census Bureau",
        "dataset": "TIGER/Line places"
      }
    ]
  },
  "variables": [
    {
      "id": "annual-precipitation",
      "label": "Annual precipitation normal",
      "basis": "MEASURED",
      "measurement_period": "1991–2020 climate normals",
      "geographic_unit": "One instrument at one point",
      "useful_for": "Establishes how much water the ground around a house has to shed, and shows how sharply that varies across a metro that is often described as if it had one climate.",
      "limitation": "A normal is a 30-year average for a single gauge. It is not a value for the surrounding city, and it does not describe any individual year — the wet season that floods a crawl space is a storm sequence, not an annual total."
    },
    {
      "id": "wet-season-precipitation",
      "label": "October–March precipitation and its share of the annual total",
      "basis": "DERIVED",
      "measurement_period": "1991–2020 monthly normals, summed October through March",
      "geographic_unit": "One instrument at one point",
      "useful_for": "The most directly relevant climate figure for crawl space water management: it shows that between 72% and 77% of the year’s precipitation at every published station falls in six months. Drainage that copes with the annual average copes with nothing.",
      "limitation": "Derived by this site by summing NOAA’s published monthly normals — the arithmetic is ours, the inputs are NOAA’s. NOAA publishes meteorological seasons (Dec–Feb, and so on); October–March was chosen because it matches the Pacific Northwest wet season rather than the calendar, and that choice is an editorial one."
    },
    {
      "id": "heavy-rain-days",
      "label": "Average days per year at or above 0.10, 0.50 and 1.00 inches",
      "basis": "MEASURED",
      "measurement_period": "1991–2020 climate normals",
      "geographic_unit": "One instrument at one point",
      "useful_for": "Separates frequency from intensity. Portland’s reputation is for persistent drizzle, and the day-count normals show that directly: many days of light rain, comparatively few heavy ones. Different failure modes follow from each.",
      "limitation": "A daily total, not an hourly rate. A crawl space floods on intensity over hours, and these normals cannot show that. They are also not a trend: nothing here says whether heavy days are becoming more common."
    },
    {
      "id": "housing-age",
      "label": "Median year built, and share of housing built before 1980, before 1960 and before 1950",
      "basis": "MEASURED",
      "measurement_period": "ACS 2019–2023 5-year estimates",
      "geographic_unit": "Census place (incorporated city or CDP)",
      "useful_for": "Older housing stock means a larger share of homes were built under earlier codes, and under earlier expectations about ground cover, ventilation and insulation. It is the closest publicly available proxy for how much of a city’s housing predates modern crawl space practice.",
      "limitation": "Covers ALL housing units, apartments included, not single-family homes — and the ACS does not ask about foundation type, so nothing here identifies which units even have a crawl space. These are survey estimates with sampling error; the published margin of error on each median is given. Age is not condition: an old house with a maintained crawl space is in better shape than a new one with a blocked downspout."
    },
    {
      "id": "soil-drainage",
      "label": "Share of mapped area in wetter soil drainage classes",
      "basis": "DERIVED",
      "measurement_period": "SSURGO as published, retrieved August 2026",
      "geographic_unit": "Census place boundary, area-weighted over SSURGO map units",
      "useful_for": "Drainage class is the soil scientist’s summary of how readily water moves out of the ground, and it varies enormously across this metro — from under 5% of mapped area in the wetter classes to over 80%. It is the variable most directly connected to whether water sits against a foundation.",
      "limitation": "Describes natural soil in place. It says nothing about the fill under a specific house, the grading of that lot, or where its downspouts discharge — and those usually matter more at the scale of one crawl space. SSURGO also assigns no drainage class to Urban land map units or water, so the unrated share is published per city; in Portland it is more than half the mapped area, which is why Portland’s soil figures are the weakest in the table."
    },
    {
      "id": "station-spread",
      "label": "Spread among published stations within 15 miles",
      "basis": "DERIVED",
      "measurement_period": "1991–2020 climate normals",
      "geographic_unit": "Computed per city from the station table",
      "useful_for": "Quantifies how much the choice of station changes the answer. Where it is large, no single station describes that city — which is the reason this dataset publishes no city-level rainfall figure.",
      "limitation": "A range, not an uncertainty estimate. It reflects real geographic variation in rainfall as much as any error, and a large spread is a fact about the terrain rather than a defect in the measurements."
    }
  ],
  "variables_considered_and_rejected": [
    {
      "label": "Crawl space failure, moisture or mould rates",
      "rejected_because": "No such dataset exists for this metro, publicly or privately, and this site holds none. Every figure of this kind in circulation traces back to a company selling remediation.",
      "would_need": "Instrumented measurement across a sample of real crawl spaces, stratified by construction era and by neighbourhood, sustained over multiple wet seasons. That is a research programme, not a page."
    },
    {
      "label": "A composite crawl space risk score",
      "rejected_because": "A score implies a validated relationship between rainfall, soil, housing age and actual crawl space failure. No such model has been published for this metro or, as far as we can find, anywhere. The weights would be invented, and the invented part would be the part everybody quoted. Three defensible variables plus one invented weighting is not four-quarters defensible; it is a fabrication wearing the other three as credentials.",
      "would_need": "Outcome data to fit and validate against — which is the previous row. Until that exists, a score cannot be built honestly, only asserted."
    },
    {
      "label": "Foundation type: what share of homes have a crawl space",
      "rejected_because": "The American Community Survey does not ask about foundation type, and no Oregon or Washington agency publishes it at city resolution. The Census Bureau’s Survey of Construction reports foundation type only for NEW single-family homes, and only by census division — the Pacific division spans Alaska to California, which is useless at this scale and worse than useless if quoted as local. County assessor records were then checked directly, on 29 August 2026, and none of the four counties this metro spans publishes the field in bulk: Clark County’s downloadable residential sales files do not enumerate building characteristics; Washington County routes to its InterMap parcel viewer and Clackamas County to CMap, neither with a documented bulk export carrying foundation type; and the PortlandMaps API covering Multnomah County requires a registered key. Assembling this from four parcel viewers would produce four incompatible schemas and, at best, coverage of one county — which is the inconsistent geographic resolution this dataset already refuses elsewhere.",
      "would_need": "A bulk assessor extract carrying a foundation or basement field, obtained from each of the four county assessors by direct request, with a written mapping between their four vocabularies. That is a records-request project rather than a query, and it would still need all four to say yes — one county alone would not be publishable here."
    },
    {
      "label": "FEMA flood-zone coverage per city",
      "rejected_because": "It would be the most misread column on the page. Most Portland crawl space water is perched groundwater, surface runoff and roof discharge, not riverine or coastal flooding. A flood-zone percentage sitting next to soil drainage in the same table would be read as a crawl space risk indicator, and a homeowner well outside any SFHA would take false comfort from it.",
      "would_need": "A demonstrated relationship between SFHA status and crawl space water intrusion. We are not aware of one, and publishing the column while disclaiming the inference would not stop the inference."
    },
    {
      "label": "Depth to groundwater / winter water table",
      "rejected_because": "Well logs are point observations of wildly varying vintage, depth and quality, recorded for drilling rather than for hydrology. They cannot be aggregated into a comparable city-level statistic without a modelling step this site cannot validate, and a seasonal high water table is precisely the thing an annual point reading does not capture.",
      "would_need": "A published, maintained water-table surface for the metro. Nothing at that resolution appears to exist."
    },
    {
      "label": "Elevation and topography",
      "rejected_because": "A mean elevation for a city is not a fact about any house in it. What matters is the slope of one lot and what is uphill of it, which no city-level statistic can carry. West Linn and Portland both span hundreds of feet of relief; a single number for either would be true and useless.",
      "would_need": "Parcel-level slope, which is a per-property question — the sort a site visit answers and a table cannot."
    },
    {
      "label": "Radon-related code geography",
      "rejected_because": "Not rejected on quality — it is simply not a climate or housing measurement, and it is already published where it belongs, on the Oregon code pages, sourced to the Building Codes Division rather than restated here. Duplicating a regulatory claim into a data table is how the two versions drift apart.",
      "would_need": "Nothing. See the Oregon reference section, which carries it with its own last-checked date."
    }
  ],
  "revisions": [
    {
      "date": "2026-09-28",
      "summary": "Housing-age columns re-pulled from ACS 2019–2023 tables B25034 and B25035 for all eighteen places. Housing units, median year built, its margin of error and the pre-1980 share matched exactly. The column published as pct_built_pre_1950 did not: it had summed the 1950–1959 bucket in, so it held the share built before 1960 (Portland 45.3%, Milwaukie 37.4%). Those values are now published under their own name, pct_built_pre_1960, and pct_built_pre_1950 carries the true 1949-or-earlier share (Portland 34.3%, Milwaukie 16.5%). Every value in pct_built_pre_1950 moved; nothing else did.",
      "correction_url": "https://portlandcrawlspacepros.com/corrections/#2026-09-28-climate-housing-pre-1950-column"
    }
  ],
  "excluded_places": [
    {
      "name": "Clackamas, OR",
      "reason": "An unincorporated community with no Census place boundary — it does not appear in the 2024 Census gazetteer for Oregon at all. With no boundary there is no ACS place estimate and nothing to clip the soil survey to. Figures for the surrounding area would have to come from a county or tract aggregation, which is a different geography and would not be comparable with the rows above."
    }
  ],
  "excluded_stations": {
    "rule": "Published stations need at least 20 years of record behind the 1991-2020 annual normal.",
    "stations": [
      {
        "id": "US1ORCC0088",
        "name": "WEST LINN 0.7 NW, OR",
        "years": 4,
        "flag": "E"
      },
      {
        "id": "US1ORWS0081",
        "name": "HILLSBORO 1.3 W, OR",
        "years": 3,
        "flag": "E"
      },
      {
        "id": "US1ORCC0066",
        "name": "HAPPY VALLEY 1.7 ESE, OR",
        "years": 6,
        "flag": "E"
      },
      {
        "id": "US1WACK0004",
        "name": "CASCADE PARK EAST 0.2 ENE, WA",
        "years": 6,
        "flag": "E"
      },
      {
        "id": "USC00358634",
        "name": "TROUTDALE, OR",
        "years": 11,
        "flag": "E"
      },
      {
        "id": "USC00355945",
        "name": "NATURE PARK-BEAVERTON, OR",
        "years": 11,
        "flag": "R"
      },
      {
        "id": "USC00356334",
        "name": "OREGON CITY, OR",
        "years": 13,
        "flag": "E"
      },
      {
        "id": "USC00356151",
        "name": "N WILLAMETTE EXP STN, OR",
        "years": 14,
        "flag": "R"
      },
      {
        "id": "USC00352997",
        "name": "FOREST GROVE, OR",
        "years": 18,
        "flag": "R"
      },
      {
        "id": "US1ORMT0006",
        "name": "PORTLAND 2.5 SE, OR",
        "years": 11,
        "flag": "R"
      }
    ]
  },
  "fields": [
    {
      "name": "station_id",
      "type": "string",
      "table": "stations",
      "description": "NOAA GHCN station identifier. Stable; safe to join on and to look up directly at NCEI."
    },
    {
      "name": "station_name",
      "type": "string",
      "table": "stations",
      "description": "Station name as NOAA publishes it."
    },
    {
      "name": "latitude",
      "type": "number",
      "table": "stations",
      "description": "Decimal degrees, WGS84."
    },
    {
      "name": "longitude",
      "type": "number",
      "table": "stations",
      "description": "Decimal degrees, WGS84."
    },
    {
      "name": "elevation_m",
      "type": "number",
      "table": "stations",
      "description": "Station elevation in metres, as published by NOAA."
    },
    {
      "name": "annual_precip_in",
      "type": "number",
      "table": "stations",
      "description": "1991–2020 annual precipitation normal, inches. A 30-year statistic for this instrument, not for any surrounding area."
    },
    {
      "name": "oct_mar_precip_in",
      "type": "number",
      "table": "stations",
      "description": "October through March total, inches, summed by this site from NOAA’s published monthly normals. Derived, not measured."
    },
    {
      "name": "oct_mar_pct_of_annual",
      "type": "number",
      "table": "stations",
      "description": "October–March as a percentage of the annual normal. Derived."
    },
    {
      "name": "days_ge_0_10_in",
      "type": "number",
      "table": "stations",
      "description": "Average number of days per year with precipitation at or above 0.10 inches."
    },
    {
      "name": "days_ge_0_50_in",
      "type": "number",
      "table": "stations",
      "description": "Average number of days per year at or above 0.50 inches."
    },
    {
      "name": "days_ge_1_00_in",
      "type": "number",
      "table": "stations",
      "description": "Average number of days per year at or above 1.00 inches. A daily total, not an hourly intensity."
    },
    {
      "name": "ncei_completeness_flag",
      "type": "enum",
      "table": "stations",
      "values": [
        "C",
        "S",
        "R",
        "P",
        "E"
      ],
      "description": "NOAA’s own completeness flag, republished unchanged: C complete, S standard, R representative, P provisional, E estimated. Filter on it if your use needs the strongest stations only."
    },
    {
      "name": "years_of_record",
      "type": "integer",
      "table": "stations",
      "description": "Years of record behind the annual normal, as published by NOAA. Every published station has at least 20."
    },
    {
      "name": "city_slug",
      "type": "string",
      "table": "cities",
      "description": "Stable machine identifier, matching this site’s service-area pages."
    },
    {
      "name": "city",
      "type": "string",
      "table": "cities",
      "description": "Place name."
    },
    {
      "name": "state",
      "type": "string",
      "table": "cities",
      "description": "OR or WA."
    },
    {
      "name": "census_place_geoid",
      "type": "string",
      "table": "cities",
      "description": "Census place GEOID. The join key for any other Census table."
    },
    {
      "name": "land_area_sq_mi",
      "type": "number",
      "table": "cities",
      "description": "Census land area, square miles. Excludes water."
    },
    {
      "name": "housing_units",
      "type": "integer",
      "table": "cities",
      "description": "Total housing units, ACS 2019–2023 5-year estimate. ALL units, apartments included — not single-family homes."
    },
    {
      "name": "median_year_built",
      "type": "integer",
      "table": "cities",
      "description": "Median year structure built, ACS table B25035."
    },
    {
      "name": "median_year_built_moe",
      "type": "integer",
      "table": "cities",
      "description": "Published margin of error on the median, in years, at 90% confidence."
    },
    {
      "name": "pct_built_pre_1980",
      "type": "number",
      "table": "cities",
      "description": "Percentage of housing units built in 1979 or earlier: ACS table B25034, “1939 or earlier” through “1970 to 1979”, divided by total units."
    },
    {
      "name": "pct_built_pre_1960",
      "type": "number",
      "table": "cities",
      "description": "Percentage built in 1959 or earlier: B25034 “1939 or earlier”, “1940 to 1949” and “1950 to 1959”. The figure this site’s city pages quote as “built before 1960”. Added 28 September 2026; before that date these values were published, wrongly, as pct_built_pre_1950."
    },
    {
      "name": "pct_built_pre_1950",
      "type": "number",
      "table": "cities",
      "description": "Percentage built in 1949 or earlier: B25034 “1939 or earlier” and “1940 to 1949” only. Corrected 28 September 2026: until then this column held the 1959-or-earlier share now published as pct_built_pre_1960, so any copy downloaded before that date overstates every value here."
    },
    {
      "name": "soil_mapped_sq_km",
      "type": "number",
      "table": "cities",
      "description": "Area of SSURGO map units intersecting the place boundary, square kilometres. Slightly exceeds land area because the boundary is generalised and enclaves are not subtracted."
    },
    {
      "name": "pct_soil_wetter_classes",
      "type": "number",
      "table": "cities",
      "description": "Percentage of mapped area whose dominant drainage class is somewhat poorly, poorly or very poorly drained. Percentage of TOTAL mapped area, including the unrated share — so read it alongside the next column."
    },
    {
      "name": "pct_soil_unrated",
      "type": "number",
      "table": "cities",
      "description": "Percentage of mapped area with no drainage class: Urban land map units and water. Where this is high, the soil figures for that city are weak."
    },
    {
      "name": "nearest_station_id",
      "type": "string",
      "table": "cities",
      "description": "Nearest published station to the city’s Census internal point. A POINTER, not an assertion that this station’s rainfall describes the city."
    },
    {
      "name": "nearest_station_miles",
      "type": "number",
      "table": "cities",
      "description": "Great-circle distance from the city’s internal point to that station, miles."
    },
    {
      "name": "stations_within_15_mi",
      "type": "integer",
      "table": "cities",
      "description": "Count of published stations within 15 miles of the internal point."
    },
    {
      "name": "station_spread_in",
      "type": "number",
      "table": "cities",
      "description": "Highest minus lowest annual normal among those stations, inches. Empty where only one qualifies. Where this is large, no single station describes the city."
    }
  ],
  "stations": [
    {
      "station_id": "USC00450482",
      "station_name": "BATTLE GROUND, WA",
      "latitude": 45.7717,
      "longitude": -122.5286,
      "elevation_m": 86.6,
      "annual_precip_in": 52.37,
      "oct_mar_precip_in": 38.53,
      "oct_mar_pct_of_annual": 73.6,
      "days_ge_0_10_in": 117.3,
      "days_ge_0_50_in": 34.1,
      "days_ge_1_00_in": 7.7,
      "ncei_completeness_flag": "S",
      "years_of_record": 29
    },
    {
      "station_id": "USC00357127",
      "station_name": "REX 1 S, OR",
      "latitude": 45.3033,
      "longitude": -122.9133,
      "elevation_m": 157,
      "annual_precip_in": 44.22,
      "oct_mar_precip_in": 33.9,
      "oct_mar_pct_of_annual": 76.7,
      "days_ge_0_10_in": 98.7,
      "days_ge_0_50_in": 28.5,
      "days_ge_1_00_in": 6.8,
      "ncei_completeness_flag": "S",
      "years_of_record": 26
    },
    {
      "station_id": "USC00356749",
      "station_name": "PORTLAND KGW-TV, OR",
      "latitude": 45.5181,
      "longitude": -122.6894,
      "elevation_m": 48.5,
      "annual_precip_in": 44.07,
      "oct_mar_precip_in": 33.82,
      "oct_mar_pct_of_annual": 76.7,
      "days_ge_0_10_in": 102,
      "days_ge_0_50_in": 28.5,
      "days_ge_1_00_in": 6.4,
      "ncei_completeness_flag": "R",
      "years_of_record": 21
    },
    {
      "station_id": "USC00356750",
      "station_name": "PORTLAND WFO, OR",
      "latitude": 45.5606,
      "longitude": -122.5383,
      "elevation_m": 6.4,
      "annual_precip_in": 43.74,
      "oct_mar_precip_in": 32.44,
      "oct_mar_pct_of_annual": 74.2,
      "days_ge_0_10_in": 107,
      "days_ge_0_50_in": 26.4,
      "days_ge_1_00_in": 5.3,
      "ncei_completeness_flag": "R",
      "years_of_record": 23
    },
    {
      "station_id": "USC00458773",
      "station_name": "VANCOUVER 4 NNE, WA",
      "latitude": 45.6778,
      "longitude": -122.6511,
      "elevation_m": 64,
      "annual_precip_in": 42.27,
      "oct_mar_precip_in": 31.33,
      "oct_mar_pct_of_annual": 74.1,
      "days_ge_0_10_in": 103.1,
      "days_ge_0_50_in": 24.1,
      "days_ge_1_00_in": 5.6,
      "ncei_completeness_flag": "S",
      "years_of_record": 26
    },
    {
      "station_id": "USW00024242",
      "station_name": "PORTLAND TROUTDALE AP, OR",
      "latitude": 45.5511,
      "longitude": -122.4089,
      "elevation_m": 8.8,
      "annual_precip_in": 40.66,
      "oct_mar_precip_in": 29.13,
      "oct_mar_pct_of_annual": 71.6,
      "days_ge_0_10_in": 100.8,
      "days_ge_0_50_in": 22,
      "days_ge_1_00_in": 4.1,
      "ncei_completeness_flag": "R",
      "years_of_record": 20
    },
    {
      "station_id": "USW00094281",
      "station_name": "AURORA STATE AP, OR",
      "latitude": 45.2486,
      "longitude": -122.7686,
      "elevation_m": 59.7,
      "annual_precip_in": 39.55,
      "oct_mar_precip_in": 29.63,
      "oct_mar_pct_of_annual": 74.9,
      "days_ge_0_10_in": 95.6,
      "days_ge_0_50_in": 22.5,
      "days_ge_1_00_in": 4.3,
      "ncei_completeness_flag": "R",
      "years_of_record": 20
    },
    {
      "station_id": "USW00094298",
      "station_name": "VANCOUVER PEARSON AP, WA",
      "latitude": 45.6208,
      "longitude": -122.6572,
      "elevation_m": 9.1,
      "annual_precip_in": 37.47,
      "oct_mar_precip_in": 28.05,
      "oct_mar_pct_of_annual": 74.9,
      "days_ge_0_10_in": 93.9,
      "days_ge_0_50_in": 20.2,
      "days_ge_1_00_in": 3.7,
      "ncei_completeness_flag": "R",
      "years_of_record": 20
    },
    {
      "station_id": "USW00024229",
      "station_name": "PORTLAND INTL AP, OR",
      "latitude": 45.5908,
      "longitude": -122.6003,
      "elevation_m": 5.8,
      "annual_precip_in": 36.92,
      "oct_mar_precip_in": 27.32,
      "oct_mar_pct_of_annual": 74,
      "days_ge_0_10_in": 93.3,
      "days_ge_0_50_in": 20.4,
      "days_ge_1_00_in": 4.3,
      "ncei_completeness_flag": "S",
      "years_of_record": 30
    },
    {
      "station_id": "USW00094261",
      "station_name": "PORTLAND-HILLSBORO AP, OR",
      "latitude": 45.5406,
      "longitude": -122.9486,
      "elevation_m": 62.2,
      "annual_precip_in": 35.93,
      "oct_mar_precip_in": 27.8,
      "oct_mar_pct_of_annual": 77.4,
      "days_ge_0_10_in": 87.9,
      "days_ge_0_50_in": 17.9,
      "days_ge_1_00_in": 3.7,
      "ncei_completeness_flag": "R",
      "years_of_record": 20
    }
  ],
  "cities": [
    {
      "city_slug": "milwaukie",
      "city": "Milwaukie",
      "state": "OR",
      "census_place_geoid": "4148650",
      "land_area_sq_mi": 4.99,
      "housing_units": 9876,
      "median_year_built": 1967,
      "median_year_built_moe": 2,
      "pct_built_pre_1980": 74.1,
      "pct_built_pre_1960": 37.4,
      "pct_built_pre_1950": 16.5,
      "soil_mapped_sq_km": 13.6,
      "pct_soil_wetter_classes": 9.4,
      "pct_soil_unrated": 13.5,
      "nearest_station_id": "USC00356749",
      "nearest_station_miles": 6.1,
      "stations_within_15_mi": 5,
      "station_spread_in": 7.15
    },
    {
      "city_slug": "portland",
      "city": "Portland",
      "state": "OR",
      "census_place_geoid": "4159000",
      "land_area_sq_mi": 133.492,
      "housing_units": 304113,
      "median_year_built": 1966,
      "median_year_built_moe": 2,
      "pct_built_pre_1980": 64.3,
      "pct_built_pre_1960": 45.3,
      "pct_built_pre_1950": 34.3,
      "soil_mapped_sq_km": 376.5,
      "pct_soil_wetter_classes": 25.1,
      "pct_soil_unrated": 50.9,
      "nearest_station_id": "USC00356749",
      "nearest_station_miles": 2.3,
      "stations_within_15_mi": 7,
      "station_spread_in": 8.14
    },
    {
      "city_slug": "gresham",
      "city": "Gresham",
      "state": "OR",
      "census_place_geoid": "4131250",
      "land_area_sq_mi": 23.564,
      "housing_units": 44233,
      "median_year_built": 1981,
      "median_year_built_moe": 1,
      "pct_built_pre_1980": 48.1,
      "pct_built_pre_1960": 10.9,
      "pct_built_pre_1950": 4.2,
      "soil_mapped_sq_km": 61.7,
      "pct_soil_wetter_classes": 54.5,
      "pct_soil_unrated": 3.1,
      "nearest_station_id": "USW00024242",
      "nearest_station_miles": 3.7,
      "stations_within_15_mi": 5,
      "station_spread_in": 7.15
    },
    {
      "city_slug": "aloha",
      "city": "Aloha",
      "state": "OR",
      "census_place_geoid": "4101650",
      "land_area_sq_mi": 7.298,
      "housing_units": 19437,
      "median_year_built": 1983,
      "median_year_built_moe": 2,
      "pct_built_pre_1980": 46.4,
      "pct_built_pre_1960": 8.1,
      "pct_built_pre_1950": 2.7,
      "soil_mapped_sq_km": 19.1,
      "pct_soil_wetter_classes": 49.6,
      "pct_soil_unrated": 0,
      "nearest_station_id": "USW00094261",
      "nearest_station_miles": 5,
      "stations_within_15_mi": 5,
      "station_spread_in": 8.29
    },
    {
      "city_slug": "lake-oswego",
      "city": "Lake Oswego",
      "state": "OR",
      "census_place_geoid": "4140550",
      "land_area_sq_mi": 10.872,
      "housing_units": 17838,
      "median_year_built": 1982,
      "median_year_built_moe": 1,
      "pct_built_pre_1980": 45.7,
      "pct_built_pre_1960": 12.7,
      "pct_built_pre_1950": 6.1,
      "soil_mapped_sq_km": 30.3,
      "pct_soil_wetter_classes": 38.9,
      "pct_soil_unrated": 7.9,
      "nearest_station_id": "USC00356749",
      "nearest_station_miles": 7.2,
      "stations_within_15_mi": 7,
      "station_spread_in": 8.29
    },
    {
      "city_slug": "oregon-city",
      "city": "Oregon City",
      "state": "OR",
      "census_place_geoid": "4155200",
      "land_area_sq_mi": 10.051,
      "housing_units": 14473,
      "median_year_built": 1991,
      "median_year_built_moe": 2,
      "pct_built_pre_1980": 41.3,
      "pct_built_pre_1960": 17.5,
      "pct_built_pre_1950": 13,
      "soil_mapped_sq_km": 26.8,
      "pct_soil_wetter_classes": 4.5,
      "pct_soil_unrated": 8.1,
      "nearest_station_id": "USW00094281",
      "nearest_station_miles": 10.7,
      "stations_within_15_mi": 2,
      "station_spread_in": 4.52
    },
    {
      "city_slug": "vancouver-wa",
      "city": "Vancouver",
      "state": "WA",
      "census_place_geoid": "5374060",
      "land_area_sq_mi": 48.802,
      "housing_units": 83450,
      "median_year_built": 1987,
      "median_year_built_moe": 2,
      "pct_built_pre_1980": 41,
      "pct_built_pre_1960": 15.1,
      "pct_built_pre_1950": 9.7,
      "soil_mapped_sq_km": 136.3,
      "pct_soil_wetter_classes": 12.1,
      "pct_soil_unrated": 11.3,
      "nearest_station_id": "USW00094298",
      "nearest_station_miles": 3.1,
      "stations_within_15_mi": 7,
      "station_spread_in": 15.45
    },
    {
      "city_slug": "beaverton",
      "city": "Beaverton",
      "state": "OR",
      "census_place_geoid": "4105350",
      "land_area_sq_mi": 19.735,
      "housing_units": 43195,
      "median_year_built": 1987,
      "median_year_built_moe": 2,
      "pct_built_pre_1980": 37.7,
      "pct_built_pre_1960": 7.3,
      "pct_built_pre_1950": 4,
      "soil_mapped_sq_km": 63.8,
      "pct_soil_wetter_classes": 52.7,
      "pct_soil_unrated": 1.9,
      "nearest_station_id": "USC00356749",
      "nearest_station_miles": 6.8,
      "stations_within_15_mi": 6,
      "station_spread_in": 8.29
    },
    {
      "city_slug": "tigard",
      "city": "Tigard",
      "state": "OR",
      "census_place_geoid": "4173650",
      "land_area_sq_mi": 12.76,
      "housing_units": 23512,
      "median_year_built": 1988,
      "median_year_built_moe": 2,
      "pct_built_pre_1980": 35.5,
      "pct_built_pre_1960": 6.2,
      "pct_built_pre_1950": 2.7,
      "soil_mapped_sq_km": 33.2,
      "pct_soil_wetter_classes": 41.6,
      "pct_soil_unrated": 3,
      "nearest_station_id": "USC00356749",
      "nearest_station_miles": 8,
      "stations_within_15_mi": 6,
      "station_spread_in": 8.29
    },
    {
      "city_slug": "washougal",
      "city": "Washougal",
      "state": "WA",
      "census_place_geoid": "5376405",
      "land_area_sq_mi": 5.952,
      "housing_units": 6269,
      "median_year_built": 1997,
      "median_year_built_moe": 3,
      "pct_built_pre_1980": 33.8,
      "pct_built_pre_1960": 17.9,
      "pct_built_pre_1950": 11.7,
      "soil_mapped_sq_km": 17.6,
      "pct_soil_wetter_classes": 14,
      "pct_soil_unrated": 15.2,
      "nearest_station_id": "USW00024242",
      "nearest_station_miles": 3.7,
      "stations_within_15_mi": 3,
      "station_spread_in": 6.82
    },
    {
      "city_slug": "west-linn",
      "city": "West Linn",
      "state": "OR",
      "census_place_geoid": "4180150",
      "land_area_sq_mi": 7.43,
      "housing_units": 10482,
      "median_year_built": 1988,
      "median_year_built_moe": 2,
      "pct_built_pre_1980": 31.7,
      "pct_built_pre_1960": 10.3,
      "pct_built_pre_1950": 6.1,
      "soil_mapped_sq_km": 21.2,
      "pct_soil_wetter_classes": 22.4,
      "pct_soil_unrated": 7.8,
      "nearest_station_id": "USW00094281",
      "nearest_station_miles": 10.3,
      "stations_within_15_mi": 4,
      "station_spread_in": 4.67
    },
    {
      "city_slug": "tualatin",
      "city": "Tualatin",
      "state": "OR",
      "census_place_geoid": "4174950",
      "land_area_sq_mi": 8.418,
      "housing_units": 11357,
      "median_year_built": 1991,
      "median_year_built_moe": 1,
      "pct_built_pre_1980": 26.5,
      "pct_built_pre_1960": 1.6,
      "pct_built_pre_1950": 1,
      "soil_mapped_sq_km": 22,
      "pct_soil_wetter_classes": 20.2,
      "pct_soil_unrated": 2.3,
      "nearest_station_id": "USC00357127",
      "nearest_station_miles": 8.4,
      "stations_within_15_mi": 4,
      "station_spread_in": 8.29
    },
    {
      "city_slug": "hillsboro",
      "city": "Hillsboro",
      "state": "OR",
      "census_place_geoid": "4134100",
      "land_area_sq_mi": 26.443,
      "housing_units": 42595,
      "median_year_built": 1997,
      "median_year_built_moe": 1,
      "pct_built_pre_1980": 24.7,
      "pct_built_pre_1960": 7.8,
      "pct_built_pre_1950": 4.5,
      "soil_mapped_sq_km": 70.3,
      "pct_soil_wetter_classes": 61.6,
      "pct_soil_unrated": 2.2,
      "nearest_station_id": "USW00094261",
      "nearest_station_miles": 1.1,
      "stations_within_15_mi": 3,
      "station_spread_in": 8.14
    },
    {
      "city_slug": "camas",
      "city": "Camas",
      "state": "WA",
      "census_place_geoid": "5309480",
      "land_area_sq_mi": 14.186,
      "housing_units": 9450,
      "median_year_built": 1999,
      "median_year_built_moe": 2,
      "pct_built_pre_1980": 23.8,
      "pct_built_pre_1960": 18,
      "pct_built_pre_1950": 14.3,
      "soil_mapped_sq_km": 42.7,
      "pct_soil_wetter_classes": 11.7,
      "pct_soil_unrated": 17.8,
      "nearest_station_id": "USW00024242",
      "nearest_station_miles": 3.7,
      "stations_within_15_mi": 7,
      "station_spread_in": 15.45
    },
    {
      "city_slug": "sherwood",
      "city": "Sherwood",
      "state": "OR",
      "census_place_geoid": "4167100",
      "land_area_sq_mi": 4.925,
      "housing_units": 7136,
      "median_year_built": 1997,
      "median_year_built_moe": 1,
      "pct_built_pre_1980": 18.4,
      "pct_built_pre_1960": 4.5,
      "pct_built_pre_1950": 2.9,
      "soil_mapped_sq_km": 12.8,
      "pct_soil_wetter_classes": 27.7,
      "pct_soil_unrated": 2.3,
      "nearest_station_id": "USC00357127",
      "nearest_station_miles": 5.2,
      "stations_within_15_mi": 4,
      "station_spread_in": 8.29
    },
    {
      "city_slug": "battle-ground",
      "city": "Battle Ground",
      "state": "WA",
      "census_place_geoid": "5304475",
      "land_area_sq_mi": 8.685,
      "housing_units": 7384,
      "median_year_built": 2002,
      "median_year_built_moe": 1,
      "pct_built_pre_1980": 17.8,
      "pct_built_pre_1960": 3.9,
      "pct_built_pre_1950": 3.1,
      "soil_mapped_sq_km": 22.8,
      "pct_soil_wetter_classes": 22.7,
      "pct_soil_unrated": 0.1,
      "nearest_station_id": "USC00450482",
      "nearest_station_miles": 0.7,
      "stations_within_15_mi": 5,
      "station_spread_in": 15.45
    },
    {
      "city_slug": "wilsonville",
      "city": "Wilsonville",
      "state": "OR",
      "census_place_geoid": "4182800",
      "land_area_sq_mi": 7.69,
      "housing_units": 10772,
      "median_year_built": 1998,
      "median_year_built_moe": 2,
      "pct_built_pre_1980": 14.4,
      "pct_built_pre_1960": 2.2,
      "pct_built_pre_1950": 1.7,
      "soil_mapped_sq_km": 20.8,
      "pct_soil_wetter_classes": 39.2,
      "pct_soil_unrated": 3.2,
      "nearest_station_id": "USW00094281",
      "nearest_station_miles": 4.3,
      "stations_within_15_mi": 3,
      "station_spread_in": 4.67
    },
    {
      "city_slug": "happy-valley",
      "city": "Happy Valley",
      "state": "OR",
      "census_place_geoid": "4132050",
      "land_area_sq_mi": 11.905,
      "housing_units": 9076,
      "median_year_built": 2006,
      "median_year_built_moe": 2,
      "pct_built_pre_1980": 13.7,
      "pct_built_pre_1960": 3.6,
      "pct_built_pre_1950": 1.2,
      "soil_mapped_sq_km": 32.7,
      "pct_soil_wetter_classes": 84.6,
      "pct_soil_unrated": 1.3,
      "nearest_station_id": "USC00356750",
      "nearest_station_miles": 8.9,
      "stations_within_15_mi": 5,
      "station_spread_in": 7.15
    }
  ]
}