FCC Data Dictionary
Data dictionary for the geo team covering FCC station data and coverage contour polygons.
Data Sources
1. Station Database (DuckDB)
| Property |
Value |
| Location |
./db/cbradio.db |
| Format |
DuckDB database |
| Table |
station |
| Records |
1,908 stations |
| FCC Coverage |
1,563 stations (81.9%) |
2. Coverage Contour Files
| Property |
Value |
| Location |
./fcc/data/contours/ |
| Format |
GeoJSON (RFC 7946) |
| Naming |
{CALLSIGN}.json (e.g., WBCH_AM.json) |
| Projection |
WGS84 (EPSG:4326) |
| Geometry |
Polygon (closed ring, 361 points) |
Database Schema
Station Table - FCC Columns
| Column |
Type |
Description |
Example |
fcc_facility_id |
VARCHAR |
Unique FCC facility identifier |
"55492" |
fcc_frequency |
DECIMAL(10,3) |
Frequency in kHz (AM) or MHz (FM) |
1230.000 |
fcc_power_kw |
DECIMAL(10,3) |
Transmit power in kilowatts |
1.000 |
fcc_antenna_lat |
DECIMAL(10,6) |
Antenna latitude (WGS84) |
35.163611 |
fcc_antenna_lon |
DECIMAL(10,6) |
Antenna longitude (WGS84) |
-114.070000 |
fcc_antenna_height_m |
DECIMAL(10,2) |
Antenna height above mean sea level (meters) |
429.00 |
fcc_station_class |
VARCHAR |
FCC station classification |
"C" |
fcc_hours_operation |
VARCHAR |
Hours of operation code |
"D" |
fcc_ant_mode |
VARCHAR |
Antenna mode |
"ND1" |
fcc_tower_count |
INTEGER |
Number of antenna towers |
1 |
fcc_service_contour |
VARCHAR |
Contour filename (if available) |
"WBCH_AM.json" |
fcc_last_synced |
TIMESTAMP |
Last FCC sync timestamp |
2024-12-24 19:29:00 |
Station Table - Other Useful Columns
| Column |
Type |
Description |
id |
VARCHAR |
Internal UUID primary key |
callsign |
VARCHAR |
Station callsign (e.g., WBCH-AM) |
state |
VARCHAR |
Two-letter state code |
nielsen_dma |
VARCHAR |
Nielsen DMA market name |
owner |
VARCHAR |
Station owner/licensee |
Enumerated Values
Station Class (fcc_station_class)
| Class |
Description |
Typical Power |
A |
Clear channel (AM) |
10-50 kW |
B |
Regional (AM/FM) |
5-50 kW |
C |
Local (AM) / High-power (FM) |
0.25-100 kW |
C0 |
FM subclass |
100 kW |
C1 |
FM subclass |
100 kW |
C2 |
FM subclass |
50 kW |
C3 |
FM subclass |
25 kW |
D |
Daytime only (AM) / Low-power (FM) |
0.25-10 kW |
Hours of Operation (fcc_hours_operation)
| Code |
Description |
U |
Unlimited (24/7) |
D |
Daytime only |
N |
Nighttime only |
Antenna Mode (fcc_ant_mode)
| Code |
Description |
ND |
Non-directional |
ND1 |
Non-directional (single pattern) |
DA |
Directional antenna |
DA1 |
Directional (single pattern) |
DA2 |
Directional (day/night patterns) |
DA-N |
Directional nighttime |
DA-D |
Directional daytime |
GeoJSON Contour Schema
File Structure
{
"type": "Feature",
"properties": {
"callsign": "WBCH",
"facility_id": 3990,
"service_type": "am",
"frequency": 1220.0,
"power_kw": 0.25,
"station_class": null,
"antenna_lat": 42.626111,
"antenna_lon": -85.278056
},
"geometry": {
"type": "Polygon",
"coordinates": [
[
[-85.278056, 43.031705],
[-85.268372, 43.031643],
...
[-85.278056, 43.031705]
]
]
}
}
Properties
| Property |
Type |
Description |
callsign |
string |
Station callsign (without -AM/-FM suffix) |
facility_id |
integer |
FCC facility identifier |
service_type |
string |
"am" or "fm" |
frequency |
number |
Frequency in kHz (AM) or MHz (FM) |
power_kw |
number |
Transmit power in kilowatts |
station_class |
string|null |
FCC station class |
antenna_lat |
number |
Antenna latitude |
antenna_lon |
number |
Antenna longitude |
Geometry
- Type: Polygon
- Coordinates: Array of
[longitude, latitude] pairs (GeoJSON order)
- Points: 361 (360° coverage at 1° intervals, plus closing point)
- Ring: Closed (first point = last point)
- CRS: WGS84 (EPSG:4326)
Sample Queries
Get all stations with coordinates
SELECT
callsign,
fcc_facility_id,
fcc_antenna_lat AS lat,
fcc_antenna_lon AS lon,
fcc_power_kw AS power,
fcc_station_class AS class
FROM station
WHERE fcc_antenna_lat IS NOT NULL
ORDER BY fcc_power_kw DESC;
Get stations with contour files
SELECT
callsign,
fcc_service_contour AS contour_file,
fcc_power_kw,
state
FROM station
WHERE fcc_service_contour IS NOT NULL;
Export as GeoJSON points
SELECT json_object(
'type', 'Feature',
'properties', json_object(
'callsign', callsign,
'facility_id', fcc_facility_id,
'power_kw', fcc_power_kw,
'class', fcc_station_class
),
'geometry', json_object(
'type', 'Point',
'coordinates', json_array(fcc_antenna_lon, fcc_antenna_lat)
)
)
FROM station
WHERE fcc_antenna_lat IS NOT NULL;
Data Statistics
| Metric |
Value |
| Total stations |
1,908 |
| Stations with FCC data |
1,563 (81.9%) |
| Station classes |
9 distinct values |
| Power range |
0.065 - 100 kW |
| Average power |
11.59 kW |
| Contour file size |
~23 KB each |
Generating Contour Files
To regenerate all contour GeoJSON files:
cd /home/bisenbek/projects/nominate/cbradio
source ~/.pyenv/versions/nominates/bin/activate
python -m fcc.sync --all --force
Note: This takes ~30 minutes due to FCC API rate limiting (1 req/sec).
API Source
All FCC data is sourced from:
FCC Contours API
https://geo.fcc.gov/api/contours/entity.json
Parameters:
- callsign - Station callsign (e.g., WBCH)
- serviceType - am or fm
For questions about this data, contact the data engineering team.
Last updated: December 2024