Skip to content

Nav Waypoints Dataset

Marco Supino edited this page Aug 22, 2026 · 11 revisions

🇮🇱 עברית

Navigation-waypoint datasets

Reporting points are projected from the layer's route graph. navDataPrefix selects the graph:

  • docs/data/cvfr-route-graph.json
  • docs/data/lsa-route-graph.json
  • docs/data/heli-route-graph.json

navWaypointsFromGraph() in docs/app/route-graph-shapes.js builds the old shape from nodes, so consumers still see {waypoints: [...]} for CVFR and {points: [...]} for LSA and helicopter. Records still use {name, en, he, lat, lng, report}; report distinguishes mandatory and on-request reporting points.

The CVFR graph holds 195 total nodes: 173 waypoint-kind nodes and 22 minimal airfield endpoint nodes. Of the waypoint nodes, 172 are CVFR-layer members and 170 project as active reporting points. Two are excluded by active: false — ZRANA (רעננה מרכז) and RANNO (רעננה צפון) are locality labels the chart-image rebuild misread as mandatory points: they carry the plain locality circle, not the reporting-point triangle, and no route segment either way. They are kept rather than deleted so the coordinates and both names survive if a later edition promotes them.

active is absent-means-true, deliberately: a missing or mistyped flag can only ever show a locality label, never hide a published reporting point.

A node may also carry hotspot, forcing a point on or off the junction list. Without it the app derives the answer from the graph: a waypoint-kind node with more than two distinct two-way neighbours is a junction (one-way and blocked segments do not count). An explicit value always wins, false included — a point that measures as a junction but does not behave like one can be turned off without touching its segments. ?hotspots=1 rings the whole set on the map; see Hidden tools.

A node may also carry noSegmentsReason — a published point that legitimately has no segment in this graph, such as one on a military route. Those look identical to a locality label in the data, so the reason is required: without it, an obvious "remove the nodes nothing routes through" pass would delete real reporting points.

The CVFR source of truth is the published IAA CVFR chart waypoint reference table (page 113, 2025 edition). The graph retains 22 minimal airfield nodes so route edges remain connected. Rich ARP, runway, plate, and frequency metadata lives in docs/data/airfields.json and is excluded from the waypoint projection.

Verify the current count from the repository root:

node -e 'const g=JSON.parse(require("fs").readFileSync("docs/data/cvfr-route-graph.json","utf8"));
const n=Object.values(g.nodes), c=n.filter(x=>x.kind==="waypoint"&&x.layers.includes("cvfr"));
console.log("total",n.length,"| CVFR members",c.length,"| active",c.filter(x=>x.active!==false).length,"| airfields",n.filter(x=>x.kind==="airfield").length)'

Both counts are pinned in tests/route-graph.spec.js (layerNodes and activeNodes), so an accidental deletion and an accidental flip of the flag fail with different numbers.

When refreshing data, preserve the current wrapper/schema, compare code and coordinate changes manually, and run the waypoint/dataset Playwright suites. Open an issue and submit the change through a feature-branch PR to dev.

Deploy rewrites data/*.json?v= cache markers to the commit SHA; do not bump an individual dataset URL manually.

NavAid · 🇮🇱 עברית

For pilots

For developers


🇮🇱 עברית

לטייסים

למפתחים


🌐 Live 🧪 Staging 📦 Repo 💡 Ideas / bugs

Clone this wiki locally