Skip to content

Commit 0fb4f2f

Browse files
feat: taxiway typings
Update taxiways.ts
1 parent 404d88f commit 0fb4f2f

File tree

6 files changed

+330
-3
lines changed

6 files changed

+330
-3
lines changed

packages/amdb/README.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,3 +2,11 @@
22

33
This package is part of the Navigraph SDK, and is intended to be used in conjuction with other SDK modules.
44
See the [navigraph](https://www.npmjs.com/package/navigraph) package for usage.
5+
6+
> [!WARNING]
7+
> ### When real number or integer (non enumerated) values in AMDB feature properties have no value, it is represented with one of the three following default values:
8+
> | Data Type | Null | Unknown | Not Applicable | Not Entered |
9+
> | --------- | ------ | ------- | -------------- | ----------- |
10+
> | Value | -32768 | -32767 | -32765 | -32764 |
11+
>
12+
> No-value strings will be all represented as a JSON `null` field, not `undefined` or `"$Null"`

packages/amdb/src/types/enums.ts

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,13 @@ export enum FeatureType {
1212
FinalApproachAndTakeoffArea = 11,
1313
TouchDownLiftOfArea = 12,
1414
HelipadThreshold = 13,
15+
TaxiwayElement = 14,
16+
TaxiwayShoulder = 15,
17+
TaxiwayGuidanceLine = 16,
18+
TaxiwayIntersectionMarking = 17,
19+
TaxiwayHoldingPosition = 18,
1520
RunwayExitLine = 19,
21+
FrequencyArea = 20,
1622
BlastPad = 33,
1723
AerodromeReferencePoint = 26,
1824
}
@@ -66,6 +72,12 @@ export enum LandingCategory {
6672
Cat3C,
6773
}
6874

75+
export enum StopbarCategory {
76+
None,
77+
Cat1,
78+
Cat2Or3,
79+
}
80+
6981
export enum ThresholdType {
7082
Threshold,
7183
DisplacedThreshold,
@@ -111,3 +123,9 @@ export enum LineDirection {
111123
StartToEndpoint,
112124
EndToStartpoint,
113125
}
126+
127+
export enum BridgeType {
128+
None,
129+
Underpass,
130+
Overpass,
131+
}

packages/amdb/src/types/features/index.ts

Lines changed: 31 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
/**
2-
* Docstrings are based upon descriptions from `ER-009 - Guidance material for generation of Aerodrome mapping data`
2+
* Docstrings are based upon descriptions from `ER-009 - Guidance material for generation of Aerodrome mapping data` or `ED-99D - User requirements for Aerodrome Mapping Information`
33
*/
44

5-
import { Point } from "geojson"
5+
import { Point, Polygon } from "geojson"
66
import { FeatureType } from "../enums"
77
import { AmdbFeature } from "./types"
88

@@ -31,5 +31,34 @@ export type AerodromeReferencePoint = AmdbFeature<
3131
Point
3232
>
3333

34+
/**
35+
* Designated part of an aerodrome surface where a specific frequency is required by air traffic control or ground control
36+
*
37+
* The geometry represents the region in which the frequency is to be used
38+
*
39+
* FrequencyAreas can overlap
40+
*/
41+
export type FrequencyArea = AmdbFeature<
42+
{
43+
/**
44+
* Represents the primary frequency used in the FrequencyArea, measured in **MegaHertz**
45+
*
46+
* Values will be within the domain `[117.975, 136.000]` except for default values as described in the README in `packages/amdb`
47+
*
48+
* Example: `123.000`
49+
*/
50+
frq: number
51+
52+
/**
53+
* The name of the service or station assigned to the primary frequency
54+
*
55+
* Example: `Auckland Apron`
56+
*/
57+
station: string | null
58+
},
59+
FeatureType.FrequencyArea,
60+
Polygon
61+
>
62+
3463
export * from "./helipads"
3564
export * from "./runway"

packages/amdb/src/types/features/runway.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -486,6 +486,7 @@ export type BlastPad = AmdbFeature<
486486
* Example: `9`
487487
*/
488488
idthr: string | null
489+
489490
/**
490491
* Permanent state of feature (exceeding the AIRAC-cycle of 56 days)
491492
*
@@ -507,11 +508,12 @@ export type BlastPad = AmdbFeature<
507508
export type RunwayExitLines = AmdbFeature<
508509
{
509510
/**
510-
* Taxiway segment name. This name **should** be identical to the corresponding taxiway name, but not neccesarily
511+
* Taxiway segment name. This name will usually be identical to the corresponding taxiway name, but not neccesarily
511512
*
512513
* Example: `A3`
513514
*/
514515
idlin: string | null
516+
515517
/**
516518
* Permanent state of feature (exceeding the AIRAC-cycle of 56 days)
517519
*
@@ -520,12 +522,14 @@ export type RunwayExitLines = AmdbFeature<
520522
* Example: `Open: 1`
521523
*/
522524
status: Status
525+
523526
/**
524527
* The color of the painted taxiline
525528
*
526529
* Example: `Orange: 1`
527530
*/
528531
color: LineColor
532+
529533
/**
530534
* Style of the painted taxiline
531535
*
Lines changed: 254 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,254 @@
1+
import { LineString, Polygon } from "geojson"
2+
import {
3+
BridgeType,
4+
FeatureType,
5+
GroundSurfaceType,
6+
LineColor,
7+
LineDirection,
8+
LineStyle,
9+
Status,
10+
StopbarCategory,
11+
} from "../enums"
12+
import { AmdbFeature } from "./types"
13+
14+
/**
15+
* Surface of a Taxiway
16+
*
17+
* Taxiway elements do not include taxiway shoulders and aircraft parking/stand areas
18+
*
19+
* A TaxiwayElement should be limited by the outer side of the taxiway edge marking
20+
*
21+
* Taxiway elements are not divided by surface type
22+
*/
23+
export type TaxiwayElement = AmdbFeature<
24+
{
25+
/**
26+
* Object identifier **(not unique)**
27+
*
28+
* Represents the name of the taxiway segment. If two or more taxiways intersect, their intersection should be a seperate TaxiwayElement whose `idlin` will come from the predominant taxiway. If the intersection has a specific name, the `idlin` should be that
29+
*
30+
* Example: `A5`
31+
*/
32+
idlin: string | null
33+
34+
/**
35+
* The name of the apron on which this taxiway is located, if any
36+
*
37+
* Example: `Terminal Ramp`
38+
*/
39+
idapron: string | null
40+
41+
/**
42+
* Generic surface type of the taxiway
43+
*
44+
* Example: `Asphalt: 2`
45+
*/
46+
gsurftype: GroundSurfaceType
47+
48+
/**
49+
* Indicates whether the taxiway is a bridge, and if so, what kind of bridge it is
50+
*
51+
* Example: `Overpass: 2`
52+
*/
53+
bridge: BridgeType
54+
55+
/**
56+
* Weight bearing capability of the surface
57+
*
58+
* Encoded as `Airport classification number - pavement classification number`, as specified in ICAO Annex 14, Chapter 2.6
59+
*
60+
* Example: `PCN72/F/B/X/T`
61+
*/
62+
pcn: string | null
63+
64+
/**
65+
* Usage restriction (prohibited) for specific aircraft type according to `ICAO-ACN (ICAO-DOC. 8643)`
66+
*
67+
* Encoded as aircraft type according to ICAO-ACN. If there is more than one aircraft-type restriction, the different types should be divided by a `.`
68+
*
69+
* Example: `B744.A380`
70+
*/
71+
restacn: string | null
72+
73+
/**
74+
* Permanent state of feature (exceeding the AIRAC-cycle of 56 days)
75+
*
76+
* Non-permanent closures or outages of less than 56 days are not adressed in the airport maping database but will be addressed via NOTAMS
77+
*
78+
* Example: `Open: 1`
79+
*/
80+
status: Status
81+
},
82+
FeatureType.TaxiwayElement,
83+
Polygon
84+
>
85+
86+
/**
87+
* An area adjacent to the edge of a taxiway so prepared as to provide a transition between the pavement and the adjacent surface
88+
*
89+
* The taxiway shoulder polygon should exclude the taxiway edge marking
90+
*/
91+
export type TaxiwayShoulder = AmdbFeature<
92+
{
93+
/**
94+
* Permanent state of feature (exceeding the AIRAC-cycle of 56 days)
95+
*
96+
* Non-permanent closures or outages of less than 56 days are not adressed in the airport maping database but will be addressed via NOTAMS
97+
*
98+
* Example: `Open: 1`
99+
*/
100+
status: Status
101+
102+
/**
103+
* Generic surface type of the taxiway
104+
*
105+
* Example: `Asphalt: 2`
106+
*/
107+
gsurftype: GroundSurfaceType
108+
},
109+
FeatureType.TaxiwayShoulder,
110+
Polygon
111+
>
112+
113+
/**
114+
* Represents a guidance line painted on a taxiway
115+
*
116+
* Taxiway guidance lines (taxilines) are refered to in `ICAO Doc. 9157` as taxiway centrelines
117+
*
118+
* See definition `ICAO Annex 14, CHapter 5.2.8`
119+
*
120+
* Taxiway guidance lines shall exclude exit lines and aircraft stand guidance taxilines
121+
*/
122+
export type TaxiwayGuidanceLine = AmdbFeature<
123+
{
124+
/**
125+
* Object identifier **(not unique)**
126+
*
127+
* Represents the name of the guidance line
128+
*
129+
* Note that this value will **ALWAYS** match the `idlin` of the `TaxiwayElement` that this guidance line is contained within, which is not always representative, especially at intersections. This means the `idlin` is not garunteed to match the exact name of the line in the real world
130+
*
131+
* The above is not neccessarily true for RunwayExitLines
132+
*
133+
* Example: `A5`
134+
*/
135+
idlin: string | null
136+
137+
/**
138+
* Permanent state of feature (exceeding the AIRAC-cycle of 56 days)
139+
*
140+
* Non-permanent closures or outages of less than 56 days are not adressed in the airport maping database but will be addressed via NOTAMS
141+
*
142+
* Example: `Open: 1`
143+
*/
144+
status: Status
145+
146+
/**
147+
* Maximum wingspan allowed on the taxiway, measured in **meters**
148+
*
149+
* Example: `35.66`
150+
*/
151+
wingspan: number
152+
153+
/**
154+
* Maximum speed allowed on the taxiway, measured in **knots**
155+
*
156+
* Example: `17.00`
157+
*/
158+
maxspeed: number
159+
160+
/**
161+
* The color of the painted taxiline
162+
*
163+
* Example: `Orange: 1`
164+
*/
165+
color: LineColor
166+
167+
/**
168+
* Style of the painted taxiline
169+
*
170+
* Example: `Dashed: 1`
171+
*/
172+
style: LineStyle
173+
174+
/**
175+
* Directionality of the corresponding taxiway
176+
*
177+
* Example: `StartToEndpoint: 1`
178+
*/
179+
direc: LineDirection
180+
},
181+
FeatureType.TaxiwayGuidanceLine,
182+
LineString
183+
>
184+
185+
/**
186+
* A marking painted at a position at which taxiing aircraft and vehicles are expected to stop and hold until further cleared to proceed, when instructed so by the aerodrome control tower
187+
*
188+
* TaxiwayIntersectionMarkings will only protect a non-runway location
189+
*
190+
* The line shall be located at the center of the painted ground marking for single line markings or at the outer edge of the painted ground marking away from the protected surface
191+
*
192+
* See definition: `ICAO Annex 14, chapter 5.2.11`
193+
*/
194+
export type TaxiwayIntersectionMarking = AmdbFeature<
195+
{
196+
/**
197+
* Object Identifier **(not unique)**
198+
*
199+
* Will match the `idlin` of the `TaxiwayElement` that this intersection marking is located on, unless it has an otherwise identifiable name
200+
*
201+
* Example: `A5`
202+
*/
203+
idlin: string | null
204+
},
205+
FeatureType.TaxiwayIntersectionMarking,
206+
LineString
207+
>
208+
209+
/**
210+
* A marking painted at a position intended to protect a runway, an obstacle limitation surface, or an ILS/MLS critical/sensitive area at which taxiing aircraft and vehicles are expected to stop and hold unless otherwise authorized by the aerodrome control tower.
211+
*
212+
* See definition: `ICAO Annex 14, chapter 5.2.10`
213+
*
214+
* Shall be located at the outer edge of the painted ground marking away from the corresponding runway
215+
*/
216+
export type TaxiwayHoldingPosition = AmdbFeature<
217+
{
218+
/**
219+
* Object Identifier **(not unique)**
220+
*
221+
* Will match the `idlin` of the `TaxiwayElement` that this holding position is located on, unless it has an otherwise identifiable name
222+
*
223+
* Example: `A5`
224+
*/
225+
idlin: string | null
226+
227+
/**
228+
* Code describing the low visiblity operation category of the holding position
229+
*
230+
* Example: `Cat1: 1`
231+
*/
232+
catstop: StopbarCategory
233+
234+
/**
235+
* Permanent state of feature (exceeding the AIRAC-cycle of 56 days)
236+
*
237+
* Non-permanent closures or outages of less than 56 days are not adressed in the airport maping database but will be addressed via NOTAMS
238+
*
239+
* Example: `Open: 1`
240+
*/
241+
status: Status
242+
243+
/**
244+
* Object identifier of the runway or taxiway being protected
245+
*
246+
* For runway holding positions this will the `idrwy` field, for taxiways it will be the `idlin` field
247+
*
248+
* Example: `07L.25R`
249+
*/
250+
idp: string | null
251+
},
252+
FeatureType.TaxiwayHoldingPosition,
253+
LineString
254+
>

0 commit comments

Comments
 (0)