Initial
This commit is contained in:
commit
bdc8bb1567
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
node_modules/
|
||||||
672
DFD Paths and what to do.md
Normal file
672
DFD Paths and what to do.md
Normal file
@ -0,0 +1,672 @@
|
|||||||
|
# References
|
||||||
|
|
||||||
|
- https://www.faa.gov/sites/faa.gov/files/regulations_policies/handbooks_manuals/aviation/instrument_procedures_handbook/FAA-H-8083-16B_Chapter_6.pdf
|
||||||
|
- https://developers.navigraph.com/docs/navigation-data/dfd-data-format#procedure-leg-data-fields-minimum-requirements
|
||||||
|
|
||||||
|
|
||||||
|
# Terminators
|
||||||
|
|
||||||
|
## Arc to Fix (AF)
|
||||||
|
|
||||||
|
### Example
|
||||||
|
|
||||||
|
LGAV BIBE1K SID (Cycle 2507, ID 10653)
|
||||||
|
|
||||||
|
### Minimum Required Fields
|
||||||
|
|
||||||
|
- `WptID`: FixIdentifier
|
||||||
|
- `TurnDir`: TurnDirection
|
||||||
|
- `NavID`: RecommendedNavaid
|
||||||
|
- `NavBear`: Theta (fix radial)
|
||||||
|
- `NavDist`: RHO
|
||||||
|
- `Course`: MagCourse (boundary radial)
|
||||||
|
|
||||||
|
### Instructions
|
||||||
|
|
||||||
|
- From preceding fix, fly a smooth arc to the fix identified by (`WptID`, `WptLat`, `WptLon`) *or*
|
||||||
|
(`NavID`, `NavLat`, `NavLon`, `NavDist`, `NavBear`).
|
||||||
|
- Arc radius shall be `NavDist`.
|
||||||
|
- Arc center shall be navaid identified by `NavID`, `NavLat`, `NavLon`.
|
||||||
|
- `Course` shall be the boundary radial on which the arc begins (preceding fix lies hereupon).
|
||||||
|
- Arc and turn shall be flown in direction specified by `TurnDir`.
|
||||||
|
|
||||||
|
### Units
|
||||||
|
|
||||||
|
- `NavBear` and `Course` are in **degrees magnetic**.
|
||||||
|
- `NavDist` is in **nmi**. `NavDist` is geodesic (great-circle).
|
||||||
|
|
||||||
|
### Notes
|
||||||
|
|
||||||
|
While similar to an RF, the center point is coded differently.
|
||||||
|
|
||||||
|
|
||||||
|
## Course to Altitude (CA)
|
||||||
|
|
||||||
|
### Example
|
||||||
|
|
||||||
|
LGAV BIBE1L SID (Cycle 2507, ID 10654)
|
||||||
|
|
||||||
|
### Minimum Required Fields
|
||||||
|
|
||||||
|
- `Course`: MagCourse
|
||||||
|
- `Alt`: Alt1+ (at or above)
|
||||||
|
|
||||||
|
### Instructions
|
||||||
|
|
||||||
|
- From preceding fix, fly along `Course` until reaching `Alt`.
|
||||||
|
|
||||||
|
### Units
|
||||||
|
|
||||||
|
- `Course` is in **degrees magnetic**.
|
||||||
|
- `Alt` is in **ft**, but doubles as an FMS constraint.
|
||||||
|
|
||||||
|
### Notes
|
||||||
|
|
||||||
|
The leg terminates upon reaching `Alt`.
|
||||||
|
This intercept point then becomes the origin fix of the succeeding leg.
|
||||||
|
|
||||||
|
|
||||||
|
## Course to DME Distance (CD)
|
||||||
|
|
||||||
|
### Example
|
||||||
|
|
||||||
|
LGAV BIBE2F SID (Cycle 2507, ID 10657)
|
||||||
|
|
||||||
|
### Minimum Required Fields
|
||||||
|
|
||||||
|
- `NavID`: RecommendedNavaid
|
||||||
|
- `Course`: MagCourse
|
||||||
|
- `Distance`: RouteDISTANCEHoldingTime (DME distance)
|
||||||
|
|
||||||
|
### Instructions
|
||||||
|
|
||||||
|
- From preceding fix, fly along `Course` until reaching `Distance` from the navaid identified by
|
||||||
|
`NavID`.
|
||||||
|
|
||||||
|
### Units
|
||||||
|
|
||||||
|
- `Course` is in **degrees magnetic**.
|
||||||
|
- `Distance` is in **nmi**. `Distance` is slant **not** geodesic.
|
||||||
|
|
||||||
|
### Notes
|
||||||
|
|
||||||
|
The leg terminates upon reaching `Distance`.
|
||||||
|
This intercept point then becomes the origin fix of the succeeding leg.
|
||||||
|
|
||||||
|
|
||||||
|
## Course to Fix (CF)
|
||||||
|
|
||||||
|
### Example
|
||||||
|
|
||||||
|
LGAV BIBE2F SID (Cycle 2507, ID 10657)
|
||||||
|
|
||||||
|
### Minimum Required Fields
|
||||||
|
|
||||||
|
- `WptID`: FixIdentifier
|
||||||
|
- `NavID`: RecommendedNavaid
|
||||||
|
- `NavBear`: Theta
|
||||||
|
- `NavDist`: RHO
|
||||||
|
- `Course`: MagCourse
|
||||||
|
- `Distance`: RouteDISTANCEHoldingTime (Path length)
|
||||||
|
|
||||||
|
### Instructions
|
||||||
|
|
||||||
|
- From preceding fix, fly `Course` to the fix identified by (`WptID`, `WptLat`, `WptLon`) *or*
|
||||||
|
(`NavID`, `NavLat`, `NavLon`, `NavDist`, `NavBear`).
|
||||||
|
|
||||||
|
### Units
|
||||||
|
|
||||||
|
- `NavBear` and `Course` are in **degrees magnetic**.
|
||||||
|
- `NavDist` and `Distance` are in **nmi**. `NavDist` and `Distance` are geodesic.
|
||||||
|
|
||||||
|
### Notes
|
||||||
|
|
||||||
|
While this might feel like a TF, it isn't.
|
||||||
|
A TF does not specify an exact course to be flown, relying on the computers to figure out the
|
||||||
|
great-circle between the two fixes.
|
||||||
|
|
||||||
|
My guess is, that a CF results in the turn from the preceding fix to be *shifted* so as to
|
||||||
|
ensure the outbound course to the specified fix is equal to the coded course.
|
||||||
|
|
||||||
|
Additionally, if a TurnDir is specified, if a large turn is required to fly `Course`, the turn
|
||||||
|
shall be `TurnDir`.
|
||||||
|
**This is a major difference to TF, these *never* produce such turns.**
|
||||||
|
|
||||||
|
|
||||||
|
## Course to Intercept (CI)
|
||||||
|
|
||||||
|
### Example
|
||||||
|
|
||||||
|
LGAV BIBE1L SID (Cycle 2507, ID 10654)
|
||||||
|
|
||||||
|
### Minimum Required Fields
|
||||||
|
|
||||||
|
- `Course`: MagCourse
|
||||||
|
|
||||||
|
### Instructions
|
||||||
|
|
||||||
|
- From preceding fix, fly `Course` until interception of course of the succeeding leg.
|
||||||
|
|
||||||
|
### Units
|
||||||
|
|
||||||
|
- `Course` is in **degrees magnetic**.
|
||||||
|
|
||||||
|
### Notes
|
||||||
|
|
||||||
|
This needs to look into the succeeding leg in order to calculate the intercept point.
|
||||||
|
This intercept point then becomes the origin fix of the succeeding leg.
|
||||||
|
|
||||||
|
|
||||||
|
## Course to Radial Termination (CR)
|
||||||
|
|
||||||
|
### Example
|
||||||
|
|
||||||
|
LGAV KOR1D SID (Cycle 2507, ID 10679)
|
||||||
|
|
||||||
|
### Minimum Required Fields
|
||||||
|
|
||||||
|
- `NavID`: RecommendedNavaid
|
||||||
|
- `NavBear`: Theta
|
||||||
|
- `Course`: MagCourse
|
||||||
|
|
||||||
|
### Instructions
|
||||||
|
|
||||||
|
- From preceding fix, fly `Course` until interception of `NavBear` radial *from* the navaid
|
||||||
|
identified by `NavID`.
|
||||||
|
|
||||||
|
### Units
|
||||||
|
|
||||||
|
- `NavBear` and `Course` are in **degrees magnetic**.
|
||||||
|
|
||||||
|
### Notes
|
||||||
|
|
||||||
|
The leg terminates at the intercept point.
|
||||||
|
This intercept point then becomes the origin fix of the succeeding leg.
|
||||||
|
|
||||||
|
|
||||||
|
## Direct to Fix (DF)
|
||||||
|
|
||||||
|
### Example
|
||||||
|
|
||||||
|
LGAV KOR1D SID (Cycle 2507, ID 10679)
|
||||||
|
|
||||||
|
### Minimum Required Fields
|
||||||
|
|
||||||
|
- `WptID`: FixIdentifier
|
||||||
|
- `IsFlyOver`: Flyover
|
||||||
|
|
||||||
|
### Instructions
|
||||||
|
|
||||||
|
- From present position, fly direct to fix identified by `WptID`
|
||||||
|
|
||||||
|
### Units
|
||||||
|
|
||||||
|
- `IsFlyOver`: Boolean indicating if fix is a mandatory fly over.
|
||||||
|
|
||||||
|
|
||||||
|
## Fix to Altitude (FA)
|
||||||
|
|
||||||
|
### Example
|
||||||
|
|
||||||
|
LGAV BIBE2F SID (Cycle 2507, ID 10657)
|
||||||
|
|
||||||
|
### Minimum Required Fields
|
||||||
|
|
||||||
|
- `WptID`: FixIdentifier
|
||||||
|
- `NavID`: RecommendedNavaid
|
||||||
|
- `NavBear`: Theta
|
||||||
|
- `NavDist`: RHO
|
||||||
|
- `Course`: MagCourse
|
||||||
|
- `Alt`: Alt1+ (at or above)
|
||||||
|
|
||||||
|
### Instructions
|
||||||
|
|
||||||
|
- From the fix identified by (`WptID`, `WptLat`, `WptLon`) *or*
|
||||||
|
(`NavID`, `NavLat`, `NavLon`, `NavDist`, `NavBear`), fly `Course` until reaching `Alt`.
|
||||||
|
|
||||||
|
### Units
|
||||||
|
|
||||||
|
- `NavBear` and `Course` are in **degrees magnetic**.
|
||||||
|
- `NavDist` is in **nmi**. `NavDist` is geodesic.
|
||||||
|
- `Alt` is in **ft**, but doubles as an FMS constraint.
|
||||||
|
|
||||||
|
### Notes
|
||||||
|
|
||||||
|
The leg terminates upon reaching `Alt`.
|
||||||
|
This intercept point then becomes the origin fix of the succeeding leg.
|
||||||
|
|
||||||
|
|
||||||
|
## Track from Fix for Distance (FC)
|
||||||
|
|
||||||
|
### Example
|
||||||
|
|
||||||
|
LIED CAR6F SID (Cycle 2507, ID 11798)
|
||||||
|
|
||||||
|
### Minimum Required Fields
|
||||||
|
|
||||||
|
- `WptID`: FixIdentifier
|
||||||
|
- `IsFlyOver`: FlyOver
|
||||||
|
- `NavID`: RecommendedNavaid
|
||||||
|
- `NavBear`: Theta
|
||||||
|
- `NavDist`: RHO
|
||||||
|
- `Course`: MagCourse
|
||||||
|
- `Distance`: RouteDISTANCEHoldingTime (Path length)
|
||||||
|
|
||||||
|
### Instructions
|
||||||
|
|
||||||
|
- From the fix identified by (`WptID`, `WptLat`, `WptLon`) *or*
|
||||||
|
(`NavID`, `NavLat`, `NavLon`, `NavDist`, `NavBear`), fly for `Distance`.
|
||||||
|
|
||||||
|
### Units
|
||||||
|
|
||||||
|
- `NavBear` and `Course` are in **degrees magnetic**.
|
||||||
|
- `NavDist` and `Distance` are in **nmi**. `NavDist` and `Distance` are geodesic.
|
||||||
|
|
||||||
|
### Notes
|
||||||
|
|
||||||
|
The leg terminates upon reaching `Distance`.
|
||||||
|
This intercept point then becomes the origin fix of the succeeding leg.
|
||||||
|
|
||||||
|
|
||||||
|
## Track from Fix to DME Distance (FD)
|
||||||
|
|
||||||
|
### Example
|
||||||
|
|
||||||
|
LGAV BIBE2T SID (Cycle 2507, ID 10659)
|
||||||
|
|
||||||
|
### Minimum Required Fields
|
||||||
|
|
||||||
|
- `WptID`: FixIdentifier
|
||||||
|
- `IsFlyOver`: FlyOver
|
||||||
|
- `NavID`: RecommendedNavaid
|
||||||
|
- `NavBear`: Theta
|
||||||
|
- `NavDist`: RHO
|
||||||
|
- `Course`: MagCourse
|
||||||
|
- `Distance`: RouteDISTANCEHoldingTime (DME distance)
|
||||||
|
|
||||||
|
### Instructions
|
||||||
|
|
||||||
|
- From the fix identified by (`WptID`, `WptLat`, `WptLon`) *or*
|
||||||
|
(`NavID`, `NavLat`, `NavLon`, `NavDist`, `NavBear`), fly `Course` until
|
||||||
|
reaching `Distance` from navaid identified by `NavID`.
|
||||||
|
|
||||||
|
### Units
|
||||||
|
|
||||||
|
- `NavBear` and `Course` are in **degrees magnetic**.
|
||||||
|
- `NavDist` and `Distance` are in **nmi**. `NavDist` is geodesic, `Distance` is slant.
|
||||||
|
- `IsFlyOver`: Boolean indicating if fix is a mandatory fly over.
|
||||||
|
|
||||||
|
|
||||||
|
## From Fix to Manual termination (FM)
|
||||||
|
|
||||||
|
### Example
|
||||||
|
|
||||||
|
LFPV PB2V SID (Cycle 2507, ID 10395)
|
||||||
|
|
||||||
|
### Minimum Required Fields
|
||||||
|
|
||||||
|
- `WptID`: FixIdentifier
|
||||||
|
- `NavID`: RecommendedNavaid
|
||||||
|
- `NavBear`: Theta
|
||||||
|
- `NavDist`: RHO
|
||||||
|
- `Course`: MagCourse
|
||||||
|
|
||||||
|
### Instructions
|
||||||
|
|
||||||
|
- From the fix identified by (`WptID`, `WptLat`, `WptLon`) *or*
|
||||||
|
(`NavID`, `NavLat`, `NavLon`, `NavDist`, `NavBear`), fly `Course` indefinitely.
|
||||||
|
|
||||||
|
### Units
|
||||||
|
|
||||||
|
- `NavBear` and `Course` are in **degrees magnetic**.
|
||||||
|
- `NavDist` is in **nmi**. `NavDist` is geodesic.
|
||||||
|
|
||||||
|
|
||||||
|
## Holding mandatory (HA)
|
||||||
|
|
||||||
|
### Example
|
||||||
|
|
||||||
|
LOWG GRZ4X SID (Cycle 2507, ID 12765)
|
||||||
|
|
||||||
|
### Minimum Required Fields
|
||||||
|
|
||||||
|
- `WptID`: FixIdentifier
|
||||||
|
- `TurnDir`: TurnDirection
|
||||||
|
- `Course`: MagCourse
|
||||||
|
- `Distance`: RouteTIMEDistanceHoldingTime
|
||||||
|
- `Alt`: Alt1+ (at or above)
|
||||||
|
|
||||||
|
### Instructions
|
||||||
|
|
||||||
|
- At fix identified by (`WptID`, `WptLat`, `WptLon`), enter `TurnDir` direction holding pattern.
|
||||||
|
- `Course` shall be the inbound course of the holding.
|
||||||
|
- `Distance` shall be the holding leg distance *or* time
|
||||||
|
- `Alt` shall be the altitude at which the holding is exited
|
||||||
|
|
||||||
|
### Units
|
||||||
|
|
||||||
|
- `Course` is in **degrees magnetic**.
|
||||||
|
- `Distance` is in **nmi** *or* **min**. `Distance` is geodesic if in nmi.
|
||||||
|
- `Alt` is in **ft**, but doubles as an FMS constraint.
|
||||||
|
|
||||||
|
### Notes
|
||||||
|
|
||||||
|
As per the docs, there should be a field indicating whether `Distance` is distance or time.
|
||||||
|
I have not found the field or anything that alludes to such.
|
||||||
|
Conversely, as per the FAA, the altitude should be the exit point of the leg.
|
||||||
|
This goes against the textual description of the example.
|
||||||
|
|
||||||
|
My guess is that the holding is at all times executed at leat once, even if the entry to it is also
|
||||||
|
the exit altitude.
|
||||||
|
As for the missing time/distance decider field, assume it to be distance at all times.
|
||||||
|
|
||||||
|
|
||||||
|
## Holding in lieu of Procedure Turn (HF)
|
||||||
|
|
||||||
|
### Example
|
||||||
|
|
||||||
|
FAWB VDM29 APP (Cycle 2507, ID 67794)
|
||||||
|
|
||||||
|
### Minimum Required Fields
|
||||||
|
|
||||||
|
- `WptID`: FixIdentifier
|
||||||
|
- `TurnDir`: TurnDirection
|
||||||
|
- `Course`: MagCourse
|
||||||
|
- `Distance`: RouteTIMEDistanceHoldingTime
|
||||||
|
|
||||||
|
### Instructions
|
||||||
|
|
||||||
|
- At fix identified by (`WptID`, `WptLat`, `WptLon`), enter `TurnDir` direction holding pattern.
|
||||||
|
- `Course` shall be the inbound course of the holding.
|
||||||
|
- `Distance` shall be the holding leg distance *or* time
|
||||||
|
- Holding shall be exited after exactly one turn
|
||||||
|
|
||||||
|
### Units
|
||||||
|
|
||||||
|
- `Course` is in **degrees magnetic**.
|
||||||
|
- `Distance` is in **nmi** *or* **min**. `Distance` is geodesic if in nmi.
|
||||||
|
|
||||||
|
### Notes
|
||||||
|
|
||||||
|
As per the docs, there should be a field indicating whether `Distance` is distance or time.
|
||||||
|
I have not found the field or anything that alludes to such.
|
||||||
|
|
||||||
|
My guess is that `Distance` always is a distance. This would match with the example.
|
||||||
|
|
||||||
|
The Leg terminates after the hold is exited ath the hold entry fix.
|
||||||
|
|
||||||
|
|
||||||
|
## Holding mandatory (HM)
|
||||||
|
|
||||||
|
### Example
|
||||||
|
|
||||||
|
FAWB VDM29 APP (Cycle 2507, ID 67794), Missed approach procedure
|
||||||
|
|
||||||
|
### Minimum Required Fields
|
||||||
|
|
||||||
|
- `WptID`: FixIdentifier
|
||||||
|
- `TurnDir`: TurnDirection
|
||||||
|
- `Course`: MagCourse
|
||||||
|
- `Distance`: RouteTIMEDistanceHoldingTime
|
||||||
|
|
||||||
|
### Instructions
|
||||||
|
|
||||||
|
- At fix identified by (`WptID`, `WptLat`, `WptLon`), enter `TurnDir` direction holding pattern.
|
||||||
|
- `Course` shall be the inbound course of the holding.
|
||||||
|
- `Distance` shall be the holding leg distance *or* time
|
||||||
|
- Holding shall be indefinite
|
||||||
|
|
||||||
|
### Units
|
||||||
|
|
||||||
|
- `Course` is in **degrees magnetic**.
|
||||||
|
- `Distance` is in **nmi** *or* **min**. `Distance` is geodesic if in nmi.
|
||||||
|
|
||||||
|
### Notes
|
||||||
|
|
||||||
|
As per the docs, there should be a field indicating whether `Distance` is distance or time.
|
||||||
|
I have not found the field or anything that alludes to such.
|
||||||
|
|
||||||
|
My guess as for the missing time/distance decider field, assume it to be distance at all times.
|
||||||
|
|
||||||
|
|
||||||
|
## Initial Fix (IF)
|
||||||
|
|
||||||
|
### Example
|
||||||
|
|
||||||
|
FAWB VDM29 APP (Cycle 2507, ID 67794), Missed approach procedure
|
||||||
|
|
||||||
|
### Minimum Required Fields
|
||||||
|
|
||||||
|
- `WptID`: FixIdentifier
|
||||||
|
|
||||||
|
### Instructions
|
||||||
|
|
||||||
|
- Start of a STAR or APP
|
||||||
|
|
||||||
|
### Notes
|
||||||
|
|
||||||
|
Nothing to be done except parse restrictions.
|
||||||
|
Servers as the entry point of a STAR/APP procedure.
|
||||||
|
|
||||||
|
|
||||||
|
## Procedure Turn (PI)
|
||||||
|
|
||||||
|
### Example
|
||||||
|
|
||||||
|
FAUP VDM35 APP (Cycle 2507, ID 67790)
|
||||||
|
|
||||||
|
### Minimum Required Fields
|
||||||
|
|
||||||
|
- `WptID`: FixIdentifier
|
||||||
|
- `TurnDir`: TurnDirection
|
||||||
|
- `NavID`: RecommendedNavaid
|
||||||
|
- `NavBear`: Theta
|
||||||
|
- `NavDist`: RHO
|
||||||
|
- `Course`: MagCourse
|
||||||
|
- `Distance`: RouteTimeDISTANCEHoldingTime (excursion distance from fix)
|
||||||
|
- `Alt`: Alt1
|
||||||
|
|
||||||
|
### Instructions
|
||||||
|
|
||||||
|
- From the fix identified by (`WptID`, `WptLat`, `WptLon`) *or*
|
||||||
|
(`NavID`, `NavLat`, `NavLon`, `NavDist`, `NavBear`), fly `Course` for `Distance`.
|
||||||
|
- Turn `TurnDir` until aligned with succeeding leg course.
|
||||||
|
- `Alt` shall be the altitude during the procedure.
|
||||||
|
|
||||||
|
### Units
|
||||||
|
|
||||||
|
- `NavBear`and `Course` are in **degrees magnetic**.
|
||||||
|
- `NavDist` and `Distance` are in **nmi**. `NavDist` and `Distance` are geodesic.
|
||||||
|
- `Alt` is in **ft**, but doubles as an FMS constraint.
|
||||||
|
|
||||||
|
### Notes
|
||||||
|
|
||||||
|
This needs to look into the succeeding leg in order to calculate the intercept point.
|
||||||
|
This intercept point then becomes the origin fix of the succeeding leg.
|
||||||
|
|
||||||
|
|
||||||
|
## Radius to Fix (RF)
|
||||||
|
|
||||||
|
### Example
|
||||||
|
|
||||||
|
LFRN GODA5R SID (cycle 2507, ID 10485)
|
||||||
|
|
||||||
|
### Minimum Required Fields
|
||||||
|
|
||||||
|
- `WptID`: FixIdentifier
|
||||||
|
- `TurnDir`: TurnDirection
|
||||||
|
- `NavBear`: Theta (inbound tangential track)
|
||||||
|
- `Course`: MagCourse
|
||||||
|
- `Distance`: RouteTimeDISTANCEHoldingTime (along track distance)
|
||||||
|
- `CenterID`: ArcCenter
|
||||||
|
|
||||||
|
### Instructions
|
||||||
|
|
||||||
|
- From preceding fix, fly a smooth arc to the fix identified by (`WptID`, `WptLat`, `WptLon`).
|
||||||
|
- Arc radius shall be `NavDist`.
|
||||||
|
- Arc center shall be navaid identified by `CenterID`, `CenterLat`, `CenterLon`.
|
||||||
|
- Arc and turn shall be flown in direction specified by `TurnDir`.
|
||||||
|
- `Distance` shall be the track miles along the curved path
|
||||||
|
|
||||||
|
### Units
|
||||||
|
|
||||||
|
- `NavBear` and `Course` are in **degrees magnetic**.
|
||||||
|
- `Distance` is in **nmi**. `Distance` is geodesic (great-circle).
|
||||||
|
|
||||||
|
### Notes
|
||||||
|
|
||||||
|
While similar to an AF, the center point is coded differently.
|
||||||
|
No radius is specified, but can be inferred based on center point, both endpoints and arc length
|
||||||
|
|
||||||
|
Example has `NavBear` set to `null`, significance of the inbound tangential track is unknown.
|
||||||
|
Same for the `Course`, which is set, but lacks any documentation.
|
||||||
|
|
||||||
|
|
||||||
|
## Tract to Fix (TF)
|
||||||
|
|
||||||
|
### Example
|
||||||
|
|
||||||
|
LFRN GODA5R SID (cycle 2507, ID 10485)
|
||||||
|
|
||||||
|
### Minimum Required Fields
|
||||||
|
|
||||||
|
- `WptID`: FixIdentifier
|
||||||
|
- `IsFlyOver`: Overfly
|
||||||
|
|
||||||
|
### Instructions
|
||||||
|
|
||||||
|
- From the preceding waypoint, fly direct to the waypoint identified by
|
||||||
|
`WptID`, `WptLat`, `WptLon`.
|
||||||
|
|
||||||
|
### Units
|
||||||
|
|
||||||
|
- `IsFlyOver`: Boolean indicating if fix is a mandatory fly over.
|
||||||
|
|
||||||
|
|
||||||
|
## Heading to Altitude (VA)
|
||||||
|
|
||||||
|
### Example
|
||||||
|
|
||||||
|
LFRK LGL4X SID (Cycle 2507, ID 10475)
|
||||||
|
|
||||||
|
### Minimum Required Fields
|
||||||
|
|
||||||
|
- `Course`: MagCourse (Heading)
|
||||||
|
- `Alt`: Alt1+ (at or above)
|
||||||
|
|
||||||
|
### Instructions
|
||||||
|
|
||||||
|
- From preceding fix, fly heading specified in `Course` until reaching `Alt`
|
||||||
|
- **No wind corrections shall be applied**
|
||||||
|
|
||||||
|
### Units
|
||||||
|
|
||||||
|
- `Course` is in **degrees magnetic**.
|
||||||
|
- `Alt` is in **ft**, but doubles as an FMS constraint.
|
||||||
|
|
||||||
|
### Notes
|
||||||
|
|
||||||
|
The leg terminates upon reaching `Alt`.
|
||||||
|
This intercept point then becomes the origin fix of the succeeding leg.
|
||||||
|
|
||||||
|
|
||||||
|
## Heading to DME Distance (VD)
|
||||||
|
|
||||||
|
### Example
|
||||||
|
|
||||||
|
LFRK NEVI4Y SID (Cycle 2507, ID 10482)
|
||||||
|
|
||||||
|
### Minimum Required Fields
|
||||||
|
|
||||||
|
- `NavID`: RecommendedNavaid
|
||||||
|
- `Course`: MagCourse (Heading)
|
||||||
|
- `Distance`: RouteTimeDISTANCEHoldingTime (DME distance)
|
||||||
|
|
||||||
|
### Instructions
|
||||||
|
|
||||||
|
- From preceding fix, fly heading specified in `Course` until reaching `Distance` from the navaid
|
||||||
|
identified by `NavID`.
|
||||||
|
- **No wind corrections shall be applied**
|
||||||
|
|
||||||
|
### Units
|
||||||
|
|
||||||
|
- `Course` is in **degrees magnetic**.
|
||||||
|
- `Distance` is in **nmi**. `Distance` is slant **not** geodesic.
|
||||||
|
|
||||||
|
### Notes
|
||||||
|
|
||||||
|
The leg terminates upon reaching `Distance`.
|
||||||
|
This intercept point then becomes the origin fix of the succeeding leg.
|
||||||
|
|
||||||
|
|
||||||
|
## Heading to Intercept (VI)
|
||||||
|
|
||||||
|
### Example
|
||||||
|
|
||||||
|
LFRK LUSI4Y SID (Cycle 2507, ID 10480)
|
||||||
|
|
||||||
|
### Minimum Required Fields
|
||||||
|
|
||||||
|
- `Course`: MagCourse
|
||||||
|
|
||||||
|
### Instructions
|
||||||
|
|
||||||
|
- From preceding fix, fly heading specified in `Course` until interception of course of the
|
||||||
|
succeeding leg.
|
||||||
|
- **No wind corrections shall be applied**
|
||||||
|
|
||||||
|
### Units
|
||||||
|
|
||||||
|
- `Course` is in **degrees magnetic**.
|
||||||
|
|
||||||
|
### Notes
|
||||||
|
|
||||||
|
This needs to look into the succeeding leg in order to calculate the intercept point.
|
||||||
|
This intercept point then becomes the origin fix of the succeeding leg.
|
||||||
|
|
||||||
|
|
||||||
|
## Heading to Manual Termination (VM)
|
||||||
|
|
||||||
|
### Example
|
||||||
|
|
||||||
|
LFPV PB2P SID (Cycle 2507, ID 10394)
|
||||||
|
|
||||||
|
### Minimum Required Fields
|
||||||
|
|
||||||
|
- `Course`: MagCourse (Heading)
|
||||||
|
|
||||||
|
### Instructions
|
||||||
|
|
||||||
|
- From preceding fix, fly heading specified in `Course` indefinitely
|
||||||
|
- **No wind corrections shall be applied**
|
||||||
|
|
||||||
|
### Units
|
||||||
|
|
||||||
|
- `Course` is in **degrees magnetic**.
|
||||||
|
|
||||||
|
|
||||||
|
## Heading to Radial (VR)
|
||||||
|
|
||||||
|
### Example
|
||||||
|
|
||||||
|
LIMC MMP8G SID (Cycle 2507, ID 11909)
|
||||||
|
|
||||||
|
### Minimum Required Fields
|
||||||
|
|
||||||
|
- `NavID`: RecommendedNavaid
|
||||||
|
- `NavBear`: Theta
|
||||||
|
- `Course`: MagCourse
|
||||||
|
|
||||||
|
### Instructions
|
||||||
|
|
||||||
|
- From preceding fix, fly heading specified in `Course` until interception of
|
||||||
|
`NavBear` radial *from* the navaid identified by `NavID`.
|
||||||
|
|
||||||
|
### Units
|
||||||
|
|
||||||
|
- `NavBear` and `Course` are in **degrees magnetic**.
|
||||||
|
|
||||||
|
### Notes
|
||||||
|
|
||||||
|
The leg terminates at the intercept point.
|
||||||
|
This intercept point then becomes the origin fix of the succeeding leg.
|
||||||
351
FlightPlan.Resolution.cpp
Normal file
351
FlightPlan.Resolution.cpp
Normal file
@ -0,0 +1,351 @@
|
|||||||
|
#include "FMC.h"
|
||||||
|
#include <Helper.h>
|
||||||
|
#include <GeoFormulas/GeoFormulas.h>
|
||||||
|
#include <AerospaceFormulas.h>
|
||||||
|
|
||||||
|
using namespace std;
|
||||||
|
|
||||||
|
double slantRangeToGroundDist(double slantRangeNM, double verticalDistFt)
|
||||||
|
{
|
||||||
|
return FeetToNm(sqrt(pow(NmToFeet(slantRangeNM), 2) - pow(verticalDistFt, 2)));
|
||||||
|
}
|
||||||
|
|
||||||
|
void FMC::FlightPlan::CalculateLegs()
|
||||||
|
{
|
||||||
|
double dTol = 0.0;
|
||||||
|
double weight = fmc->gw != DataEntryType::None ? (double)fmc->gw : 280000.0;
|
||||||
|
|
||||||
|
for (size_t i = 0; i < legs.size(); i++)
|
||||||
|
{
|
||||||
|
shared_ptr<NavDataObj> leg = legs[i];
|
||||||
|
|
||||||
|
if (leg->usage == ObjectUsage::Origin)
|
||||||
|
{
|
||||||
|
double dist = 0;
|
||||||
|
if (arrApt.GetID() != -1)
|
||||||
|
dist = depApt.latlon.Dist(arrApt.latlon);
|
||||||
|
leg->vertSegments.emplace_back(VerticalSegment(0.0, fmc->GetPredictedSpeedTarget(depApt.elevation, weight, FLIGHT_PHASE::TAKEOFF, dist, &fmc->actFpln, true), depApt.elevation, SPD_INVALID, ObjectUsagePhase::Climb));
|
||||||
|
}
|
||||||
|
else if (leg->usage == ObjectUsage::Destination)
|
||||||
|
{
|
||||||
|
leg->vertSegments.emplace_back(VerticalSegment(0.0, fmc->GetPredictedSpeedTarget(arrApt.elevation, weight, FLIGHT_PHASE::APPROACH, 0, &fmc->actFpln, true), arrApt.elevation, SPD_INVALID, ObjectUsagePhase::Descent));
|
||||||
|
}
|
||||||
|
|
||||||
|
//NavLat/Lon -> destLatLon
|
||||||
|
//NavDist->distToDest
|
||||||
|
|
||||||
|
//WptLat/Lon -> refLatLon
|
||||||
|
|
||||||
|
//distance->distance
|
||||||
|
|
||||||
|
if (leg->GetType() == NavDataObjType::TerminalLeg)
|
||||||
|
{
|
||||||
|
shared_ptr<TerminalLeg> tl = dynamic_pointer_cast<TerminalLeg>(leg);
|
||||||
|
|
||||||
|
switch (tl->track_code)
|
||||||
|
{
|
||||||
|
case TrackCode::TrackFromFixToDistance:
|
||||||
|
tl->latlon = tl->refLatLon.Dest(tl->distance, modAngle(tl->course - tl->refLatLon.GetMagVar())); //this DEFINITELY works for CourseFromFixToDMEDistance
|
||||||
|
break;
|
||||||
|
case TrackCode::CourseFromFixToDMEDistance:
|
||||||
|
{
|
||||||
|
//check this, terminal ID 11546 on RW35L transition contains one
|
||||||
|
double alt = tl->GetPredictedAltitude();
|
||||||
|
if (alt == ALT_INVALID)
|
||||||
|
alt = tl->altRestrLower;
|
||||||
|
if (alt == ALT_INVALID)
|
||||||
|
alt = tl->altRestr;
|
||||||
|
|
||||||
|
double wptHeight = tl->nvd.GetID() != -1 ? tl->nvd.elevation : 0;
|
||||||
|
double vertDist = fabs(alt - wptHeight);
|
||||||
|
double groundDist = slantRangeToGroundDist(tl->distance, vertDist);
|
||||||
|
groundDist = CLAMP(groundDist, (tl->distance * 0.5), (tl->distance * 1.5));
|
||||||
|
|
||||||
|
tl->latlon = tl->refLatLon.Dest(groundDist, modAngle(tl->course - tl->refLatLon.GetMagVar())); //this DEFINITELY works for CourseFromFixToDMEDistance
|
||||||
|
tl->isFlyover = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case TrackCode::ArcToFix:
|
||||||
|
//check this - segment generator must create the arc based on NavDist?
|
||||||
|
tl->latlon = tl->refLatLon;
|
||||||
|
break;
|
||||||
|
case TrackCode::RadiusToFix:
|
||||||
|
tl->latlon = tl->refLatLon;
|
||||||
|
break;
|
||||||
|
case TrackCode::CourseFromFixToAltitude:
|
||||||
|
case TrackCode::CourseToAltitude:
|
||||||
|
case TrackCode::HeadingToAltitude:
|
||||||
|
{
|
||||||
|
double lastAlt = 0;
|
||||||
|
LatitudeLongitude startLatLon;
|
||||||
|
double lastSpeed = 150;
|
||||||
|
|
||||||
|
for (int lastLeg = this->GetPreviousFlyableLeg((int)i, legs); lastLeg != -1; lastLeg = this->GetPreviousFlyableLeg((int)lastLeg, legs))
|
||||||
|
{
|
||||||
|
startLatLon = FMC::GetBestLatLonForLeg(this, legs[lastLeg], FMC::perf.get(), true); //this is because the segment will indefinitely extend otherwise
|
||||||
|
lastAlt = GetBestAltitudeForLeg(legs[lastLeg]);
|
||||||
|
lastSpeed = fmc->GetPredictedSpeedTarget(lastAlt, weight, legs[lastLeg]->GetUsagePhase() == ObjectUsagePhase::Climb || legs[lastLeg]->GetUsagePhase() == ObjectUsagePhase::MissedApproach ? FLIGHT_PHASE::CLIMB : FLIGHT_PHASE::CRUISE, 0, this, true);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
double angle = modAngle(tl->course + startLatLon.GetMagVar());
|
||||||
|
|
||||||
|
double minDist = 0;
|
||||||
|
|
||||||
|
if (tl->track_code == TrackCode::CourseFromFixToAltitude) //this breaks at airports
|
||||||
|
{
|
||||||
|
if (fabs(diffAngle(angle, tl->refLatLon.BearingTo(startLatLon))) < 10)
|
||||||
|
minDist = tl->refLatLon.Dist(startLatLon);
|
||||||
|
|
||||||
|
startLatLon = tl->refLatLon;
|
||||||
|
}
|
||||||
|
|
||||||
|
//the heading one should _technically_ account for wind drift here
|
||||||
|
|
||||||
|
double diffAlt = tl->altRestr - lastAlt;
|
||||||
|
|
||||||
|
if (tl->altRestrictionType == AltitudeRestrictionType::Above)
|
||||||
|
diffAlt = max(diffAlt, 1);
|
||||||
|
else if (tl->altRestrictionType == AltitudeRestrictionType::Below)
|
||||||
|
diffAlt = min(diffAlt, -1);
|
||||||
|
|
||||||
|
double fpm = FMC::perf->GetClimbRate(lastAlt, lastSpeed, weight);
|
||||||
|
{
|
||||||
|
double fpmMax = 0;
|
||||||
|
|
||||||
|
double groundHeight = 0;
|
||||||
|
if(tl->usage == ObjectUsage::Origin || tl->usage == ObjectUsage::DepartureLeg)
|
||||||
|
groundHeight = depApt.GetID() != -1 ? depApt.elevation : 0;
|
||||||
|
else if (tl->usage == ObjectUsage::Destination || tl->usage == ObjectUsage::ArrivalLeg || tl->usage == ObjectUsage::ApproachLeg)
|
||||||
|
groundHeight = arrApt.GetID() != -1 ? arrApt.elevation : 0;
|
||||||
|
|
||||||
|
double altAgl = tl->altRestr - groundHeight;
|
||||||
|
if (altAgl < 150)
|
||||||
|
fpmMax = 400;
|
||||||
|
else if (altAgl < 300)
|
||||||
|
fpmMax = 800;
|
||||||
|
else if (altAgl < 1000)
|
||||||
|
fpmMax = 1000;
|
||||||
|
else if (altAgl < 1500)
|
||||||
|
fpmMax = 1500;
|
||||||
|
|
||||||
|
if (fpmMax > 0)
|
||||||
|
fpm = min(fpm, fpmMax);
|
||||||
|
}
|
||||||
|
|
||||||
|
double minutes = fabs(diffAlt / fpm);
|
||||||
|
double dist = ((minutes / 60.0) * lastSpeed) + minDist;
|
||||||
|
|
||||||
|
tl->latlon = startLatLon.Dest(dist, angle);
|
||||||
|
tl->isFlyover = true; //is this right? aren't all of these automatically overfly?
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case TrackCode::HeadingToDMEDistance:
|
||||||
|
case TrackCode::CourseToDMEDistance:
|
||||||
|
{
|
||||||
|
if (i > 0) //needs to account for DISCOs, etc.
|
||||||
|
{
|
||||||
|
//DME distance is usually slant range - account for altitude in this?
|
||||||
|
LLPoint intcpt1;
|
||||||
|
LLPoint intcpt2;
|
||||||
|
|
||||||
|
std::shared_ptr<NavDataObj> ll = legs[i - 1];
|
||||||
|
LatitudeLongitude startPoint = ll->GetLatitudeLongitude();
|
||||||
|
double desCourse = tl->course;
|
||||||
|
|
||||||
|
double alt = tl->GetPredictedAltitude();
|
||||||
|
if (alt == ALT_INVALID)
|
||||||
|
alt = tl->altRestrLower;
|
||||||
|
if (alt == ALT_INVALID)
|
||||||
|
alt = tl->altRestr;
|
||||||
|
|
||||||
|
double wptHeight = tl->nvd.GetID() != -1 ? tl->nvd.elevation : 0;
|
||||||
|
double vertDist = alt != ALT_INVALID ? fabs(alt - wptHeight) : 0;
|
||||||
|
double groundDist = slantRangeToGroundDist(tl->distance, vertDist);
|
||||||
|
groundDist = CLAMP(groundDist, (tl->distance * 0.5), (tl->distance * 1.5));
|
||||||
|
|
||||||
|
//the heading one should _technically_ account for wind drift here
|
||||||
|
|
||||||
|
if (ll->GetLatitudeLongitude().Dist(tl->destLatlon) <= groundDist)
|
||||||
|
{
|
||||||
|
startPoint = ll->GetLatitudeLongitude().Dest(groundDist * 3.0, modAngle(tl->course + ll->GetLatitudeLongitude().GetMagVar()));
|
||||||
|
desCourse = modAngle(desCourse - 180.0);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (GeodesicArcIntercept(startPoint, DEGTORAD(modAngle(desCourse + startPoint.GetMagVar())), tl->destLatlon, NmToMeters(groundDist), intcpt1, intcpt2, dTol) > 0)
|
||||||
|
{
|
||||||
|
bool intcpt1valid = fabs(diffAngle(startPoint.BearingTo(intcpt1), desCourse)) < 90.0;
|
||||||
|
bool intcpt2valid = fabs(diffAngle(startPoint.BearingTo(intcpt2), desCourse)) < 90.0;
|
||||||
|
|
||||||
|
if (intcpt1valid == true && intcpt2valid == false)
|
||||||
|
tl->latlon = intcpt1;
|
||||||
|
else if (intcpt1valid == false && intcpt2valid == true)
|
||||||
|
tl->latlon = intcpt2;
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (startPoint.Dist(intcpt1) < startPoint.Dist(intcpt2))
|
||||||
|
tl->latlon = intcpt1;
|
||||||
|
else
|
||||||
|
tl->latlon = intcpt2;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
tl->latlon = tl->destLatlon;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
tl->latlon = tl->destLatlon;
|
||||||
|
|
||||||
|
tl->isFlyover = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case TrackCode::HoldAtFix:
|
||||||
|
case TrackCode::HoldUntilManualTermination:
|
||||||
|
case TrackCode::HoldToAltitude:
|
||||||
|
{
|
||||||
|
if (tl->hold.type == HoldType::Database)
|
||||||
|
{
|
||||||
|
tl->hold.holdDir = tl->turn_dir == ObjectTurnDirection::Left ? TurnDirection::Left : TurnDirection::Right;
|
||||||
|
tl->hold.holdDist = tl->distance != -1.0 ? tl->distance : tl->distToDest; //is this right?
|
||||||
|
tl->hold.holdDistManual = tl->hold.holdDist != -1;
|
||||||
|
tl->hold.holdInboundCourse = tl->course;
|
||||||
|
tl->hold.defaultCourse = tl->course;
|
||||||
|
tl->hold.wptIdent = i > 0 ? legs[i-1]->GetIdentifier() : L"";
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case TrackCode::HeadingUntilManualTermination:
|
||||||
|
{
|
||||||
|
LatitudeLongitude lastlatLon;
|
||||||
|
for (int lastLeg = this->GetPreviousFlyableLeg((int)i, legs); lastLeg != -1; lastLeg = this->GetPreviousFlyableLeg((int)lastLeg, legs))
|
||||||
|
{
|
||||||
|
lastlatLon = legs[lastLeg]->GetLatitudeLongitude();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
tl->latlon = lastlatLon.Dest(1000, modAngle(tl->course + lastlatLon.GetMagVar()));
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case TrackCode::CourseToNextIntercept: //is this right?
|
||||||
|
case TrackCode::HeadingToNextLegIntercept:
|
||||||
|
{
|
||||||
|
//TESTED WITH HEADING
|
||||||
|
|
||||||
|
bool set = false;
|
||||||
|
if (i + 1 < legs.size() && i > 0)
|
||||||
|
{
|
||||||
|
if (legs[i + 1]->GetType() == NavDataObjType::TerminalLeg)
|
||||||
|
{
|
||||||
|
std::shared_ptr<TerminalLeg> ntl = std::dynamic_pointer_cast<TerminalLeg>(legs[i + 1]);
|
||||||
|
double trueTlCourse = modAngle(tl->course + ntl->GetLatitudeLongitude().GetMagVar()); //using ntl MagVar as tl->latlon isn't set yet
|
||||||
|
LatitudeLongitude last = legs[i - 1]->GetLatitudeLongitude(); //maybe check this for special cases?
|
||||||
|
if (legs[i - 1]->isFlyover == true && legs[i - 1]->bearingFromTo != -1)
|
||||||
|
{
|
||||||
|
double diffCourse = diffAngleByDir(trueTlCourse, legs[i - 1]->bearingFromTo, (int)tl->turn_dir);
|
||||||
|
diffCourse = CLAMP(diffCourse, -180, 180);
|
||||||
|
double offset = fmc->GetTurnRadiusNM(legs[i]) * (fabs(diffCourse) / 90.0);
|
||||||
|
last = last.Dest(offset, modAngle(legs[i - 1]->bearingFromTo + CLAMP(diffCourse, -90, 90)));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (ntl->track_code == TrackCode::ArcToFix)
|
||||||
|
{
|
||||||
|
LLPoint tan1, tan2;
|
||||||
|
|
||||||
|
if (PointToArcTangents(last, ntl->nvd.GetLatitudeLongitude(), NmToMeters(ntl->refLatLon.Dist(ntl->nvd.GetLatitudeLongitude())), tan1, tan2, dTol) != 0)
|
||||||
|
{
|
||||||
|
if(ntl->turn_dir == ObjectTurnDirection::Left) //this may not be the correct check
|
||||||
|
tl->latlon = tan2;
|
||||||
|
else
|
||||||
|
tl->latlon = tan1;
|
||||||
|
set = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if(ntl->GetLocationType() != LocationType::Abstract && ntl->course != -1 && ntl->GetLatitudeLongitude() != LatitudeLongitude())
|
||||||
|
{
|
||||||
|
LLPoint intcpt;
|
||||||
|
|
||||||
|
double trueNtlCourse = modAngle(ntl->course + ntl->GetLatitudeLongitude().GetMagVar());
|
||||||
|
|
||||||
|
if (CrsIntersect(last, DEGTORAD(trueTlCourse), ntl->GetLatitudeLongitude(), DEGTORAD(modAngle(trueNtlCourse + 180.0)), dTol, intcpt))
|
||||||
|
tl->latlon = intcpt;
|
||||||
|
else
|
||||||
|
tl->latlon = last; //this will cause a bypass because it's the exact same location
|
||||||
|
set = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (set == false) //sanity check to ensure it's never in the middle of the ocean
|
||||||
|
{
|
||||||
|
int lastFlyable = this->GetPreviousFlyableLeg((int)i, legs);
|
||||||
|
if (lastFlyable != -1)
|
||||||
|
tl->latlon = legs[lastFlyable]->GetLatitudeLongitude();
|
||||||
|
else
|
||||||
|
{
|
||||||
|
int nextFlyable = this->GetNextFlyableLeg((int)i, legs);
|
||||||
|
if (nextFlyable != -1)
|
||||||
|
tl->latlon = legs[nextFlyable]->GetLatitudeLongitude();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
case TrackCode::HeadingToRadialTermination:
|
||||||
|
case TrackCode::CourseToRadialTermination: //Tested and working on CourseToRadialTermination
|
||||||
|
{
|
||||||
|
//this leg does NOT do the outbound course from the previous leg, it's the outbound course from the point the plane is able to achieve tl->course
|
||||||
|
if (i + 1 < legs.size() && i > 1)
|
||||||
|
{
|
||||||
|
//needs to account for DISCOs, T/C, T/D, etc.
|
||||||
|
std::shared_ptr<NavDataObj> ll = legs[i - 1];
|
||||||
|
|
||||||
|
LatitudeLongitude startPoint = ll->GetLatitudeLongitude();
|
||||||
|
|
||||||
|
double tlCrs = modAngle(tl->course - tl->destLatlon.GetMagVar());
|
||||||
|
|
||||||
|
if (i > 2 && ll->isFlyover == true)
|
||||||
|
{
|
||||||
|
double lastBrg = legs[i - 2]->bearingFromTo;
|
||||||
|
|
||||||
|
TurnDirection dir = diffAngle(tlCrs, lastBrg) < 0 ? TurnDirection::Left : TurnDirection::Right;
|
||||||
|
double turnRad = fmc->GetTurnRadiusNM(ll);
|
||||||
|
|
||||||
|
double angleIn = modAngle(lastBrg + (dir == TurnDirection::Left ? -90 : 90));
|
||||||
|
double angleOut = modAngle(180.0 + (angleIn + diffAngle(tlCrs, lastBrg)));
|
||||||
|
|
||||||
|
LatitudeLongitude turnCenter = ll->GetLatitudeLongitude().Dest(turnRad, angleIn);
|
||||||
|
startPoint = turnCenter.Dest(turnRad, angleOut);
|
||||||
|
}
|
||||||
|
|
||||||
|
LLPoint intcpt;
|
||||||
|
|
||||||
|
if (CrsIntersect(startPoint, DEGTORAD(modAngle(tlCrs)), tl->destLatlon, DEGTORAD(tl->bearToDest), dTol, intcpt)
|
||||||
|
//&& fabs(diffAngle(last.BearingTo(intcpt), trueTlCourse)) < 90
|
||||||
|
//&& fabs(diffAngle(LatitudeLongitude(intcpt).BearingTo(ntl->GetLatitudeLongitude()), trueNtlCourse)) < 90
|
||||||
|
)
|
||||||
|
{
|
||||||
|
tl->latlon = intcpt;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case TrackCode::ProcedureTurnToIntercept: //Test with KLBX ILS 07
|
||||||
|
if (i > 0 && i + 1 < legs.size() && legs[i -1]->GetLocationType() == LocationType::Absolute && legs[i + 1]->GetLocationType() == LocationType::Absolute)
|
||||||
|
{
|
||||||
|
double crsBetween = legs[i - 1]->GetLatitudeLongitude().BearingTo(legs[i + 1]->GetLatitudeLongitude());
|
||||||
|
tl->latlon = legs[i - 1]->GetLatitudeLongitude().Dest(tl->distance, crsBetween);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
tl->latlon = tl->destLatlon; //just set to there is something
|
||||||
|
break;
|
||||||
|
case TrackCode::CourseFromFixToManualTermination:
|
||||||
|
tl->latlon = tl->wpt.GetLatitudeLongitude().Dest(1000, modAngle(tl->course + tl->wpt.GetLatitudeLongitude().GetMagVar()));
|
||||||
|
break;
|
||||||
|
case TrackCode::TrackToFix:
|
||||||
|
case TrackCode::CourseToFix:
|
||||||
|
case TrackCode::DirectToFix:
|
||||||
|
/*These are pretty standard, segment calculator processes them correctly already based on desired course*/
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
1
Runways.json
Normal file
1
Runways.json
Normal file
File diff suppressed because one or more lines are too long
137
TermID_10394.json
Normal file
137
TermID_10394.json
Normal file
@ -0,0 +1,137 @@
|
|||||||
|
[
|
||||||
|
{
|
||||||
|
"ID": 84218,
|
||||||
|
"TerminalID": 10394,
|
||||||
|
"Type": "2",
|
||||||
|
"Transition": "ALL",
|
||||||
|
"TrackCode": "CF",
|
||||||
|
"WptID": 165609,
|
||||||
|
"WptLat": 48.77185278,
|
||||||
|
"WptLon": 2.09752222,
|
||||||
|
"TurnDir": "",
|
||||||
|
"NavID": 3827,
|
||||||
|
"NavLat": 48.97466667,
|
||||||
|
"NavLon": 2.45516667,
|
||||||
|
"NavBear": 228.5,
|
||||||
|
"NavDist": 18.7,
|
||||||
|
"Course": 267,
|
||||||
|
"Distance": 4,
|
||||||
|
"Alt": "",
|
||||||
|
"Vnav": null,
|
||||||
|
"CenterID": null,
|
||||||
|
"CenterLat": null,
|
||||||
|
"CenterLon": null,
|
||||||
|
"IsFlyOver": -1,
|
||||||
|
"SpeedLimit": null,
|
||||||
|
"IsFAF": 0,
|
||||||
|
"IsMAP": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ID": 84219,
|
||||||
|
"TerminalID": 10394,
|
||||||
|
"Type": "2",
|
||||||
|
"Transition": "ALL",
|
||||||
|
"TrackCode": "CF",
|
||||||
|
"WptID": 247786,
|
||||||
|
"WptLat": 48.73058333,
|
||||||
|
"WptLon": 1.8205,
|
||||||
|
"TurnDir": "",
|
||||||
|
"NavID": 3827,
|
||||||
|
"NavLat": 48.97466667,
|
||||||
|
"NavLon": 2.45516667,
|
||||||
|
"NavBear": 239,
|
||||||
|
"NavDist": 29.1,
|
||||||
|
"Course": 256,
|
||||||
|
"Distance": 11,
|
||||||
|
"Alt": "",
|
||||||
|
"Vnav": null,
|
||||||
|
"CenterID": null,
|
||||||
|
"CenterLat": null,
|
||||||
|
"CenterLon": null,
|
||||||
|
"IsFlyOver": -1,
|
||||||
|
"SpeedLimit": null,
|
||||||
|
"IsFAF": 0,
|
||||||
|
"IsMAP": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ID": 84220,
|
||||||
|
"TerminalID": 10394,
|
||||||
|
"Type": "2",
|
||||||
|
"Transition": "ALL",
|
||||||
|
"TrackCode": "CF",
|
||||||
|
"WptID": 253072,
|
||||||
|
"WptLat": 48.75372222,
|
||||||
|
"WptLon": 2.10236111,
|
||||||
|
"TurnDir": "R",
|
||||||
|
"NavID": 3827,
|
||||||
|
"NavLat": 48.97466667,
|
||||||
|
"NavLon": 2.45516667,
|
||||||
|
"NavBear": 225.6,
|
||||||
|
"NavDist": 19.3,
|
||||||
|
"Course": 107,
|
||||||
|
"Distance": 11,
|
||||||
|
"Alt": "",
|
||||||
|
"Vnav": null,
|
||||||
|
"CenterID": null,
|
||||||
|
"CenterLat": null,
|
||||||
|
"CenterLon": null,
|
||||||
|
"IsFlyOver": 0,
|
||||||
|
"SpeedLimit": null,
|
||||||
|
"IsFAF": 0,
|
||||||
|
"IsMAP": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ID": 84221,
|
||||||
|
"TerminalID": 10394,
|
||||||
|
"Type": "2",
|
||||||
|
"Transition": "ALL",
|
||||||
|
"TrackCode": "CR",
|
||||||
|
"WptID": null,
|
||||||
|
"WptLat": null,
|
||||||
|
"WptLon": null,
|
||||||
|
"TurnDir": "",
|
||||||
|
"NavID": 3827,
|
||||||
|
"NavLat": 48.97466667,
|
||||||
|
"NavLon": 2.45516667,
|
||||||
|
"NavBear": 137,
|
||||||
|
"NavDist": null,
|
||||||
|
"Course": 73,
|
||||||
|
"Distance": null,
|
||||||
|
"Alt": "",
|
||||||
|
"Vnav": null,
|
||||||
|
"CenterID": null,
|
||||||
|
"CenterLat": null,
|
||||||
|
"CenterLon": null,
|
||||||
|
"IsFlyOver": 0,
|
||||||
|
"SpeedLimit": null,
|
||||||
|
"IsFAF": 0,
|
||||||
|
"IsMAP": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ID": 84222,
|
||||||
|
"TerminalID": 10394,
|
||||||
|
"Type": "2",
|
||||||
|
"Transition": "ALL",
|
||||||
|
"TrackCode": "VM",
|
||||||
|
"WptID": null,
|
||||||
|
"WptLat": null,
|
||||||
|
"WptLon": null,
|
||||||
|
"TurnDir": "",
|
||||||
|
"NavID": null,
|
||||||
|
"NavLat": null,
|
||||||
|
"NavLon": null,
|
||||||
|
"NavBear": null,
|
||||||
|
"NavDist": null,
|
||||||
|
"Course": 73,
|
||||||
|
"Distance": null,
|
||||||
|
"Alt": "",
|
||||||
|
"Vnav": null,
|
||||||
|
"CenterID": null,
|
||||||
|
"CenterLat": null,
|
||||||
|
"CenterLon": null,
|
||||||
|
"IsFlyOver": 0,
|
||||||
|
"SpeedLimit": null,
|
||||||
|
"IsFAF": 0,
|
||||||
|
"IsMAP": 0
|
||||||
|
}
|
||||||
|
]
|
||||||
110
TermID_10395.json
Normal file
110
TermID_10395.json
Normal file
@ -0,0 +1,110 @@
|
|||||||
|
[
|
||||||
|
{
|
||||||
|
"ID": 84223,
|
||||||
|
"TerminalID": 10395,
|
||||||
|
"Type": "2",
|
||||||
|
"Transition": "ALL",
|
||||||
|
"TrackCode": "CF",
|
||||||
|
"WptID": 165609,
|
||||||
|
"WptLat": 48.77185278,
|
||||||
|
"WptLon": 2.09752222,
|
||||||
|
"TurnDir": "",
|
||||||
|
"NavID": 3827,
|
||||||
|
"NavLat": 48.97466667,
|
||||||
|
"NavLon": 2.45516667,
|
||||||
|
"NavBear": 228.5,
|
||||||
|
"NavDist": 18.7,
|
||||||
|
"Course": 267,
|
||||||
|
"Distance": 4,
|
||||||
|
"Alt": "",
|
||||||
|
"Vnav": null,
|
||||||
|
"CenterID": null,
|
||||||
|
"CenterLat": null,
|
||||||
|
"CenterLon": null,
|
||||||
|
"IsFlyOver": -1,
|
||||||
|
"SpeedLimit": null,
|
||||||
|
"IsFAF": 0,
|
||||||
|
"IsMAP": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ID": 84224,
|
||||||
|
"TerminalID": 10395,
|
||||||
|
"Type": "2",
|
||||||
|
"Transition": "ALL",
|
||||||
|
"TrackCode": "CF",
|
||||||
|
"WptID": 165604,
|
||||||
|
"WptLat": 48.80511389,
|
||||||
|
"WptLon": 2.01279722,
|
||||||
|
"TurnDir": "",
|
||||||
|
"NavID": 3827,
|
||||||
|
"NavLat": 48.97466667,
|
||||||
|
"NavLon": 2.45516667,
|
||||||
|
"NavBear": 239,
|
||||||
|
"NavDist": 20.3,
|
||||||
|
"Course": 310,
|
||||||
|
"Distance": 3,
|
||||||
|
"Alt": "",
|
||||||
|
"Vnav": null,
|
||||||
|
"CenterID": null,
|
||||||
|
"CenterLat": null,
|
||||||
|
"CenterLon": null,
|
||||||
|
"IsFlyOver": -1,
|
||||||
|
"SpeedLimit": null,
|
||||||
|
"IsFAF": 0,
|
||||||
|
"IsMAP": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ID": 84225,
|
||||||
|
"TerminalID": 10395,
|
||||||
|
"Type": "2",
|
||||||
|
"Transition": "ALL",
|
||||||
|
"TrackCode": "CI",
|
||||||
|
"WptID": null,
|
||||||
|
"WptLat": null,
|
||||||
|
"WptLon": null,
|
||||||
|
"TurnDir": "",
|
||||||
|
"NavID": null,
|
||||||
|
"NavLat": null,
|
||||||
|
"NavLon": null,
|
||||||
|
"NavBear": null,
|
||||||
|
"NavDist": null,
|
||||||
|
"Course": 22,
|
||||||
|
"Distance": null,
|
||||||
|
"Alt": "",
|
||||||
|
"Vnav": null,
|
||||||
|
"CenterID": null,
|
||||||
|
"CenterLat": null,
|
||||||
|
"CenterLon": null,
|
||||||
|
"IsFlyOver": 0,
|
||||||
|
"SpeedLimit": null,
|
||||||
|
"IsFAF": 0,
|
||||||
|
"IsMAP": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ID": 84226,
|
||||||
|
"TerminalID": 10395,
|
||||||
|
"Type": "2",
|
||||||
|
"Transition": "ALL",
|
||||||
|
"TrackCode": "FM",
|
||||||
|
"WptID": 165605,
|
||||||
|
"WptLat": 48.83954444,
|
||||||
|
"WptLon": 1.95262222,
|
||||||
|
"TurnDir": "",
|
||||||
|
"NavID": 3827,
|
||||||
|
"NavLat": 48.97466667,
|
||||||
|
"NavLon": 2.45516667,
|
||||||
|
"NavBear": 247,
|
||||||
|
"NavDist": 21.5,
|
||||||
|
"Course": 67,
|
||||||
|
"Distance": null,
|
||||||
|
"Alt": "",
|
||||||
|
"Vnav": null,
|
||||||
|
"CenterID": null,
|
||||||
|
"CenterLat": null,
|
||||||
|
"CenterLon": null,
|
||||||
|
"IsFlyOver": 0,
|
||||||
|
"SpeedLimit": null,
|
||||||
|
"IsFAF": 0,
|
||||||
|
"IsMAP": 0
|
||||||
|
}
|
||||||
|
]
|
||||||
83
TermID_10475.json
Normal file
83
TermID_10475.json
Normal file
@ -0,0 +1,83 @@
|
|||||||
|
[
|
||||||
|
{
|
||||||
|
"ID": 84536,
|
||||||
|
"TerminalID": 10475,
|
||||||
|
"Type": "2",
|
||||||
|
"Transition": "ALL",
|
||||||
|
"TrackCode": "VA",
|
||||||
|
"WptID": null,
|
||||||
|
"WptLat": null,
|
||||||
|
"WptLon": null,
|
||||||
|
"TurnDir": "",
|
||||||
|
"NavID": null,
|
||||||
|
"NavLat": null,
|
||||||
|
"NavLon": null,
|
||||||
|
"NavBear": null,
|
||||||
|
"NavDist": null,
|
||||||
|
"Course": 125,
|
||||||
|
"Distance": null,
|
||||||
|
"Alt": "00660A",
|
||||||
|
"Vnav": null,
|
||||||
|
"CenterID": null,
|
||||||
|
"CenterLat": null,
|
||||||
|
"CenterLon": null,
|
||||||
|
"IsFlyOver": 0,
|
||||||
|
"SpeedLimit": null,
|
||||||
|
"IsFAF": 0,
|
||||||
|
"IsMAP": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ID": 84537,
|
||||||
|
"TerminalID": 10475,
|
||||||
|
"Type": "2",
|
||||||
|
"Transition": "ALL",
|
||||||
|
"TrackCode": "CF",
|
||||||
|
"WptID": 247774,
|
||||||
|
"WptLat": 49.11566667,
|
||||||
|
"WptLon": -0.32125,
|
||||||
|
"TurnDir": "",
|
||||||
|
"NavID": 3836,
|
||||||
|
"NavLat": 49.17319444,
|
||||||
|
"NavLon": -0.45527778,
|
||||||
|
"NavBear": 123.1,
|
||||||
|
"NavDist": 6.3,
|
||||||
|
"Course": 125,
|
||||||
|
"Distance": 6,
|
||||||
|
"Alt": "",
|
||||||
|
"Vnav": null,
|
||||||
|
"CenterID": null,
|
||||||
|
"CenterLat": null,
|
||||||
|
"CenterLon": null,
|
||||||
|
"IsFlyOver": 0,
|
||||||
|
"SpeedLimit": null,
|
||||||
|
"IsFAF": 0,
|
||||||
|
"IsMAP": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ID": 84538,
|
||||||
|
"TerminalID": 10475,
|
||||||
|
"Type": "2",
|
||||||
|
"Transition": "ALL",
|
||||||
|
"TrackCode": "TF",
|
||||||
|
"WptID": 252987,
|
||||||
|
"WptLat": 48.79061111,
|
||||||
|
"WptLon": 0.53027778,
|
||||||
|
"TurnDir": "",
|
||||||
|
"NavID": null,
|
||||||
|
"NavLat": null,
|
||||||
|
"NavLon": null,
|
||||||
|
"NavBear": null,
|
||||||
|
"NavDist": null,
|
||||||
|
"Course": null,
|
||||||
|
"Distance": null,
|
||||||
|
"Alt": "",
|
||||||
|
"Vnav": null,
|
||||||
|
"CenterID": null,
|
||||||
|
"CenterLat": null,
|
||||||
|
"CenterLon": null,
|
||||||
|
"IsFlyOver": 0,
|
||||||
|
"SpeedLimit": null,
|
||||||
|
"IsFAF": 0,
|
||||||
|
"IsMAP": 0
|
||||||
|
}
|
||||||
|
]
|
||||||
83
TermID_10480.json
Normal file
83
TermID_10480.json
Normal file
@ -0,0 +1,83 @@
|
|||||||
|
[
|
||||||
|
{
|
||||||
|
"ID": 84551,
|
||||||
|
"TerminalID": 10480,
|
||||||
|
"Type": "2",
|
||||||
|
"Transition": "ALL",
|
||||||
|
"TrackCode": "VD",
|
||||||
|
"WptID": null,
|
||||||
|
"WptLat": null,
|
||||||
|
"WptLon": null,
|
||||||
|
"TurnDir": "",
|
||||||
|
"NavID": 3851,
|
||||||
|
"NavLat": 49.17333333,
|
||||||
|
"NavLon": -0.44711111,
|
||||||
|
"NavBear": null,
|
||||||
|
"NavDist": null,
|
||||||
|
"Course": 305,
|
||||||
|
"Distance": 5,
|
||||||
|
"Alt": "",
|
||||||
|
"Vnav": null,
|
||||||
|
"CenterID": null,
|
||||||
|
"CenterLat": null,
|
||||||
|
"CenterLon": null,
|
||||||
|
"IsFlyOver": 0,
|
||||||
|
"SpeedLimit": null,
|
||||||
|
"IsFAF": 0,
|
||||||
|
"IsMAP": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ID": 84552,
|
||||||
|
"TerminalID": 10480,
|
||||||
|
"Type": "2",
|
||||||
|
"Transition": "ALL",
|
||||||
|
"TrackCode": "VI",
|
||||||
|
"WptID": null,
|
||||||
|
"WptLat": null,
|
||||||
|
"WptLon": null,
|
||||||
|
"TurnDir": "",
|
||||||
|
"NavID": null,
|
||||||
|
"NavLat": null,
|
||||||
|
"NavLon": null,
|
||||||
|
"NavBear": null,
|
||||||
|
"NavDist": null,
|
||||||
|
"Course": 243,
|
||||||
|
"Distance": null,
|
||||||
|
"Alt": "",
|
||||||
|
"Vnav": null,
|
||||||
|
"CenterID": null,
|
||||||
|
"CenterLat": null,
|
||||||
|
"CenterLon": null,
|
||||||
|
"IsFlyOver": 0,
|
||||||
|
"SpeedLimit": null,
|
||||||
|
"IsFAF": 0,
|
||||||
|
"IsMAP": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ID": 84553,
|
||||||
|
"TerminalID": 10480,
|
||||||
|
"Type": "2",
|
||||||
|
"Transition": "ALL",
|
||||||
|
"TrackCode": "CF",
|
||||||
|
"WptID": 40633,
|
||||||
|
"WptLat": 49.21472222,
|
||||||
|
"WptLon": -1.79555556,
|
||||||
|
"TurnDir": "",
|
||||||
|
"NavID": 3836,
|
||||||
|
"NavLat": 49.17319444,
|
||||||
|
"NavLon": -0.45527778,
|
||||||
|
"NavBear": 273.2,
|
||||||
|
"NavDist": 52.8,
|
||||||
|
"Course": 273,
|
||||||
|
"Distance": 44,
|
||||||
|
"Alt": "",
|
||||||
|
"Vnav": null,
|
||||||
|
"CenterID": null,
|
||||||
|
"CenterLat": null,
|
||||||
|
"CenterLon": null,
|
||||||
|
"IsFlyOver": 0,
|
||||||
|
"SpeedLimit": null,
|
||||||
|
"IsFAF": 0,
|
||||||
|
"IsMAP": 0
|
||||||
|
}
|
||||||
|
]
|
||||||
83
TermID_10482.json
Normal file
83
TermID_10482.json
Normal file
@ -0,0 +1,83 @@
|
|||||||
|
[
|
||||||
|
{
|
||||||
|
"ID": 84557,
|
||||||
|
"TerminalID": 10482,
|
||||||
|
"Type": "2",
|
||||||
|
"Transition": "ALL",
|
||||||
|
"TrackCode": "VD",
|
||||||
|
"WptID": null,
|
||||||
|
"WptLat": null,
|
||||||
|
"WptLon": null,
|
||||||
|
"TurnDir": "",
|
||||||
|
"NavID": 3851,
|
||||||
|
"NavLat": 49.17333333,
|
||||||
|
"NavLon": -0.44711111,
|
||||||
|
"NavBear": null,
|
||||||
|
"NavDist": null,
|
||||||
|
"Course": 305,
|
||||||
|
"Distance": 5,
|
||||||
|
"Alt": "",
|
||||||
|
"Vnav": null,
|
||||||
|
"CenterID": null,
|
||||||
|
"CenterLat": null,
|
||||||
|
"CenterLon": null,
|
||||||
|
"IsFlyOver": 0,
|
||||||
|
"SpeedLimit": null,
|
||||||
|
"IsFAF": 0,
|
||||||
|
"IsMAP": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ID": 84558,
|
||||||
|
"TerminalID": 10482,
|
||||||
|
"Type": "2",
|
||||||
|
"Transition": "ALL",
|
||||||
|
"TrackCode": "CI",
|
||||||
|
"WptID": null,
|
||||||
|
"WptLat": null,
|
||||||
|
"WptLon": null,
|
||||||
|
"TurnDir": "R",
|
||||||
|
"NavID": null,
|
||||||
|
"NavLat": null,
|
||||||
|
"NavLon": null,
|
||||||
|
"NavBear": null,
|
||||||
|
"NavDist": null,
|
||||||
|
"Course": 50,
|
||||||
|
"Distance": null,
|
||||||
|
"Alt": "",
|
||||||
|
"Vnav": null,
|
||||||
|
"CenterID": null,
|
||||||
|
"CenterLat": null,
|
||||||
|
"CenterLon": null,
|
||||||
|
"IsFlyOver": 0,
|
||||||
|
"SpeedLimit": null,
|
||||||
|
"IsFAF": 0,
|
||||||
|
"IsMAP": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ID": 84559,
|
||||||
|
"TerminalID": 10482,
|
||||||
|
"Type": "2",
|
||||||
|
"Transition": "ALL",
|
||||||
|
"TrackCode": "CF",
|
||||||
|
"WptID": 8516,
|
||||||
|
"WptLat": 50,
|
||||||
|
"WptLon": -0.36823333,
|
||||||
|
"TurnDir": "",
|
||||||
|
"NavID": 3836,
|
||||||
|
"NavLat": 49.17319444,
|
||||||
|
"NavLon": -0.45527778,
|
||||||
|
"NavBear": 3.9,
|
||||||
|
"NavDist": 49.8,
|
||||||
|
"Course": 4,
|
||||||
|
"Distance": 42,
|
||||||
|
"Alt": "",
|
||||||
|
"Vnav": null,
|
||||||
|
"CenterID": null,
|
||||||
|
"CenterLat": null,
|
||||||
|
"CenterLon": null,
|
||||||
|
"IsFlyOver": 0,
|
||||||
|
"SpeedLimit": null,
|
||||||
|
"IsFAF": 0,
|
||||||
|
"IsMAP": 0
|
||||||
|
}
|
||||||
|
]
|
||||||
110
TermID_10485.json
Normal file
110
TermID_10485.json
Normal file
@ -0,0 +1,110 @@
|
|||||||
|
[
|
||||||
|
{
|
||||||
|
"ID": 84567,
|
||||||
|
"TerminalID": 10485,
|
||||||
|
"Type": "5",
|
||||||
|
"Transition": "ALL",
|
||||||
|
"TrackCode": "CF",
|
||||||
|
"WptID": 166062,
|
||||||
|
"WptLat": 48.06525,
|
||||||
|
"WptLon": -1.67930556,
|
||||||
|
"TurnDir": "",
|
||||||
|
"NavID": 3946,
|
||||||
|
"NavLat": 48.06925,
|
||||||
|
"NavLon": -1.74166667,
|
||||||
|
"NavBear": 95.4,
|
||||||
|
"NavDist": 2.5,
|
||||||
|
"Course": 101,
|
||||||
|
"Distance": 2,
|
||||||
|
"Alt": "00530A",
|
||||||
|
"Vnav": null,
|
||||||
|
"CenterID": null,
|
||||||
|
"CenterLat": null,
|
||||||
|
"CenterLon": null,
|
||||||
|
"IsFlyOver": 0,
|
||||||
|
"SpeedLimit": 195,
|
||||||
|
"IsFAF": 0,
|
||||||
|
"IsMAP": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ID": 84568,
|
||||||
|
"TerminalID": 10485,
|
||||||
|
"Type": "5",
|
||||||
|
"Transition": "ALL",
|
||||||
|
"TrackCode": "RF",
|
||||||
|
"WptID": 166064,
|
||||||
|
"WptLat": 48.03483333,
|
||||||
|
"WptLon": -1.63894444,
|
||||||
|
"TurnDir": "R",
|
||||||
|
"NavID": null,
|
||||||
|
"NavLat": null,
|
||||||
|
"NavLon": null,
|
||||||
|
"NavBear": null,
|
||||||
|
"NavDist": null,
|
||||||
|
"Course": 175.3,
|
||||||
|
"Distance": 2.6,
|
||||||
|
"Alt": "",
|
||||||
|
"Vnav": null,
|
||||||
|
"CenterID": 166063,
|
||||||
|
"CenterLat": 48.03252778,
|
||||||
|
"CenterLon": -1.6885,
|
||||||
|
"IsFlyOver": 0,
|
||||||
|
"SpeedLimit": 195,
|
||||||
|
"IsFAF": 0,
|
||||||
|
"IsMAP": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ID": 84569,
|
||||||
|
"TerminalID": 10485,
|
||||||
|
"Type": "5",
|
||||||
|
"Transition": "ALL",
|
||||||
|
"TrackCode": "TF",
|
||||||
|
"WptID": 166061,
|
||||||
|
"WptLat": 47.91030556,
|
||||||
|
"WptLon": -1.62611111,
|
||||||
|
"TurnDir": "",
|
||||||
|
"NavID": null,
|
||||||
|
"NavLat": null,
|
||||||
|
"NavLon": null,
|
||||||
|
"NavBear": null,
|
||||||
|
"NavDist": null,
|
||||||
|
"Course": null,
|
||||||
|
"Distance": null,
|
||||||
|
"Alt": "",
|
||||||
|
"Vnav": null,
|
||||||
|
"CenterID": null,
|
||||||
|
"CenterLat": null,
|
||||||
|
"CenterLon": null,
|
||||||
|
"IsFlyOver": 0,
|
||||||
|
"SpeedLimit": null,
|
||||||
|
"IsFAF": 0,
|
||||||
|
"IsMAP": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ID": 84570,
|
||||||
|
"TerminalID": 10485,
|
||||||
|
"Type": "5",
|
||||||
|
"Transition": "ALL",
|
||||||
|
"TrackCode": "TF",
|
||||||
|
"WptID": 40368,
|
||||||
|
"WptLat": 47.64194444,
|
||||||
|
"WptLon": -1.96,
|
||||||
|
"TurnDir": "",
|
||||||
|
"NavID": null,
|
||||||
|
"NavLat": null,
|
||||||
|
"NavLon": null,
|
||||||
|
"NavBear": null,
|
||||||
|
"NavDist": null,
|
||||||
|
"Course": null,
|
||||||
|
"Distance": null,
|
||||||
|
"Alt": "",
|
||||||
|
"Vnav": null,
|
||||||
|
"CenterID": null,
|
||||||
|
"CenterLat": null,
|
||||||
|
"CenterLon": null,
|
||||||
|
"IsFlyOver": 0,
|
||||||
|
"SpeedLimit": null,
|
||||||
|
"IsFAF": 0,
|
||||||
|
"IsMAP": 0
|
||||||
|
}
|
||||||
|
]
|
||||||
110
TermID_10653.json
Normal file
110
TermID_10653.json
Normal file
@ -0,0 +1,110 @@
|
|||||||
|
[
|
||||||
|
{
|
||||||
|
"ID": 85228,
|
||||||
|
"TerminalID": 10653,
|
||||||
|
"Type": "2",
|
||||||
|
"Transition": "ALL",
|
||||||
|
"TrackCode": "CF",
|
||||||
|
"WptID": 166553,
|
||||||
|
"WptLat": 38.04930556,
|
||||||
|
"WptLon": 24.04694722,
|
||||||
|
"TurnDir": "",
|
||||||
|
"NavID": 3985,
|
||||||
|
"NavLat": 37.88867778,
|
||||||
|
"NavLon": 23.80449722,
|
||||||
|
"NavBear": 45,
|
||||||
|
"NavDist": 15,
|
||||||
|
"Course": 32,
|
||||||
|
"Distance": 9,
|
||||||
|
"Alt": "",
|
||||||
|
"Vnav": null,
|
||||||
|
"CenterID": null,
|
||||||
|
"CenterLat": null,
|
||||||
|
"CenterLon": null,
|
||||||
|
"IsFlyOver": 0,
|
||||||
|
"SpeedLimit": null,
|
||||||
|
"IsFAF": 0,
|
||||||
|
"IsMAP": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ID": 85229,
|
||||||
|
"TerminalID": 10653,
|
||||||
|
"Type": "2",
|
||||||
|
"Transition": "ALL",
|
||||||
|
"TrackCode": "AF",
|
||||||
|
"WptID": 166645,
|
||||||
|
"WptLat": 37.75945833,
|
||||||
|
"WptLon": 24.07472778,
|
||||||
|
"TurnDir": "R",
|
||||||
|
"NavID": 3985,
|
||||||
|
"NavLat": 37.88867778,
|
||||||
|
"NavLon": 23.80449722,
|
||||||
|
"NavBear": 116,
|
||||||
|
"NavDist": 15,
|
||||||
|
"Course": 45,
|
||||||
|
"Distance": null,
|
||||||
|
"Alt": "",
|
||||||
|
"Vnav": null,
|
||||||
|
"CenterID": null,
|
||||||
|
"CenterLat": null,
|
||||||
|
"CenterLon": null,
|
||||||
|
"IsFlyOver": -1,
|
||||||
|
"SpeedLimit": null,
|
||||||
|
"IsFAF": 0,
|
||||||
|
"IsMAP": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ID": 85230,
|
||||||
|
"TerminalID": 10653,
|
||||||
|
"Type": "2",
|
||||||
|
"Transition": "ALL",
|
||||||
|
"TrackCode": "AF",
|
||||||
|
"WptID": 166646,
|
||||||
|
"WptLat": 37.73090833,
|
||||||
|
"WptLon": 24.04940556,
|
||||||
|
"TurnDir": "R",
|
||||||
|
"NavID": 3985,
|
||||||
|
"NavLat": 37.88867778,
|
||||||
|
"NavLon": 23.80449722,
|
||||||
|
"NavBear": 124,
|
||||||
|
"NavDist": 15,
|
||||||
|
"Course": 116,
|
||||||
|
"Distance": null,
|
||||||
|
"Alt": "",
|
||||||
|
"Vnav": null,
|
||||||
|
"CenterID": null,
|
||||||
|
"CenterLat": null,
|
||||||
|
"CenterLon": null,
|
||||||
|
"IsFlyOver": 0,
|
||||||
|
"SpeedLimit": 220,
|
||||||
|
"IsFAF": 0,
|
||||||
|
"IsMAP": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ID": 85231,
|
||||||
|
"TerminalID": 10653,
|
||||||
|
"Type": "2",
|
||||||
|
"Transition": "ALL",
|
||||||
|
"TrackCode": "TF",
|
||||||
|
"WptID": 166620,
|
||||||
|
"WptLat": 37.20805556,
|
||||||
|
"WptLon": 24.83444444,
|
||||||
|
"TurnDir": "",
|
||||||
|
"NavID": null,
|
||||||
|
"NavLat": null,
|
||||||
|
"NavLon": null,
|
||||||
|
"NavBear": null,
|
||||||
|
"NavDist": null,
|
||||||
|
"Course": null,
|
||||||
|
"Distance": null,
|
||||||
|
"Alt": "",
|
||||||
|
"Vnav": null,
|
||||||
|
"CenterID": null,
|
||||||
|
"CenterLat": null,
|
||||||
|
"CenterLon": null,
|
||||||
|
"IsFlyOver": 0,
|
||||||
|
"SpeedLimit": null,
|
||||||
|
"IsFAF": 0,
|
||||||
|
"IsMAP": 0
|
||||||
|
}
|
||||||
|
]
|
||||||
164
TermID_10654.json
Normal file
164
TermID_10654.json
Normal file
@ -0,0 +1,164 @@
|
|||||||
|
[
|
||||||
|
{
|
||||||
|
"ID": 85232,
|
||||||
|
"TerminalID": 10654,
|
||||||
|
"Type": "2",
|
||||||
|
"Transition": "ALL",
|
||||||
|
"TrackCode": "CA",
|
||||||
|
"WptID": null,
|
||||||
|
"WptLat": null,
|
||||||
|
"WptLon": null,
|
||||||
|
"TurnDir": "",
|
||||||
|
"NavID": null,
|
||||||
|
"NavLat": null,
|
||||||
|
"NavLon": null,
|
||||||
|
"NavBear": null,
|
||||||
|
"NavDist": null,
|
||||||
|
"Course": 32,
|
||||||
|
"Distance": null,
|
||||||
|
"Alt": "00710A",
|
||||||
|
"Vnav": null,
|
||||||
|
"CenterID": null,
|
||||||
|
"CenterLat": null,
|
||||||
|
"CenterLon": null,
|
||||||
|
"IsFlyOver": 0,
|
||||||
|
"SpeedLimit": null,
|
||||||
|
"IsFAF": 0,
|
||||||
|
"IsMAP": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ID": 85233,
|
||||||
|
"TerminalID": 10654,
|
||||||
|
"Type": "2",
|
||||||
|
"Transition": "ALL",
|
||||||
|
"TrackCode": "CF",
|
||||||
|
"WptID": 166631,
|
||||||
|
"WptLat": 38.07855556,
|
||||||
|
"WptLon": 24.06305,
|
||||||
|
"TurnDir": "",
|
||||||
|
"NavID": 4032,
|
||||||
|
"NavLat": 37.91683889,
|
||||||
|
"NavLon": 23.91443889,
|
||||||
|
"NavBear": 31,
|
||||||
|
"NavDist": 12,
|
||||||
|
"Course": 31,
|
||||||
|
"Distance": 10,
|
||||||
|
"Alt": "",
|
||||||
|
"Vnav": null,
|
||||||
|
"CenterID": null,
|
||||||
|
"CenterLat": null,
|
||||||
|
"CenterLon": null,
|
||||||
|
"IsFlyOver": 0,
|
||||||
|
"SpeedLimit": null,
|
||||||
|
"IsFAF": 0,
|
||||||
|
"IsMAP": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ID": 85234,
|
||||||
|
"TerminalID": 10654,
|
||||||
|
"Type": "2",
|
||||||
|
"Transition": "ALL",
|
||||||
|
"TrackCode": "CI",
|
||||||
|
"WptID": null,
|
||||||
|
"WptLat": null,
|
||||||
|
"WptLon": null,
|
||||||
|
"TurnDir": "",
|
||||||
|
"NavID": null,
|
||||||
|
"NavLat": null,
|
||||||
|
"NavLon": null,
|
||||||
|
"NavBear": null,
|
||||||
|
"NavDist": null,
|
||||||
|
"Course": 31,
|
||||||
|
"Distance": null,
|
||||||
|
"Alt": "04000A",
|
||||||
|
"Vnav": null,
|
||||||
|
"CenterID": null,
|
||||||
|
"CenterLat": null,
|
||||||
|
"CenterLon": null,
|
||||||
|
"IsFlyOver": 0,
|
||||||
|
"SpeedLimit": 210,
|
||||||
|
"IsFAF": 0,
|
||||||
|
"IsMAP": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ID": 85235,
|
||||||
|
"TerminalID": 10654,
|
||||||
|
"Type": "2",
|
||||||
|
"Transition": "ALL",
|
||||||
|
"TrackCode": "CF",
|
||||||
|
"WptID": 166663,
|
||||||
|
"WptLat": 38.04289167,
|
||||||
|
"WptLon": 24.31536944,
|
||||||
|
"TurnDir": "",
|
||||||
|
"NavID": 4015,
|
||||||
|
"NavLat": 37.99413889,
|
||||||
|
"NavLon": 24.49490833,
|
||||||
|
"NavBear": 284,
|
||||||
|
"NavDist": 9,
|
||||||
|
"Course": 104,
|
||||||
|
"Distance": 11,
|
||||||
|
"Alt": "07000A",
|
||||||
|
"Vnav": null,
|
||||||
|
"CenterID": null,
|
||||||
|
"CenterLat": null,
|
||||||
|
"CenterLon": null,
|
||||||
|
"IsFlyOver": -1,
|
||||||
|
"SpeedLimit": null,
|
||||||
|
"IsFAF": 0,
|
||||||
|
"IsMAP": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ID": 85236,
|
||||||
|
"TerminalID": 10654,
|
||||||
|
"Type": "2",
|
||||||
|
"Transition": "ALL",
|
||||||
|
"TrackCode": "DF",
|
||||||
|
"WptID": 253105,
|
||||||
|
"WptLat": 37.55716389,
|
||||||
|
"WptLon": 24.2987,
|
||||||
|
"TurnDir": "",
|
||||||
|
"NavID": null,
|
||||||
|
"NavLat": null,
|
||||||
|
"NavLon": null,
|
||||||
|
"NavBear": null,
|
||||||
|
"NavDist": null,
|
||||||
|
"Course": null,
|
||||||
|
"Distance": null,
|
||||||
|
"Alt": "24000B",
|
||||||
|
"Vnav": null,
|
||||||
|
"CenterID": null,
|
||||||
|
"CenterLat": null,
|
||||||
|
"CenterLon": null,
|
||||||
|
"IsFlyOver": 0,
|
||||||
|
"SpeedLimit": null,
|
||||||
|
"IsFAF": 0,
|
||||||
|
"IsMAP": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ID": 85237,
|
||||||
|
"TerminalID": 10654,
|
||||||
|
"Type": "2",
|
||||||
|
"Transition": "ALL",
|
||||||
|
"TrackCode": "TF",
|
||||||
|
"WptID": 166620,
|
||||||
|
"WptLat": 37.20805556,
|
||||||
|
"WptLon": 24.83444444,
|
||||||
|
"TurnDir": "",
|
||||||
|
"NavID": null,
|
||||||
|
"NavLat": null,
|
||||||
|
"NavLon": null,
|
||||||
|
"NavBear": null,
|
||||||
|
"NavDist": null,
|
||||||
|
"Course": null,
|
||||||
|
"Distance": null,
|
||||||
|
"Alt": "",
|
||||||
|
"Vnav": null,
|
||||||
|
"CenterID": null,
|
||||||
|
"CenterLat": null,
|
||||||
|
"CenterLon": null,
|
||||||
|
"IsFlyOver": 0,
|
||||||
|
"SpeedLimit": null,
|
||||||
|
"IsFAF": 0,
|
||||||
|
"IsMAP": 0
|
||||||
|
}
|
||||||
|
]
|
||||||
137
TermID_10657.json
Normal file
137
TermID_10657.json
Normal file
@ -0,0 +1,137 @@
|
|||||||
|
[
|
||||||
|
{
|
||||||
|
"ID": 85247,
|
||||||
|
"TerminalID": 10657,
|
||||||
|
"Type": "2",
|
||||||
|
"Transition": "ALL",
|
||||||
|
"TrackCode": "CF",
|
||||||
|
"WptID": 253138,
|
||||||
|
"WptLat": 37.91801944,
|
||||||
|
"WptLon": 23.93798333,
|
||||||
|
"TurnDir": "",
|
||||||
|
"NavID": 4040,
|
||||||
|
"NavLat": 37.91801944,
|
||||||
|
"NavLon": 23.93798333,
|
||||||
|
"NavBear": 0,
|
||||||
|
"NavDist": 0,
|
||||||
|
"Course": 212,
|
||||||
|
"Distance": 2,
|
||||||
|
"Alt": "00700A",
|
||||||
|
"Vnav": null,
|
||||||
|
"CenterID": null,
|
||||||
|
"CenterLat": null,
|
||||||
|
"CenterLon": null,
|
||||||
|
"IsFlyOver": 0,
|
||||||
|
"SpeedLimit": null,
|
||||||
|
"IsFAF": 0,
|
||||||
|
"IsMAP": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ID": 85248,
|
||||||
|
"TerminalID": 10657,
|
||||||
|
"Type": "2",
|
||||||
|
"Transition": "ALL",
|
||||||
|
"TrackCode": "FA",
|
||||||
|
"WptID": 253138,
|
||||||
|
"WptLat": 37.91801944,
|
||||||
|
"WptLon": 23.93798333,
|
||||||
|
"TurnDir": "",
|
||||||
|
"NavID": 4040,
|
||||||
|
"NavLat": 37.91801944,
|
||||||
|
"NavLon": 23.93798333,
|
||||||
|
"NavBear": 0,
|
||||||
|
"NavDist": 0,
|
||||||
|
"Course": 203,
|
||||||
|
"Distance": null,
|
||||||
|
"Alt": "04000A",
|
||||||
|
"Vnav": null,
|
||||||
|
"CenterID": null,
|
||||||
|
"CenterLat": null,
|
||||||
|
"CenterLon": null,
|
||||||
|
"IsFlyOver": 0,
|
||||||
|
"SpeedLimit": null,
|
||||||
|
"IsFAF": 0,
|
||||||
|
"IsMAP": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ID": 85249,
|
||||||
|
"TerminalID": 10657,
|
||||||
|
"Type": "2",
|
||||||
|
"Transition": "ALL",
|
||||||
|
"TrackCode": "CD",
|
||||||
|
"WptID": null,
|
||||||
|
"WptLat": null,
|
||||||
|
"WptLon": null,
|
||||||
|
"TurnDir": "",
|
||||||
|
"NavID": 4007,
|
||||||
|
"NavLat": 37.55716389,
|
||||||
|
"NavLon": 24.2987,
|
||||||
|
"NavBear": null,
|
||||||
|
"NavDist": null,
|
||||||
|
"Course": 123,
|
||||||
|
"Distance": 17,
|
||||||
|
"Alt": "06000A",
|
||||||
|
"Vnav": null,
|
||||||
|
"CenterID": null,
|
||||||
|
"CenterLat": null,
|
||||||
|
"CenterLon": null,
|
||||||
|
"IsFlyOver": 0,
|
||||||
|
"SpeedLimit": 210,
|
||||||
|
"IsFAF": 0,
|
||||||
|
"IsMAP": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ID": 85250,
|
||||||
|
"TerminalID": 10657,
|
||||||
|
"Type": "2",
|
||||||
|
"Transition": "ALL",
|
||||||
|
"TrackCode": "DF",
|
||||||
|
"WptID": 253105,
|
||||||
|
"WptLat": 37.55716389,
|
||||||
|
"WptLon": 24.2987,
|
||||||
|
"TurnDir": "",
|
||||||
|
"NavID": null,
|
||||||
|
"NavLat": null,
|
||||||
|
"NavLon": null,
|
||||||
|
"NavBear": null,
|
||||||
|
"NavDist": null,
|
||||||
|
"Course": null,
|
||||||
|
"Distance": null,
|
||||||
|
"Alt": "24000B",
|
||||||
|
"Vnav": null,
|
||||||
|
"CenterID": null,
|
||||||
|
"CenterLat": null,
|
||||||
|
"CenterLon": null,
|
||||||
|
"IsFlyOver": 0,
|
||||||
|
"SpeedLimit": null,
|
||||||
|
"IsFAF": 0,
|
||||||
|
"IsMAP": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ID": 85251,
|
||||||
|
"TerminalID": 10657,
|
||||||
|
"Type": "2",
|
||||||
|
"Transition": "ALL",
|
||||||
|
"TrackCode": "TF",
|
||||||
|
"WptID": 166620,
|
||||||
|
"WptLat": 37.20805556,
|
||||||
|
"WptLon": 24.83444444,
|
||||||
|
"TurnDir": "",
|
||||||
|
"NavID": null,
|
||||||
|
"NavLat": null,
|
||||||
|
"NavLon": null,
|
||||||
|
"NavBear": null,
|
||||||
|
"NavDist": null,
|
||||||
|
"Course": null,
|
||||||
|
"Distance": null,
|
||||||
|
"Alt": "",
|
||||||
|
"Vnav": null,
|
||||||
|
"CenterID": null,
|
||||||
|
"CenterLat": null,
|
||||||
|
"CenterLon": null,
|
||||||
|
"IsFlyOver": 0,
|
||||||
|
"SpeedLimit": null,
|
||||||
|
"IsFAF": 0,
|
||||||
|
"IsMAP": 0
|
||||||
|
}
|
||||||
|
]
|
||||||
110
TermID_10659.json
Normal file
110
TermID_10659.json
Normal file
@ -0,0 +1,110 @@
|
|||||||
|
[
|
||||||
|
{
|
||||||
|
"ID": 85257,
|
||||||
|
"TerminalID": 10659,
|
||||||
|
"Type": "2",
|
||||||
|
"Transition": "ALL",
|
||||||
|
"TrackCode": "CA",
|
||||||
|
"WptID": null,
|
||||||
|
"WptLat": null,
|
||||||
|
"WptLon": null,
|
||||||
|
"TurnDir": "",
|
||||||
|
"NavID": null,
|
||||||
|
"NavLat": null,
|
||||||
|
"NavLon": null,
|
||||||
|
"NavBear": null,
|
||||||
|
"NavDist": null,
|
||||||
|
"Course": 32,
|
||||||
|
"Distance": null,
|
||||||
|
"Alt": "00710A",
|
||||||
|
"Vnav": null,
|
||||||
|
"CenterID": null,
|
||||||
|
"CenterLat": null,
|
||||||
|
"CenterLon": null,
|
||||||
|
"IsFlyOver": 0,
|
||||||
|
"SpeedLimit": null,
|
||||||
|
"IsFAF": 0,
|
||||||
|
"IsMAP": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ID": 85258,
|
||||||
|
"TerminalID": 10659,
|
||||||
|
"Type": "2",
|
||||||
|
"Transition": "ALL",
|
||||||
|
"TrackCode": "FD",
|
||||||
|
"WptID": 253138,
|
||||||
|
"WptLat": 37.91801944,
|
||||||
|
"WptLon": 23.93798333,
|
||||||
|
"TurnDir": "",
|
||||||
|
"NavID": 4040,
|
||||||
|
"NavLat": 37.91801944,
|
||||||
|
"NavLon": 23.93798333,
|
||||||
|
"NavBear": 0,
|
||||||
|
"NavDist": 0,
|
||||||
|
"Course": 32,
|
||||||
|
"Distance": 12,
|
||||||
|
"Alt": "",
|
||||||
|
"Vnav": null,
|
||||||
|
"CenterID": null,
|
||||||
|
"CenterLat": null,
|
||||||
|
"CenterLon": null,
|
||||||
|
"IsFlyOver": 0,
|
||||||
|
"SpeedLimit": null,
|
||||||
|
"IsFAF": 0,
|
||||||
|
"IsMAP": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ID": 85259,
|
||||||
|
"TerminalID": 10659,
|
||||||
|
"Type": "2",
|
||||||
|
"Transition": "ALL",
|
||||||
|
"TrackCode": "DF",
|
||||||
|
"WptID": 253105,
|
||||||
|
"WptLat": 37.55716389,
|
||||||
|
"WptLon": 24.2987,
|
||||||
|
"TurnDir": "R",
|
||||||
|
"NavID": null,
|
||||||
|
"NavLat": null,
|
||||||
|
"NavLon": null,
|
||||||
|
"NavBear": null,
|
||||||
|
"NavDist": null,
|
||||||
|
"Course": null,
|
||||||
|
"Distance": null,
|
||||||
|
"Alt": "24000B06000A",
|
||||||
|
"Vnav": null,
|
||||||
|
"CenterID": null,
|
||||||
|
"CenterLat": null,
|
||||||
|
"CenterLon": null,
|
||||||
|
"IsFlyOver": 0,
|
||||||
|
"SpeedLimit": 210,
|
||||||
|
"IsFAF": 0,
|
||||||
|
"IsMAP": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ID": 85260,
|
||||||
|
"TerminalID": 10659,
|
||||||
|
"Type": "2",
|
||||||
|
"Transition": "ALL",
|
||||||
|
"TrackCode": "TF",
|
||||||
|
"WptID": 166620,
|
||||||
|
"WptLat": 37.20805556,
|
||||||
|
"WptLon": 24.83444444,
|
||||||
|
"TurnDir": "",
|
||||||
|
"NavID": null,
|
||||||
|
"NavLat": null,
|
||||||
|
"NavLon": null,
|
||||||
|
"NavBear": null,
|
||||||
|
"NavDist": null,
|
||||||
|
"Course": null,
|
||||||
|
"Distance": null,
|
||||||
|
"Alt": "",
|
||||||
|
"Vnav": null,
|
||||||
|
"CenterID": null,
|
||||||
|
"CenterLat": null,
|
||||||
|
"CenterLon": null,
|
||||||
|
"IsFlyOver": 0,
|
||||||
|
"SpeedLimit": null,
|
||||||
|
"IsFAF": 0,
|
||||||
|
"IsMAP": 0
|
||||||
|
}
|
||||||
|
]
|
||||||
110
TermID_10679.json
Normal file
110
TermID_10679.json
Normal file
@ -0,0 +1,110 @@
|
|||||||
|
[
|
||||||
|
{
|
||||||
|
"ID": 85331,
|
||||||
|
"TerminalID": 10679,
|
||||||
|
"Type": "2",
|
||||||
|
"Transition": "ALL",
|
||||||
|
"TrackCode": "CA",
|
||||||
|
"WptID": null,
|
||||||
|
"WptLat": null,
|
||||||
|
"WptLon": null,
|
||||||
|
"TurnDir": "",
|
||||||
|
"NavID": null,
|
||||||
|
"NavLat": null,
|
||||||
|
"NavLon": null,
|
||||||
|
"NavBear": null,
|
||||||
|
"NavDist": null,
|
||||||
|
"Course": 32,
|
||||||
|
"Distance": null,
|
||||||
|
"Alt": "00710A",
|
||||||
|
"Vnav": null,
|
||||||
|
"CenterID": null,
|
||||||
|
"CenterLat": null,
|
||||||
|
"CenterLon": null,
|
||||||
|
"IsFlyOver": 0,
|
||||||
|
"SpeedLimit": null,
|
||||||
|
"IsFAF": 0,
|
||||||
|
"IsMAP": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ID": 85332,
|
||||||
|
"TerminalID": 10679,
|
||||||
|
"Type": "2",
|
||||||
|
"Transition": "ALL",
|
||||||
|
"TrackCode": "CF",
|
||||||
|
"WptID": 166630,
|
||||||
|
"WptLat": 38.06507222,
|
||||||
|
"WptLon": 24.05061944,
|
||||||
|
"TurnDir": "",
|
||||||
|
"NavID": 4032,
|
||||||
|
"NavLat": 37.91683889,
|
||||||
|
"NavLon": 23.91443889,
|
||||||
|
"NavBear": 31,
|
||||||
|
"NavDist": 11,
|
||||||
|
"Course": 31,
|
||||||
|
"Distance": 10,
|
||||||
|
"Alt": "",
|
||||||
|
"Vnav": null,
|
||||||
|
"CenterID": null,
|
||||||
|
"CenterLat": null,
|
||||||
|
"CenterLon": null,
|
||||||
|
"IsFlyOver": -1,
|
||||||
|
"SpeedLimit": null,
|
||||||
|
"IsFAF": 0,
|
||||||
|
"IsMAP": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ID": 85333,
|
||||||
|
"TerminalID": 10679,
|
||||||
|
"Type": "2",
|
||||||
|
"Transition": "ALL",
|
||||||
|
"TrackCode": "CR",
|
||||||
|
"WptID": null,
|
||||||
|
"WptLat": null,
|
||||||
|
"WptLon": null,
|
||||||
|
"TurnDir": "L",
|
||||||
|
"NavID": 3985,
|
||||||
|
"NavLat": 37.88867778,
|
||||||
|
"NavLon": 23.80449722,
|
||||||
|
"NavBear": 25,
|
||||||
|
"NavDist": null,
|
||||||
|
"Course": 253,
|
||||||
|
"Distance": null,
|
||||||
|
"Alt": "06000A",
|
||||||
|
"Vnav": null,
|
||||||
|
"CenterID": null,
|
||||||
|
"CenterLat": null,
|
||||||
|
"CenterLon": null,
|
||||||
|
"IsFlyOver": 0,
|
||||||
|
"SpeedLimit": 240,
|
||||||
|
"IsFAF": 0,
|
||||||
|
"IsMAP": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ID": 85334,
|
||||||
|
"TerminalID": 10679,
|
||||||
|
"Type": "2",
|
||||||
|
"Transition": "ALL",
|
||||||
|
"TrackCode": "DF",
|
||||||
|
"WptID": 247838,
|
||||||
|
"WptLat": 37.93041111,
|
||||||
|
"WptLon": 22.9359,
|
||||||
|
"TurnDir": "",
|
||||||
|
"NavID": null,
|
||||||
|
"NavLat": null,
|
||||||
|
"NavLon": null,
|
||||||
|
"NavBear": null,
|
||||||
|
"NavDist": null,
|
||||||
|
"Course": null,
|
||||||
|
"Distance": null,
|
||||||
|
"Alt": "",
|
||||||
|
"Vnav": null,
|
||||||
|
"CenterID": null,
|
||||||
|
"CenterLat": null,
|
||||||
|
"CenterLon": null,
|
||||||
|
"IsFlyOver": 0,
|
||||||
|
"SpeedLimit": null,
|
||||||
|
"IsFAF": 0,
|
||||||
|
"IsMAP": 0
|
||||||
|
}
|
||||||
|
]
|
||||||
218
TermID_11798.json
Normal file
218
TermID_11798.json
Normal file
@ -0,0 +1,218 @@
|
|||||||
|
[
|
||||||
|
{
|
||||||
|
"ID": 90645,
|
||||||
|
"TerminalID": 11798,
|
||||||
|
"Type": "1",
|
||||||
|
"Transition": "RW34L",
|
||||||
|
"TrackCode": "DF",
|
||||||
|
"WptID": 169637,
|
||||||
|
"WptLat": 39.36545,
|
||||||
|
"WptLon": 8.96781667,
|
||||||
|
"TurnDir": "",
|
||||||
|
"NavID": null,
|
||||||
|
"NavLat": null,
|
||||||
|
"NavLon": null,
|
||||||
|
"NavBear": null,
|
||||||
|
"NavDist": null,
|
||||||
|
"Course": null,
|
||||||
|
"Distance": null,
|
||||||
|
"Alt": "",
|
||||||
|
"Vnav": null,
|
||||||
|
"CenterID": null,
|
||||||
|
"CenterLat": null,
|
||||||
|
"CenterLon": null,
|
||||||
|
"IsFlyOver": 0,
|
||||||
|
"SpeedLimit": null,
|
||||||
|
"IsFAF": 0,
|
||||||
|
"IsMAP": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ID": 90646,
|
||||||
|
"TerminalID": 11798,
|
||||||
|
"Type": "1",
|
||||||
|
"Transition": "RW34L",
|
||||||
|
"TrackCode": "FC",
|
||||||
|
"WptID": 169637,
|
||||||
|
"WptLat": 39.36545,
|
||||||
|
"WptLon": 8.96781667,
|
||||||
|
"TurnDir": "",
|
||||||
|
"NavID": 4103,
|
||||||
|
"NavLat": 39.38108333,
|
||||||
|
"NavLon": 8.96566667,
|
||||||
|
"NavBear": 170.9,
|
||||||
|
"NavDist": 0.9,
|
||||||
|
"Course": 344,
|
||||||
|
"Distance": 12,
|
||||||
|
"Alt": "05000A",
|
||||||
|
"Vnav": null,
|
||||||
|
"CenterID": null,
|
||||||
|
"CenterLat": null,
|
||||||
|
"CenterLon": null,
|
||||||
|
"IsFlyOver": -1,
|
||||||
|
"SpeedLimit": null,
|
||||||
|
"IsFAF": 0,
|
||||||
|
"IsMAP": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ID": 90647,
|
||||||
|
"TerminalID": 11798,
|
||||||
|
"Type": "1",
|
||||||
|
"Transition": "RW34L",
|
||||||
|
"TrackCode": "DF",
|
||||||
|
"WptID": 247859,
|
||||||
|
"WptLat": 39.36372222,
|
||||||
|
"WptLon": 8.97402778,
|
||||||
|
"TurnDir": "L",
|
||||||
|
"NavID": null,
|
||||||
|
"NavLat": null,
|
||||||
|
"NavLon": null,
|
||||||
|
"NavBear": null,
|
||||||
|
"NavDist": null,
|
||||||
|
"Course": null,
|
||||||
|
"Distance": null,
|
||||||
|
"Alt": "",
|
||||||
|
"Vnav": null,
|
||||||
|
"CenterID": null,
|
||||||
|
"CenterLat": null,
|
||||||
|
"CenterLon": null,
|
||||||
|
"IsFlyOver": 0,
|
||||||
|
"SpeedLimit": 270,
|
||||||
|
"IsFAF": 0,
|
||||||
|
"IsMAP": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ID": 90648,
|
||||||
|
"TerminalID": 11798,
|
||||||
|
"Type": "1",
|
||||||
|
"Transition": "RW34R",
|
||||||
|
"TrackCode": "DF",
|
||||||
|
"WptID": 169638,
|
||||||
|
"WptLat": 39.36699722,
|
||||||
|
"WptLon": 8.96985833,
|
||||||
|
"TurnDir": "",
|
||||||
|
"NavID": null,
|
||||||
|
"NavLat": null,
|
||||||
|
"NavLon": null,
|
||||||
|
"NavBear": null,
|
||||||
|
"NavDist": null,
|
||||||
|
"Course": null,
|
||||||
|
"Distance": null,
|
||||||
|
"Alt": "",
|
||||||
|
"Vnav": null,
|
||||||
|
"CenterID": null,
|
||||||
|
"CenterLat": null,
|
||||||
|
"CenterLon": null,
|
||||||
|
"IsFlyOver": 0,
|
||||||
|
"SpeedLimit": null,
|
||||||
|
"IsFAF": 0,
|
||||||
|
"IsMAP": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ID": 90649,
|
||||||
|
"TerminalID": 11798,
|
||||||
|
"Type": "1",
|
||||||
|
"Transition": "RW34R",
|
||||||
|
"TrackCode": "FC",
|
||||||
|
"WptID": 169638,
|
||||||
|
"WptLat": 39.36699722,
|
||||||
|
"WptLon": 8.96985833,
|
||||||
|
"TurnDir": "",
|
||||||
|
"NavID": 4103,
|
||||||
|
"NavLat": 39.38108333,
|
||||||
|
"NavLon": 8.96566667,
|
||||||
|
"NavBear": 164,
|
||||||
|
"NavDist": 0.9,
|
||||||
|
"Course": 344,
|
||||||
|
"Distance": 12,
|
||||||
|
"Alt": "05000A",
|
||||||
|
"Vnav": null,
|
||||||
|
"CenterID": null,
|
||||||
|
"CenterLat": null,
|
||||||
|
"CenterLon": null,
|
||||||
|
"IsFlyOver": -1,
|
||||||
|
"SpeedLimit": null,
|
||||||
|
"IsFAF": 0,
|
||||||
|
"IsMAP": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ID": 90650,
|
||||||
|
"TerminalID": 11798,
|
||||||
|
"Type": "1",
|
||||||
|
"Transition": "RW34R",
|
||||||
|
"TrackCode": "DF",
|
||||||
|
"WptID": 247859,
|
||||||
|
"WptLat": 39.36372222,
|
||||||
|
"WptLon": 8.97402778,
|
||||||
|
"TurnDir": "L",
|
||||||
|
"NavID": null,
|
||||||
|
"NavLat": null,
|
||||||
|
"NavLon": null,
|
||||||
|
"NavBear": null,
|
||||||
|
"NavDist": null,
|
||||||
|
"Course": null,
|
||||||
|
"Distance": null,
|
||||||
|
"Alt": "",
|
||||||
|
"Vnav": null,
|
||||||
|
"CenterID": null,
|
||||||
|
"CenterLat": null,
|
||||||
|
"CenterLon": null,
|
||||||
|
"IsFlyOver": 0,
|
||||||
|
"SpeedLimit": 270,
|
||||||
|
"IsFAF": 0,
|
||||||
|
"IsMAP": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ID": 90651,
|
||||||
|
"TerminalID": 11798,
|
||||||
|
"Type": "2",
|
||||||
|
"Transition": "ALL",
|
||||||
|
"TrackCode": "IF",
|
||||||
|
"WptID": 247859,
|
||||||
|
"WptLat": 39.36372222,
|
||||||
|
"WptLon": 8.97402778,
|
||||||
|
"TurnDir": "",
|
||||||
|
"NavID": null,
|
||||||
|
"NavLat": null,
|
||||||
|
"NavLon": null,
|
||||||
|
"NavBear": null,
|
||||||
|
"NavDist": null,
|
||||||
|
"Course": null,
|
||||||
|
"Distance": null,
|
||||||
|
"Alt": "",
|
||||||
|
"Vnav": null,
|
||||||
|
"CenterID": null,
|
||||||
|
"CenterLat": null,
|
||||||
|
"CenterLon": null,
|
||||||
|
"IsFlyOver": 0,
|
||||||
|
"SpeedLimit": null,
|
||||||
|
"IsFAF": 0,
|
||||||
|
"IsMAP": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ID": 90652,
|
||||||
|
"TerminalID": 11798,
|
||||||
|
"Type": "2",
|
||||||
|
"Transition": "ALL",
|
||||||
|
"TrackCode": "TF",
|
||||||
|
"WptID": 253189,
|
||||||
|
"WptLat": 39.11136111,
|
||||||
|
"WptLon": 9.50802778,
|
||||||
|
"TurnDir": "",
|
||||||
|
"NavID": null,
|
||||||
|
"NavLat": null,
|
||||||
|
"NavLon": null,
|
||||||
|
"NavBear": null,
|
||||||
|
"NavDist": null,
|
||||||
|
"Course": null,
|
||||||
|
"Distance": null,
|
||||||
|
"Alt": "",
|
||||||
|
"Vnav": null,
|
||||||
|
"CenterID": null,
|
||||||
|
"CenterLat": null,
|
||||||
|
"CenterLon": null,
|
||||||
|
"IsFlyOver": 0,
|
||||||
|
"SpeedLimit": null,
|
||||||
|
"IsFAF": 0,
|
||||||
|
"IsMAP": 0
|
||||||
|
}
|
||||||
|
]
|
||||||
623
TermID_11909.json
Normal file
623
TermID_11909.json
Normal file
@ -0,0 +1,623 @@
|
|||||||
|
[
|
||||||
|
{
|
||||||
|
"ID": 91603,
|
||||||
|
"TerminalID": 11909,
|
||||||
|
"Type": "2",
|
||||||
|
"Transition": "ALL",
|
||||||
|
"TrackCode": "CA",
|
||||||
|
"WptID": null,
|
||||||
|
"WptLat": null,
|
||||||
|
"WptLon": null,
|
||||||
|
"TurnDir": "",
|
||||||
|
"NavID": null,
|
||||||
|
"NavLat": null,
|
||||||
|
"NavLon": null,
|
||||||
|
"NavBear": null,
|
||||||
|
"NavDist": null,
|
||||||
|
"Course": 346,
|
||||||
|
"Distance": null,
|
||||||
|
"Alt": "01170A",
|
||||||
|
"Vnav": null,
|
||||||
|
"CenterID": null,
|
||||||
|
"CenterLat": null,
|
||||||
|
"CenterLon": null,
|
||||||
|
"IsFlyOver": 0,
|
||||||
|
"SpeedLimit": null,
|
||||||
|
"IsFAF": 0,
|
||||||
|
"IsMAP": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ID": 91604,
|
||||||
|
"TerminalID": 11909,
|
||||||
|
"Type": "2",
|
||||||
|
"Transition": "ALL",
|
||||||
|
"TrackCode": "CD",
|
||||||
|
"WptID": null,
|
||||||
|
"WptLat": null,
|
||||||
|
"WptLon": null,
|
||||||
|
"TurnDir": "",
|
||||||
|
"NavID": 4169,
|
||||||
|
"NavLat": 45.64077778,
|
||||||
|
"NavLon": 8.73483333,
|
||||||
|
"NavBear": null,
|
||||||
|
"NavDist": null,
|
||||||
|
"Course": 356,
|
||||||
|
"Distance": 4.1,
|
||||||
|
"Alt": "02200A",
|
||||||
|
"Vnav": null,
|
||||||
|
"CenterID": null,
|
||||||
|
"CenterLat": null,
|
||||||
|
"CenterLon": null,
|
||||||
|
"IsFlyOver": 0,
|
||||||
|
"SpeedLimit": null,
|
||||||
|
"IsFAF": 0,
|
||||||
|
"IsMAP": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ID": 91605,
|
||||||
|
"TerminalID": 11909,
|
||||||
|
"Type": "2",
|
||||||
|
"Transition": "ALL",
|
||||||
|
"TrackCode": "VR",
|
||||||
|
"WptID": null,
|
||||||
|
"WptLat": null,
|
||||||
|
"WptLon": null,
|
||||||
|
"TurnDir": "",
|
||||||
|
"NavID": 4169,
|
||||||
|
"NavLat": 45.64077778,
|
||||||
|
"NavLon": 8.73483333,
|
||||||
|
"NavBear": 9,
|
||||||
|
"NavDist": null,
|
||||||
|
"Course": 41,
|
||||||
|
"Distance": null,
|
||||||
|
"Alt": "03000A",
|
||||||
|
"Vnav": null,
|
||||||
|
"CenterID": null,
|
||||||
|
"CenterLat": null,
|
||||||
|
"CenterLon": null,
|
||||||
|
"IsFlyOver": 0,
|
||||||
|
"SpeedLimit": 220,
|
||||||
|
"IsFAF": 0,
|
||||||
|
"IsMAP": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ID": 91606,
|
||||||
|
"TerminalID": 11909,
|
||||||
|
"Type": "2",
|
||||||
|
"Transition": "ALL",
|
||||||
|
"TrackCode": "CF",
|
||||||
|
"WptID": 169914,
|
||||||
|
"WptLat": 45.72388889,
|
||||||
|
"WptLon": 8.86777778,
|
||||||
|
"TurnDir": "R",
|
||||||
|
"NavID": 4204,
|
||||||
|
"NavLat": 45.64597222,
|
||||||
|
"NavLon": 9.02158333,
|
||||||
|
"NavBear": 302.9,
|
||||||
|
"NavDist": 8,
|
||||||
|
"Course": 123,
|
||||||
|
"Distance": 2,
|
||||||
|
"Alt": "",
|
||||||
|
"Vnav": null,
|
||||||
|
"CenterID": null,
|
||||||
|
"CenterLat": null,
|
||||||
|
"CenterLon": null,
|
||||||
|
"IsFlyOver": -1,
|
||||||
|
"SpeedLimit": null,
|
||||||
|
"IsFAF": 0,
|
||||||
|
"IsMAP": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ID": 91607,
|
||||||
|
"TerminalID": 11909,
|
||||||
|
"Type": "2",
|
||||||
|
"Transition": "ALL",
|
||||||
|
"TrackCode": "CA",
|
||||||
|
"WptID": null,
|
||||||
|
"WptLat": null,
|
||||||
|
"WptLon": null,
|
||||||
|
"TurnDir": "",
|
||||||
|
"NavID": null,
|
||||||
|
"NavLat": null,
|
||||||
|
"NavLon": null,
|
||||||
|
"NavBear": null,
|
||||||
|
"NavDist": null,
|
||||||
|
"Course": 173,
|
||||||
|
"Distance": null,
|
||||||
|
"Alt": "04000A",
|
||||||
|
"Vnav": null,
|
||||||
|
"CenterID": null,
|
||||||
|
"CenterLat": null,
|
||||||
|
"CenterLon": null,
|
||||||
|
"IsFlyOver": 0,
|
||||||
|
"SpeedLimit": 230,
|
||||||
|
"IsFAF": 0,
|
||||||
|
"IsMAP": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ID": 91608,
|
||||||
|
"TerminalID": 11909,
|
||||||
|
"Type": "2",
|
||||||
|
"Transition": "ALL",
|
||||||
|
"TrackCode": "CF",
|
||||||
|
"WptID": 253267,
|
||||||
|
"WptLat": 45.64077778,
|
||||||
|
"WptLon": 8.73483333,
|
||||||
|
"TurnDir": "R",
|
||||||
|
"NavID": 4204,
|
||||||
|
"NavLat": 45.64597222,
|
||||||
|
"NavLon": 9.02158333,
|
||||||
|
"NavBear": 265.6,
|
||||||
|
"NavDist": 12.1,
|
||||||
|
"Course": 266,
|
||||||
|
"Distance": 5,
|
||||||
|
"Alt": "",
|
||||||
|
"Vnav": null,
|
||||||
|
"CenterID": null,
|
||||||
|
"CenterLat": null,
|
||||||
|
"CenterLon": null,
|
||||||
|
"IsFlyOver": 0,
|
||||||
|
"SpeedLimit": 230,
|
||||||
|
"IsFAF": 0,
|
||||||
|
"IsMAP": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ID": 91609,
|
||||||
|
"TerminalID": 11909,
|
||||||
|
"Type": "3",
|
||||||
|
"Transition": "AOS5X",
|
||||||
|
"TrackCode": "IF",
|
||||||
|
"WptID": 253267,
|
||||||
|
"WptLat": 45.64077778,
|
||||||
|
"WptLon": 8.73483333,
|
||||||
|
"TurnDir": "",
|
||||||
|
"NavID": null,
|
||||||
|
"NavLat": null,
|
||||||
|
"NavLon": null,
|
||||||
|
"NavBear": null,
|
||||||
|
"NavDist": null,
|
||||||
|
"Course": null,
|
||||||
|
"Distance": null,
|
||||||
|
"Alt": "",
|
||||||
|
"Vnav": null,
|
||||||
|
"CenterID": null,
|
||||||
|
"CenterLat": null,
|
||||||
|
"CenterLon": null,
|
||||||
|
"IsFlyOver": 0,
|
||||||
|
"SpeedLimit": null,
|
||||||
|
"IsFAF": 0,
|
||||||
|
"IsMAP": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ID": 91610,
|
||||||
|
"TerminalID": 11909,
|
||||||
|
"Type": "3",
|
||||||
|
"Transition": "AOS5X",
|
||||||
|
"TrackCode": "TF",
|
||||||
|
"WptID": 169921,
|
||||||
|
"WptLat": 45.57482778,
|
||||||
|
"WptLon": 8.31563056,
|
||||||
|
"TurnDir": "",
|
||||||
|
"NavID": null,
|
||||||
|
"NavLat": null,
|
||||||
|
"NavLon": null,
|
||||||
|
"NavBear": null,
|
||||||
|
"NavDist": null,
|
||||||
|
"Course": null,
|
||||||
|
"Distance": null,
|
||||||
|
"Alt": "",
|
||||||
|
"Vnav": null,
|
||||||
|
"CenterID": null,
|
||||||
|
"CenterLat": null,
|
||||||
|
"CenterLon": null,
|
||||||
|
"IsFlyOver": 0,
|
||||||
|
"SpeedLimit": null,
|
||||||
|
"IsFAF": 0,
|
||||||
|
"IsMAP": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ID": 91611,
|
||||||
|
"TerminalID": 11909,
|
||||||
|
"Type": "3",
|
||||||
|
"Transition": "AOS5X",
|
||||||
|
"TrackCode": "TF",
|
||||||
|
"WptID": 169922,
|
||||||
|
"WptLat": 45.59140556,
|
||||||
|
"WptLon": 8.24456111,
|
||||||
|
"TurnDir": "",
|
||||||
|
"NavID": null,
|
||||||
|
"NavLat": null,
|
||||||
|
"NavLon": null,
|
||||||
|
"NavBear": null,
|
||||||
|
"NavDist": null,
|
||||||
|
"Course": null,
|
||||||
|
"Distance": null,
|
||||||
|
"Alt": "13500A",
|
||||||
|
"Vnav": null,
|
||||||
|
"CenterID": null,
|
||||||
|
"CenterLat": null,
|
||||||
|
"CenterLon": null,
|
||||||
|
"IsFlyOver": 0,
|
||||||
|
"SpeedLimit": null,
|
||||||
|
"IsFAF": 0,
|
||||||
|
"IsMAP": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ID": 91612,
|
||||||
|
"TerminalID": 11909,
|
||||||
|
"Type": "3",
|
||||||
|
"Transition": "AOS5X",
|
||||||
|
"TrackCode": "TF",
|
||||||
|
"WptID": 169932,
|
||||||
|
"WptLat": 45.66769722,
|
||||||
|
"WptLon": 7.91445,
|
||||||
|
"TurnDir": "",
|
||||||
|
"NavID": null,
|
||||||
|
"NavLat": null,
|
||||||
|
"NavLon": null,
|
||||||
|
"NavBear": null,
|
||||||
|
"NavDist": null,
|
||||||
|
"Course": null,
|
||||||
|
"Distance": null,
|
||||||
|
"Alt": "16000A",
|
||||||
|
"Vnav": null,
|
||||||
|
"CenterID": null,
|
||||||
|
"CenterLat": null,
|
||||||
|
"CenterLon": null,
|
||||||
|
"IsFlyOver": 0,
|
||||||
|
"SpeedLimit": null,
|
||||||
|
"IsFAF": 0,
|
||||||
|
"IsMAP": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ID": 91613,
|
||||||
|
"TerminalID": 11909,
|
||||||
|
"Type": "3",
|
||||||
|
"Transition": "AOS5X",
|
||||||
|
"TrackCode": "TF",
|
||||||
|
"WptID": 42141,
|
||||||
|
"WptLat": 45.79638889,
|
||||||
|
"WptLon": 7.34583333,
|
||||||
|
"TurnDir": "",
|
||||||
|
"NavID": null,
|
||||||
|
"NavLat": null,
|
||||||
|
"NavLon": null,
|
||||||
|
"NavBear": null,
|
||||||
|
"NavDist": null,
|
||||||
|
"Course": null,
|
||||||
|
"Distance": null,
|
||||||
|
"Alt": "19000A",
|
||||||
|
"Vnav": null,
|
||||||
|
"CenterID": null,
|
||||||
|
"CenterLat": null,
|
||||||
|
"CenterLon": null,
|
||||||
|
"IsFlyOver": 0,
|
||||||
|
"SpeedLimit": null,
|
||||||
|
"IsFAF": 0,
|
||||||
|
"IsMAP": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ID": 91614,
|
||||||
|
"TerminalID": 11909,
|
||||||
|
"Type": "3",
|
||||||
|
"Transition": "LAG9X",
|
||||||
|
"TrackCode": "IF",
|
||||||
|
"WptID": 253267,
|
||||||
|
"WptLat": 45.64077778,
|
||||||
|
"WptLon": 8.73483333,
|
||||||
|
"TurnDir": "",
|
||||||
|
"NavID": null,
|
||||||
|
"NavLat": null,
|
||||||
|
"NavLon": null,
|
||||||
|
"NavBear": null,
|
||||||
|
"NavDist": null,
|
||||||
|
"Course": null,
|
||||||
|
"Distance": null,
|
||||||
|
"Alt": "",
|
||||||
|
"Vnav": null,
|
||||||
|
"CenterID": null,
|
||||||
|
"CenterLat": null,
|
||||||
|
"CenterLon": null,
|
||||||
|
"IsFlyOver": 0,
|
||||||
|
"SpeedLimit": null,
|
||||||
|
"IsFAF": 0,
|
||||||
|
"IsMAP": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ID": 91615,
|
||||||
|
"TerminalID": 11909,
|
||||||
|
"Type": "3",
|
||||||
|
"Transition": "LAG9X",
|
||||||
|
"TrackCode": "TF",
|
||||||
|
"WptID": 42354,
|
||||||
|
"WptLat": 45.55416667,
|
||||||
|
"WptLon": 8.44916667,
|
||||||
|
"TurnDir": "",
|
||||||
|
"NavID": null,
|
||||||
|
"NavLat": null,
|
||||||
|
"NavLon": null,
|
||||||
|
"NavBear": null,
|
||||||
|
"NavDist": null,
|
||||||
|
"Course": null,
|
||||||
|
"Distance": null,
|
||||||
|
"Alt": "",
|
||||||
|
"Vnav": null,
|
||||||
|
"CenterID": null,
|
||||||
|
"CenterLat": null,
|
||||||
|
"CenterLon": null,
|
||||||
|
"IsFlyOver": 0,
|
||||||
|
"SpeedLimit": null,
|
||||||
|
"IsFAF": 0,
|
||||||
|
"IsMAP": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ID": 91616,
|
||||||
|
"TerminalID": 11909,
|
||||||
|
"Type": "3",
|
||||||
|
"Transition": "LAG9X",
|
||||||
|
"TrackCode": "TF",
|
||||||
|
"WptID": 42823,
|
||||||
|
"WptLat": 45.10916667,
|
||||||
|
"WptLon": 8.22972222,
|
||||||
|
"TurnDir": "",
|
||||||
|
"NavID": null,
|
||||||
|
"NavLat": null,
|
||||||
|
"NavLon": null,
|
||||||
|
"NavBear": null,
|
||||||
|
"NavDist": null,
|
||||||
|
"Course": null,
|
||||||
|
"Distance": null,
|
||||||
|
"Alt": "",
|
||||||
|
"Vnav": null,
|
||||||
|
"CenterID": null,
|
||||||
|
"CenterLat": null,
|
||||||
|
"CenterLon": null,
|
||||||
|
"IsFlyOver": 0,
|
||||||
|
"SpeedLimit": null,
|
||||||
|
"IsFAF": 0,
|
||||||
|
"IsMAP": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ID": 91617,
|
||||||
|
"TerminalID": 11909,
|
||||||
|
"Type": "3",
|
||||||
|
"Transition": "LAG9X",
|
||||||
|
"TrackCode": "TF",
|
||||||
|
"WptID": 42487,
|
||||||
|
"WptLat": 44.39416667,
|
||||||
|
"WptLon": 8.49805556,
|
||||||
|
"TurnDir": "",
|
||||||
|
"NavID": null,
|
||||||
|
"NavLat": null,
|
||||||
|
"NavLon": null,
|
||||||
|
"NavBear": null,
|
||||||
|
"NavDist": null,
|
||||||
|
"Course": null,
|
||||||
|
"Distance": null,
|
||||||
|
"Alt": "11000A",
|
||||||
|
"Vnav": null,
|
||||||
|
"CenterID": null,
|
||||||
|
"CenterLat": null,
|
||||||
|
"CenterLon": null,
|
||||||
|
"IsFlyOver": 0,
|
||||||
|
"SpeedLimit": null,
|
||||||
|
"IsFAF": 0,
|
||||||
|
"IsMAP": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ID": 91618,
|
||||||
|
"TerminalID": 11909,
|
||||||
|
"Type": "3",
|
||||||
|
"Transition": "NED9X",
|
||||||
|
"TrackCode": "IF",
|
||||||
|
"WptID": 253267,
|
||||||
|
"WptLat": 45.64077778,
|
||||||
|
"WptLon": 8.73483333,
|
||||||
|
"TurnDir": "",
|
||||||
|
"NavID": null,
|
||||||
|
"NavLat": null,
|
||||||
|
"NavLon": null,
|
||||||
|
"NavBear": null,
|
||||||
|
"NavDist": null,
|
||||||
|
"Course": null,
|
||||||
|
"Distance": null,
|
||||||
|
"Alt": "",
|
||||||
|
"Vnav": null,
|
||||||
|
"CenterID": null,
|
||||||
|
"CenterLat": null,
|
||||||
|
"CenterLon": null,
|
||||||
|
"IsFlyOver": 0,
|
||||||
|
"SpeedLimit": null,
|
||||||
|
"IsFAF": 0,
|
||||||
|
"IsMAP": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ID": 91619,
|
||||||
|
"TerminalID": 11909,
|
||||||
|
"Type": "3",
|
||||||
|
"Transition": "NED9X",
|
||||||
|
"TrackCode": "TF",
|
||||||
|
"WptID": 42354,
|
||||||
|
"WptLat": 45.55416667,
|
||||||
|
"WptLon": 8.44916667,
|
||||||
|
"TurnDir": "",
|
||||||
|
"NavID": null,
|
||||||
|
"NavLat": null,
|
||||||
|
"NavLon": null,
|
||||||
|
"NavBear": null,
|
||||||
|
"NavDist": null,
|
||||||
|
"Course": null,
|
||||||
|
"Distance": null,
|
||||||
|
"Alt": "",
|
||||||
|
"Vnav": null,
|
||||||
|
"CenterID": null,
|
||||||
|
"CenterLat": null,
|
||||||
|
"CenterLon": null,
|
||||||
|
"IsFlyOver": 0,
|
||||||
|
"SpeedLimit": null,
|
||||||
|
"IsFAF": 0,
|
||||||
|
"IsMAP": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ID": 91620,
|
||||||
|
"TerminalID": 11909,
|
||||||
|
"Type": "3",
|
||||||
|
"Transition": "NED9X",
|
||||||
|
"TrackCode": "TF",
|
||||||
|
"WptID": 42823,
|
||||||
|
"WptLat": 45.10916667,
|
||||||
|
"WptLon": 8.22972222,
|
||||||
|
"TurnDir": "",
|
||||||
|
"NavID": null,
|
||||||
|
"NavLat": null,
|
||||||
|
"NavLon": null,
|
||||||
|
"NavBear": null,
|
||||||
|
"NavDist": null,
|
||||||
|
"Course": null,
|
||||||
|
"Distance": null,
|
||||||
|
"Alt": "",
|
||||||
|
"Vnav": null,
|
||||||
|
"CenterID": null,
|
||||||
|
"CenterLat": null,
|
||||||
|
"CenterLon": null,
|
||||||
|
"IsFlyOver": 0,
|
||||||
|
"SpeedLimit": null,
|
||||||
|
"IsFAF": 0,
|
||||||
|
"IsMAP": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ID": 91621,
|
||||||
|
"TerminalID": 11909,
|
||||||
|
"Type": "3",
|
||||||
|
"Transition": "NED9X",
|
||||||
|
"TrackCode": "TF",
|
||||||
|
"WptID": 42584,
|
||||||
|
"WptLat": 44.69388889,
|
||||||
|
"WptLon": 8.14055556,
|
||||||
|
"TurnDir": "",
|
||||||
|
"NavID": null,
|
||||||
|
"NavLat": null,
|
||||||
|
"NavLon": null,
|
||||||
|
"NavBear": null,
|
||||||
|
"NavDist": null,
|
||||||
|
"Course": null,
|
||||||
|
"Distance": null,
|
||||||
|
"Alt": "20000A",
|
||||||
|
"Vnav": null,
|
||||||
|
"CenterID": null,
|
||||||
|
"CenterLat": null,
|
||||||
|
"CenterLon": null,
|
||||||
|
"IsFlyOver": 0,
|
||||||
|
"SpeedLimit": null,
|
||||||
|
"IsFAF": 0,
|
||||||
|
"IsMAP": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ID": 91622,
|
||||||
|
"TerminalID": 11909,
|
||||||
|
"Type": "3",
|
||||||
|
"Transition": "TOP9X",
|
||||||
|
"TrackCode": "IF",
|
||||||
|
"WptID": 253267,
|
||||||
|
"WptLat": 45.64077778,
|
||||||
|
"WptLon": 8.73483333,
|
||||||
|
"TurnDir": "",
|
||||||
|
"NavID": null,
|
||||||
|
"NavLat": null,
|
||||||
|
"NavLon": null,
|
||||||
|
"NavBear": null,
|
||||||
|
"NavDist": null,
|
||||||
|
"Course": null,
|
||||||
|
"Distance": null,
|
||||||
|
"Alt": "",
|
||||||
|
"Vnav": null,
|
||||||
|
"CenterID": null,
|
||||||
|
"CenterLat": null,
|
||||||
|
"CenterLon": null,
|
||||||
|
"IsFlyOver": 0,
|
||||||
|
"SpeedLimit": null,
|
||||||
|
"IsFAF": 0,
|
||||||
|
"IsMAP": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ID": 91623,
|
||||||
|
"TerminalID": 11909,
|
||||||
|
"Type": "3",
|
||||||
|
"Transition": "TOP9X",
|
||||||
|
"TrackCode": "TF",
|
||||||
|
"WptID": 42354,
|
||||||
|
"WptLat": 45.55416667,
|
||||||
|
"WptLon": 8.44916667,
|
||||||
|
"TurnDir": "",
|
||||||
|
"NavID": null,
|
||||||
|
"NavLat": null,
|
||||||
|
"NavLon": null,
|
||||||
|
"NavBear": null,
|
||||||
|
"NavDist": null,
|
||||||
|
"Course": null,
|
||||||
|
"Distance": null,
|
||||||
|
"Alt": "",
|
||||||
|
"Vnav": null,
|
||||||
|
"CenterID": null,
|
||||||
|
"CenterLat": null,
|
||||||
|
"CenterLon": null,
|
||||||
|
"IsFlyOver": 0,
|
||||||
|
"SpeedLimit": null,
|
||||||
|
"IsFAF": 0,
|
||||||
|
"IsMAP": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ID": 91624,
|
||||||
|
"TerminalID": 11909,
|
||||||
|
"Type": "3",
|
||||||
|
"Transition": "TOP9X",
|
||||||
|
"TrackCode": "TF",
|
||||||
|
"WptID": 42823,
|
||||||
|
"WptLat": 45.10916667,
|
||||||
|
"WptLon": 8.22972222,
|
||||||
|
"TurnDir": "",
|
||||||
|
"NavID": null,
|
||||||
|
"NavLat": null,
|
||||||
|
"NavLon": null,
|
||||||
|
"NavBear": null,
|
||||||
|
"NavDist": null,
|
||||||
|
"Course": null,
|
||||||
|
"Distance": null,
|
||||||
|
"Alt": "",
|
||||||
|
"Vnav": null,
|
||||||
|
"CenterID": null,
|
||||||
|
"CenterLat": null,
|
||||||
|
"CenterLon": null,
|
||||||
|
"IsFlyOver": 0,
|
||||||
|
"SpeedLimit": null,
|
||||||
|
"IsFAF": 0,
|
||||||
|
"IsMAP": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ID": 91625,
|
||||||
|
"TerminalID": 11909,
|
||||||
|
"Type": "3",
|
||||||
|
"Transition": "TOP9X",
|
||||||
|
"TrackCode": "TF",
|
||||||
|
"WptID": 253309,
|
||||||
|
"WptLat": 44.92541667,
|
||||||
|
"WptLon": 7.86166667,
|
||||||
|
"TurnDir": "",
|
||||||
|
"NavID": null,
|
||||||
|
"NavLat": null,
|
||||||
|
"NavLon": null,
|
||||||
|
"NavBear": null,
|
||||||
|
"NavDist": null,
|
||||||
|
"Course": null,
|
||||||
|
"Distance": null,
|
||||||
|
"Alt": "",
|
||||||
|
"Vnav": null,
|
||||||
|
"CenterID": null,
|
||||||
|
"CenterLat": null,
|
||||||
|
"CenterLon": null,
|
||||||
|
"IsFlyOver": 0,
|
||||||
|
"SpeedLimit": null,
|
||||||
|
"IsFAF": 0,
|
||||||
|
"IsMAP": 0
|
||||||
|
}
|
||||||
|
]
|
||||||
83
TermID_12765.json
Normal file
83
TermID_12765.json
Normal file
@ -0,0 +1,83 @@
|
|||||||
|
[
|
||||||
|
{
|
||||||
|
"ID": 97919,
|
||||||
|
"TerminalID": 12765,
|
||||||
|
"Type": "2",
|
||||||
|
"Transition": "ALL",
|
||||||
|
"TrackCode": "CF",
|
||||||
|
"WptID": 253373,
|
||||||
|
"WptLat": 46.95531111,
|
||||||
|
"WptLon": 15.44944444,
|
||||||
|
"TurnDir": "",
|
||||||
|
"NavID": 4275,
|
||||||
|
"NavLat": 46.95531111,
|
||||||
|
"NavLon": 15.44944444,
|
||||||
|
"NavBear": 0,
|
||||||
|
"NavDist": 0,
|
||||||
|
"Course": 164,
|
||||||
|
"Distance": 2,
|
||||||
|
"Alt": "02200A",
|
||||||
|
"Vnav": null,
|
||||||
|
"CenterID": null,
|
||||||
|
"CenterLat": null,
|
||||||
|
"CenterLon": null,
|
||||||
|
"IsFlyOver": -1,
|
||||||
|
"SpeedLimit": null,
|
||||||
|
"IsFAF": 0,
|
||||||
|
"IsMAP": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ID": 97920,
|
||||||
|
"TerminalID": 12765,
|
||||||
|
"Type": "2",
|
||||||
|
"Transition": "ALL",
|
||||||
|
"TrackCode": "DF",
|
||||||
|
"WptID": 253373,
|
||||||
|
"WptLat": 46.95531111,
|
||||||
|
"WptLon": 15.44944444,
|
||||||
|
"TurnDir": "L",
|
||||||
|
"NavID": null,
|
||||||
|
"NavLat": null,
|
||||||
|
"NavLon": null,
|
||||||
|
"NavBear": null,
|
||||||
|
"NavDist": null,
|
||||||
|
"Course": null,
|
||||||
|
"Distance": null,
|
||||||
|
"Alt": "04000A",
|
||||||
|
"Vnav": null,
|
||||||
|
"CenterID": null,
|
||||||
|
"CenterLat": null,
|
||||||
|
"CenterLon": null,
|
||||||
|
"IsFlyOver": 0,
|
||||||
|
"SpeedLimit": null,
|
||||||
|
"IsFAF": 0,
|
||||||
|
"IsMAP": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ID": 97921,
|
||||||
|
"TerminalID": 12765,
|
||||||
|
"Type": "2",
|
||||||
|
"Transition": "ALL",
|
||||||
|
"TrackCode": "HA",
|
||||||
|
"WptID": 253373,
|
||||||
|
"WptLat": 46.95531111,
|
||||||
|
"WptLon": 15.44944444,
|
||||||
|
"TurnDir": "R",
|
||||||
|
"NavID": null,
|
||||||
|
"NavLat": null,
|
||||||
|
"NavLon": null,
|
||||||
|
"NavBear": null,
|
||||||
|
"NavDist": null,
|
||||||
|
"Course": 344,
|
||||||
|
"Distance": 4,
|
||||||
|
"Alt": "04000A",
|
||||||
|
"Vnav": null,
|
||||||
|
"CenterID": null,
|
||||||
|
"CenterLat": null,
|
||||||
|
"CenterLon": null,
|
||||||
|
"IsFlyOver": 0,
|
||||||
|
"SpeedLimit": null,
|
||||||
|
"IsFAF": 0,
|
||||||
|
"IsMAP": 0
|
||||||
|
}
|
||||||
|
]
|
||||||
272
TermID_67790.json
Normal file
272
TermID_67790.json
Normal file
@ -0,0 +1,272 @@
|
|||||||
|
[
|
||||||
|
{
|
||||||
|
"ID": 458535,
|
||||||
|
"TerminalID": 67790,
|
||||||
|
"Type": "A",
|
||||||
|
"Transition": "UPV1",
|
||||||
|
"TrackCode": "IF",
|
||||||
|
"WptID": 250431,
|
||||||
|
"WptLat": -28.40175278,
|
||||||
|
"WptLon": 21.26041111,
|
||||||
|
"TurnDir": "",
|
||||||
|
"NavID": null,
|
||||||
|
"NavLat": null,
|
||||||
|
"NavLon": null,
|
||||||
|
"NavBear": null,
|
||||||
|
"NavDist": null,
|
||||||
|
"Course": null,
|
||||||
|
"Distance": null,
|
||||||
|
"Alt": "05800A",
|
||||||
|
"Vnav": null,
|
||||||
|
"CenterID": null,
|
||||||
|
"CenterLat": null,
|
||||||
|
"CenterLon": null,
|
||||||
|
"IsFlyOver": 0,
|
||||||
|
"SpeedLimit": null,
|
||||||
|
"IsFAF": 0,
|
||||||
|
"IsMAP": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ID": 458536,
|
||||||
|
"TerminalID": 67790,
|
||||||
|
"Type": "A",
|
||||||
|
"Transition": "UPV1",
|
||||||
|
"TrackCode": "PI",
|
||||||
|
"WptID": 250431,
|
||||||
|
"WptLat": -28.40175278,
|
||||||
|
"WptLon": 21.26041111,
|
||||||
|
"TurnDir": "L",
|
||||||
|
"NavID": 1333,
|
||||||
|
"NavLat": -28.40175278,
|
||||||
|
"NavLon": 21.26041111,
|
||||||
|
"NavBear": 0,
|
||||||
|
"NavDist": 0,
|
||||||
|
"Course": 213,
|
||||||
|
"Distance": 10,
|
||||||
|
"Alt": "04500A",
|
||||||
|
"Vnav": null,
|
||||||
|
"CenterID": null,
|
||||||
|
"CenterLat": null,
|
||||||
|
"CenterLon": null,
|
||||||
|
"IsFlyOver": 0,
|
||||||
|
"SpeedLimit": null,
|
||||||
|
"IsFAF": 0,
|
||||||
|
"IsMAP": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ID": 458537,
|
||||||
|
"TerminalID": 67790,
|
||||||
|
"Type": "A",
|
||||||
|
"Transition": "UPV1",
|
||||||
|
"TrackCode": "CF",
|
||||||
|
"WptID": 113102,
|
||||||
|
"WptLat": -28.51632222,
|
||||||
|
"WptLon": 21.33836389,
|
||||||
|
"TurnDir": "",
|
||||||
|
"NavID": 1333,
|
||||||
|
"NavLat": -28.40175278,
|
||||||
|
"NavLon": 21.26041111,
|
||||||
|
"NavBear": 168,
|
||||||
|
"NavDist": 8,
|
||||||
|
"Course": 348,
|
||||||
|
"Distance": 2,
|
||||||
|
"Alt": "04500A",
|
||||||
|
"Vnav": null,
|
||||||
|
"CenterID": null,
|
||||||
|
"CenterLat": null,
|
||||||
|
"CenterLon": null,
|
||||||
|
"IsFlyOver": 0,
|
||||||
|
"SpeedLimit": null,
|
||||||
|
"IsFAF": 0,
|
||||||
|
"IsMAP": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ID": 458538,
|
||||||
|
"TerminalID": 67790,
|
||||||
|
"Type": "A",
|
||||||
|
"Transition": "UPV2",
|
||||||
|
"TrackCode": "IF",
|
||||||
|
"WptID": 250431,
|
||||||
|
"WptLat": -28.40175278,
|
||||||
|
"WptLon": 21.26041111,
|
||||||
|
"TurnDir": "",
|
||||||
|
"NavID": null,
|
||||||
|
"NavLat": null,
|
||||||
|
"NavLon": null,
|
||||||
|
"NavBear": null,
|
||||||
|
"NavDist": null,
|
||||||
|
"Course": null,
|
||||||
|
"Distance": null,
|
||||||
|
"Alt": "05800A",
|
||||||
|
"Vnav": null,
|
||||||
|
"CenterID": null,
|
||||||
|
"CenterLat": null,
|
||||||
|
"CenterLon": null,
|
||||||
|
"IsFlyOver": 0,
|
||||||
|
"SpeedLimit": null,
|
||||||
|
"IsFAF": 0,
|
||||||
|
"IsMAP": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ID": 458539,
|
||||||
|
"TerminalID": 67790,
|
||||||
|
"Type": "A",
|
||||||
|
"Transition": "UPV2",
|
||||||
|
"TrackCode": "HF",
|
||||||
|
"WptID": 250431,
|
||||||
|
"WptLat": -28.40175278,
|
||||||
|
"WptLon": 21.26041111,
|
||||||
|
"TurnDir": "L",
|
||||||
|
"NavID": null,
|
||||||
|
"NavLat": null,
|
||||||
|
"NavLon": null,
|
||||||
|
"NavBear": null,
|
||||||
|
"NavDist": null,
|
||||||
|
"Course": 348,
|
||||||
|
"Distance": 8,
|
||||||
|
"Alt": "04500A",
|
||||||
|
"Vnav": null,
|
||||||
|
"CenterID": null,
|
||||||
|
"CenterLat": null,
|
||||||
|
"CenterLon": null,
|
||||||
|
"IsFlyOver": 0,
|
||||||
|
"SpeedLimit": null,
|
||||||
|
"IsFAF": 0,
|
||||||
|
"IsMAP": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ID": 458540,
|
||||||
|
"TerminalID": 67790,
|
||||||
|
"Type": "D",
|
||||||
|
"Transition": "",
|
||||||
|
"TrackCode": "IF",
|
||||||
|
"WptID": 113102,
|
||||||
|
"WptLat": -28.51632222,
|
||||||
|
"WptLon": 21.33836389,
|
||||||
|
"TurnDir": "",
|
||||||
|
"NavID": 1333,
|
||||||
|
"NavLat": -28.40175278,
|
||||||
|
"NavLon": 21.26041111,
|
||||||
|
"NavBear": 168,
|
||||||
|
"NavDist": 8,
|
||||||
|
"Course": null,
|
||||||
|
"Distance": null,
|
||||||
|
"Alt": "04500A",
|
||||||
|
"Vnav": null,
|
||||||
|
"CenterID": null,
|
||||||
|
"CenterLat": null,
|
||||||
|
"CenterLon": null,
|
||||||
|
"IsFlyOver": 0,
|
||||||
|
"SpeedLimit": null,
|
||||||
|
"IsFAF": -1,
|
||||||
|
"IsMAP": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ID": 458541,
|
||||||
|
"TerminalID": 67790,
|
||||||
|
"Type": "D",
|
||||||
|
"Transition": "",
|
||||||
|
"TrackCode": "CF",
|
||||||
|
"WptID": null,
|
||||||
|
"WptLat": -28.41938889,
|
||||||
|
"WptLon": 21.27444444,
|
||||||
|
"TurnDir": "",
|
||||||
|
"NavID": 1333,
|
||||||
|
"NavLat": -28.40175278,
|
||||||
|
"NavLon": 21.26041111,
|
||||||
|
"NavBear": 163.9,
|
||||||
|
"NavDist": 1.3,
|
||||||
|
"Course": 348,
|
||||||
|
"Distance": 6.7,
|
||||||
|
"Alt": "MAP",
|
||||||
|
"Vnav": 2.45,
|
||||||
|
"CenterID": null,
|
||||||
|
"CenterLat": null,
|
||||||
|
"CenterLon": null,
|
||||||
|
"IsFlyOver": 0,
|
||||||
|
"SpeedLimit": null,
|
||||||
|
"IsFAF": 0,
|
||||||
|
"IsMAP": -1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ID": 458542,
|
||||||
|
"TerminalID": 67790,
|
||||||
|
"Type": "D",
|
||||||
|
"Transition": "",
|
||||||
|
"TrackCode": "CF",
|
||||||
|
"WptID": 250431,
|
||||||
|
"WptLat": -28.40175278,
|
||||||
|
"WptLon": 21.26041111,
|
||||||
|
"TurnDir": "",
|
||||||
|
"NavID": 1333,
|
||||||
|
"NavLat": -28.40175278,
|
||||||
|
"NavLon": 21.26041111,
|
||||||
|
"NavBear": 0,
|
||||||
|
"NavDist": 0,
|
||||||
|
"Course": 348,
|
||||||
|
"Distance": 1.3,
|
||||||
|
"Alt": "",
|
||||||
|
"Vnav": null,
|
||||||
|
"CenterID": null,
|
||||||
|
"CenterLat": null,
|
||||||
|
"CenterLon": null,
|
||||||
|
"IsFlyOver": -1,
|
||||||
|
"SpeedLimit": null,
|
||||||
|
"IsFAF": 0,
|
||||||
|
"IsMAP": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ID": 458543,
|
||||||
|
"TerminalID": 67790,
|
||||||
|
"Type": "D",
|
||||||
|
"Transition": "",
|
||||||
|
"TrackCode": "CA",
|
||||||
|
"WptID": null,
|
||||||
|
"WptLat": null,
|
||||||
|
"WptLon": null,
|
||||||
|
"TurnDir": "",
|
||||||
|
"NavID": null,
|
||||||
|
"NavLat": null,
|
||||||
|
"NavLon": null,
|
||||||
|
"NavBear": null,
|
||||||
|
"NavDist": null,
|
||||||
|
"Course": 348,
|
||||||
|
"Distance": null,
|
||||||
|
"Alt": "05500A",
|
||||||
|
"Vnav": null,
|
||||||
|
"CenterID": null,
|
||||||
|
"CenterLat": null,
|
||||||
|
"CenterLon": null,
|
||||||
|
"IsFlyOver": 0,
|
||||||
|
"SpeedLimit": null,
|
||||||
|
"IsFAF": 0,
|
||||||
|
"IsMAP": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ID": 458544,
|
||||||
|
"TerminalID": 67790,
|
||||||
|
"Type": "D",
|
||||||
|
"Transition": "",
|
||||||
|
"TrackCode": "DF",
|
||||||
|
"WptID": 250431,
|
||||||
|
"WptLat": -28.40175278,
|
||||||
|
"WptLon": 21.26041111,
|
||||||
|
"TurnDir": "L",
|
||||||
|
"NavID": null,
|
||||||
|
"NavLat": null,
|
||||||
|
"NavLon": null,
|
||||||
|
"NavBear": null,
|
||||||
|
"NavDist": null,
|
||||||
|
"Course": null,
|
||||||
|
"Distance": null,
|
||||||
|
"Alt": "05800",
|
||||||
|
"Vnav": null,
|
||||||
|
"CenterID": null,
|
||||||
|
"CenterLat": null,
|
||||||
|
"CenterLon": null,
|
||||||
|
"IsFlyOver": 0,
|
||||||
|
"SpeedLimit": null,
|
||||||
|
"IsFAF": 0,
|
||||||
|
"IsMAP": 0
|
||||||
|
}
|
||||||
|
]
|
||||||
353
TermID_67794.json
Normal file
353
TermID_67794.json
Normal file
@ -0,0 +1,353 @@
|
|||||||
|
[
|
||||||
|
{
|
||||||
|
"ID": 458580,
|
||||||
|
"TerminalID": 67794,
|
||||||
|
"Type": "A",
|
||||||
|
"Transition": "FD291",
|
||||||
|
"TrackCode": "IF",
|
||||||
|
"WptID": 113125,
|
||||||
|
"WptLat": -25.65088056,
|
||||||
|
"WptLon": 28.29919167,
|
||||||
|
"TurnDir": "",
|
||||||
|
"NavID": null,
|
||||||
|
"NavLat": null,
|
||||||
|
"NavLon": null,
|
||||||
|
"NavBear": null,
|
||||||
|
"NavDist": null,
|
||||||
|
"Course": null,
|
||||||
|
"Distance": null,
|
||||||
|
"Alt": "08000A",
|
||||||
|
"Vnav": null,
|
||||||
|
"CenterID": null,
|
||||||
|
"CenterLat": null,
|
||||||
|
"CenterLon": null,
|
||||||
|
"IsFlyOver": 0,
|
||||||
|
"SpeedLimit": null,
|
||||||
|
"IsFAF": 0,
|
||||||
|
"IsMAP": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ID": 458581,
|
||||||
|
"TerminalID": 67794,
|
||||||
|
"Type": "A",
|
||||||
|
"Transition": "FD291",
|
||||||
|
"TrackCode": "HF",
|
||||||
|
"WptID": 113125,
|
||||||
|
"WptLat": -25.65088056,
|
||||||
|
"WptLon": 28.29919167,
|
||||||
|
"TurnDir": "R",
|
||||||
|
"NavID": null,
|
||||||
|
"NavLat": null,
|
||||||
|
"NavLon": null,
|
||||||
|
"NavBear": null,
|
||||||
|
"NavDist": null,
|
||||||
|
"Course": 284,
|
||||||
|
"Distance": 5.5,
|
||||||
|
"Alt": "07000A",
|
||||||
|
"Vnav": null,
|
||||||
|
"CenterID": null,
|
||||||
|
"CenterLat": null,
|
||||||
|
"CenterLon": null,
|
||||||
|
"IsFlyOver": 0,
|
||||||
|
"SpeedLimit": 140,
|
||||||
|
"IsFAF": 0,
|
||||||
|
"IsMAP": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ID": 458582,
|
||||||
|
"TerminalID": 67794,
|
||||||
|
"Type": "A",
|
||||||
|
"Transition": "FD292",
|
||||||
|
"TrackCode": "IF",
|
||||||
|
"WptID": 113125,
|
||||||
|
"WptLat": -25.65088056,
|
||||||
|
"WptLon": 28.29919167,
|
||||||
|
"TurnDir": "",
|
||||||
|
"NavID": null,
|
||||||
|
"NavLat": null,
|
||||||
|
"NavLon": null,
|
||||||
|
"NavBear": null,
|
||||||
|
"NavDist": null,
|
||||||
|
"Course": null,
|
||||||
|
"Distance": null,
|
||||||
|
"Alt": "07000A",
|
||||||
|
"Vnav": null,
|
||||||
|
"CenterID": null,
|
||||||
|
"CenterLat": null,
|
||||||
|
"CenterLon": null,
|
||||||
|
"IsFlyOver": 0,
|
||||||
|
"SpeedLimit": null,
|
||||||
|
"IsFAF": 0,
|
||||||
|
"IsMAP": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ID": 458583,
|
||||||
|
"TerminalID": 67794,
|
||||||
|
"Type": "A",
|
||||||
|
"Transition": "FD292",
|
||||||
|
"TrackCode": "TF",
|
||||||
|
"WptID": 113123,
|
||||||
|
"WptLat": -25.64774167,
|
||||||
|
"WptLon": 28.34813056,
|
||||||
|
"TurnDir": "",
|
||||||
|
"NavID": null,
|
||||||
|
"NavLat": null,
|
||||||
|
"NavLon": null,
|
||||||
|
"NavBear": null,
|
||||||
|
"NavDist": null,
|
||||||
|
"Course": null,
|
||||||
|
"Distance": null,
|
||||||
|
"Alt": "07000A",
|
||||||
|
"Vnav": null,
|
||||||
|
"CenterID": null,
|
||||||
|
"CenterLat": null,
|
||||||
|
"CenterLon": null,
|
||||||
|
"IsFlyOver": 0,
|
||||||
|
"SpeedLimit": null,
|
||||||
|
"IsFAF": 0,
|
||||||
|
"IsMAP": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ID": 458584,
|
||||||
|
"TerminalID": 67794,
|
||||||
|
"Type": "A",
|
||||||
|
"Transition": "FD292",
|
||||||
|
"TrackCode": "FC",
|
||||||
|
"WptID": 113123,
|
||||||
|
"WptLat": -25.64774167,
|
||||||
|
"WptLon": 28.34813056,
|
||||||
|
"TurnDir": "",
|
||||||
|
"NavID": 1283,
|
||||||
|
"NavLat": -25.65591667,
|
||||||
|
"NavLon": 28.220075,
|
||||||
|
"NavBear": 104,
|
||||||
|
"NavDist": 7,
|
||||||
|
"Course": 59,
|
||||||
|
"Distance": 2.7,
|
||||||
|
"Alt": "07000A",
|
||||||
|
"Vnav": null,
|
||||||
|
"CenterID": null,
|
||||||
|
"CenterLat": null,
|
||||||
|
"CenterLon": null,
|
||||||
|
"IsFlyOver": -1,
|
||||||
|
"SpeedLimit": null,
|
||||||
|
"IsFAF": 0,
|
||||||
|
"IsMAP": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ID": 458585,
|
||||||
|
"TerminalID": 67794,
|
||||||
|
"Type": "A",
|
||||||
|
"Transition": "FD292",
|
||||||
|
"TrackCode": "CF",
|
||||||
|
"WptID": 113123,
|
||||||
|
"WptLat": -25.64774167,
|
||||||
|
"WptLon": 28.34813056,
|
||||||
|
"TurnDir": "R",
|
||||||
|
"NavID": 1283,
|
||||||
|
"NavLat": -25.65591667,
|
||||||
|
"NavLon": 28.220075,
|
||||||
|
"NavBear": 104,
|
||||||
|
"NavDist": 7,
|
||||||
|
"Course": 284,
|
||||||
|
"Distance": 3,
|
||||||
|
"Alt": "07000A",
|
||||||
|
"Vnav": null,
|
||||||
|
"CenterID": null,
|
||||||
|
"CenterLat": null,
|
||||||
|
"CenterLon": null,
|
||||||
|
"IsFlyOver": 0,
|
||||||
|
"SpeedLimit": null,
|
||||||
|
"IsFAF": 0,
|
||||||
|
"IsMAP": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ID": 458586,
|
||||||
|
"TerminalID": 67794,
|
||||||
|
"Type": "A",
|
||||||
|
"Transition": "FD292",
|
||||||
|
"TrackCode": "CF",
|
||||||
|
"WptID": 113125,
|
||||||
|
"WptLat": -25.65088056,
|
||||||
|
"WptLon": 28.29919167,
|
||||||
|
"TurnDir": "",
|
||||||
|
"NavID": 1283,
|
||||||
|
"NavLat": -25.65591667,
|
||||||
|
"NavLon": 28.220075,
|
||||||
|
"NavBear": 104,
|
||||||
|
"NavDist": 4.3,
|
||||||
|
"Course": 284,
|
||||||
|
"Distance": 2.7,
|
||||||
|
"Alt": "05300A",
|
||||||
|
"Vnav": null,
|
||||||
|
"CenterID": null,
|
||||||
|
"CenterLat": null,
|
||||||
|
"CenterLon": null,
|
||||||
|
"IsFlyOver": 0,
|
||||||
|
"SpeedLimit": null,
|
||||||
|
"IsFAF": 0,
|
||||||
|
"IsMAP": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ID": 458587,
|
||||||
|
"TerminalID": 67794,
|
||||||
|
"Type": "D",
|
||||||
|
"Transition": "",
|
||||||
|
"TrackCode": "IF",
|
||||||
|
"WptID": 113125,
|
||||||
|
"WptLat": -25.65088056,
|
||||||
|
"WptLon": 28.29919167,
|
||||||
|
"TurnDir": "",
|
||||||
|
"NavID": 1283,
|
||||||
|
"NavLat": -25.65591667,
|
||||||
|
"NavLon": 28.220075,
|
||||||
|
"NavBear": 104,
|
||||||
|
"NavDist": 4.3,
|
||||||
|
"Course": null,
|
||||||
|
"Distance": null,
|
||||||
|
"Alt": "05300A",
|
||||||
|
"Vnav": null,
|
||||||
|
"CenterID": null,
|
||||||
|
"CenterLat": null,
|
||||||
|
"CenterLon": null,
|
||||||
|
"IsFlyOver": 0,
|
||||||
|
"SpeedLimit": null,
|
||||||
|
"IsFAF": -1,
|
||||||
|
"IsMAP": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ID": 458588,
|
||||||
|
"TerminalID": 67794,
|
||||||
|
"Type": "D",
|
||||||
|
"Transition": "",
|
||||||
|
"TrackCode": "CF",
|
||||||
|
"WptID": 113127,
|
||||||
|
"WptLat": -25.65404722,
|
||||||
|
"WptLon": 28.24951389,
|
||||||
|
"TurnDir": "",
|
||||||
|
"NavID": 1283,
|
||||||
|
"NavLat": -25.65591667,
|
||||||
|
"NavLon": 28.220075,
|
||||||
|
"NavBear": 104,
|
||||||
|
"NavDist": 1.6,
|
||||||
|
"Course": 284,
|
||||||
|
"Distance": 2.7,
|
||||||
|
"Alt": "MAP",
|
||||||
|
"Vnav": 3,
|
||||||
|
"CenterID": null,
|
||||||
|
"CenterLat": null,
|
||||||
|
"CenterLon": null,
|
||||||
|
"IsFlyOver": 0,
|
||||||
|
"SpeedLimit": null,
|
||||||
|
"IsFAF": 0,
|
||||||
|
"IsMAP": -1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ID": 458589,
|
||||||
|
"TerminalID": 67794,
|
||||||
|
"Type": "D",
|
||||||
|
"Transition": "",
|
||||||
|
"TrackCode": "FD",
|
||||||
|
"WptID": 113127,
|
||||||
|
"WptLat": -25.65404722,
|
||||||
|
"WptLon": 28.24951389,
|
||||||
|
"TurnDir": "",
|
||||||
|
"NavID": 1283,
|
||||||
|
"NavLat": -25.65591667,
|
||||||
|
"NavLon": 28.220075,
|
||||||
|
"NavBear": 104,
|
||||||
|
"NavDist": 1.6,
|
||||||
|
"Course": 284,
|
||||||
|
"Distance": 2.2,
|
||||||
|
"Alt": "",
|
||||||
|
"Vnav": null,
|
||||||
|
"CenterID": null,
|
||||||
|
"CenterLat": null,
|
||||||
|
"CenterLon": null,
|
||||||
|
"IsFlyOver": 0,
|
||||||
|
"SpeedLimit": null,
|
||||||
|
"IsFAF": 0,
|
||||||
|
"IsMAP": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ID": 458590,
|
||||||
|
"TerminalID": 67794,
|
||||||
|
"Type": "D",
|
||||||
|
"Transition": "",
|
||||||
|
"TrackCode": "DF",
|
||||||
|
"WptID": 250381,
|
||||||
|
"WptLat": -25.65591667,
|
||||||
|
"WptLon": 28.220075,
|
||||||
|
"TurnDir": "R",
|
||||||
|
"NavID": null,
|
||||||
|
"NavLat": null,
|
||||||
|
"NavLon": null,
|
||||||
|
"NavBear": null,
|
||||||
|
"NavDist": null,
|
||||||
|
"Course": null,
|
||||||
|
"Distance": null,
|
||||||
|
"Alt": "",
|
||||||
|
"Vnav": null,
|
||||||
|
"CenterID": null,
|
||||||
|
"CenterLat": null,
|
||||||
|
"CenterLon": null,
|
||||||
|
"IsFlyOver": 0,
|
||||||
|
"SpeedLimit": null,
|
||||||
|
"IsFAF": 0,
|
||||||
|
"IsMAP": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ID": 458591,
|
||||||
|
"TerminalID": 67794,
|
||||||
|
"Type": "D",
|
||||||
|
"Transition": "",
|
||||||
|
"TrackCode": "TF",
|
||||||
|
"WptID": 113125,
|
||||||
|
"WptLat": -25.65088056,
|
||||||
|
"WptLon": 28.29919167,
|
||||||
|
"TurnDir": "",
|
||||||
|
"NavID": null,
|
||||||
|
"NavLat": null,
|
||||||
|
"NavLon": null,
|
||||||
|
"NavBear": null,
|
||||||
|
"NavDist": null,
|
||||||
|
"Course": null,
|
||||||
|
"Distance": null,
|
||||||
|
"Alt": "07000",
|
||||||
|
"Vnav": null,
|
||||||
|
"CenterID": null,
|
||||||
|
"CenterLat": null,
|
||||||
|
"CenterLon": null,
|
||||||
|
"IsFlyOver": 0,
|
||||||
|
"SpeedLimit": null,
|
||||||
|
"IsFAF": 0,
|
||||||
|
"IsMAP": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"ID": 458592,
|
||||||
|
"TerminalID": 67794,
|
||||||
|
"Type": "D",
|
||||||
|
"Transition": "",
|
||||||
|
"TrackCode": "HM",
|
||||||
|
"WptID": 113125,
|
||||||
|
"WptLat": -25.65088056,
|
||||||
|
"WptLon": 28.29919167,
|
||||||
|
"TurnDir": "R",
|
||||||
|
"NavID": null,
|
||||||
|
"NavLat": null,
|
||||||
|
"NavLon": null,
|
||||||
|
"NavBear": null,
|
||||||
|
"NavDist": null,
|
||||||
|
"Course": 284,
|
||||||
|
"Distance": 4,
|
||||||
|
"Alt": "",
|
||||||
|
"Vnav": null,
|
||||||
|
"CenterID": null,
|
||||||
|
"CenterLat": null,
|
||||||
|
"CenterLon": null,
|
||||||
|
"IsFlyOver": 0,
|
||||||
|
"SpeedLimit": 140,
|
||||||
|
"IsFAF": 0,
|
||||||
|
"IsMAP": 0
|
||||||
|
}
|
||||||
|
]
|
||||||
1
Terminals.json
Normal file
1
Terminals.json
Normal file
File diff suppressed because one or more lines are too long
1
Waypoints.json
Normal file
1
Waypoints.json
Normal file
File diff suppressed because one or more lines are too long
280
geojson.js
Normal file
280
geojson.js
Normal file
@ -0,0 +1,280 @@
|
|||||||
|
import fs from "fs";
|
||||||
|
import geo from "geojson";
|
||||||
|
import geolib from "geolib";
|
||||||
|
|
||||||
|
const π = Math.PI;
|
||||||
|
|
||||||
|
Number.prototype.toRadians = function () {
|
||||||
|
return (this * Math.PI) / 180;
|
||||||
|
};
|
||||||
|
Number.prototype.toDegrees = function () {
|
||||||
|
return (this * 180) / Math.PI;
|
||||||
|
};
|
||||||
|
|
||||||
|
const nmiToMetre = (nmi) => nmi * 1852.0;
|
||||||
|
|
||||||
|
const intersection = (p1, brng1, p2, brng2) => {
|
||||||
|
if (isNaN(brng1)) throw new TypeError(`invalid brng1 ${brng1}`);
|
||||||
|
if (isNaN(brng2)) throw new TypeError(`invalid brng2 ${brng2}`);
|
||||||
|
|
||||||
|
// see www.edwilliams.org/avform.htm#Intersection
|
||||||
|
|
||||||
|
const φ1 = p1.lat.toRadians(),
|
||||||
|
λ1 = p1.lon.toRadians();
|
||||||
|
const φ2 = p2.lat.toRadians(),
|
||||||
|
λ2 = p2.lon.toRadians();
|
||||||
|
const θ13 = Number(brng1).toRadians(),
|
||||||
|
θ23 = Number(brng2).toRadians();
|
||||||
|
const Δφ = φ2 - φ1,
|
||||||
|
Δλ = λ2 - λ1;
|
||||||
|
|
||||||
|
// angular distance p1-p2
|
||||||
|
const δ12 =
|
||||||
|
2 *
|
||||||
|
Math.asin(
|
||||||
|
Math.sqrt(
|
||||||
|
Math.sin(Δφ / 2) * Math.sin(Δφ / 2) +
|
||||||
|
Math.cos(φ1) * Math.cos(φ2) * Math.sin(Δλ / 2) * Math.sin(Δλ / 2)
|
||||||
|
)
|
||||||
|
);
|
||||||
|
if (Math.abs(δ12) < Number.EPSILON) return p1; // coincident points
|
||||||
|
|
||||||
|
// initial/final bearings between points
|
||||||
|
const cosθa =
|
||||||
|
(Math.sin(φ2) - Math.sin(φ1) * Math.cos(δ12)) /
|
||||||
|
(Math.sin(δ12) * Math.cos(φ1));
|
||||||
|
const cosθb =
|
||||||
|
(Math.sin(φ1) - Math.sin(φ2) * Math.cos(δ12)) /
|
||||||
|
(Math.sin(δ12) * Math.cos(φ2));
|
||||||
|
const θa = Math.acos(Math.min(Math.max(cosθa, -1), 1)); // protect against rounding errors
|
||||||
|
const θb = Math.acos(Math.min(Math.max(cosθb, -1), 1)); // protect against rounding errors
|
||||||
|
|
||||||
|
const θ12 = Math.sin(λ2 - λ1) > 0 ? θa : 2 * π - θa;
|
||||||
|
const θ21 = Math.sin(λ2 - λ1) > 0 ? 2 * π - θb : θb;
|
||||||
|
|
||||||
|
const α1 = θ13 - θ12; // angle 2-1-3
|
||||||
|
const α2 = θ21 - θ23; // angle 1-2-3
|
||||||
|
|
||||||
|
if (Math.sin(α1) == 0 && Math.sin(α2) == 0) return null; // infinite intersections
|
||||||
|
if (Math.sin(α1) * Math.sin(α2) < 0) return null; // ambiguous intersection (antipodal/360°)
|
||||||
|
|
||||||
|
const cosα3 =
|
||||||
|
-Math.cos(α1) * Math.cos(α2) + Math.sin(α1) * Math.sin(α2) * Math.cos(δ12);
|
||||||
|
|
||||||
|
const δ13 = Math.atan2(
|
||||||
|
Math.sin(δ12) * Math.sin(α1) * Math.sin(α2),
|
||||||
|
Math.cos(α2) + Math.cos(α1) * cosα3
|
||||||
|
);
|
||||||
|
|
||||||
|
const φ3 = Math.asin(
|
||||||
|
Math.min(
|
||||||
|
Math.max(
|
||||||
|
Math.sin(φ1) * Math.cos(δ13) +
|
||||||
|
Math.cos(φ1) * Math.sin(δ13) * Math.cos(θ13),
|
||||||
|
-1
|
||||||
|
),
|
||||||
|
1
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
const Δλ13 = Math.atan2(
|
||||||
|
Math.sin(θ13) * Math.sin(δ13) * Math.cos(φ1),
|
||||||
|
Math.cos(δ13) - Math.sin(φ1) * Math.sin(φ3)
|
||||||
|
);
|
||||||
|
const λ3 = λ1 + Δλ13;
|
||||||
|
|
||||||
|
const lat = φ3.toDegrees();
|
||||||
|
const lon = λ3.toDegrees();
|
||||||
|
|
||||||
|
return { lat, lon, name: "INTC" };
|
||||||
|
};
|
||||||
|
|
||||||
|
const SPEED = 4 / 60; //nmi/s
|
||||||
|
const TURN = 3; //deg/s
|
||||||
|
const VS = 1; //fps
|
||||||
|
|
||||||
|
// ADJ to location, (NG), E is neg.
|
||||||
|
const MAGVAR = -1;
|
||||||
|
|
||||||
|
const PROCEDURE_ID = 10394;
|
||||||
|
|
||||||
|
const waypoints = JSON.parse(fs.readFileSync("Waypoints.json"));
|
||||||
|
|
||||||
|
const terminal = JSON.parse(fs.readFileSync("Terminals.json")).filter(
|
||||||
|
({ ID }) => ID === PROCEDURE_ID
|
||||||
|
)[0];
|
||||||
|
const runway = JSON.parse(fs.readFileSync("Runways.json")).filter(
|
||||||
|
({ ID }) => ID === terminal.RwyID
|
||||||
|
)[0];
|
||||||
|
|
||||||
|
const procedure = JSON.parse(fs.readFileSync(`TermID_${PROCEDURE_ID}.json`));
|
||||||
|
|
||||||
|
const points = [{ lat: runway.Latitude, lon: runway.Longitude }];
|
||||||
|
const lines = [];
|
||||||
|
|
||||||
|
procedure.forEach((leg) => {
|
||||||
|
const waypoint = waypoints.filter(({ ID }) => ID === leg.WptID)[0];
|
||||||
|
|
||||||
|
switch (leg.TrackCode) {
|
||||||
|
case "AF":
|
||||||
|
case "CA":
|
||||||
|
case "CD":
|
||||||
|
break;
|
||||||
|
case "CF": {
|
||||||
|
points.push({
|
||||||
|
lat: leg.WptLat,
|
||||||
|
lon: leg.WptLon,
|
||||||
|
name: waypoint?.Ident ?? undefined,
|
||||||
|
});
|
||||||
|
|
||||||
|
if (leg.TurnDir) {
|
||||||
|
const line = [
|
||||||
|
[points[points.length - 2].lon, points[points.length - 2].lat],
|
||||||
|
];
|
||||||
|
|
||||||
|
let inbdCrs = Math.round(
|
||||||
|
geolib.getGreatCircleBearing(
|
||||||
|
{
|
||||||
|
latitude: points[points.length - 3].lat,
|
||||||
|
longitude: points[points.length - 3].lon,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
latitude: points[points.length - 2].lat,
|
||||||
|
longitude: points[points.length - 2].lon,
|
||||||
|
}
|
||||||
|
)
|
||||||
|
);
|
||||||
|
let outbCrs = Math.round(leg.Course - MAGVAR);
|
||||||
|
outbCrs =
|
||||||
|
outbCrs >= 360
|
||||||
|
? outbCrs - 360
|
||||||
|
: outbCrs < 0
|
||||||
|
? outbCrs + 360
|
||||||
|
: outbCrs;
|
||||||
|
|
||||||
|
const delta = Math.abs(inbdCrs - 180 - outbCrs);
|
||||||
|
|
||||||
|
let perpCrs;
|
||||||
|
if (leg.TurnDir === "R") {
|
||||||
|
perpCrs = inbdCrs + 90 + delta / 2;
|
||||||
|
perpCrs = perpCrs >= 360 ? perpCrs - 360 : perpCrs;
|
||||||
|
} else {
|
||||||
|
perpCrs = inbdCrs - 90 - delta / 2;
|
||||||
|
perpCrs = perpCrs < 0 ? perpCrs + 360 : perpCrs;
|
||||||
|
}
|
||||||
|
|
||||||
|
const perpFix = intersection(
|
||||||
|
points[points.length - 2],
|
||||||
|
Math.round(perpCrs - MAGVAR),
|
||||||
|
points[points.length - 1],
|
||||||
|
Math.round(leg.Course + 180 - MAGVAR)
|
||||||
|
);
|
||||||
|
|
||||||
|
const midFix = geolib.getCenter([
|
||||||
|
{
|
||||||
|
latitude: points[points.length - 2].lat,
|
||||||
|
longitude: points[points.length - 2].lon,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
latitude: perpFix.lat,
|
||||||
|
longitude: perpFix.lon,
|
||||||
|
},
|
||||||
|
]);
|
||||||
|
const dist = geolib.getDistance(
|
||||||
|
{
|
||||||
|
latitude: points[points.length - 2].lat,
|
||||||
|
longitude: points[points.length - 2].lon,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
latitude: perpFix.lat,
|
||||||
|
longitude: perpFix.lon,
|
||||||
|
}
|
||||||
|
);
|
||||||
|
const mid1 = geolib.computeDestinationPoint(midFix, dist / 2, inbdCrs);
|
||||||
|
|
||||||
|
let invCrs = outbCrs + 180;
|
||||||
|
invCrs = invCrs >= 360 ? invCrs - 360 : invCrs;
|
||||||
|
const mid2 = geolib.computeDestinationPoint(midFix, dist / 2, invCrs);
|
||||||
|
|
||||||
|
line.push([mid1.longitude, mid1.latitude]);
|
||||||
|
line.push([mid2.longitude, mid2.latitude]);
|
||||||
|
line.push([perpFix.lon, perpFix.lat]);
|
||||||
|
line.push([
|
||||||
|
points[points.length - 1].lon,
|
||||||
|
points[points.length - 1].lat,
|
||||||
|
]);
|
||||||
|
|
||||||
|
lines.push({ line });
|
||||||
|
} else {
|
||||||
|
lines.push({
|
||||||
|
line: [
|
||||||
|
[points[points.length - 2].lon, points[points.length - 2].lat],
|
||||||
|
[points[points.length - 1].lon, points[points.length - 1].lat],
|
||||||
|
],
|
||||||
|
});
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case "CI":
|
||||||
|
break;
|
||||||
|
case "CR": {
|
||||||
|
const intc = intersection(
|
||||||
|
points[points.length - 1],
|
||||||
|
Math.round(leg.Course - MAGVAR),
|
||||||
|
{ lat: leg.NavLat, lon: leg.NavLon },
|
||||||
|
Math.round(leg.NavBear - MAGVAR)
|
||||||
|
);
|
||||||
|
|
||||||
|
points.push(intc);
|
||||||
|
lines.push({
|
||||||
|
line: [
|
||||||
|
[points[points.length - 2].lon, points[points.length - 2].lat],
|
||||||
|
[points[points.length - 1].lon, points[points.length - 1].lat],
|
||||||
|
],
|
||||||
|
});
|
||||||
|
}
|
||||||
|
case "DF":
|
||||||
|
case "FA":
|
||||||
|
case "FC":
|
||||||
|
case "FD":
|
||||||
|
case "FM":
|
||||||
|
case "HA":
|
||||||
|
case "HF":
|
||||||
|
case "HM":
|
||||||
|
case "IF":
|
||||||
|
case "PI":
|
||||||
|
case "RF":
|
||||||
|
case "TF":
|
||||||
|
case "VA":
|
||||||
|
case "VD":
|
||||||
|
case "VI":
|
||||||
|
break;
|
||||||
|
case "VM": {
|
||||||
|
const end = geolib.computeDestinationPoint(
|
||||||
|
{
|
||||||
|
latitude: points[points.length - 1].lat,
|
||||||
|
longitude: points[points.length - 1].lon,
|
||||||
|
},
|
||||||
|
nmiToMetre(10),
|
||||||
|
leg.Course - MAGVAR
|
||||||
|
);
|
||||||
|
lines.push({
|
||||||
|
line: [
|
||||||
|
[points[points.length - 1].lon, points[points.length - 1].lat],
|
||||||
|
[end.longitude, end.latitude],
|
||||||
|
],
|
||||||
|
});
|
||||||
|
}
|
||||||
|
case "VR":
|
||||||
|
case "AF":
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
const output = geo.parse([...points, ...lines], {
|
||||||
|
Point: ["lat", "lon"],
|
||||||
|
LineString: "line",
|
||||||
|
});
|
||||||
|
|
||||||
|
console.log(JSON.stringify(output, null, 2));
|
||||||
637
navigationdata.h
Normal file
637
navigationdata.h
Normal file
@ -0,0 +1,637 @@
|
|||||||
|
#pragma once
|
||||||
|
#include <boost/shared_ptr.hpp>
|
||||||
|
#include <vector>
|
||||||
|
#include <algorithm>
|
||||||
|
#ifndef _USE_MATH_DEFINES
|
||||||
|
#define _USE_MATH_DEFINES
|
||||||
|
#endif
|
||||||
|
#include <math.h>
|
||||||
|
#include "latitudelongitude.fs.h"
|
||||||
|
|
||||||
|
//#include <cereal/types/polymorphic.hpp>
|
||||||
|
//#include <cereal/types/base_class.hpp>
|
||||||
|
|
||||||
|
#define ALT_INVALID -9999
|
||||||
|
#define SPD_INVALID -1
|
||||||
|
#define HDG_INVALID -1
|
||||||
|
#define DIST_INVALID -1
|
||||||
|
#define TEMP_INVALID -999
|
||||||
|
|
||||||
|
#define KMTONM(km) (km * 0.539957)
|
||||||
|
#define NMTOKM(nm) (nm * 1.852)
|
||||||
|
|
||||||
|
class Winds
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
double alt = ALT_INVALID;
|
||||||
|
double speed = SPD_INVALID;
|
||||||
|
double direction = HDG_INVALID;
|
||||||
|
|
||||||
|
bool isManual = false;
|
||||||
|
|
||||||
|
static Winds Interpolate(std::vector<Winds> winds, double altitude);
|
||||||
|
bool IsValid() const;
|
||||||
|
|
||||||
|
template <class B> void store(B& buf) const;
|
||||||
|
template <class B> void parse(B& buf);
|
||||||
|
};
|
||||||
|
|
||||||
|
enum class TrackCode
|
||||||
|
{
|
||||||
|
ArcToFix, //AF
|
||||||
|
CourseToAltitude, //CA
|
||||||
|
CourseToDMEDistance, //CD
|
||||||
|
CourseToFix, //CF
|
||||||
|
CourseToNextIntercept, //CI
|
||||||
|
CourseToRadialTermination, //CR
|
||||||
|
DirectToFix, //DF
|
||||||
|
CourseFromFixToAltitude, //FA
|
||||||
|
CourseFromFixToDMEDistance, //FD
|
||||||
|
CourseFromFixToManualTermination, //FM
|
||||||
|
TrackFromFixToDistance, //FC
|
||||||
|
HoldToAltitude, //HA
|
||||||
|
HoldAtFix, //HF
|
||||||
|
HoldUntilManualTermination, //HM
|
||||||
|
InitialFix, //IF
|
||||||
|
ProcedureTurnToIntercept, //PI
|
||||||
|
RadiusToFix, //RF
|
||||||
|
TrackToFix, //TF
|
||||||
|
HeadingToAltitude, //VA
|
||||||
|
HeadingToDMEDistance, //VD
|
||||||
|
HeadingToNextLegIntercept, //VI
|
||||||
|
HeadingUntilManualTermination, //VM
|
||||||
|
HeadingToRadialTermination, //VR
|
||||||
|
};
|
||||||
|
|
||||||
|
enum class NavDataObjType
|
||||||
|
{
|
||||||
|
Indeterminate,
|
||||||
|
TerminalLeg,
|
||||||
|
Waypoint,
|
||||||
|
Navaid,
|
||||||
|
AirwayLeg,
|
||||||
|
Airport,
|
||||||
|
Discontinuity,
|
||||||
|
Runway,
|
||||||
|
LatitudeLongitude,
|
||||||
|
PilotDefinedWaypoint,
|
||||||
|
Hold
|
||||||
|
};
|
||||||
|
|
||||||
|
enum class AirwayStatus
|
||||||
|
{
|
||||||
|
Incomplete,
|
||||||
|
OK
|
||||||
|
};
|
||||||
|
|
||||||
|
enum class TurnDirection
|
||||||
|
{
|
||||||
|
Left,
|
||||||
|
Right
|
||||||
|
};
|
||||||
|
|
||||||
|
enum class ObjectTurnDirection
|
||||||
|
{
|
||||||
|
Left = -1,
|
||||||
|
Unspecified = 0,
|
||||||
|
Right = 1
|
||||||
|
};
|
||||||
|
|
||||||
|
enum class ObjectUsagePhase
|
||||||
|
{
|
||||||
|
Unknown,
|
||||||
|
Climb,
|
||||||
|
Descent,
|
||||||
|
MissedApproach
|
||||||
|
};
|
||||||
|
|
||||||
|
enum class ObjectUsage
|
||||||
|
{
|
||||||
|
Leg,
|
||||||
|
InitialPosition,
|
||||||
|
Origin,
|
||||||
|
DepartureLeg,
|
||||||
|
ArrivalLeg,
|
||||||
|
ApproachLeg,
|
||||||
|
Destination,
|
||||||
|
TurnPoint,
|
||||||
|
ToC,
|
||||||
|
ToD,
|
||||||
|
SC
|
||||||
|
};
|
||||||
|
|
||||||
|
enum class AltitudeRestrictionType
|
||||||
|
{
|
||||||
|
Above,
|
||||||
|
Below,
|
||||||
|
Between,
|
||||||
|
Exact,
|
||||||
|
Step,
|
||||||
|
Unspecified
|
||||||
|
};
|
||||||
|
|
||||||
|
struct LateralSegment
|
||||||
|
{
|
||||||
|
LatitudeLongitude startPoint;
|
||||||
|
LatitudeLongitude endPoint;
|
||||||
|
|
||||||
|
double turnRadius = 0;
|
||||||
|
double turnStartRadial = 0;
|
||||||
|
double turnEndRadial = 0;
|
||||||
|
LatitudeLongitude turnCenterPoint;
|
||||||
|
TurnDirection turnDir = TurnDirection::Left;
|
||||||
|
|
||||||
|
bool afsComplete = false;
|
||||||
|
|
||||||
|
LateralSegment() {}
|
||||||
|
LateralSegment(LatitudeLongitude start, LatitudeLongitude end);
|
||||||
|
LateralSegment(LatitudeLongitude center, LatitudeLongitude start, LatitudeLongitude end, TurnDirection direction);
|
||||||
|
|
||||||
|
double GetLength();
|
||||||
|
|
||||||
|
//may need ground distance, vertical rate, delta altitude, etc.
|
||||||
|
//use performance recording/monitoring software to sample data points from testers to build perf DB
|
||||||
|
|
||||||
|
template <class B> void store(B& buf) const;
|
||||||
|
template <class B> void parse(B& buf);
|
||||||
|
};
|
||||||
|
|
||||||
|
struct VerticalSegment
|
||||||
|
{
|
||||||
|
double endsAt = 1.0;
|
||||||
|
double speed = SPD_INVALID;
|
||||||
|
double altitude = ALT_INVALID;
|
||||||
|
|
||||||
|
double speedRestriction = SPD_INVALID;
|
||||||
|
|
||||||
|
ObjectUsagePhase phase = ObjectUsagePhase::Unknown;
|
||||||
|
|
||||||
|
//DEBUG
|
||||||
|
double fpm = 0;
|
||||||
|
double distToArr = 0;
|
||||||
|
double gs = 0;
|
||||||
|
//
|
||||||
|
|
||||||
|
double fuelBurned = 0;
|
||||||
|
|
||||||
|
VerticalSegment() {}
|
||||||
|
VerticalSegment(double endsAt, double speed, double altitude, double speedRestriction, ObjectUsagePhase usagePhase, double FPM = 0, double DTA = 0, double GS = 0) : endsAt(endsAt), speed(speed), altitude(altitude), speedRestriction(speedRestriction), phase(usagePhase), fpm(FPM), distToArr(DTA), gs(GS) {}
|
||||||
|
|
||||||
|
template <class B> void store(B& buf) const;
|
||||||
|
template <class B> void parse(B& buf);
|
||||||
|
};
|
||||||
|
|
||||||
|
enum class LocationType
|
||||||
|
{
|
||||||
|
Absolute,
|
||||||
|
Hold,
|
||||||
|
Relative,
|
||||||
|
PerfBased,
|
||||||
|
Abstract
|
||||||
|
};
|
||||||
|
|
||||||
|
struct NavDataObj
|
||||||
|
{
|
||||||
|
protected:
|
||||||
|
int ID = -1;
|
||||||
|
public:
|
||||||
|
std::wstring identifier;
|
||||||
|
LatitudeLongitude latlon;
|
||||||
|
int Flag = 0;
|
||||||
|
|
||||||
|
Winds winds[4];
|
||||||
|
|
||||||
|
double tempAlt = ALT_INVALID;
|
||||||
|
double temp = TEMP_INVALID;
|
||||||
|
|
||||||
|
double altRestr = ALT_INVALID;
|
||||||
|
double altRestrLower = ALT_INVALID;
|
||||||
|
AltitudeRestrictionType altRestrictionType = AltitudeRestrictionType::Unspecified;
|
||||||
|
|
||||||
|
double speed_restr = SPD_INVALID;
|
||||||
|
bool isFlyover = false;
|
||||||
|
|
||||||
|
//ObjectUsagePhase usagePhase = ObjectUsagePhase::Unknown;
|
||||||
|
ObjectUsage usage = ObjectUsage::Leg;
|
||||||
|
|
||||||
|
double progress = 0.0;
|
||||||
|
|
||||||
|
double distToNext = DIST_INVALID;
|
||||||
|
double distToArrival = DIST_INVALID;
|
||||||
|
double bearingFromTo = 0;
|
||||||
|
double bearingToFrom = 0;
|
||||||
|
|
||||||
|
double fuelBurnToNext = 0;
|
||||||
|
bool efobSet = false;
|
||||||
|
double efob = -1;
|
||||||
|
|
||||||
|
double ete = -1;
|
||||||
|
double eto = -1;
|
||||||
|
double ato = -1;
|
||||||
|
|
||||||
|
//Values for use in internal calculations only
|
||||||
|
struct Calculation
|
||||||
|
{
|
||||||
|
double secToNextLeg = -1;
|
||||||
|
double progToNextLeg = 0.0;
|
||||||
|
double distToNextLeg = DIST_INVALID;
|
||||||
|
|
||||||
|
template <class B> void store(B& buf) const;
|
||||||
|
template <class B> void parse(B& buf);
|
||||||
|
} calc;
|
||||||
|
//
|
||||||
|
|
||||||
|
size_t currLatSegment = 0;
|
||||||
|
std::vector<LateralSegment> latSegments;
|
||||||
|
|
||||||
|
size_t currVertSegment = 0;
|
||||||
|
std::vector< VerticalSegment> vertSegments;
|
||||||
|
|
||||||
|
static std::shared_ptr<NavDataObj> Copy(std::shared_ptr<NavDataObj> obj);
|
||||||
|
|
||||||
|
double GetPredictedAltitude() const;
|
||||||
|
double GetPredictedSpeed() const;
|
||||||
|
ObjectUsagePhase GetUsagePhase() const;
|
||||||
|
|
||||||
|
int GetID() const;
|
||||||
|
void SetID(int id);
|
||||||
|
virtual bool IsConditional() const;
|
||||||
|
virtual LocationType GetLocationType() const;
|
||||||
|
virtual const NavDataObjType GetType() const = 0;
|
||||||
|
virtual LatitudeLongitude GetLatitudeLongitude() const;
|
||||||
|
virtual std::wstring GetIdentifier() const;
|
||||||
|
virtual ~NavDataObj();
|
||||||
|
|
||||||
|
template <class B> void store(B& buf) const;
|
||||||
|
template <class B> void parse(B& buf);
|
||||||
|
};
|
||||||
|
|
||||||
|
struct Runway : public NavDataObj {
|
||||||
|
double true_heading;
|
||||||
|
short length;
|
||||||
|
short width;
|
||||||
|
std::wstring surface;
|
||||||
|
short elevation;
|
||||||
|
virtual const NavDataObjType GetType() const;
|
||||||
|
Runway();
|
||||||
|
|
||||||
|
template <class B> void store(B& buf) const;
|
||||||
|
template <class B> void parse(B& buf);
|
||||||
|
};
|
||||||
|
|
||||||
|
enum class HoldType
|
||||||
|
{
|
||||||
|
Standard,
|
||||||
|
Manual,
|
||||||
|
Database,
|
||||||
|
DatabaseEdited
|
||||||
|
};
|
||||||
|
|
||||||
|
struct HoldParameters
|
||||||
|
{
|
||||||
|
std::wstring wptIdent;
|
||||||
|
|
||||||
|
HoldType type = HoldType::Standard;
|
||||||
|
bool holdDistManual = false;
|
||||||
|
double holdDist = -1;
|
||||||
|
bool holdTimeManual = true;
|
||||||
|
double holdTime = -1;
|
||||||
|
TurnDirection holdDir = TurnDirection::Right;
|
||||||
|
double holdInboundCourse = -1;
|
||||||
|
double holdLimitTime = -1;
|
||||||
|
double holdLimitFuel = -1;
|
||||||
|
bool holdExit = false;
|
||||||
|
|
||||||
|
double defaultCourse = -1;
|
||||||
|
double defaultTime = -1;
|
||||||
|
|
||||||
|
template <class B> void parse(B& buf);
|
||||||
|
template <class B> void store(B& buf) const;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct Hold : public NavDataObj, HoldParameters {
|
||||||
|
virtual const NavDataObjType GetType() const override;
|
||||||
|
virtual bool IsConditional() const override;
|
||||||
|
virtual LocationType GetLocationType() const override;
|
||||||
|
double GetSpeedRestriction(double altitude) const;
|
||||||
|
void Update(HoldParameters params);
|
||||||
|
Hold();
|
||||||
|
|
||||||
|
template <class B> void store(B& buf) const;
|
||||||
|
template <class B> void parse(B& buf);
|
||||||
|
};
|
||||||
|
|
||||||
|
enum class NavaidType
|
||||||
|
{
|
||||||
|
VOR = 1,
|
||||||
|
VORTAC = 2,
|
||||||
|
TACAN = 3,
|
||||||
|
VORDME = 4,
|
||||||
|
NDB = 5,
|
||||||
|
NDBDME = 7,
|
||||||
|
ILSDME = 8,
|
||||||
|
DME = 9
|
||||||
|
};
|
||||||
|
|
||||||
|
struct Navaid : public NavDataObj {
|
||||||
|
NavaidType type;
|
||||||
|
std::wstring name;
|
||||||
|
|
||||||
|
std::wstring country;
|
||||||
|
|
||||||
|
int frequency;
|
||||||
|
std::wstring channel;
|
||||||
|
std::wstring usage;
|
||||||
|
int elevation;
|
||||||
|
double slaved_var;
|
||||||
|
|
||||||
|
virtual const NavDataObjType GetType() const;
|
||||||
|
|
||||||
|
Navaid();
|
||||||
|
|
||||||
|
template <class B> void parse(B& buf);
|
||||||
|
template <class B> void store(B& buf) const;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct Waypoint : public NavDataObj {
|
||||||
|
bool collocated;
|
||||||
|
|
||||||
|
std::wstring name;
|
||||||
|
|
||||||
|
std::wstring country;
|
||||||
|
|
||||||
|
int navaidID;
|
||||||
|
|
||||||
|
virtual const NavDataObjType GetType() const;
|
||||||
|
|
||||||
|
Waypoint();
|
||||||
|
|
||||||
|
template <class B> void store(B& buf) const;
|
||||||
|
template <class B> void parse(B& buf);
|
||||||
|
};
|
||||||
|
|
||||||
|
struct AirwayLeg : public NavDataObj {
|
||||||
|
int airway_id;
|
||||||
|
std::wstring airway_ident;
|
||||||
|
|
||||||
|
std::wstring level;
|
||||||
|
|
||||||
|
std::wstring wpt1Ident;
|
||||||
|
int wpt1ID;
|
||||||
|
int wpt2ID;
|
||||||
|
|
||||||
|
bool is_start;
|
||||||
|
bool is_end;
|
||||||
|
|
||||||
|
virtual const NavDataObjType GetType() const;
|
||||||
|
|
||||||
|
AirwayLeg();
|
||||||
|
|
||||||
|
template <class B> void store(B& buf) const;
|
||||||
|
template <class B> void parse(B& buf);
|
||||||
|
};
|
||||||
|
|
||||||
|
struct Airway {
|
||||||
|
int ID;
|
||||||
|
std::wstring identifier;
|
||||||
|
|
||||||
|
AirwayStatus status;
|
||||||
|
std::vector<AirwayLeg> legs;
|
||||||
|
Airway();
|
||||||
|
|
||||||
|
template <class B> void store(B& buf) const;
|
||||||
|
template <class B> void parse(B& buf);
|
||||||
|
};
|
||||||
|
|
||||||
|
struct Discontinuity : public NavDataObj {
|
||||||
|
virtual bool IsConditional() const override;
|
||||||
|
virtual const NavDataObjType GetType() const override;
|
||||||
|
virtual std::wstring GetIdentifier() const override;
|
||||||
|
virtual LocationType GetLocationType() const override;
|
||||||
|
|
||||||
|
template <class B> void store(B& buf) const;
|
||||||
|
template <class B> void parse(B& buf);
|
||||||
|
};
|
||||||
|
|
||||||
|
struct LatitudeLongitudeWaypoint : public NavDataObj {
|
||||||
|
virtual LocationType GetLocationType() const override;
|
||||||
|
virtual const NavDataObjType GetType() const;
|
||||||
|
LatitudeLongitudeWaypoint();
|
||||||
|
|
||||||
|
template <class B> void store(B& buf) const;
|
||||||
|
template <class B> void parse(B& buf);
|
||||||
|
};
|
||||||
|
|
||||||
|
struct PilotDefinedWaypoint : public NavDataObj {
|
||||||
|
std::wstring pbd_place;
|
||||||
|
int pbd_brg;
|
||||||
|
int pbd_dist;
|
||||||
|
|
||||||
|
int elev;
|
||||||
|
int crs;
|
||||||
|
int length;
|
||||||
|
|
||||||
|
bool is_defined = false;
|
||||||
|
|
||||||
|
bool IsRunway() const;
|
||||||
|
virtual const NavDataObjType GetType() const;
|
||||||
|
|
||||||
|
PilotDefinedWaypoint();
|
||||||
|
|
||||||
|
template <class B> void store(B& buf) const;
|
||||||
|
template <class B> void parse(B& buf);
|
||||||
|
};
|
||||||
|
|
||||||
|
struct TerminalLeg : public NavDataObj {
|
||||||
|
int terminal_id;
|
||||||
|
std::shared_ptr<NavDataObj> via;
|
||||||
|
|
||||||
|
char type;
|
||||||
|
|
||||||
|
TrackCode track_code;
|
||||||
|
|
||||||
|
std::wstring transition;
|
||||||
|
|
||||||
|
Waypoint wpt;
|
||||||
|
Navaid nvd;
|
||||||
|
HoldParameters hold;
|
||||||
|
|
||||||
|
ObjectTurnDirection turn_dir;
|
||||||
|
double course;
|
||||||
|
double distance;
|
||||||
|
LatitudeLongitude refLatLon;
|
||||||
|
|
||||||
|
LatitudeLongitude destLatlon;
|
||||||
|
double bearToDest;
|
||||||
|
double distToDest;
|
||||||
|
|
||||||
|
double vnav;
|
||||||
|
int center_id;
|
||||||
|
LatitudeLongitude center_latlon;
|
||||||
|
virtual const NavDataObjType GetType() const override;
|
||||||
|
virtual LatitudeLongitude GetLatitudeLongitude() const override;
|
||||||
|
|
||||||
|
double speed_limit;
|
||||||
|
|
||||||
|
bool is_missed_app_point;
|
||||||
|
bool is_final_app_fix;
|
||||||
|
|
||||||
|
virtual bool IsConditional() const override;
|
||||||
|
virtual LocationType GetLocationType() const override;
|
||||||
|
TerminalLeg();
|
||||||
|
|
||||||
|
template <class B> void store(B& buf) const;
|
||||||
|
template <class B> void parse(B& buf);
|
||||||
|
};
|
||||||
|
|
||||||
|
struct ILS {
|
||||||
|
int ID;
|
||||||
|
std::wstring identifier;
|
||||||
|
LatitudeLongitude latlon;
|
||||||
|
|
||||||
|
int runway_id;
|
||||||
|
int frequency;
|
||||||
|
double gs_angle;
|
||||||
|
|
||||||
|
short category;
|
||||||
|
double loc_course;
|
||||||
|
|
||||||
|
int crossing_height;
|
||||||
|
int elevation;
|
||||||
|
bool has_dme;
|
||||||
|
|
||||||
|
ILS();
|
||||||
|
|
||||||
|
template <class B> void store(B& buf) const;
|
||||||
|
template <class B> void parse(B& buf);
|
||||||
|
};
|
||||||
|
|
||||||
|
struct TerminalProcedure {
|
||||||
|
int ID;
|
||||||
|
std::wstring identifier;
|
||||||
|
|
||||||
|
//int airport_id;
|
||||||
|
|
||||||
|
//std::wstring icao;
|
||||||
|
|
||||||
|
char proc;
|
||||||
|
|
||||||
|
//std::wstring full_name;
|
||||||
|
|
||||||
|
//std::wstring runway;
|
||||||
|
|
||||||
|
std::wstring GetFormattedName();
|
||||||
|
|
||||||
|
std::vector<TerminalLeg> legs;
|
||||||
|
|
||||||
|
bool is_ils;
|
||||||
|
|
||||||
|
int runway_id;
|
||||||
|
|
||||||
|
TerminalProcedure();
|
||||||
|
|
||||||
|
template <class B> void store(B& buf) const;
|
||||||
|
template <class B> void parse(B& buf);
|
||||||
|
};
|
||||||
|
|
||||||
|
struct Airport : public NavDataObj {
|
||||||
|
std::wstring name;
|
||||||
|
int primaryid;
|
||||||
|
short elevation;
|
||||||
|
|
||||||
|
int transition_altitude;
|
||||||
|
|
||||||
|
Airport();
|
||||||
|
|
||||||
|
std::vector<Runway> runways;
|
||||||
|
std::vector<TerminalProcedure> sids;
|
||||||
|
std::vector<TerminalProcedure> stars;
|
||||||
|
std::vector<TerminalProcedure> approaches;
|
||||||
|
|
||||||
|
Airport& operator=(const Airport& otherapt);
|
||||||
|
bool operator==(Airport& otherapt);
|
||||||
|
bool operator!=(Airport& otherapt);
|
||||||
|
virtual const NavDataObjType GetType() const;
|
||||||
|
|
||||||
|
template <class B> void store(B& buf) const;
|
||||||
|
template <class B> void parse(B& buf);
|
||||||
|
};
|
||||||
|
|
||||||
|
struct Transition
|
||||||
|
{
|
||||||
|
std::wstring identifier;
|
||||||
|
|
||||||
|
template <class B> void store(B& buf) const;
|
||||||
|
template <class B> void parse(B& buf);
|
||||||
|
};
|
||||||
|
|
||||||
|
class WorldData
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
static std::vector<LatitudeLongitude> LatLonSpread(LatitudeLongitude source, int numOfSteps);
|
||||||
|
static int LatToX(double lat);
|
||||||
|
static int LonToY(double lon);
|
||||||
|
|
||||||
|
std::vector<Airport> airports[181][361];
|
||||||
|
std::vector<Navaid> navaids[181][361];
|
||||||
|
std::vector<Waypoint> waypoints[181][361];
|
||||||
|
|
||||||
|
std::vector<Airway> airways;
|
||||||
|
std::vector<AirwayLeg> airwayLegs;
|
||||||
|
std::vector<ILS> ilses;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct NavigationData {
|
||||||
|
private:
|
||||||
|
void name_terminal_leg(TerminalLeg& tl);
|
||||||
|
int which_terminal_leg_is_duplicate(TerminalLeg& tl1, TerminalLeg& tl2);
|
||||||
|
std::string dataDir;
|
||||||
|
|
||||||
|
public:
|
||||||
|
bool is_usable;
|
||||||
|
std::wstring cycle_name;
|
||||||
|
std::wstring cycle_start;
|
||||||
|
std::wstring cycle_end;
|
||||||
|
|
||||||
|
bool is_valid();
|
||||||
|
|
||||||
|
bool lookup_airport_by_id(int id, Airport & apt);
|
||||||
|
bool lookup_airport_by_icao(std::wstring icao, Airport & apt);
|
||||||
|
bool lookup_waypoint_by_id(int wptid, Waypoint& wpt);
|
||||||
|
bool lookup_navaid_by_id(int navid, Navaid& nd);
|
||||||
|
bool lookup_airway_by_ident(std::wstring ident, Airway& aw);
|
||||||
|
|
||||||
|
bool lookup_ils(int runway_id, ILS& ils);
|
||||||
|
std::vector<ILS> lookup_ils_by_frequency(int frequency);
|
||||||
|
std::vector<ILS> lookup_ils_by_ident(std::wstring ident);
|
||||||
|
|
||||||
|
bool intersect_airways(int airwayid1, int airwayid2, AirwayLeg& leg);
|
||||||
|
|
||||||
|
bool lookup_airway_legs(Airway awy, std::wstring waypoint1ident, std::wstring waypoint2ident, std::vector<AirwayLeg>& legs);
|
||||||
|
|
||||||
|
std::vector<Navaid> lookup_navaids_by_ident(std::wstring ident);
|
||||||
|
std::vector<Navaid> lookup_navaids_by_frequency(int frequency);
|
||||||
|
std::vector<Waypoint> lookup_waypoints_by_ident(std::wstring ident);
|
||||||
|
|
||||||
|
std::vector<Runway> lookup_runways(int airport_id, int terminal_id = -1);
|
||||||
|
|
||||||
|
double get_runway_slope(int airport_id, int runway_id);
|
||||||
|
|
||||||
|
WorldData worldData;
|
||||||
|
|
||||||
|
std::vector<Transition> lookup_sid_transitions(int sid_id);
|
||||||
|
std::vector<TerminalProcedure> lookup_sids(int airport_id, int runway_id = -1);
|
||||||
|
std::vector<TerminalLeg> lookup_sid_legs(int sid_id, std::wstring rwy, std::wstring transition);
|
||||||
|
|
||||||
|
std::vector<Transition> lookup_star_transitions(int star_id);
|
||||||
|
std::vector<TerminalProcedure> lookup_stars(int airport_id, int runway_id = -1);
|
||||||
|
std::vector<TerminalLeg> lookup_star_legs(int star_id, std::wstring rwy, std::wstring transition);
|
||||||
|
|
||||||
|
std::vector<Transition> lookup_approach_transitions(int approach_id);
|
||||||
|
std::vector<TerminalProcedure> lookup_approaches(int airport_id, int runway_id = -1, bool strict_runway_enforcement = false);
|
||||||
|
std::vector<TerminalLeg> lookup_approach_legs(int approach_id, std::wstring transition);
|
||||||
|
|
||||||
|
NavigationData(std::wstring dataDirectory);
|
||||||
|
~NavigationData();
|
||||||
|
};
|
||||||
|
|
||||||
8
package.json
Normal file
8
package.json
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
{
|
||||||
|
"dependencies": {
|
||||||
|
"geojson": "^0.5.0",
|
||||||
|
"geolib": "^3.3.4",
|
||||||
|
"magvar": "^2.0.0"
|
||||||
|
},
|
||||||
|
"type": "module"
|
||||||
|
}
|
||||||
39
pnpm-lock.yaml
generated
Normal file
39
pnpm-lock.yaml
generated
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
lockfileVersion: '9.0'
|
||||||
|
|
||||||
|
settings:
|
||||||
|
autoInstallPeers: true
|
||||||
|
excludeLinksFromLockfile: false
|
||||||
|
|
||||||
|
importers:
|
||||||
|
|
||||||
|
.:
|
||||||
|
dependencies:
|
||||||
|
geojson:
|
||||||
|
specifier: ^0.5.0
|
||||||
|
version: 0.5.0
|
||||||
|
geolib:
|
||||||
|
specifier: ^3.3.4
|
||||||
|
version: 3.3.4
|
||||||
|
magvar:
|
||||||
|
specifier: ^2.0.0
|
||||||
|
version: 2.0.0
|
||||||
|
|
||||||
|
packages:
|
||||||
|
|
||||||
|
geojson@0.5.0:
|
||||||
|
resolution: {integrity: sha512-/Bx5lEn+qRF4TfQ5aLu6NH+UKtvIv7Lhc487y/c8BdludrCTpiWf9wyI0RTyqg49MFefIAvFDuEi5Dfd/zgNxQ==}
|
||||||
|
engines: {node: '>= 0.10'}
|
||||||
|
|
||||||
|
geolib@3.3.4:
|
||||||
|
resolution: {integrity: sha512-EicrlLLL3S42gE9/wde+11uiaYAaeSVDwCUIv2uMIoRBfNJCn8EsSI+6nS3r4TCKDO6+RQNM9ayLq2at+oZQWQ==}
|
||||||
|
|
||||||
|
magvar@2.0.0:
|
||||||
|
resolution: {integrity: sha512-00LpSwEJZcnyX3VsdCM2CHSCvB+M6sVQTawLCB3J9oK7eEueNltNx9GFL4YR+/HIkLM+l8rFKiY77JTKnOf0jw==}
|
||||||
|
|
||||||
|
snapshots:
|
||||||
|
|
||||||
|
geojson@0.5.0: {}
|
||||||
|
|
||||||
|
geolib@3.3.4: {}
|
||||||
|
|
||||||
|
magvar@2.0.0: {}
|
||||||
Loading…
x
Reference in New Issue
Block a user