Initial
This commit is contained in:
commit
bdc8bb1567
26 files changed
+4777
No files matched your search
@@ -0,0 +1 @@
|
||||
node_modules/
|
||||
@@ -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.
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
[{"ID":356,"AirportID":165,"Ident":"32","TrueHeading":312.453,"Length":2150,"Width":50,"Surface":"GRE","Latitude":37.7865,"Longitude":-79.76477778,"Elevation":1060},{"ID":357,"AirportID":166,"Ident":"06","TrueHeading":45.304,"Length":1053,"Width":40,"Surface":"GRE","Latitude":38.34228333,"Longitude":-82.11170556,"Elevation":0},{"ID":358,"AirportID":166,"Ident":"18","TrueHeading":169.217,"Length":1292,"Width":40,"Surface":"GRE","Latitude":38.34577778,"Longitude":-82.11255278,"Elevation":0},{"ID":359,"AirportID":166,"Ident":"24","TrueHeading":225.306,"Length":1053,"Width":40,"Surface":"GRE","Latitude":38.34431389,"Longitude":-82.10908889,"Elevation":0},{"ID":360,"AirportID":166,"Ident":"36","TrueHeading":349.217,"Length":1292,"Width":40,"Surface":"GRE","Latitude":38.34228889,"Longitude":-82.11170556,"Elevation":0},{"ID":361,"AirportID":167,"Ident":"17","TrueHeading":179.564,"Length":2000,"Width":75,"Surface":"GRE","Latitude":37.70044444,"Longitude":-97.10949167,"Elevation":0},{"ID":362,"AirportID":167,"Ident":"35","TrueHeading":359.564,"Length":2000,"Width":75,"Surface":"GRE","Latitude":37.69495278,"Longitude":-97.10943889,"Elevation":0},{"ID":363,"AirportID":168,"Ident":"09","TrueHeading":71.915,"Length":2200,"Width":100,"Surface":"ASP","Latitude":45.77518333,"Longitude":-69.81354722,"Elevation":1196},{"ID":364,"AirportID":168,"Ident":"27","TrueHeading":251.921,"Length":2200,"Width":100,"Surface":"ASP","Latitude":45.77705,"Longitude":-69.80535,"Elevation":1196},{"ID":365,"AirportID":169,"Ident":"12","TrueHeading":124.595,"Length":3840,"Width":50,"Surface":"GRE","Latitude":33.42178056,"Longitude":-108.14625556,"Elevation":7378},{"ID":366,"AirportID":169,"Ident":"30","TrueHeading":304.601,"Length":3840,"Width":50,"Surface":"GRE","Latitude":33.41476111,"Longitude":-108.13406389,"Elevation":7378},{"ID":367,"AirportID":170,"Ident":"10","TrueHeading":91.984,"Length":2225,"Width":50,"Surface":"ASP","Latitude":41.68249722,"Longitude":-79.457025,"Elevation":1692},{"ID":368,"AirportID":170,"Ident":"28","TrueHeading":271.988,"Length":2225,"Width":50,"Surface":"ASP","Latitude":41.68233889,"Longitude":-79.45091111,"Elevation":1700},{"ID":369,"AirportID":171,"Ident":"13","TrueHeading":134.934,"Length":2132,"Width":50,"Surface":"ASP","Latitude":29.54116111,"Longitude":-98.95386944,"Elevation":0},{"ID":370,"AirportID":171,"Ident":"31","TrueHeading":314.937,"Length":2132,"Width":50,"Surface":"ASP","Latitude":29.53703056,"Longitude":-98.94911111,"Elevation":0},{"ID":371,"AirportID":172,"Ident":"09","TrueHeading":89.442,"Length":3000,"Width":70,"Surface":"ASP","Latitude":43.69848611,"Longitude":-89.00573056,"Elevation":920},{"ID":372,"AirportID":172,"Ident":"18","TrueHeading":180.301,"Length":2500,"Width":70,"Surface":"ASP","Latitude":43.69934722,"Longitude":-89.00466111,"Elevation":920},{"ID":373,"AirportID":172,"Ident":"27","TrueHeading":269.45,"Length":3000,"Width":70,"Surface":"ASP","Latitude":43.69856944,"Longitude":-88.99381389,"Elevation":920},{"ID":374,"AirportID":172,"Ident":"36","TrueHeading":0.301,"Length":2500,"Width":70,"Surface":"ASP","Latitude":43.69284722,"Longitude":-89.00470833,"Elevation":920},{"ID":375,"AirportID":173,"Ident":"18","TrueHeading":179.848,"Length":2780,"Width":120,"Surface":"GRE","Latitude":43.36409444,"Longitude":-94.442375,"Elevation":0},{"ID":376,"AirportID":173,"Ident":"36","TrueHeading":359.848,"Length":2780,"Width":120,"Surface":"GRE","Latitude":43.35646667,"Longitude":-94.44234722,"Elevation":0},{"ID":377,"AirportID":174,"Ident":"18","TrueHeading":181.205,"Length":3600,"Width":40,"Surface":"GRE","Latitude":30.62045556,"Longitude":-90.53593056,"Elevation":0},{"ID":378,"AirportID":174,"Ident":"36","TrueHeading":1.204,"Length":3600,"Width":40,"Surface":"GRE","Latitude":30.61056389,"Longitude":-90.53617222,"Elevation":0},{"ID":379,"AirportID":175,"Ident":"17W","TrueHeading":171.101,"Length":5287,"Width":400,"Surface":"WAT","Latitude":42.28204167,"Longitude":-72.60126111,"Elevation":0},{"ID":380,"AirportID":175,"Ident":"35W","TrueHeading":351.103,"Length":5287,"Width":400,"Surface":"WAT","Latitude":42.26770556,"Longitude":-72.59822778,"Elevation":0},{"ID":381,"AirportID":176,"Ident":"02W","TrueHeading":15.146,"Length":4000,"Width":200,"Surface":"WAT","Latitude":44.17763611,"Longitude":-69.96960556,"Elevation":0},{"ID":382,"AirportID":176,"Ident":"20W","TrueHeading":195.149,"Length":4000,"Width":200,"Surface":"WAT","Latitude":44.188225,"Longitude":-69.96560833,"Elevation":0},{"ID":383,"AirportID":177,"Ident":"07","TrueHeading":70.263,"Length":2600,"Width":40,"Surface":"GRE","Latitude":37.83326667,"Longitude":-93.37958056,"Elevation":0},{"ID":384,"AirportID":177,"Ident":"25","TrueHeading":250.268,"Length":2600,"Width":40,"Surface":"GRE","Latitude":37.83566944,"Longitude":-93.3711,"Elevation":0},{"ID":385,"AirportID":178,"Ident":"03","TrueHeading":360,"Length":1600,"Width":75,"Surface":"ASP","Latitude":32.34527778,"Longitude":-89.03416667,"Elevation":400},{"ID":386,"AirportID":178,"Ident":"08"Line truncated
|
||||
@@ -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
|
||||
}
|
||||
]
|
||||
@@ -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
|
||||
}
|
||||
]
|
||||
@@ -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
|
||||
}
|
||||
]
|
||||
@@ -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
|
||||
}
|
||||
]
|
||||
@@ -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
|
||||
}
|
||||
]
|
||||
@@ -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
|
||||
}
|
||||
]
|
||||
@@ -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
|
||||
}
|
||||
]
|
||||
@@ -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
|
||||
}
|
||||
]
|
||||
@@ -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
|
||||
}
|
||||
]
|
||||
@@ -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
|
||||
}
|
||||
]
|
||||
@@ -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
|
||||
}
|
||||
]
|
||||
@@ -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
|
||||
}
|
||||
]
|
||||
@@ -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
|
||||
}
|
||||
]
|
||||
@@ -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
|
||||
}
|
||||
]
|
||||
@@ -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
|
||||
}
|
||||
]
|
||||
@@ -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
|
||||
}
|
||||
]
|
||||
@@ -0,0 +1 @@
|
||||
[{"ID":1,"AirportID":107,"Proc":2,"ICAO":"0ID2","FullName":"YOYYU1","Name":"YOYYU1","Rwy":"11","RwyID":229},{"ID":2,"AirportID":107,"Proc":2,"ICAO":"0ID2","FullName":"ZAROD1","Name":"ZAROD1","Rwy":"29","RwyID":230},{"ID":3,"AirportID":168,"Proc":2,"ICAO":"13ME","FullName":"JAVUN2","Name":"JAVUN2","Rwy":"","RwyID":null},{"ID":4,"AirportID":223,"Proc":2,"ICAO":"19MT","FullName":"BNNDR1","Name":"BNNDR1","Rwy":"06","RwyID":493},{"ID":5,"AirportID":223,"Proc":2,"ICAO":"19MT","FullName":"SFORK1","Name":"SFORK1","Rwy":"06","RwyID":493},{"ID":6,"AirportID":223,"Proc":2,"ICAO":"19MT","FullName":"SNOEZ1","Name":"SNOEZ1","Rwy":"24","RwyID":494},{"ID":7,"AirportID":785,"Proc":2,"ICAO":"64OG","FullName":"RIFTE1","Name":"RIFTE1","Rwy":"","RwyID":null},{"ID":8,"AirportID":1196,"Proc":2,"ICAO":"AGGH","FullName":"AKNA1A","Name":"AKNA1A","Rwy":"06","RwyID":2569},{"ID":9,"AirportID":1196,"Proc":2,"ICAO":"AGGH","FullName":"AKNA1B","Name":"AKNA1B","Rwy":"24","RwyID":2570},{"ID":10,"AirportID":1196,"Proc":2,"ICAO":"AGGH","FullName":"APIT1Q","Name":"APIT1Q","Rwy":"24","RwyID":2570},{"ID":11,"AirportID":1196,"Proc":2,"ICAO":"AGGH","FullName":"AUKI1A","Name":"AUKI1A","Rwy":"06","RwyID":2569},{"ID":12,"AirportID":1196,"Proc":2,"ICAO":"AGGH","FullName":"AUKI1B","Name":"AUKI1B","Rwy":"24","RwyID":2570},{"ID":13,"AirportID":1196,"Proc":2,"ICAO":"AGGH","FullName":"DUGO1A","Name":"DUGO1A","Rwy":"06","RwyID":2569},{"ID":14,"AirportID":1196,"Proc":2,"ICAO":"AGGH","FullName":"DUGO1B","Name":"DUGO1B","Rwy":"24","RwyID":2570},{"ID":15,"AirportID":1196,"Proc":2,"ICAO":"AGGH","FullName":"ENOU1A","Name":"ENOU1A","Rwy":"06","RwyID":2569},{"ID":16,"AirportID":1196,"Proc":2,"ICAO":"AGGH","FullName":"ENOU1B","Name":"ENOU1B","Rwy":"24","RwyID":2570},{"ID":17,"AirportID":1196,"Proc":2,"ICAO":"AGGH","FullName":"FERA1A","Name":"FERA1A","Rwy":"06","RwyID":2569},{"ID":18,"AirportID":1196,"Proc":2,"ICAO":"AGGH","FullName":"FERA1B","Name":"FERA1B","Rwy":"24","RwyID":2570},{"ID":19,"AirportID":1196,"Proc":2,"ICAO":"AGGH","FullName":"GIZO1A","Name":"GIZO1A","Rwy":"06","RwyID":2569},{"ID":20,"AirportID":1196,"Proc":2,"ICAO":"AGGH","FullName":"GIZO1B","Name":"GIZO1B","Rwy":"24","RwyID":2570},{"ID":21,"AirportID":1196,"Proc":2,"ICAO":"AGGH","FullName":"KAGL1A","Name":"KAGL1A","Rwy":"06","RwyID":2569},{"ID":22,"AirportID":1196,"Proc":2,"ICAO":"AGGH","FullName":"KAGL1B","Name":"KAGL1B","Rwy":"24","RwyID":2570},{"ID":23,"AirportID":1196,"Proc":2,"ICAO":"AGGH","FullName":"KAKO1A","Name":"KAKO1A","Rwy":"06","RwyID":2569},{"ID":24,"AirportID":1196,"Proc":2,"ICAO":"AGGH","FullName":"KAKO1B","Name":"KAKO1B","Rwy":"24","RwyID":2570},{"ID":25,"AirportID":1196,"Proc":2,"ICAO":"AGGH","FullName":"KIRA1A","Name":"KIRA1A","Rwy":"06","RwyID":2569},{"ID":26,"AirportID":1196,"Proc":2,"ICAO":"AGGH","FullName":"KIRA1B","Name":"KIRA1B","Rwy":"24","RwyID":2570},{"ID":27,"AirportID":1196,"Proc":2,"ICAO":"AGGH","FullName":"KOPA1A","Name":"KOPA1A","Rwy":"06","RwyID":2569},{"ID":28,"AirportID":1196,"Proc":2,"ICAO":"AGGH","FullName":"KOPA1B","Name":"KOPA1B","Rwy":"24","RwyID":2570},{"ID":29,"AirportID":1196,"Proc":2,"ICAO":"AGGH","FullName":"LEGO1A","Name":"LEGO1A","Rwy":"06","RwyID":2569},{"ID":30,"AirportID":1196,"Proc":2,"ICAO":"AGGH","FullName":"LEGO1B","Name":"LEGO1B","Rwy":"24","RwyID":2570},{"ID":31,"AirportID":1196,"Proc":2,"ICAO":"AGGH","FullName":"MANO1A","Name":"MANO1A","Rwy":"06","RwyID":2569},{"ID":32,"AirportID":1196,"Proc":2,"ICAO":"AGGH","FullName":"MANO1B","Name":"MANO1B","Rwy":"24","RwyID":2570},{"ID":33,"AirportID":1196,"Proc":2,"ICAO":"AGGH","FullName":"MEME1Q","Name":"MEME1Q","Rwy":"24","RwyID":2570},{"ID":34,"AirportID":1196,"Proc":2,"ICAO":"AGGH","FullName":"NIPE1A","Name":"NIPE1A","Rwy":"06","RwyID":2569},{"ID":35,"AirportID":1196,"Proc":2,"ICAO":"AGGH","FullName":"NIPE1B","Name":"NIPE1B","Rwy":"24","RwyID":2570},{"ID":36,"AirportID":1196,"Proc":2,"ICAO":"AGGH","FullName":"NIPO1A","Name":"NIPO1A","Rwy":"06","RwyID":2569},{"ID":37,"AirportID":1196,"Proc":2,"ICAO":"AGGH","FullName":"NIPO1B","Name":"NIPO1B","Rwy":"24","RwyID":2570},{"ID":38,"AirportID":1196,"Proc":2,"ICAO":"AGGH","FullName":"NODO1A","Name":"NODO1A","Rwy":"06","RwyID":2569},{"ID":39,"AirportID":1196,"Proc":2,"ICAO":"AGGH","FullName":"NODO1B","Name":"NODO1B","Rwy":"24","RwyID":2570},{"ID":40,"AirportID":1196,"Proc":2,"ICAO":"AGGH","FullName":"PONO1A","Name":"PONO1A","Rwy":"06","RwyID":2569},{"ID":41,"AirportID":1196,"Proc":2,"ICAO":"AGGH","FullName":"PONO1B","Name":"PONO1B","Rwy":"24","RwyID":2570},{"ID":42,"AirportID":1196,"Proc":2,"ICAO":"AGGH","FullName":"RAXU1P","Name":"RAXU1P","Rwy":"06","RwyID":2569},{"ID":43,"AirportID":1196,"Proc":2,"ICAO":"AGGH","FullName":"RENE1A","Name":"RENE1A","Rwy":"06","RwyID":2569},{"ID":44,"AirportID":1196,"Proc":2,"ICAO":"AGGH","FullName":"RENE1B","Name":"RENE1B","Rwy":"24","RwyID":2570},{"ID":45,"AirportID":1196,"Proc":2,"ICAO":"AGGH","FullName":"RIPN1A","Name":"RIPN1A","Rwy":"06","RwyID":2569},{"ID":46,"AirportID":1196,"Proc":2,"ICAO":"AGGH","FullName":"RIPN1B","NamLine truncated
|
||||
@@ -0,0 +1 @@
|
||||
[{"ID":1,"Ident":"AARON","Name":"AARON","Latitude":-79.3845,"NavaidID":null,"Longitude":-110.92716667,"Collocated":0},{"ID":2,"Ident":"ANGIE","Name":"ANGIE","Latitude":-89.75466667,"NavaidID":null,"Longitude":-176.95916667,"Collocated":0},{"ID":3,"Ident":"BAKUS","Name":"BAKUS","Latitude":-81.43566667,"NavaidID":null,"Longitude":-148.83033333,"Collocated":0},{"ID":4,"Ident":"BAROW","Name":"BAROW","Latitude":-80.21816667,"NavaidID":null,"Longitude":-120.01716667,"Collocated":0},{"ID":5,"Ident":"BILLL","Name":"BILLL","Latitude":-79.998,"NavaidID":null,"Longitude":-119.5445,"Collocated":0},{"ID":6,"Ident":"BLAIR","Name":"BLAIR","Latitude":-80.23366667,"NavaidID":null,"Longitude":-120.05133333,"Collocated":0},{"ID":7,"Ident":"BOHIC","Name":"BOHIC","Latitude":-81.86516667,"NavaidID":null,"Longitude":-149.77916667,"Collocated":0},{"ID":8,"Ident":"BRIAN","Name":"BRIAN","Latitude":-81.89016667,"NavaidID":null,"Longitude":-149.20783333,"Collocated":0},{"ID":9,"Ident":"COREY","Name":"COREY","Latitude":-80.18883333,"NavaidID":null,"Longitude":-120.473,"Collocated":0},{"ID":10,"Ident":"DANNY","Name":"DANNY","Latitude":-79.3955,"NavaidID":null,"Longitude":-111.628,"Collocated":0},{"ID":11,"Ident":"DEANO","Name":"DEANO","Latitude":-79.68283333,"NavaidID":null,"Longitude":-112.61683333,"Collocated":0},{"ID":12,"Ident":"DEBIE","Name":"DEBIE","Latitude":-89.95766667,"NavaidID":null,"Longitude":-151.69683333,"Collocated":0},{"ID":13,"Ident":"ELIOT","Name":"ELIOT","Latitude":-80.24683333,"NavaidID":null,"Longitude":-119.55866667,"Collocated":0},{"ID":14,"Ident":"ESSPO","Name":"ESSPO","Latitude":-79.63366667,"NavaidID":null,"Longitude":-113.00016667,"Collocated":0},{"ID":15,"Ident":"FABIO","Name":"FABIO","Latitude":-79.56166667,"NavaidID":null,"Longitude":-113.24516667,"Collocated":0},{"ID":16,"Ident":"FRNIA","Name":"FRNIA","Latitude":-80.03916667,"NavaidID":null,"Longitude":-119.63133333,"Collocated":0},{"ID":17,"Ident":"GAREN","Name":"GAREN","Latitude":-79.55416667,"NavaidID":null,"Longitude":-112.53166667,"Collocated":0},{"ID":18,"Ident":"HOLLY","Name":"HOLLY","Latitude":-89.76733333,"NavaidID":null,"Longitude":-157.217,"Collocated":0},{"ID":19,"Ident":"HUARD","Name":"HUARD","Latitude":-79.79033333,"NavaidID":null,"Longitude":-119.61583333,"Collocated":0},{"ID":20,"Ident":"JAMES","Name":"JAMES","Latitude":-79.459,"NavaidID":null,"Longitude":-111.98466667,"Collocated":0},{"ID":21,"Ident":"JANKZ","Name":"JANKZ","Latitude":-81.85066667,"NavaidID":null,"Longitude":-149.72283333,"Collocated":0},{"ID":22,"Ident":"JOEEE","Name":"JOEEE","Latitude":-89.86666667,"NavaidID":null,"Longitude":-156.30466667,"Collocated":0},{"ID":23,"Ident":"JOHNN","Name":"JOHNN","Latitude":-79.91216667,"NavaidID":null,"Longitude":-119.36633333,"Collocated":0},{"ID":24,"Ident":"LEROY","Name":"LEROY","Latitude":-79.62233333,"NavaidID":null,"Longitude":-112.93283333,"Collocated":0},{"ID":25,"Ident":"LINDA","Name":"LINDA","Latitude":-81.643,"NavaidID":null,"Longitude":-148.94066667,"Collocated":0},{"ID":26,"Ident":"MARTN","Name":"MARTN","Latitude":-89.7505,"NavaidID":null,"Longitude":-157.29916667,"Collocated":0},{"ID":27,"Ident":"NEALE","Name":"NEALE","Latitude":-79.84616667,"NavaidID":null,"Longitude":-118.73233333,"Collocated":0},{"ID":28,"Ident":"NOLIN","Name":"NOLIN","Latitude":-80.12483333,"NavaidID":null,"Longitude":-119.81416667,"Collocated":0},{"ID":29,"Ident":"OLENA","Name":"OLENA","Latitude":-81.683,"NavaidID":null,"Longitude":-149.08783333,"Collocated":0},{"ID":30,"Ident":"ONEIL","Name":"ONEIL","Latitude":-79.32566667,"NavaidID":null,"Longitude":-111.24383333,"Collocated":0},{"ID":31,"Ident":"P1","Name":"P1","Latitude":-79.56666667,"NavaidID":null,"Longitude":166.83333333,"Collocated":0},{"ID":32,"Ident":"P10","Name":"P10","Latitude":-78.25,"NavaidID":null,"Longitude":164,"Collocated":0},{"ID":33,"Ident":"P3","Name":"P3","Latitude":-88.33333333,"NavaidID":null,"Longitude":166.83333333,"Collocated":0},{"ID":34,"Ident":"P4","Name":"P4","Latitude":-79.48333333,"NavaidID":null,"Longitude":169.08333333,"Collocated":0},{"ID":35,"Ident":"P6","Name":"P6","Latitude":-88.33333333,"NavaidID":null,"Longitude":-179,"Collocated":0},{"ID":36,"Ident":"P9","Name":"P9","Latitude":-79.45,"NavaidID":null,"Longitude":164.58333333,"Collocated":0},{"ID":37,"Ident":"RODNY","Name":"RODNY","Latitude":-79.314,"NavaidID":null,"Longitude":-111.18016667,"Collocated":0},{"ID":38,"Ident":"ROGER","Name":"ROGER","Latitude":-81.4595,"NavaidID":null,"Longitude":-148.28483333,"Collocated":0},{"ID":39,"Ident":"RULOE","Name":"RULOE","Latitude":-78.35333611,"NavaidID":null,"Longitude":167.06601667,"Collocated":0},{"ID":40,"Ident":"SALAA","Name":"SALAA","Latitude":-81.47416667,"NavaidID":null,"Longitude":-148.33616667,"Collocated":0},{"ID":41,"Ident":"SANDR","Name":"SANDR","Latitude":-79.26666667,"NavaidID":null,"Longitude":-111.55683333,"Collocated":0},{"ID":42,"Ident":"SARBE","Name":"SARBE","Latitude":-78.46283333,"NavaidID":null,"Longitude":167.04983333,"Collocated":0},{"ID":43,"IdenLine truncated
|
||||
+280
@@ -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));
|
||||
@@ -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();
|
||||
};
|
||||
|
||||
@@ -0,0 +1,8 @@
|
||||
{
|
||||
"dependencies": {
|
||||
"geojson": "^0.5.0",
|
||||
"geolib": "^3.3.4",
|
||||
"magvar": "^2.0.0"
|
||||
},
|
||||
"type": "module"
|
||||
}
|
||||
Generated
+39
@@ -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: {}
|
||||
Reference in new issue
Block a user