Skip to content

Parquet Output

The processor
Processor Lambda container — runs PyTECGg calibration per SQS message; adopted when a Batch on Fargate parallel-execution quota increase was rejected. Image from `ghcr.io/platformfuzz/tec-processor-image` mirrored to ECR.
writes one or more output formats per input file. All enabled formats share the same partition path and differ only by file extension.

FormatExtensionEnabled by default

Parquet
Columnar file format — primary processed output for efficient Query API range scans; JSON is a fallback when `pyarrow` is unavailable.
(Snappy)

.parquet

Yes (SAVE_PARQUET=true)

CSV.csv

Yes (SAVE_CSV=true)

JSON (array of rows).json

Yes (SAVE_JSON=true)

Static plot.pngNo
Interactive plot.htmlNo

The Query API
Query API Lambda (`services/query-api/`) — serves `/catalog` and `/query` from processed S3 keys and Parquet/JSON files.
reads .parquet files when pyarrow is available in the Lambda
AWS Lambda — serverless compute for ingest-sync, query-api, reprocess-api, and the processor container image.
runtime. It falls back to .json when pyarrow is absent. Both formats contain the same 11-column schema.

All data formats (Parquet, CSV, JSON) contain 11 fields:

ColumnTypeDescription
epochTimestampObservation epoch in UTC
svString

Satellite vehicle identifier (e.g., G01, R05)

id_arcInt32Arc identifier for continuous signal tracking
lat_ippFloat64 / null

IPP
Ionospheric Pierce Point — geographic location where the satellite signal intersects the ionospheric shell; plotted on the portal IPP map.
latitude in degrees

lon_ippFloat64 / nullIPP longitude in degrees
aziFloat64Azimuth in degrees
eleFloat64Elevation angle in degrees
biasFloat64Receiver bias estimate
stecFloat64

Slant TEC
Total Electron Content — integrated electron density along the GNSS signal path; primary calibrated output of the processor.
in TECU

vtecFloat64Vertical TEC in TECU
veqFloat64Equivalent vertical TEC

The processor may emit NaN for fields such as lat_ipp and lon_ipp in edge cases. The Query API sanitizes these to JSON null before returning them, ensuring spec-compliant responses for browser clients.

{
"epoch": "2024-05-29T01:00:00Z",
"sv": "G01",
"id_arc": 1,
"lat_ipp": -36.85,
"lon_ipp": 174.76,
"azi": 45.2,
"ele": 30.1,
"bias": 0.5,
"stec": 12.3,
"vtec": 8.7,
"veq": 9.1
}
Terminal window
aws s3 ls "s3://$(terraform -chdir=terraform output -raw bucket_name)/processed/tec/" --recursive | grep parquet