# California Site Selection: public-data foundation

Research checked September 10, 2026. This document separates existing repository evidence, verified public endpoints, and proposed integrations. It is a data and product roadmap, not a claim that every source below is already used by the application. The app's current integration list belongs in [../README.md](../README.md); the machine-readable source register is [sources.json](sources.json).

**V2 implementation update:** numeric Global Wind Atlas wind, existing EGS costs, hourly regional hydrogen optimization, Battery Locator/nodal economics, load-tool parity and sampled project footprints are now implemented. General-plan timeouts, terrain batching and numeric land-cover fallbacks have also been resolved and browser-verified. The original investigation below is retained as research history; use the [current README](../README.md), [resource methods](resource-integration.md), [economics methods](economics-integration.md), [public-service verification](public-development-integration.md) and [load parity audit](dcsiting-parity.md) for current behavior.

The expanded tool should help a user compare **specific projects at specific locations and dates**. Solar, wind, geothermal, battery storage and large loads need different resources and connection directions. An attractive location should be supported by an explanation, a visible evidence gap, and a next action—not just a colored score.

## What the existing work already provides

| Existing asset | Useful role | Interpretation that must survive reuse |
|---|---|---|
| `dcsiting/` | Project profile, public point checks, grid/planning comparisons and saved candidates | Its development and grid screens are initial diligence, not load-service confirmations. |
| `transmission/` lines, substations and operating plants | Voltage-filtered physical proximity and resource clustering | A nearby high-voltage line is not necessarily an accessible POI; mapped proximity does not resolve topology or transformer capacity. |
| `interconnection/data/` | Generator queue competition, project status/history, local price evidence | Long queues indicate commercial interest **and pressure**. They should not earn an automatic favorable score. Generator queues do not represent all pending load. |
| `busbarmapping/` and `dcsiting/data/grid_planning.json` | Portfolio allocations, planning criteria, modeled constraints and future scenarios | Generator deliverability is not firm load-serving headroom. Future upgrades must be tied to the scenario and the relevant target year. |
| `transmission/co2pipeline/stanford_ch3_shapefiles/` | Historical protected-land, habitat, fault and population sensitivity screens | They were assembled for a CCS study. A CCS composite exclusion or population threshold must not silently become a solar, battery or data-center prohibition. |
| Existing solar/wind/land-cover basemaps | Familiar visual exploration | Tiles are a display layer. Scores need numeric source data, units, coverage and a documented extraction method. |

The Stanford source notes identify a CO2-storage screening package; the compact development payload says the fault input's `BUFF_DIST` is 2,000 metres per side despite the source filename mentioning 4 km. Preserve that meaning. Its historical population threshold is not a general development restriction. The official [CEC land-use-screen documentation](https://www.energy.ca.gov/publications/2022/land-use-screens-electric-system-planning-using-geographic-information-systems) also describes planning-scale screening; [the state's catalog](https://catalog.data.gov/dataset/cec-2023-land-use-screens-for-electric-system-planning) explicitly cautions against using those screens alone for project siting or impacts.

## Sources usable in the first iteration

Actual request evidence is retained in [endpoint-probes.json](endpoint-probes.json), [browser-probes.json](browser-probes.json) and [alternate-browser-probes.json](alternate-browser-probes.json). A successful representative query verifies access, not statewide completeness.

| Source | Verified access | Useful evidence and handling |
|---|---|---|
| NASA POWER | Browser JSON point fetch succeeded without a key | Regional solar irradiance, 50 m wind and temperature; retain response units, climate period and fill value. |
| California statewide zoning north/south | HTTP queries succeeded; south also verified in browser | Raw zone code, jurisdiction, source and source date. A no-hit result remains Unknown. |
| CAL FIRE LRA/SRA fire zones | LRA browser and SRA HTTP queries succeeded | Explicit hazard class. The sample LRA polygon was `NonWildland`, code `-3`; do not classify every returned polygon as hazardous. |
| DWR critically overdrafted basins | Browser fetch succeeded | Basin name and critical-overdraft designation; not water supply availability. |
| California drinking-water system boundaries | HTTP query succeeded with an origin-compatible CORS response | Likely supplier, boundary verification status/date; not will-serve, pressure or allocation. |
| CDT middle-mile fiber | Browser query succeeded; nearby-line HTTP query returned routes | Route distance **and** construction status, using `outSR=4326` before geodesic distance calculations. |
| FEMA NFHL | Corrected URL succeeded in browser | Effective flood zone, subtype, SFHA flag and FIRM reference. |
| CalEnviroScreen 5.0 | HTTP point query succeeded | Community burden context and engagement priorities; preserve tract geography and percentile. |
| Statewide general plan | Metadata succeeded; point request timed out | Keep independently unavailable rather than letting it block other checks. |
| National Wetlands Inventory | HTTP query succeeded; browser requests failed in this run | Source is real and public; use an explicit Unknown on browser failure, and prefer a verified snapshot or controlled service for robust production access. |

**FEMA endpoint correction.** The older `https://hazards.fema.gov/gis/nfhl/rest/services/public/NFHL/MapServer/28` returned 404. The functioning route is:

```text
https://hazards.fema.gov/arcgis/rest/services/public/NFHL/MapServer/28/query
```

Use an ArcGIS point intersection with `inSR=4326`, `outSR=4326` and raw zone attributes. At the Bakersfield test point, the response was `FLD_ZONE=X`, `ZONE_SUBTY=AREA OF MINIMAL FLOOD HAZARD`, `SFHA_TF=F`. The source returned `-9999` for unavailable flood elevations: this is not a real elevation. Zone X alone is insufficient because subtypes differ. An empty response cannot establish that an unmapped area is safe.

**NASA query.**

```text
https://power.larc.nasa.gov/api/temporal/climatology/point
?parameters=ALLSKY_SFC_SW_DWN,WS50M,T2M_MAX
&community=RE&longitude=-119.0187&latitude=35.3733&format=JSON
```

The actual response reported annual solar irradiance 5.5838 kWh/m²/day, wind 3.72 m/s at 50 m, and maximum temperature 44.65°C. Its header identified a **January 2001–December 2020** precomputed climatology, with fill value `-999`. Do not hardcode a different period. These are regional climate statistics, not a measured resource assessment or engineering design condition. [NASA's API documentation](https://power.larc.nasa.gov/docs/services/api/temporal/climatology/) describes the service; [its data-service guidance](https://power.larc.nasa.gov/docs/services/) gives native resolutions of approximately 1° for solar and 0.5° × 0.625° for meteorology. [NASA's wind methodology](https://power.larc.nasa.gov/docs/methodology/meteorology/wind/) cautions that its mean wind describes regional flow rather than local terrain/building effects.

**Fiber is genuinely available as a public source.** The [CDT network page](https://broadbandforall.cdt.ca.gov/middle-mile-broadband-initiative/statewide-middle-mile-network/) provides downloadable formats and differentiates pre-construction, installation and ready-to-connect. This is a strong starting point for data centers and other connected loads. The state network does not represent all private fiber, and proximity does not establish lateral cost, latency, available pairs or independent entrances. A literal status of installation must never be presented as operating service.

## The next integrations, in priority order

### 1. Quantitative resources and project footprints

For solar, add [NSRDB](https://developer.nlr.gov/docs/solar/nsrdb/) and [PVWatts V8](https://developer.nlr.gov/docs/solar/pvwatts/v8/) through a controlled download/build pipeline or user-provided API key. Store irradiation product, weather years and system assumptions. Model hourly output, capture price and storage charging from a chosen PV layout; a single annual irradiance number cannot express congestion exposure.

For wind, use the [WIND Toolkit/WTK-LED](https://developer.nlr.gov/docs/wind/wind-toolkit/) at a chosen hub height, including hourly distributions and a turbine power curve. Distinguish onshore products from offshore NOW-23. Add terrain, access, habitat and [FAA obstruction review](https://www.faa.gov/air_traffic/flight_info/aeronav/obstruction_evaluation/) context. Coarse NASA wind is a fallback with lower evidentiary weight, not a replacement.

Geothermal needs separate **hydrothermal** and **enhanced geothermal** modes. The [2025 USGS Great Basin EGS assessment](https://www.usgs.gov/publications/enhanced-geothermal-systems-electric-resource-assessment-great-basin-southwestern) links [assessment data](https://doi.org/10.5066/P14LU7WD); [hydrothermal favorability](https://www.usgs.gov/publications/favorability-mapping-hydrothermal-power-resource-assessments-great-basin-usa) and [heat-flow/well evidence](https://www.usgs.gov/data/heat-flow-maps-and-supporting-data-great-basin-usa) offer different information. Their partial California coverage must be explicit. A hot rock estimate does not establish reservoir productivity, permeability, water supply or an economic well field.

The essential spatial upgrade is **draw or upload a project polygon**, then calculate eligible contiguous acreage, intersecting constraints and distance to feasible corridors. A pin and radius can screen a neighborhood; they cannot prove the selected parcel fits a 200 MW solar project. Derive slope distributions from [USGS 3DEP](https://www.usgs.gov/the-national-map-data-delivery/gis-data-download), and use [Annual NLCD](https://www.usgs.gov/centers/eros/science/annual-national-land-cover-database) for actual surface cover. The NLCD page currently advertises Collection 1.2 with 2025 data; record the downloaded edition. Land cover and zoning remain separate.

### 2. Current environmental and jurisdictional evidence

Replace historical broad masks progressively with versioned [PAD-US](https://www.usgs.gov/programs/gap-analysis-project/science/pad-us-data-download), public [CDFW ACE](https://wildlife.ca.gov/Data/Analysis/ACE), [NWI](https://www.fws.gov/program/national-wetlands-inventory/data-download), and jurisdiction-specific zoning/ordinances. Keep overlapping designations instead of dissolving away their reasons.

PAD-US's download page currently identifies 4.1, while some catalog metadata still labels 4.0; use the actual file and metadata, not a guessed vintage. USGS discourages treating all inter-version differences as new protection.

The statewide zoning compilation is valuable but older than a live county ordinance: [its published metadata](https://catalog.data.gov/dataset/california-statewide-zoning-south) says collection began in 2021 and mostly finished in 2022, with some 2023 updates. Some roads and null classifications were removed. Show the local source link and date and allow a verified local layer to take precedence.

[Detailed CNDDB records](https://wildlife.ca.gov/Data/CNDDB/Maps-and-Data) require a subscription and have display/sharing restrictions. Public ACE summaries and county/quadrangle QuickView are alternatives; do not redistribute restricted species coordinates. The [ACE ds2700 metadata](https://filelib.wildlife.ca.gov/public/BDB/GIS/BIOS/metadata/DS2700.html) specifies CC-BY 4.0, but each selected layer still needs its own metadata.

Treat [BIA tribal geography](https://www.bia.gov/bia/ots/dris/bogs) as jurisdiction, consent and partnership context. Tribal ownership is not an automatic negative site characteristic. Public boundaries cannot substitute for consultation or represent every cultural interest. Track [Important Farmland](https://www.conservation.ca.gov/dlrp/fmmp/Pages/county_info.aspx), agricultural contracts and local restrictions separately; the most-recent FMMP service can contain mixed county vintages.

### 3. Real grid opportunity, split by direction and date

The [CAISO POI heatmap](https://www.caiso.com/poi-heatmap/) and [cluster-specific POI information](https://www.caiso.com/library/interconnection-facility-information) are useful additions beyond physical proximity. Use the heatmap as a study link: the [official FAQ](https://www.caiso.com/documents/points-of-interconnection-heatmap-frequently-asked-questions.pdf) says source/GIS data cannot be supplied because of compliance requirements. It also distinguishes the heatmap's transfer-limit assessment from TPD deliverability constraint mapping, describes P1-contingency coverage, and notes that some proposed POIs lack final coordinates. Do not promise a public backend API or treat these quantities as interchangeable.

For each candidate, distinguish:

- **Generation injection:** energy-only interconnection, deliverability and limiting facilities.
- **Load withdrawal:** utility load ICA where applicable, transmission supply studies, service voltage, pending load and energization schedules.
- **Battery:** both charging and discharging constraints, operating schedule and export/import limits.
- **Future configuration:** existing, approved, under construction, in-service and merely proposed facilities; assumptions tied to a scenario and year.

The [CPUC busbar report](https://www.cpuc.ca.gov/-/media/cpuc-website/divisions/energy-division/documents/integrated-resource-plan-and-long-term-procurement-plan-irp-ltpp/2024-2026-irp-cycle-events-and-materials/assumptions-for-the-2026-2027-tpp/report_redline.pdf) describes mapping portfolios to network locations and states that busbar mapping does not identify or trigger transmission upgrades. [Utility ICA portals](https://www.cpuc.ca.gov/industries-and-topics/electrical-energy/infrastructure/distribution-planning) provide more relevant distribution evidence, but their generation and load quantities differ. Do not derive load capacity by subtracting generation allocations from a deliverability value.

Similarly, cheap wholesale prices can favor a flexible load but may indicate export congestion that hurts generation. Retail bills require utility tariffs, demand charges and delivery costs. A nearby PNode is not necessarily the project's eventual pricing node.

### 4. Brownfields, water and long-term resilience

[RE-Powering](https://www.epa.gov/re-powering/re-powering-mapper) adds a particularly useful candidate-discovery mode: disturbed land, landfills, mines and contaminated sites. Its screening is dated August 2021 despite a much newer webpage update. EPA says these sites were not assessed for current conditions or land-use constraints. Pair the inventory with current [GeoTracker](https://geotracker.waterboards.ca.gov/datadownload), [EnviroStor](https://dtsc.ca.gov/your-envirostor/) records, title restrictions and a Phase I process. Show reuse opportunity and remediation complexity independently.

For loads, hydrogen and geothermal, add water demand by process/cooling choice, wastewater/recycled-water sources and supplier will-serve evidence. [DWR overdraft designation](https://water.ca.gov/Programs/Groundwater-Management/Bulletin-118/Critically-Overdrafted-Basins) is a stress signal; it is not available volume. Drought, flood, heat and wildfire should include the project's intended operating life. [Cal-Adapt](https://analytics.cal-adapt.org/data-tools/access-methods.html) offers ensemble climate data for that future view. Keep scenarios and uncertainty visible.

[CGS EQ Zapp](https://www.conservation.ca.gov/cgs/pages/program-sh/eq_zapp.aspx) is a stronger source for current fault, liquefaction and landslide investigation zones than the old CCS fault buffer. Not-yet-evaluated regions must be distinguished from evaluated areas with no mapped zone.

## How the score should behave

These are proposed product/model rules, not agency ratings.

1. Ask for technology, import/export MW, target year, footprint/acreage, operating flexibility and constraints. Add storage duration, wind hub height, geothermal type and cooling/water requirements only when relevant.
2. Show **screening score**, **evidence coverage**, and **critical unresolved questions** separately. Unknown data should neither become zero suitability nor increase confidence after a request failure.
3. Preserve raw observations with each score contribution. A user should see “nearest ≥115 kV substation: 4.2 km; distance proxy” instead of “grid access: good” alone.
4. Keep a project-policy exclusion gate distinct from a weighted preference. Good solar cannot average away a chosen protected-land exclusion. Conversely, a historical ecological mask should not masquerade as a statutory ban.
5. Label point, footprint and neighborhood evidence separately. Compute overlap fraction, nearest boundary and contiguous buildable area for polygons.
6. Compare scores only with the same project profile, model version and comparable evidence. Offer a common-evidence comparison when candidates have different missing layers.
7. Use explicit scenario variants: grid as built versus planned, flexible versus inflexible load, dry versus wet cooling, standalone versus hybrid, and low/base/high resource assumptions.
8. Use community burden for engagement and impact reduction. [CalEnviroScreen 5.0](https://oehha.ca.gov/calenviroscreen/report/calenviroscreen-50) is a tract-level cumulative-burden screen, not a land-price or workforce filter.

## A maintainable ingestion pipeline

For every dataset, store source URL, publisher, source version/date, retrieval timestamp, coverage geometry, CRS, units, license, fields used, transformation script version and file checksum. A download timestamp is not an observation date.

Use scheduled builds for large/stable layers and small point APIs for optional candidate checks. Simplify geometry for rendering separately from analytical geometry. Clip to California with a buffer for nearby out-of-state infrastructure; never silently snap a point to an unrelated feature. Paginate ArcGIS queries or fail explicitly on `exceededTransferLimit`.

Keep the last validated snapshot if an upstream fetch fails. Build publication should be atomic: complete and verify a new manifest before swapping it in. Validate record counts, bounds, units, identifiers, null/fill values and schema changes. Preserve changed-source reports for review rather than accepting a large unexplained change automatically.

Cache public point requests by meaningful source resolution and request parameters; cancel stale requests when the user moves the pin, and distinguish unavailable, outside coverage, no mapped intersection and not yet checked. Optional source failures must not block the core map or erase a previously valid report.

A saved/exported comparison should include the project profile, pin/footprint, score model version, normalized weights, raw evidence, source dates, limitations and timestamp. This makes the tool's conclusions reproducible as daily prices and queues update.

## Exclusions, contextual flags and remaining gaps

| Evidence | Default handling | Why |
|---|---|---|
| Verified incompatible local use or user-defined exclusion | Explicit gate with rule/source and an override history | Directly relevant to the selected project's policy or entitlement pathway. |
| Current protected designation/easement | Strong review or configured exclusion by designation | Public land categories have different management rules; do not treat all public ownership alike. |
| Wetlands, critical habitat or high ecological value | Avoidance/review flag; footprint impacts needed | Inventory presence and permitting outcome are different. |
| Fault, flood and fire zones | Hazard/investigation flag; mitigation and design needed | Hazards often require studies and engineering rather than a blanket prohibition. |
| Tribal geography | Jurisdiction/consultation/partnership context | Development requires the relevant authority and consent, not automatic exclusion. |
| Long queue or crowded renewable area | Competition, curtailment and shared-upgrade context | Commercial interest can coexist with constrained access. |
| Planned grid upgrade | Scenario evidence with delivery uncertainty | It is not already available capacity. |
| Missing coverage or failed endpoint | Unknown, visible and excluded from observed-evidence normalization | No observation is not a favorable observation. |

The largest public-data gaps are firm load-serving capacity, parcel control and detailed title restrictions, real connection costs/timelines, private fiber and route diversity, water commitments, site surveys and project-specific permits. Design the app to record verified user-supplied evidence for these items with provenance rather than inventing precise answers from nearby infrastructure.
