{"zip": "92004", "static_generated_utc": "2026-10-16T17:23:24Z", "location": {"lat": 33.197705, "lon": -116.167463, "source": "US Census Bureau 2023 Gazetteer, ZCTA internal point", "zcta": "92004", "kind": "zcta", "place": "Borrego Springs", "state": "CA", "state_name": "California", "county": "San Diego", "place_source": "GeoNames postal codes (CC BY 4.0)", "runtime_s": 0.0, "station_ref": {"lat": 33.2386, "lon": -116.3514, "kind": "GeoNames place point (town center)"}, "elevation_m": 160.7, "elevation_point": "GeoNames place point (town center)", "elevation_source": "USGS 3DEP Elevation Point Query Service, sampled at the town center so a hilltop inside a large ZIP area does not skew it"}, "zone": {"zone": "10a", "temp_range_f": "30 to 35", "file": "phzm_zip.csv", "source": "USDA Plant Hardiness Zone Map 2023, ZIP datasets (USDA ARS + PRISM Climate Group, Oregon State University)", "url": "https://planthardiness.ars.usda.gov/", "runtime_s": 0.0}, "frost_dates": {"frost_free": false, "last_spring_32f_50pct": "01/10", "last_spring_32f_10pct": "02/16", "first_fall_32f_50pct": "01/01", "first_fall_32f_10pct": "12/08", "growing_season_days_50pct": 365, "notes": "10pct spring = only 1 in 10 years has a 32F freeze later; 10pct fall = 1 in 10 years has one earlier.", "station": {"id": "USC00040983", "name": "CA BORREGO DESERT PARK", "distance_km": 5.2, "years": 24, "elevation_m": 246.9, "elevation_diff_m": 86, "coast_km": 85.9}, "zip_coast_km": 90.0, "source": "NOAA NCEI U.S. Climate Normals 1991-2020, annual/seasonal freeze probabilities (32F)", "zip_elevation_m": 160.7, "skipped": ["USC00042327: only 0 yrs", "USC00046390: only 0 yrs", "USC00044259: only 14 yrs", "USC00046197: only 0 yrs"], "selection": "stations within 80 km, same side of the coastal/inland divide (TIGER coastline, 40 km zone); among those within 40 km and 300 m (~984 ft) of the ZIP's elevation, the nearest with >=28 years of record (long records are usually less affected by recent urban growth), else the nearest with >=15; if none, the closest in elevation, flagged", "alternatives": [{"id": "USC00046386", "name": "CA OCOTILLO WELLS 2W", "distance_km": 19.3, "years": 15}, {"id": "USC00042709", "name": "CA EL CAPITAN DAM", "distance_km": 58.4, "years": 16}, {"id": "USW00003104", "name": "CA DESERT RESORTS RGNL AP", "distance_km": 46.7, "years": 18}, {"id": "USC00045502", "name": "CA MECCA FIRE STN", "distance_km": 45.0, "years": 21}, {"id": "USC00046635", "name": "CA PALM SPRINGS", "distance_km": 67.1, "years": 15}], "runtime_s": 0.3}, "static_runtime_s": 3.9, "daily_generated_utc": "2026-10-16T19:24:39Z", "forecast": {"days": [{"pop_pct": 7, "high_f": 90, "low_f": 70, "gust_mph": 30, "qpf_in": 0.0, "date": "2026-10-16", "source": "NWS", "missing": null, "frost": false, "high_wind": false}, {"pop_pct": 2, "high_f": 82, "low_f": 67, "gust_mph": 21, "qpf_in": 0.0, "date": "2026-10-17", "source": "NWS", "missing": null, "frost": false, "high_wind": false}, {"pop_pct": 0, "high_f": 84, "low_f": 69, "gust_mph": 14, "qpf_in": 0.0, "date": "2026-10-18", "source": "NWS", "missing": null, "frost": false, "high_wind": false}, {"pop_pct": 1, "high_f": 86, "low_f": 66, "gust_mph": 13, "qpf_in": 0.0, "date": "2026-10-19", "source": "NWS", "missing": null, "frost": false, "high_wind": false}, {"pop_pct": 8, "high_f": 81, "low_f": 63, "gust_mph": 36, "qpf_in": 0.0, "date": "2026-10-20", "source": "NWS", "missing": null, "frost": false, "high_wind": false}, {"pop_pct": 29, "high_f": 75, "low_f": 59, "gust_mph": 25, "qpf_in": 0.03, "date": "2026-10-21", "source": "NWS", "missing": null, "frost": false, "high_wind": false}, {"pop_pct": 8, "high_f": 77, "low_f": 59, "gust_mph": 20, "qpf_in": 0.0, "date": "2026-10-22", "source": "NWS", "missing": null, "frost": false, "high_wind": false}], "source": "NOAA National Weather Service api.weather.gov (7-day forecast + gridpoint wind gusts)", "flags": {"frost": "low <= 32F", "high_wind": "max gust >= 40 mph"}, "timezone": "America/Los_Angeles", "nws_office": "SGX", "grid": [96, 29], "state": "CA", "qpf_source": "NWS gridpoint quantitativePrecipitation", "any_frost": false, "runtime_s": 0.4}, "soil_temp": {"kind": "modeled", "depth": "mean of 6 cm and 18 cm model layers (~4-5 in)", "daily_avg_f": 75.9, "date": "2026-10-15", "trend_7d_f": [94.7, 90.6, 79.5, 74.5, 72.6, 72.7, 75.9], "change_7d_f": -18.8, "source": "Open-Meteo forecast API soil model (non-commercial terms)", "measured_attempt": "no operational USCRN within 60 km and 300 m elevation", "zip_elevation_m": 91.0, "runtime_s": 1.0}, "chill": {"since_nov1": {"season_start": "2026-11-01", "status": "not_started"}, "history": {"season_start_rule": "Nov 1", "last_season_by_date": {"status": "not_started", "season_start": "2026-11-01"}, "average_by_date": {"status": "not_started", "season_start": "2026-11-01"}, "last_season_full": {"season": "2025-26", "period": "2025-11-01 to 2026-04-30", "chill_hours_32_45f": 498, "hours_observed": 4309, "hours_in_period": 4344, "coverage_pct": 99.2}, "per_season_by_date": [], "min_coverage_pct": 80.0, "fetch_s_total": 9.7}, "through_utc": "2026-10-16T19:24Z", "station": {"id": "L08", "name": "Borrego Springs", "distance_km": 3.6, "elevation_m": 160.0246, "elevation_diff_m": -1, "coast_km": 93.4}, "zip_coast_km": 90.0, "zip_elevation_m": 160.7, "elevation_flag": null, "selection": "nearest hourly station (airport ASOS, or CIMIS in California) within 40 km, same side of the coastal/inland divide, and 300 m of the ZIP's elevation; if none, the closest in elevation, flagged", "skipped": null, "source": "Iowa Environmental Mesonet ASOS archive (NWS/FAA METAR routine + special obs; one value per clock hour)", "method": "Chill hours = observed hours with 32F <= T <= 45F, counted from Nov 1. Missing hours are not filled. Past seasons use the same station and method; the average only includes seasons with >=80% hourly coverage.", "runtime_s": 0.5}, "daily_runtime_s": 5.1, "schema": "ddg-zip/1.0", "rain": {"season_start": "10-01", "season_kind": "water year (Oct 1\u2013Sep 30)", "as_of": "2026-10-15", "last_report": "2026-10-11", "fill": {"station": {"id": "L08", "name": "Borrego Springs", "kind": "ASOS", "distance_km": 3.6, "elevation_m": 160.0246, "elevation_diff_m": -1, "coast_km": 93.4}, "source": "Iowa Environmental Mesonet ASOS daily summary (METAR precipitation; a reporting day with no precip group counts as 0.00)", "skipped": [], "start": "2026-10-12", "end": "2026-10-15", "days_recorded": 4}, "this_season": {"inches": 0.96, "days": 15, "days_recorded": 15, "coverage_pct": 100.0, "start": "2026-10-01", "end": "2026-10-15"}, "last_season_by_date": {"inches": 0.02, "days": 15, "days_recorded": 15, "coverage_pct": 100.0, "start": "2025-10-01", "end": "2025-10-15"}, "normal_by_date_in": 0.08, "normal_season_in": 5.21, "last_season_full": {"inches": 4.44, "days": 365, "days_recorded": 357, "coverage_pct": 97.8, "start": "2025-10-01", "end": "2026-09-30"}, "station": {"id": "USC00040983", "name": "CA BORREGO DESERT PARK", "distance_km": 5.2, "elevation_m": 246.9, "elevation_diff_m": 86, "coast_km": 85.9}, "zip_coast_km": 90.0, "elevation_flag": null, "source": "NOAA NCEI GHCN-Daily (observed PRCP, quality-flagged values excluded); NOAA NCEI U.S. Climate Normals 1991\u20132020, daily (YTD-PRCP-NORMAL)", "selection": "same station rules as frost dates (within 80 km, same coastal/inland side, nearest within 40 km and 300 m elevation first); station must have 1991\u20132020 daily precipitation normals, a GHCN-Daily report within 21 days and >= 90% of days recorded last season", "skipped": [], "runtime_s": 3.2}, "calendar": {"region": "sd_desert", "label": "San Diego County, low desert (Anza-Borrego)", "analog": true, "sources": [{"name": "University of Arizona Cooperative Extension, az1005 'Vegetable Planting Calendar for Maricopa County' (K. Umeda, 2018): low-desert calendar, used as an analog for the Anza-Borrego desert", "url": "https://extension.arizona.edu/publication/vegetable-planting-calendar-maricopa-county"}], "crops": {"peas": {"name": "Peas", "basis": "source", "plant": [true, true, false, false, false, false, false, false, true, true, true, true], "harvest": [true, true, true, true, false, false, false, false, false, false, true, true], "plant_text": "Sep\u2013Feb", "harvest_text": "Nov\u2013Apr", "dth": [60, 150], "climate_cut": ["May", "Jun", "Jul", "Aug", "Sep", "Oct"]}, "lettuce": {"name": "Leaf lettuce", "basis": "source", "plant": [true, true, false, false, false, false, false, true, true, true, true, true], "harvest": [true, true, true, true, false, false, false, false, false, false, true, true], "plant_text": "Aug\u2013Feb", "harvest_text": "Nov\u2013Apr", "dth": [30, 90], "climate_cut": ["May", "Jun", "Jul", "Aug", "Sep", "Oct"]}, "spinach": {"name": "Spinach", "basis": "source", "plant": [true, true, false, false, false, false, false, false, true, true, true, true], "harvest": [true, true, true, true, false, false, false, false, false, false, true, true], "plant_text": "Sep\u2013Feb", "harvest_text": "Nov\u2013Apr", "dth": [30, 90], "climate_cut": ["May", "Jun", "Jul", "Aug", "Sep", "Oct"]}, "radish": {"name": "Radish", "basis": "source", "plant": [true, true, true, true, false, false, false, false, true, true, true, true], "harvest": [true, true, true, true, false, false, false, false, false, false, true, true], "plant_text": "Sep\u2013Apr", "harvest_text": "Nov\u2013Apr", "dth": [30, 60], "climate_cut": ["May", "Jun", "Jul", "Aug", "Sep", "Oct"], "note": "Late plantings in this window may not reach harvest before heat or cold; plant early in the window."}, "carrots": {"name": "Carrots", "basis": "source", "plant": [true, true, true, true, false, false, false, true, true, true, true, true], "harvest": [true, true, true, true, false, false, false, false, false, false, true, true], "plant_text": "Aug\u2013Apr", "harvest_text": "Nov\u2013Apr", "dth": [60, 100], "climate_cut": ["May", "Jun", "Jul", "Aug", "Sep", "Oct"], "note": "Late plantings in this window may not reach harvest before heat or cold; plant early in the window."}, "potatoes": {"name": "Potatoes", "basis": "source", "plant": [true, true, true, false, false, false, false, false, false, false, false, false], "harvest": [false, false, false, true, true, true, true, false, false, false, false, false], "plant_text": "Jan\u2013Mar", "harvest_text": "Apr\u2013Jul", "dth": [90, 120]}, "kale": {"name": "Kale", "basis": "source", "plant": [false, false, false, false, false, false, false, true, true, true, true, true], "harvest": [true, true, true, false, false, false, false, false, false, false, true, true], "plant_text": "Aug\u2013Dec", "harvest_text": "Nov\u2013Mar", "dth": [60, 90], "climate_cut": ["May", "Jun", "Jul", "Aug", "Sep", "Oct"]}, "garlic": {"name": "Garlic", "basis": "source", "plant": [false, false, false, false, false, false, false, false, false, true, false, false], "harvest": [false, true, true, true, true, false, false, false, false, false, false, false], "plant_text": "Oct", "harvest_text": "Feb\u2013May", "dth": [150, 210]}, "tomatoes": {"name": "Tomatoes (transplants)", "basis": "source", "plant": [false, true, true, false, false, false, true, true, false, false, false, false], "harvest": [false, false, false, true, true, false, false, false, false, true, true, true], "plant_text": "Feb\u2013Mar, Jul\u2013Aug", "harvest_text": "Apr\u2013May, Oct\u2013Dec", "dth": [50, 120], "climate_cut": ["Jun", "Jul", "Aug", "Sep"]}, "peppers": {"name": "Peppers (transplants)", "basis": "source", "plant": [false, true, true, false, false, false, true, false, false, false, false, false], "harvest": [false, false, false, false, true, false, false, false, false, true, true, false], "plant_text": "Feb\u2013Mar, Jul", "harvest_text": "May, Oct\u2013Nov", "dth": [90, 120], "climate_cut": ["Jun", "Jul", "Aug", "Sep"], "note": "Late plantings in this window may not reach harvest before heat or cold; plant early in the window."}, "basil": {"name": "Basil", "basis": "source", "plant": [false, true, true, true, true, false, false, false, false, false, false, false], "harvest": [false, false, true, true, true, true, true, true, false, false, false, false], "plant_text": "Feb\u2013May", "harvest_text": "Mar\u2013Aug", "dth": [30, 75]}, "beans": {"name": "Snap beans", "basis": "source", "plant": [false, false, true, true, false, false, true, true, true, false, false, false], "harvest": [false, false, false, false, true, false, false, false, false, true, true, true], "plant_text": "Mar\u2013Apr, Jul\u2013Sep", "harvest_text": "May, Oct\u2013Dec", "dth": [60, 90], "climate_cut": ["Jun", "Jul", "Aug", "Sep"], "note": "Late plantings in this window may not reach harvest before heat or cold; plant early in the window."}, "corn": {"name": "Sweet corn", "basis": "source", "plant": [false, true, true, true, false, false, true, true, false, false, false, false], "harvest": [false, false, false, true, true, true, true, false, true, true, true, false], "plant_text": "Feb\u2013Apr, Jul\u2013Aug", "harvest_text": "Apr\u2013Jul, Sep\u2013Nov", "dth": [70, 90]}, "squash": {"name": "Summer squash / zucchini", "basis": "source", "plant": [false, true, true, true, false, false, false, true, true, false, false, false], "harvest": [false, false, false, true, true, true, false, false, false, true, true, true], "plant_text": "Feb\u2013Apr, Aug\u2013Sep", "harvest_text": "Apr\u2013Jun, Oct\u2013Dec", "dth": [60, 90], "climate_cut": ["Jul", "Aug"]}, "cucumber": {"name": "Cucumber", "basis": "source", "plant": [false, true, true, true, false, false, false, true, true, false, false, false], "harvest": [false, false, false, true, true, true, false, false, false, true, true, true], "plant_text": "Feb\u2013Apr, Aug\u2013Sep", "harvest_text": "Apr\u2013Jun, Oct\u2013Dec", "dth": [60, 90], "climate_cut": ["Jul", "Aug"]}, "broccoli": {"name": "Broccoli (transplants)", "basis": "source", "plant": [true, false, false, false, false, false, false, true, true, true, true, true], "harvest": [true, true, true, true, false, false, false, false, false, false, true, true], "plant_text": "Aug\u2013Jan", "harvest_text": "Nov\u2013Apr", "dth": [90, 100], "climate_cut": ["May", "Jun", "Jul", "Aug", "Sep", "Oct"], "note": "Late plantings in this window may not reach harvest before heat or cold; plant early in the window."}}, "harvest_note": "Harvest months = planting months plus days-to-harvest from UA Extension az1005 (our derivation); frost-tender crops are cut off at this ZIP's median first fall frost."}}