# CalCOFI stations

The 113 CalCOFI sampling stations (the full extended pattern: the 75-station standard pattern used since 1984 plus 38 stations of the winter/spring and extended 113-station pattern) at the positions CalCOFI publishes on its Station Positions page (CalCOFIStationOrder.csv). `in_core_75` is true for the 75 standard stations, taken from CalCOFI's 75-station KML (CalCOFI_75StandardStations.kml); `sampling_pattern` is core_75 or extended. `line_id` and `station_id` are the zero-padded line and station numbers (e.g. 093.3 and 030.0), `sta_type` is ROS (rosette) or SCCOOS (the nine ~20 m inshore stations).

- **Collection**: `calcofi_stations` v1.0.1, 113 features, GeoParquet 1.1 (`places.parquet`) and PMTiles (`places.pmtiles`, layer `calcofi_stations`)
- **Licence**: CC-BY-4.0 - Stated by CalCOFI on https://calcofi.org/data/data-usage-policy/ (read 2026-10-08): "CalCOFI oceanographic and biological data are licensed under the Creative Commons Attribution 4.0 International License"; users must state that the data were obtained from the California Cooperative Oceanic Fisheries Investigations (https://calcofi.org/). The policy covers CalCOFI's data in general and does not name the station-position tables, which are published without a separate statement; decision D13 treats the collections as contributed by CalCOFI under its own licence. https://creativecommons.org/licenses/by/4.0/
- **Attribution**: California Cooperative Oceanic Fisheries Investigations (CalCOFI), calcofi.org. CC BY 4.0. Processed by Ocean Metrics.
- **Refresh**: monthly, by `.github/workflows/sync.yml` (re-fetched only when the source's `editingInfo.dataLastEditDate` or record count changed)

## Sources and provenance

| Component | Source | Item | Data last edit | Retrieved | Records | Checksum (sha-256 of payload) |
|---|---|---|---|---|---|---|
| - | https://calcofi.org/downloads/maps/CalCOFIStationOrder.csv | - | 2022-02-06T22:56:27Z | 2026-10-08T17:24:36Z | 113 | `c955a8abe8ff8962...` |

Machine-readable copy: [`provenance.json`](./provenance.json) (also in `collection.json` and the Parquet footer).

## Schema

| Column | Type | Description |
|---|---|---|
| place_id | string | prefixed, unique id (e.g. BOEM:OCS-P 0561, BOEM:PA:SOC, AOA:N1-A) |
| authority | string | organisation that publishes the boundary (BOEM, AOA = NOAA Aquaculture Opportunity Areas) |
| source_id | string | the source layer's own identifier for the feature (lease number, planning-area code, OBJECTID, AOA code) |
| name | string | human-readable name |
| place_type | string | kind of place: lease, planning_area or aoa |
| geom_type | string | geometry type (Point) |
| status | string | lifecycle status (e.g. active, cancelled, relinquished, settlement_pending, rescinded, draft_proposed, identified) |
| status_source | string | URL that documents the status |
| status_date | string | ISO date (or year) the status took effect or was last confirmed; may be empty |
| source_url | string | the service endpoint or download the boundary was fetched from |
| source_date | date32[day] | date of the source's last data edit (retrieval date when the source serves none) |
| retrieved | timestamp[ms, tz=UTC] | UTC time the boundary was fetched |
| version | string | collection release version this row was built for |
| license | string | SPDX identifier of the licence (CC-PDDC = public-domain U.S. government work) |
| attribution | string | credit line to show with the data |
| line_id | string | zero-padded CalCOFI line number, e.g. 093.3 |
| station_id | string | zero-padded CalCOFI station number along the line, e.g. 030.0 |
| station_key | string | line and station as 'LLL.L SSS.S', the form of the CalCOFI database site_key |
| line | double | CalCOFI line number (numeric) |
| station | double | CalCOFI station number along the line (numeric) |
| order_occ | int64 | CalCOFI's order of occupation of the station on a cruise |
| depth_est_m | int64 | estimated bottom depth in metres (empty where CalCOFI lists none) |
| sta_type | string | ROS (rosette) or SCCOOS (inshore ~20 m station) |
| in_core_75 | bool | true when the station is in the 75-station standard pattern (CalCOFI_75StandardStations.kml) |
| sampling_pattern | string | core_75 (standard 75-station pattern) or extended (the other 38 of the 113-station pattern) |
| bbox | struct<xmin: double, ymin: double, xmax: double, ymax: double> | GeoParquet bbox-covering column (xmin, ymin, xmax, ymax) |
| geometry | binary | POINT, EPSG:4326, split at +/-180 antimeridian |

Native attributes keep the source layer's names; a native name equal to a gazetteer column ignoring case
(`NAME` vs `name`) is suffixed `_src`.

## Files

| File | Size | Checksum |
|---|---|---|
| places | 32 kB | `122066cd7735b352...` |
| places-tiles | 100 kB | `12209c34d699b755...` |
| styles/default | 1 kB | `122041156225d917...` |
| provenance | 1 kB | `1220b50dd815df5c...` |
| documentation | 0 kB | `1220e3b0c44298fc...` |

## Quick start

```sql
SELECT place_id, name, status, status_date
FROM read_parquet('https://storage.oceanmetrics.io/gazetteer/calcofi_stations/places.parquet')
ORDER BY place_id;
```

## Changes

- **1.0.1**: first release.
