Skip to main content
reference 3 min read

SeeYou CUP waypoint & task format

The SeeYou .cup format we-fly reads and writes — CSV waypoint columns, coordinate and unit grammar, the task section, observation-zone geometry, and an interactive spec you can test in the browser.

What this is

CUP is the comma-separated waypoint-and-task format produced by SeeYou and SeeYou Navigator (Naviter), and read by essentially every soaring and free-flight instrument. we-fly reads it in two places — waypoint collections in the XC planner, and competition tasks in the task library — and writes it back out when you export a waypoint collection. If you produce or consume .cup files for we-fly, this is the reference.

Interactive specification

We maintain a self-contained, interactive spec you can read and test right in the browser:

SeeYou CUP format — interactive specification

It includes a live file inspector (paste CUP, see every line decoded — coordinates converted, styles named, task columns labelled with their role and every observation zone resolved to a shape), a filterable field explorer, an observation-zone visualiser you can drag, and a coordinate converter — no upload, nothing leaves the page.

The format in one screen

  • One file, two halves. CSV waypoints on top, then a literal -----Related Tasks----- line, then tasks that reference those waypoints by name. Most .cup files have no task section at all — they are pure waypoint databases.
  • Header-driven. Line 1 names the columns. Column order is explicitly arbitrary and any column after style may be dropped, so parse the header rather than assuming positions.
  • Coordinates are degrees + decimal minutes, fixed width, WGS-84: 5107.830N = 51° 07.830′ = 51.1305°. Not decimal degrees, and the decimals are minutes, not seconds.
  • Units default to metres. elev takes m/ft; radii and runway lengths take m/nm/ml; units may be mixed freely within one file.
GroupFields
Identityname (unique, required) · code · country · desc · userdata · pics
Positionlat · lon · elev · style (0–21, incl. 20 PG take-off / 21 PG landing)
Landable onlyrwdir · rwlen · rwwidth · freq
TaskOptions,… · ObsZone=… · Point=… · STARTS=…

Observation zones — where the spec stops

Naviter's document defines the observation-zone keys but not the shapes they produce, and never says which task column ObsZone=0 addresses beyond "0 = Start". Both gaps are filled from XCSoar's TaskFileSeeYou.cpp, the implementation instruments interoperate with. Three consequences are worth knowing before you write a parser:

  • A1 is a half-angle. A full cylinder is A1=180, never A1=360.
  • R1 on a line zone is a half-width. A 5 km start gate is R1=2500m,Line=1.
  • ObsZone=i addresses task-line column i + 2 — the description is column 0 and the takeoff is column 1, so zone 0 is the second waypoint. Many free-flight producers omit the takeoff column entirely and index from the first waypoint; there is no flag for it, so compare the highest zone index against the column count rather than assuming either convention.

All three fail silently: they produce a task that looks plausible and is wrong.

Compatibility notes

CUP has no speed section — no SSS/ESS and no start-gate interval beyond NoStart — so a task imported from CUP is route + goal. Legacy files are Windows-1252 rather than UTF-8, and a large body of older files uses an 11-column header with no rwwidth, which positional readers silently mistake for a runway width when it is really the frequency.

Sources

The interactive spec reconciles the Naviter / SeeYou CUP spec v1.2.0 (authoritative for waypoints and for task syntax), XCSoar's TaskFileSeeYou.cpp (our reference for zone geometry and indexing), and aerofiles as a second implementation.