Methods & Sources
Study area
All analysis is restricted to parcels whose centroid falls within 1 mile of San José Diridon Station (37.3292, −121.9036) — 5,279 parcels, ~1,420 acres.
Both the 1-mile buffer and all areas are computed in California State Plane Zone 3 (EPSG:2227, US survey feet), the data’s native projection and a locally accurate one. We deliberately do not buffer in Web Mercator (EPSG:3857): at Diridon’s latitude (~37.3°), Web Mercator inflates projected distances by 1/cos(lat) ≈ 1.26, so a “1-mile” (1,609 m) Web-Mercator buffer is really only ~0.8 mile on the ground. Using State Plane (1 mile = 5,280 ft) keeps the radius honest and avoids a bulk reprojection step that can fail on some PROJ installs.
Capacity
For each parcel we compute theoretical zoned capacity = lot acreage × maximum dwelling units per acre.
Maximum densities come from the City’s own code, not assumptions:
| Zone | Max du/ac | Source |
|---|---|---|
| Urban Village (UV), Transit Residential (TR) | 250 | Title 20, Table 20-136 |
| Urban Residential (UR) | 95 | Title 20, Table 20-136 |
| Mixed-Use Commercial (MUC) | 50 | Title 20, Table 20-136 |
| Mixed-Use Neighborhood (MUN) | 30 | Title 20, Table 20-136 |
| Urban Village Commercial (UVC) | 0 (no residential) | Title 20, Table 20-136 |
| Downtown (DC) | 350 (conservative cap) | Envision 2040 General Plan Downtown designation allows up to 800 du/ac |
San José’s urban-village districts generally set a minimum density; the maximum for UV/TR/UR is the top of the Table 20-136 range. Downtown (DC) density is governed by the Envision 2040 General Plan Downtown designation and the Diridon Station Area Plan rather than a Title 20 du/ac figure; the General Plan permits up to 800 du/ac in the Downtown core. We deliberately apply a conservative 350 du/ac cap — high-rise towers at 800 du/ac are rare in practice, and height/FAR, FAA surfaces, and historic constraints bind well before that ceiling — so the Downtown capacity here understates the legal envelope rather than overstating it.
Benchmarks. The memo compares the envelope against two yardsticks, both scoped to the same 1-mile geography (output/tables/benchmarks.csv):
- Existing homes (~12,800) — ACS 2019–2023 tract housing units apportioned by each tract’s share of land area inside the ring. Areal apportionment assumes units are evenly spread within a tract; a parcel-level count would require the county assessor’s per-parcel unit file, which is a paid product.
- Planned homes (~34,300) — the City’s Growth Areas 2040 polygons (Downtown, the DSAP, and six urban villages intersect the ring), each area’s planned-housing program apportioned by its share of land inside the ring (per-area detail:
output/tables/growth_areas_in_ring.csv). Two adjustments: the DSAP polygon lies mostly inside the Downtown growth area, so its footprint is subtracted from Downtown’s geometry before apportioning (no double counting); and the amended DSAP (2021) program of ~12,900 homes is substituted for the pre-amendment figure (2,710) still carried in the layer. Comparing a single plan area’s program against the whole ring’s envelope would overstate the gap — this apportionment keeps plan and envelope on the same geography. The layer is fetched once from the City’s ArcGIS service and cached (data/raw/sj_growth_areas_2040.geojson) so the analysis reproduces offline.
Soft sites (soft-site capacity)
A soft site is a high-capacity parcel that is currently vacant, surface parking, or barely built — i.e., where new homes can realistically go. The ideal measure (assessor improvement-to-land value ratio) is not openly published for Santa Clara County; it is a paid bulk-data product. We therefore use an open, reproducible proxy: building-footprint coverage from OpenStreetMap. For each parcel we sum the footprint area of buildings clipped to the lot, divide by lot area, and flag parcels with < 15% coverage as soft sites. Where OSM records building:levels, a rough built-FAR is also computed.
This is an underbuilt / vacant proxy, not a true existing-FAR measure: it sees ground coverage, not floors. “Soft-site capacity” is the gross zoned capacity on these underbuilt parcels — it is not net of the existing units already on them (most soft sites are non-residential — surface lots, parking, low-rise commercial — but we do not subtract existing units parcel by parcel). The 15% threshold is a choice; capacity is stable across reasonable thresholds:
| Coverage threshold | Soft-site capacity |
|---|---|
| < 5% | ~34,200 |
| < 10% | ~37,600 |
| < 15% (used) | ~42,500 |
| < 20% | ~50,400 |
| < 25% | ~53,900 |
Developability floor. About half of the soft-site capacity (~21,900 units, 219 of 351 parcels) sits on parcels with zero detected building footprint — some genuinely vacant or surface parking, some likely rail, station, or civic land carrying Downtown zoning. Excluding all zero-footprint parcels gives a conservative floor of ~20,600 units; the defensible range is therefore ~20,600–42,500. A parcel-level ownership/use screen would tighten this.
Top soft sites (audit). The largest soft sites driving the total are listed below so a reviewer can judge developability directly (full list: output/tables/top_soft_sites.csv). All are Downtown (DC) except where noted; “verify” marks zero-footprint parcels that need an ownership/use check.
| Parcel ID | APN | Zone | Acres | Built coverage | Capacity | Note |
|---|---|---|---|---|---|---|
| 579060 | 25923024 | DC | 9.5 | 0.1% | 3,329 | underbuilt |
| 44410 | 25927027 | DC | 6.8 | 11.1% | 2,394 | underbuilt |
| 342811 | 25928041 | DC | 5.4 | 0.0% | 1,872 | verify |
| 1000002155 | 25938142 | DC | 4.4 | 0.0% | 1,532 | verify |
| 47117 | 26135027 | DC | 4.3 | 0.0% | 1,492 | verify |
| 1000026169 | 25942086 | DC | 2.5 | 0.2% | 886 | underbuilt |
| 44823 | 25941… | DC | 2.1 | 0.5% | 722 | underbuilt |
| 363884 | 25928045 | DC | 1.8 | 0.4% | 632 | underbuilt |
| 47118 | 26135014 | DC | 1.8 | 0.0% | 618 | verify |
| 1000002078 | 46746080 | DC | 1.7 | 13.8% | 610 | underbuilt |
The largest sites are small (1–10 acres) and concentrated in the Downtown core; five of the top fifteen are zero-footprint parcels flagged for verification. (APNs are reproduced verbatim from the City’s parcel file, including one malformed source value.)
Equity & displacement vulnerability
Tract indicators are from the ACS 2019–2023 5-year estimates, joined to the City’s official Equity Index (1–5; higher = higher priority). For the 1-mile station-area tracts we build a transparent, flag-based vulnerability measure, with cut-points set at the citywide median so they are defensible rather than arbitrary:
- Renter-majority — % renters above the citywide median
- Rent-burdened — % rent-burdened renters above the citywide median
- Transit-dependent — % households without a vehicle above the citywide median
- Low-income — median household income below the citywide median (this flag keeps the score from inverting on income: without it, affluent renter-heavy downtown tracts can out-score genuinely low-income tracts)
- Equity-priority — Equity Index score ≥ 4
vulnerability_score = sum of the five flags (0–5); a tract is high vulnerability at 3+ and moderate at 2. Soft-site capacity is then attributed to each parcel’s tract by GEOID.
Because the flags use citywide-median cut-points, “higher vulnerability” is a deliberately inclusive class (9 of the 13 station-area tracts qualify). The strictest available lens — the City’s own Equity Index ≥ 4 — flags only one station-area tract, and about 6% of soft-site capacity falls in such equity-priority tracts. Read the two together: ~22% of capacity touches broadly-vulnerable tracts, ~6% touches the City’s highest-priority equity tracts.
Two scope notes: (1) the “who lives here” profile uses whole tracts that intersect the 1-mile ring (population/housing-unit weighted), not tract populations clipped to the buffer — so it describes the surrounding neighborhoods, not only residents inside the exact ring. (2) “Transit-dependent” in the vulnerability score is operationalized as no-vehicle households; the memo separately reports transit-commute share as a descriptive statistic.
Caveats
- Theoretical, not a forecast. Zoned capacity is an upper bound on what the code permits, not a prediction of what will be built. Market feasibility, parcel assembly, and entitlement are out of scope.
- Soft sites are a proxy. Footprint coverage flags underbuilt land but cannot distinguish a developable surface lot from a civic/transport parcel or protected open space; some zero-coverage parcels (e.g., the station and rail right-of-way) inflate the gross Downtown figure and are why the net number is treated as a ceiling.
- Vulnerability ≠ predicted displacement. The flags identify exposure, not outcomes.
- ACS margins of error apply to all tract estimates, especially small tracts.
Data sources
- City of San José Open Data — parcels, zoning districts, Equity Index census tracts, affordable rental housing (https://data.sanjoseca.gov)
- San José Municipal Code Title 20 (Zoning), Ch. 20.55, Table 20-136
- Diridon Station Area Plan (amended 2021) & General Plan land use designations
- ACS 2019–2023 5-year estimates via
pygris/ Census API - OpenStreetMap building footprints (© OpenStreetMap contributors, ODbL)
Reproducibility
The full pipeline is four scripts run in order (02→05): code/02_diridon_capacity.py → code/03_diridon_equity.py → code/04_diridon_figures.py → code/05_diridon_interactive.py. Each writes its outputs to output/tables/ and output/maps/, which this memo reads.