Understanding Rainfall Patterns In San Diego County
San Diego County gets most of its rain in three months, and barely any during the rest of the year. The annual average across the county sits around 10 to 12 inches, but that number means almost nothing on its own. The coast might see 10 inches one year while the mountains get 40 inches from the same storm system. That's the first thing anyone needs to understand before trying to track or predict anything here. The semiarid classification isn't just a label. It changes how the ground behaves. Dry soil crusted over from months of no rain will reject water initially. You can get a healthy 2-inch rainfall event and most of it runs off before it soaks in. This is why runoff models for this region need a separate initial abstraction parameter, and why using a standard SCS Curve Number from the Midwest will give you wildly inaccurate results.
Rainfall San Diego County Tracking The Pulse Of A Semiarid Climate
The National Weather Service operates several cooperative observer stations across the county. The primary automated network is the CA-LANL (California Landscape Architecture and Natural Lands) and the local Co-op networks tied through CHPS (California Historical Precipitation System). For anyone doing actual water resource work, CHPS is where you pull long-term data. The raw gauge readings are free and downloadable, but they come with gaps. Some stations haven't been read in years. Some were moved in the nineties and the old records don't transition cleanly. I spent two years working with the San Dieguito River watershed data and ran into a specific problem with the Scripps Ranch station. The gauge was relocated in 2019 to accommodate a housing development, but the relocation record wasn't flagged in CHPS for nearly a year. Rainfall totals from the new location were being merged directly with the old dataset, creating an artificial jump in the data that looked like a climate trend. It threw off my regression model entirely. The workaround was straightforward once I found it: I pulled the station metadata from NWS San Diego directly and cross-referenced the relocation date. Then I split the time series at that exact point and ran the analysis on two separate segments instead of one continuous dataset. The difference in the results was substantial enough that I retraced my earlier conclusions. For real-time monitoring, the NWS San Diego office posts radar precipitation estimates through their HYDROGINS tool. It's not perfect. The algorithm uses the G35 reflectivity-to-rainfall relationship, which tends to undercatch during stratiform events and overcatch when convective storms roll through the mountains. The radar beam also gets blocked by the coastal range in several valleys. If you're tracking rainfall in inland East County or the Julian area, radar estimates will miss significant events because the terrain shadows the beam entirely.
A more reliable approach for those areas is combining radar data with gauge observations through kriging interpolation. The Western Regional Climate Center offers this kind of blended analysis, and for San Diego County specifically, the California Data Exchange Center maintains interpolated rainfall grids updated monthly. The spatial resolution is around 4 kilometers, which is coarse for a county this topographically complex, but it's far better than relying on raw gauge data alone when you need coverage across the whole region. One counter-intuitive thing about this climate: the heaviest single-day rainfall events don't always come from the biggest storm systems. They come from atmospheric rivers that stall over the region or from monsoon moisture pulling in from the south in late summer. A relatively weak mid-latitude system can dump 3 inches on Palomar Mountain in six hours if the lift is forced properly against the slope. Meanwhile, a strong coastal low might track past the county and produce only light drizzle along the coast. Duration matters more than intensity in many cases, and intensity patterns shift completely depending on whether the storm is moving fast or dragging along. Another common mistake beginners make is averaging monthly rainfall across the county and treating it as representative. The coastal plain, the northern valleys, and the mountain zones operate almost like different climates. I've seen people use the Del Mar coastal station as a proxy for Escondido, which sits about 30 miles inland and 700 feet higher in elevation. Those two locations can be 8 inches apart in annual total. Using one as a substitute for the other will cost you credibility quickly if anyone with local knowledge reads your work.
Get the Full Details

For anyone doing flood risk assessment or stormwater design in this county, the FEMA Flood Insurance Rate Maps incorporate rainfall frequency data from HDO-6 (Hydrologic Diagnostic Office report number 6). The 24-hour, 100-year storm event for most of coastal San Diego is around 4.5 inches. But the mountain areas can see 6 to 8 inches for the same return period. Designing to the coastal value anywhere north of I-15 or above 1,500 feet elevation is a mistake that comes up repeatedly in plan check submissions. Download access to historical gauge data is straightforward if you know where to look. The NOAA Climate Data Online portal atclimate.gov lets you search by station ID or geographic area. The CHPS website maintained by CalTrans requires a free registration but provides the quality-controlled records that researchers actually need. Both sources are free. The catch is that downloading large time series through their interfaces is slow. I usually write a Python script using the requests library to pull data in chunks by year rather than downloading a full century of records at once. It's faster and less likely to time out. The biggest limitation in rainfall tracking for this region is the sparse gauge network relative to the terrain. San Diego County has roughly 60 to 70 operational rain gauges spread across 4,200 square miles with elevation ranging from sea level to over 6,700 feet. That's one gauge roughly every 60 to 70 square miles on average, but they cluster heavily near population centers. The eastern desert portions and the remote mountain zones have very few stations. When a storm hits the Cuyamaca Mountains, there may be a single gauge within a 15-mile radius reporting the event. Interpolation fills the gaps, but interpolation is only as good as the data feeding it.
If you need higher resolution data than what government networks provide, some private meteorological services sell dense gauge networks. MesoWest, operated by the University of Utah, aggregates data from thousands of personal weather stations including many in San Diego County. The data quality varies widely because these are mostly consumer-grade instruments, but for relative spatial patterns and real-time tracking during active storm events, it's surprisingly useful. I keep a MesoWest dashboard open during winter storm seasons alongside the NWS radar. The combination catches things neither source shows alone. The semiarid nature of this climate means drought periods stretch for years, then rainfall returns in sharp pulses. Tracking the pulse isn't about finding a steady pattern. It's about recognizing when the system shifts from one regime to another, and knowing which data sources hold up under those transitions. The tools exist. They're not difficult to access. But the data requires careful handling from the start, especially around station relocations and terrain shadowing, or you'll end up measuring nothing more than artifacts.