aixm 0.2.3 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.gitignore +1 -0
- data/.ruby-version +1 -1
- data/.yardopts +3 -0
- data/CHANGELOG.md +34 -14
- data/Guardfile +1 -0
- data/README.md +64 -257
- data/lib/aixm.rb +16 -7
- data/lib/aixm/component.rb +6 -0
- data/lib/aixm/component/frequency.rb +135 -0
- data/lib/aixm/component/geometry.rb +34 -23
- data/lib/aixm/component/geometry/arc.rb +37 -22
- data/lib/aixm/component/geometry/border.rb +29 -20
- data/lib/aixm/component/geometry/circle.rb +39 -22
- data/lib/aixm/component/geometry/point.rb +29 -13
- data/lib/aixm/component/helipad.rb +154 -0
- data/lib/aixm/component/layer.rb +91 -0
- data/lib/aixm/component/runway.rb +294 -0
- data/lib/aixm/component/service.rb +170 -0
- data/lib/aixm/component/timetable.rb +65 -0
- data/lib/aixm/component/vertical_limits.rb +65 -29
- data/lib/aixm/config.rb +87 -0
- data/lib/aixm/document.rb +66 -42
- data/lib/aixm/errors.rb +11 -0
- data/lib/aixm/f.rb +34 -20
- data/lib/aixm/feature.rb +38 -0
- data/lib/aixm/feature/airport.rb +473 -0
- data/lib/aixm/feature/airspace.rb +145 -92
- data/lib/aixm/feature/navigational_aid.rb +94 -0
- data/lib/aixm/feature/navigational_aid/designated_point.rb +50 -54
- data/lib/aixm/feature/navigational_aid/dme.rb +48 -40
- data/lib/aixm/feature/navigational_aid/marker.rb +55 -45
- data/lib/aixm/feature/navigational_aid/ndb.rb +54 -50
- data/lib/aixm/feature/navigational_aid/tacan.rb +38 -31
- data/lib/aixm/feature/navigational_aid/vor.rb +84 -76
- data/lib/aixm/feature/organisation.rb +97 -0
- data/lib/aixm/feature/unit.rb +152 -0
- data/lib/aixm/refinements.rb +132 -47
- data/lib/aixm/shortcuts.rb +11 -6
- data/lib/aixm/version.rb +1 -1
- data/lib/aixm/xy.rb +64 -20
- data/lib/aixm/z.rb +51 -22
- data/{lib/aixm/schemas → schemas/aixm}/4.5/AIXM-DataTypes.xsd +0 -0
- data/{lib/aixm/schemas → schemas/aixm}/4.5/AIXM-Features.xsd +0 -0
- data/{lib/aixm/schemas → schemas/aixm}/4.5/AIXM-Snapshot.xsd +0 -0
- data/schemas/ofmx/0/OFMX-DataTypes.xsd +5077 -0
- data/schemas/ofmx/0/OFMX-Features.xsd +9955 -0
- data/schemas/ofmx/0/OFMX-Snapshot.xsd +217 -0
- data/spec/factory.rb +209 -33
- data/spec/lib/aixm/component/frequency_spec.rb +75 -0
- data/spec/lib/aixm/component/geometry/arc_spec.rb +28 -22
- data/spec/lib/aixm/component/geometry/border_spec.rb +23 -20
- data/spec/lib/aixm/component/geometry/circle_spec.rb +31 -22
- data/spec/lib/aixm/component/geometry/point_spec.rb +11 -14
- data/spec/lib/aixm/component/geometry_spec.rb +150 -69
- data/spec/lib/aixm/component/helipad_spec.rb +136 -0
- data/spec/lib/aixm/component/layer_spec.rb +110 -0
- data/spec/lib/aixm/component/runway_spec.rb +402 -0
- data/spec/lib/aixm/component/service_spec.rb +61 -0
- data/spec/lib/aixm/component/timetable_spec.rb +49 -0
- data/spec/lib/aixm/component/vertical_limits_spec.rb +39 -20
- data/spec/lib/aixm/config_spec.rb +41 -0
- data/spec/lib/aixm/document_spec.rb +637 -147
- data/spec/lib/aixm/errors_spec.rb +14 -0
- data/spec/lib/aixm/f_spec.rb +17 -10
- data/spec/lib/aixm/feature/airport_spec.rb +546 -0
- data/spec/lib/aixm/feature/airspace_spec.rb +349 -226
- data/spec/lib/aixm/feature/navigational_aid/designated_point_spec.rb +47 -36
- data/spec/lib/aixm/feature/navigational_aid/dme_spec.rb +61 -36
- data/spec/lib/aixm/feature/navigational_aid/marker_spec.rb +61 -113
- data/spec/lib/aixm/feature/navigational_aid/ndb_spec.rb +65 -79
- data/spec/lib/aixm/feature/navigational_aid/tacan_spec.rb +57 -36
- data/spec/lib/aixm/feature/navigational_aid/vor_spec.rb +86 -112
- data/spec/lib/aixm/feature/navigational_aid_spec.rb +52 -0
- data/spec/lib/aixm/feature/organisation_spec.rb +77 -0
- data/spec/lib/aixm/feature/unit_spec.rb +227 -0
- data/spec/lib/aixm/feature_spec.rb +58 -0
- data/spec/lib/aixm/refinements_spec.rb +187 -178
- data/spec/lib/aixm/xy_spec.rb +45 -34
- data/spec/lib/aixm/z_spec.rb +19 -21
- data/spec/macros/organisation.rb +11 -0
- data/spec/macros/remarks.rb +12 -0
- data/spec/macros/timetable.rb +11 -0
- data/spec/macros/xy.rb +11 -0
- data/spec/macros/z_qnh.rb +11 -0
- data/spec/spec_helper.rb +26 -0
- metadata +60 -19
- data/lib/aixm/base.rb +0 -10
- data/lib/aixm/component/base.rb +0 -6
- data/lib/aixm/component/class_layer.rb +0 -46
- data/lib/aixm/component/geometry/base.rb +0 -8
- data/lib/aixm/component/schedule.rb +0 -43
- data/lib/aixm/feature/base.rb +0 -6
- data/lib/aixm/feature/navigational_aid/base.rb +0 -79
- data/spec/lib/aixm/component/class_layer_spec.rb +0 -74
- data/spec/lib/aixm/component/schedule_spec.rb +0 -33
- data/spec/lib/aixm/feature/navigational_aid/base_spec.rb +0 -41
|
@@ -0,0 +1,217 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<!--
|
|
3
|
+
********************************************************************************
|
|
4
|
+
|
|
5
|
+
OFMX 0.1.0 - open flightmaps exchange format
|
|
6
|
+
|
|
7
|
+
This is a fork of AIXM 4.5 to accomodate extensions and backports for
|
|
8
|
+
open flightmaps.
|
|
9
|
+
|
|
10
|
+
AIXM: copyright (c) 2006, EUROCONTROL (BSD license)
|
|
11
|
+
OFMX: https://openflightmaps.org/live/downloads/20150306-GUL.pdf
|
|
12
|
+
|
|
13
|
+
Redistribution and use in source and binary forms, with or without modification,
|
|
14
|
+
are permitted provided that the following conditions are met:
|
|
15
|
+
|
|
16
|
+
* Redistributions of source code must retain the above copyright notice, this
|
|
17
|
+
list of conditions and the following disclaimer.
|
|
18
|
+
* Redistributions in binary form must reproduce the above copyright notice,
|
|
19
|
+
this list of conditions and the following disclaimer in the documentation
|
|
20
|
+
and/or other materials provided with the distribution.
|
|
21
|
+
* Neither the name of EUROCONTROL nor the names of its contributors may be
|
|
22
|
+
used to endorse or promote products derived from this software without
|
|
23
|
+
specific prior written permission.
|
|
24
|
+
|
|
25
|
+
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
|
26
|
+
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
27
|
+
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
|
28
|
+
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
|
|
29
|
+
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
|
30
|
+
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
|
31
|
+
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
|
32
|
+
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
|
33
|
+
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
34
|
+
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
35
|
+
|
|
36
|
+
********************************************************************************
|
|
37
|
+
-->
|
|
38
|
+
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
|
|
39
|
+
<xsd:annotation>
|
|
40
|
+
<xsd:documentation>Version: 4.5-1</xsd:documentation>
|
|
41
|
+
</xsd:annotation>
|
|
42
|
+
<xsd:include schemaLocation="OFMX-Features.xsd"/>
|
|
43
|
+
<xsd:attributeGroup name="Changes"/>
|
|
44
|
+
<xsd:element name="OFMX-Snapshot">
|
|
45
|
+
<xsd:complexType>
|
|
46
|
+
<xsd:choice maxOccurs="unbounded">
|
|
47
|
+
<xsd:element name="Aas" type="AirspaceAssociationType"/>
|
|
48
|
+
<xsd:element name="Abd" type="AirspaceBorderType"/>
|
|
49
|
+
<xsd:element name="Acr" type="AirspaceCorridorType"/>
|
|
50
|
+
<xsd:element name="Adg" type="AirspaceDerivedGeometryType"/>
|
|
51
|
+
<xsd:element name="Aga" type="GroundServiceAddressType"/>
|
|
52
|
+
<xsd:element name="Agl" type="AeronauticalGroundLightType"/>
|
|
53
|
+
<xsd:element name="Aha" type="AerodromeHeliportAddressType"/>
|
|
54
|
+
<xsd:element name="Ahc" type="AerodromeHeliportCollocationType"/>
|
|
55
|
+
<xsd:element name="Aho" type="AerodromeHeliportObstacleType"/>
|
|
56
|
+
<xsd:element name="Ahp" type="AerodromeHeliportType"/>
|
|
57
|
+
<xsd:element name="Ahs" type="GroundServiceType"/>
|
|
58
|
+
<xsd:element name="Ahu" type="AerodromeHeliportUsageType"/>
|
|
59
|
+
<xsd:element name="Ain" type="NavaidAngularReferenceType"/>
|
|
60
|
+
<xsd:element name="Als" type="ApronLightingSystemType"/>
|
|
61
|
+
<xsd:element name="Ana" type="AerodromeHeliportNavaidType"/>
|
|
62
|
+
<xsd:element name="Apg" type="ApronGeometryType"/>
|
|
63
|
+
<xsd:element name="Apn" type="ApronType"/>
|
|
64
|
+
<xsd:element name="Ase" type="AirspaceType"/>
|
|
65
|
+
<xsd:element name="Din" type="NavaidDistanceIndicationType"/>
|
|
66
|
+
<xsd:element name="Dli" type="DmeUsageLimitationType"/>
|
|
67
|
+
<xsd:element name="Dme" type="DmeType"/>
|
|
68
|
+
<xsd:element name="Dpn" type="DesignatedPointType"/>
|
|
69
|
+
<xsd:element name="Fao" type="FatoOldType">
|
|
70
|
+
<xsd:annotation>
|
|
71
|
+
<xsd:appinfo>DEPRECATED-4.5</xsd:appinfo>
|
|
72
|
+
<xsd:documentation>[Deprecated]</xsd:documentation>
|
|
73
|
+
</xsd:annotation>
|
|
74
|
+
</xsd:element>
|
|
75
|
+
<xsd:element name="Fto" type="FatoType"/>
|
|
76
|
+
<xsd:element name="Fcp" type="FatoCentreLinePositionType"/>
|
|
77
|
+
<xsd:element name="Fda" type="FatoDirectionApproachLightingType"/>
|
|
78
|
+
<xsd:element name="Fdd" type="FatoDirectionDeclaredDistanceType"/>
|
|
79
|
+
<xsd:element name="Fdn" type="FatoDirectionType"/>
|
|
80
|
+
<xsd:element name="Fdo" type="FatoDirectionObstacleType"/>
|
|
81
|
+
<xsd:element name="Fds" type="FatoDirectionStarType"/>
|
|
82
|
+
<xsd:element name="Fls" type="FatoLightingSystemType"/>
|
|
83
|
+
<xsd:element name="Fpa" type="FatoProtectionAreaType"/>
|
|
84
|
+
<xsd:element name="Fpg" type="FatoProtectionAreaGeometryType"/>
|
|
85
|
+
<xsd:element name="Fqy" type="FrequencyType"/>
|
|
86
|
+
<xsd:element name="Ful" type="FuelType"/>
|
|
87
|
+
<xsd:element name="Gbr" type="GeographicalBorderType"/>
|
|
88
|
+
<xsd:element name="Gsd" type="GateStandType"/>
|
|
89
|
+
<xsd:element name="Hpe" type="HoldingProcedureType"/>
|
|
90
|
+
<xsd:element name="Iap" type="InstrumentApproachType"/>
|
|
91
|
+
<xsd:element name="Ils" type="IlsType"/>
|
|
92
|
+
<xsd:element name="Iue" type="InstrumentApproachUsageConditionType"/>
|
|
93
|
+
<xsd:element name="Mgp" type="MsaGroupType"/>
|
|
94
|
+
<xsd:element name="Mkr" type="MkrType"/>
|
|
95
|
+
<xsd:element name="Mls" type="MlsType"/>
|
|
96
|
+
<xsd:element name="Ndb" type="NdbType"/>
|
|
97
|
+
<xsd:element name="Nli" type="NdbUsageLimitationType"/>
|
|
98
|
+
<xsd:element name="Nsc" type="CheckpointType"/>
|
|
99
|
+
<xsd:element name="Ntg" type="NitrogenType"/>
|
|
100
|
+
<xsd:element name="Oaa" type="OrganisationAuthorityAddressType"/>
|
|
101
|
+
<xsd:element name="Oae" type="AirspaceObstacleType"/>
|
|
102
|
+
<xsd:element name="Oas" type="OrganisationAuthorityAssociationType"/>
|
|
103
|
+
<xsd:element name="Obs" type="ObstacleType"/>
|
|
104
|
+
<xsd:element name="Ofa" type="AirspaceAuthorityType"/>
|
|
105
|
+
<xsd:element name="Oil" type="OilType"/>
|
|
106
|
+
<xsd:element name="Org" type="OrganisationAuthorityType"/>
|
|
107
|
+
<xsd:element name="Oxg" type="OxygenType"/>
|
|
108
|
+
<xsd:element name="Pfy" type="PassengerFacilityType"/>
|
|
109
|
+
<xsd:element name="Plb" type="CruisingLevelsTableType"/>
|
|
110
|
+
<xsd:element name="Plc" type="CruisingLevelsColumnType"/>
|
|
111
|
+
<xsd:element name="Rcp" type="RunwayCentreLinePositionType"/>
|
|
112
|
+
<xsd:element name="Rda" type="RunwayDirectionApproachLightingSystemType"/>
|
|
113
|
+
<xsd:element name="Rdd" type="RunwayDirectionDeclaredDistanceType"/>
|
|
114
|
+
<xsd:element name="Rdn" type="RunwayDirectionType"/>
|
|
115
|
+
<xsd:element name="Rdo" type="RunwayDirectionObstacleType"/>
|
|
116
|
+
<xsd:element name="Rds" type="RunwayDirectionStarType"/>
|
|
117
|
+
<xsd:element name="Rls" type="RunwayDirectionLightingSystemType"/>
|
|
118
|
+
<xsd:element name="Rpa" type="RunwayProtectionAreaType"/>
|
|
119
|
+
<xsd:element name="Rpg" type="RunwayProtectionAreaGeometryType"/>
|
|
120
|
+
<xsd:element name="Rsg" type="RouteSegmentType"/>
|
|
121
|
+
<xsd:element name="Rsu" type="RouteSegmentUsageType"/>
|
|
122
|
+
<xsd:element name="Rte" type="EnrouteRouteType"/>
|
|
123
|
+
<xsd:element name="Rwy" type="RunwayType"/>
|
|
124
|
+
<xsd:element name="Sae" type="AirspaceServiceType"/>
|
|
125
|
+
<xsd:element name="Sah" type="AerodromeHeliportServiceType"/>
|
|
126
|
+
<xsd:element name="Ser" type="ServiceType"/>
|
|
127
|
+
<xsd:element name="Shp" type="HoldingProcedureServiceType"/>
|
|
128
|
+
<xsd:element name="Sia" type="StarType"/>
|
|
129
|
+
<xsd:element name="Sid" type="SidType"/>
|
|
130
|
+
<xsd:element name="Sip" type="InstrumentApproachServiceType"/>
|
|
131
|
+
<xsd:element name="Sns" type="SpecialNavigationSystemStationType"/>
|
|
132
|
+
<xsd:element name="Sny" type="SpecialNavigationSystemType"/>
|
|
133
|
+
<xsd:element name="Spa" type="SignificantPointAirspaceType"/>
|
|
134
|
+
<xsd:element name="Spd" type="SpecialDateType"/>
|
|
135
|
+
<xsd:element name="Srs" type="RouteSegmentServiceType"/>
|
|
136
|
+
<xsd:element name="Ssd" type="SidServiceType"/>
|
|
137
|
+
<xsd:element name="Sse" type="StarUsageType"/>
|
|
138
|
+
<xsd:element name="Ssr" type="StarServiceType"/>
|
|
139
|
+
<xsd:element name="Sue" type="SidUsageType"/>
|
|
140
|
+
<xsd:element name="Swy" type="StopwayType"/>
|
|
141
|
+
<xsd:element name="Tcn" type="TacanType"/>
|
|
142
|
+
<xsd:element name="Tcp" type="TaxiwayCentreLinePositionType"/>
|
|
143
|
+
<xsd:element name="Tfr" type="TrafficFlowRestrictionType"/>
|
|
144
|
+
<xsd:element name="Thp" type="TaxiwayHoldingPositionType"/>
|
|
145
|
+
<xsd:element name="Tla" type="TlofType"/>
|
|
146
|
+
<xsd:element name="Tlg" type="TlofGeometryType"/>
|
|
147
|
+
<xsd:element name="Tli" type="TacanUsageLimitationType"/>
|
|
148
|
+
<xsd:element name="Tls" type="TlofLightingSystemType"/>
|
|
149
|
+
<xsd:element name="Tly" type="TaxiwayLightingSystemType"/>
|
|
150
|
+
<xsd:element name="Tsa" type="TlofSafeAreaType"/>
|
|
151
|
+
<xsd:element name="Tsg" type="TlofSafeAreaGeometryType"/>
|
|
152
|
+
<xsd:element name="Twy" type="TaxiwayType"/>
|
|
153
|
+
<xsd:element name="Uac" type="UnitAssociationType"/>
|
|
154
|
+
<xsd:element name="Uas" type="UnitContactAddressType"/>
|
|
155
|
+
<xsd:element name="Uni" type="UnitType"/>
|
|
156
|
+
<xsd:element name="Vli" type="VorUsageLimitationType"/>
|
|
157
|
+
<xsd:element name="Vor" type="VorType"/>
|
|
158
|
+
<xsd:element name="Lbm" type="LabelMarkerType"/>
|
|
159
|
+
<xsd:element name="Aac" type="AirspaceAssocType">
|
|
160
|
+
<xsd:annotation>
|
|
161
|
+
<xsd:appinfo>DEPRECATED-4.0</xsd:appinfo>
|
|
162
|
+
<xsd:documentation>[Deprecated]</xsd:documentation>
|
|
163
|
+
</xsd:annotation>
|
|
164
|
+
</xsd:element>
|
|
165
|
+
<xsd:element name="Dln" type="DmeLimitationType">
|
|
166
|
+
<xsd:annotation>
|
|
167
|
+
<xsd:appinfo>DEPRECATED-4.0</xsd:appinfo>
|
|
168
|
+
<xsd:documentation>[Deprecated]</xsd:documentation>
|
|
169
|
+
</xsd:annotation>
|
|
170
|
+
</xsd:element>
|
|
171
|
+
<xsd:element name="Nln" type="NdbLimitationType">
|
|
172
|
+
<xsd:annotation>
|
|
173
|
+
<xsd:appinfo>DEPRECATED-4.0</xsd:appinfo>
|
|
174
|
+
<xsd:documentation>[Deprecated]</xsd:documentation>
|
|
175
|
+
</xsd:annotation>
|
|
176
|
+
</xsd:element>
|
|
177
|
+
<xsd:element name="Tln" type="TacanLimitationType">
|
|
178
|
+
<xsd:annotation>
|
|
179
|
+
<xsd:appinfo>DEPRECATED-4.0</xsd:appinfo>
|
|
180
|
+
<xsd:documentation>[Deprecated]</xsd:documentation>
|
|
181
|
+
</xsd:annotation>
|
|
182
|
+
</xsd:element>
|
|
183
|
+
<xsd:element name="Vln" type="VorLimitationType">
|
|
184
|
+
<xsd:annotation>
|
|
185
|
+
<xsd:appinfo>DEPRECATED-4.0</xsd:appinfo>
|
|
186
|
+
<xsd:documentation>[Deprecated]</xsd:documentation>
|
|
187
|
+
</xsd:annotation>
|
|
188
|
+
</xsd:element>
|
|
189
|
+
</xsd:choice>
|
|
190
|
+
<xsd:attribute name="version" type="xsd:string" use="required">
|
|
191
|
+
<xsd:annotation>
|
|
192
|
+
<xsd:documentation>The version of the OFMX-Snapshot.xsd schema to which the message conforms</xsd:documentation>
|
|
193
|
+
</xsd:annotation>
|
|
194
|
+
</xsd:attribute>
|
|
195
|
+
<xsd:attribute name="origin" type="xsd:string" use="required">
|
|
196
|
+
<xsd:annotation>
|
|
197
|
+
<xsd:documentation>The originator (source) of the message</xsd:documentation>
|
|
198
|
+
</xsd:annotation>
|
|
199
|
+
</xsd:attribute>
|
|
200
|
+
<xsd:attribute name="namespace" type="uuid" use="required">
|
|
201
|
+
<xsd:annotation>
|
|
202
|
+
<xsd:documentation>The originator (source) namespace of the message</xsd:documentation>
|
|
203
|
+
</xsd:annotation>
|
|
204
|
+
</xsd:attribute>
|
|
205
|
+
<xsd:attribute name="created" type="xsd:dateTime" use="required">
|
|
206
|
+
<xsd:annotation>
|
|
207
|
+
<xsd:documentation>The date and time when the message was created</xsd:documentation>
|
|
208
|
+
</xsd:annotation>
|
|
209
|
+
</xsd:attribute>
|
|
210
|
+
<xsd:attribute name="effective" type="xsd:dateTime" use="required">
|
|
211
|
+
<xsd:annotation>
|
|
212
|
+
<xsd:documentation>The date and time used as criteria to select valid versions included in the message</xsd:documentation>
|
|
213
|
+
</xsd:annotation>
|
|
214
|
+
</xsd:attribute>
|
|
215
|
+
</xsd:complexType>
|
|
216
|
+
</xsd:element>
|
|
217
|
+
</xsd:schema>
|
data/spec/factory.rb
CHANGED
|
@@ -2,10 +2,30 @@ module AIXM
|
|
|
2
2
|
class Factory
|
|
3
3
|
class << self
|
|
4
4
|
|
|
5
|
+
# Base
|
|
6
|
+
|
|
5
7
|
def xy
|
|
6
8
|
AIXM.xy(lat: 10, long: 20)
|
|
7
9
|
end
|
|
8
10
|
|
|
11
|
+
def z
|
|
12
|
+
AIXM.z(1000, :qnh)
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def f
|
|
16
|
+
AIXM.f(123.35, :mhz)
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
# Components
|
|
20
|
+
|
|
21
|
+
def timetable
|
|
22
|
+
AIXM.timetable(
|
|
23
|
+
code: :sunrise_to_sunset
|
|
24
|
+
).tap do |timetable|
|
|
25
|
+
timetable.remarks = "timetable remarks"
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
|
|
9
29
|
def vertical_limits
|
|
10
30
|
AIXM.vertical_limits(
|
|
11
31
|
upper_z: AIXM.z(65, :qne),
|
|
@@ -15,11 +35,15 @@ module AIXM
|
|
|
15
35
|
)
|
|
16
36
|
end
|
|
17
37
|
|
|
18
|
-
def
|
|
19
|
-
AIXM.
|
|
38
|
+
def layer
|
|
39
|
+
AIXM.layer(
|
|
20
40
|
class: :C,
|
|
21
41
|
vertical_limits: vertical_limits
|
|
22
|
-
)
|
|
42
|
+
).tap do |layer|
|
|
43
|
+
layer.timetable = AIXM::H24
|
|
44
|
+
layer.selective = true
|
|
45
|
+
layer.remarks = 'airspace layer'
|
|
46
|
+
end
|
|
23
47
|
end
|
|
24
48
|
|
|
25
49
|
def polygon_geometry
|
|
@@ -48,73 +72,90 @@ module AIXM
|
|
|
48
72
|
end
|
|
49
73
|
end
|
|
50
74
|
|
|
75
|
+
# Airspaces
|
|
76
|
+
|
|
51
77
|
def polygon_airspace
|
|
52
78
|
AIXM.airspace(
|
|
79
|
+
source: 'LF|GEN|0.0 FACTORY|0|0',
|
|
80
|
+
region: 'LF',
|
|
81
|
+
id: 'PA',
|
|
82
|
+
type: :danger_area,
|
|
53
83
|
name: 'POLYGON AIRSPACE',
|
|
54
|
-
short_name: 'POLYGON'
|
|
55
|
-
type: 'D'
|
|
84
|
+
short_name: 'POLYGON'
|
|
56
85
|
).tap do |airspace|
|
|
57
|
-
airspace.
|
|
58
|
-
airspace.class_layers << class_layer
|
|
86
|
+
airspace.layers << layer
|
|
59
87
|
airspace.geometry = polygon_geometry
|
|
60
|
-
airspace.remarks = 'polygon airspace'
|
|
61
88
|
end
|
|
62
89
|
end
|
|
63
90
|
|
|
64
91
|
def circle_airspace
|
|
65
92
|
AIXM.airspace(
|
|
93
|
+
source: 'LF|GEN|0.0 FACTORY|0|0',
|
|
94
|
+
region: 'LF',
|
|
95
|
+
id: 'CA',
|
|
96
|
+
type: :danger_area,
|
|
66
97
|
name: 'CIRCLE AIRSPACE',
|
|
67
|
-
short_name: 'CIRCLE'
|
|
68
|
-
type: 'D'
|
|
98
|
+
short_name: 'CIRCLE'
|
|
69
99
|
).tap do |airspace|
|
|
70
|
-
airspace.
|
|
71
|
-
airspace.class_layers << class_layer
|
|
100
|
+
airspace.layers << layer
|
|
72
101
|
airspace.geometry = circle_geometry
|
|
73
|
-
airspace.remarks = 'circle airspace'
|
|
74
102
|
end
|
|
75
103
|
end
|
|
76
104
|
|
|
105
|
+
# Navigational aids
|
|
106
|
+
|
|
77
107
|
def designated_point
|
|
78
108
|
AIXM.designated_point(
|
|
109
|
+
source: 'LF|GEN|0.0 FACTORY|0|0',
|
|
110
|
+
region: 'LF',
|
|
79
111
|
id: 'DDD',
|
|
80
112
|
name: 'DESIGNATED POINT NAVAID',
|
|
81
113
|
xy: AIXM.xy(lat: %q(47°51'33"N), long: %q(007°33'36"E)),
|
|
82
114
|
z: AIXM.z(500, :qnh),
|
|
83
115
|
type: :ICAO
|
|
84
116
|
).tap do |designated_point|
|
|
85
|
-
designated_point.
|
|
117
|
+
designated_point.timetable = AIXM::H24
|
|
86
118
|
designated_point.remarks = 'designated point navaid'
|
|
87
119
|
end
|
|
88
120
|
end
|
|
89
121
|
|
|
90
122
|
def dme
|
|
91
123
|
AIXM.dme(
|
|
124
|
+
source: 'LF|GEN|0.0 FACTORY|0|0',
|
|
125
|
+
region: 'LF',
|
|
126
|
+
organisation: organisation,
|
|
92
127
|
id: 'MMM',
|
|
93
128
|
name: 'DME NAVAID',
|
|
94
129
|
xy: AIXM.xy(lat: %q(47°51'33"N), long: %q(007°33'36"E)),
|
|
95
130
|
z: AIXM.z(500, :qnh),
|
|
96
131
|
channel: '95X'
|
|
97
132
|
).tap do |dme|
|
|
98
|
-
dme.
|
|
133
|
+
dme.timetable = AIXM::H24
|
|
99
134
|
dme.remarks = 'dme navaid'
|
|
100
135
|
end
|
|
101
136
|
end
|
|
102
137
|
|
|
103
138
|
def marker
|
|
104
139
|
AIXM.marker(
|
|
140
|
+
source: 'LF|GEN|0.0 FACTORY|0|0',
|
|
141
|
+
region: 'LF',
|
|
142
|
+
organisation: organisation,
|
|
105
143
|
id: '---',
|
|
106
144
|
name: 'MARKER NAVAID',
|
|
107
145
|
xy: AIXM.xy(lat: %q(47°51'33"N), long: %q(007°33'36"E)),
|
|
108
146
|
z: AIXM.z(500, :qnh),
|
|
109
147
|
type: :outer
|
|
110
148
|
).tap do |marker|
|
|
111
|
-
marker.
|
|
149
|
+
marker.timetable = AIXM::H24
|
|
112
150
|
marker.remarks = 'marker navaid'
|
|
113
151
|
end
|
|
114
152
|
end
|
|
115
153
|
|
|
116
154
|
def ndb
|
|
117
155
|
AIXM.ndb(
|
|
156
|
+
source: 'LF|GEN|0.0 FACTORY|0|0',
|
|
157
|
+
region: 'LF',
|
|
158
|
+
organisation: organisation,
|
|
118
159
|
id: 'NNN',
|
|
119
160
|
name: 'NDB NAVAID',
|
|
120
161
|
xy: AIXM.xy(lat: %q(47°51'33"N), long: %q(007°33'36"E)),
|
|
@@ -122,26 +163,32 @@ module AIXM
|
|
|
122
163
|
type: :en_route,
|
|
123
164
|
f: AIXM.f(555, :khz)
|
|
124
165
|
).tap do |ndb|
|
|
125
|
-
ndb.
|
|
166
|
+
ndb.timetable = AIXM::H24
|
|
126
167
|
ndb.remarks = 'ndb navaid'
|
|
127
168
|
end
|
|
128
169
|
end
|
|
129
170
|
|
|
130
171
|
def tacan
|
|
131
172
|
AIXM.tacan(
|
|
173
|
+
source: 'LF|GEN|0.0 FACTORY|0|0',
|
|
174
|
+
region: 'LF',
|
|
175
|
+
organisation: organisation,
|
|
132
176
|
id: 'TTT',
|
|
133
177
|
name: 'TACAN NAVAID',
|
|
134
178
|
xy: AIXM.xy(lat: %q(47°51'33"N), long: %q(007°33'36"E)),
|
|
135
179
|
z: AIXM.z(500, :qnh),
|
|
136
180
|
channel: '29X'
|
|
137
181
|
).tap do |tacan|
|
|
138
|
-
tacan.
|
|
182
|
+
tacan.timetable = AIXM::H24
|
|
139
183
|
tacan.remarks = 'tacan navaid'
|
|
140
184
|
end
|
|
141
185
|
end
|
|
142
186
|
|
|
143
187
|
def vor
|
|
144
188
|
AIXM.vor(
|
|
189
|
+
source: 'LF|GEN|0.0 FACTORY|0|0',
|
|
190
|
+
region: 'LF',
|
|
191
|
+
organisation: organisation,
|
|
145
192
|
id: 'VVV',
|
|
146
193
|
name: 'VOR NAVAID',
|
|
147
194
|
xy: AIXM.xy(lat: %q(47°51'33"N), long: %q(007°33'36"E)),
|
|
@@ -150,13 +197,16 @@ module AIXM
|
|
|
150
197
|
f: AIXM.f(111, :mhz),
|
|
151
198
|
north: :geographic
|
|
152
199
|
).tap do |vor|
|
|
153
|
-
vor.
|
|
200
|
+
vor.timetable = AIXM::H24
|
|
154
201
|
vor.remarks = 'vor navaid'
|
|
155
202
|
end
|
|
156
203
|
end
|
|
157
204
|
|
|
158
205
|
def vordme
|
|
159
206
|
AIXM.vor(
|
|
207
|
+
source: 'LF|GEN|0.0 FACTORY|0|0',
|
|
208
|
+
region: 'LF',
|
|
209
|
+
organisation: organisation,
|
|
160
210
|
id: 'VDD',
|
|
161
211
|
name: 'VOR/DME NAVAID',
|
|
162
212
|
xy: AIXM.xy(lat: %q(47°51'33"N), long: %q(007°33'36"E)),
|
|
@@ -165,7 +215,7 @@ module AIXM
|
|
|
165
215
|
f: AIXM.f(111, :mhz),
|
|
166
216
|
north: :geographic
|
|
167
217
|
).tap do |vordme|
|
|
168
|
-
vordme.
|
|
218
|
+
vordme.timetable = AIXM::H24
|
|
169
219
|
vordme.remarks = 'vor/dme navaid'
|
|
170
220
|
vordme.associate_dme(channel: '95X')
|
|
171
221
|
end
|
|
@@ -173,6 +223,9 @@ module AIXM
|
|
|
173
223
|
|
|
174
224
|
def vortac
|
|
175
225
|
AIXM.vor(
|
|
226
|
+
source: 'LF|GEN|0.0 FACTORY|0|0',
|
|
227
|
+
region: 'LF',
|
|
228
|
+
organisation: organisation,
|
|
176
229
|
id: 'VTT',
|
|
177
230
|
name: 'VORTAC NAVAID',
|
|
178
231
|
xy: AIXM.xy(lat: %q(47°51'33"N), long: %q(007°33'36"E)),
|
|
@@ -181,25 +234,148 @@ module AIXM
|
|
|
181
234
|
f: AIXM.f(111, :mhz),
|
|
182
235
|
north: :geographic
|
|
183
236
|
).tap do |vortac|
|
|
184
|
-
vortac.
|
|
237
|
+
vortac.timetable = AIXM::H24
|
|
185
238
|
vortac.remarks = 'vortac navaid'
|
|
186
239
|
vortac.associate_tacan(channel: '29X')
|
|
187
240
|
end
|
|
188
241
|
end
|
|
189
242
|
|
|
243
|
+
# Organisation
|
|
244
|
+
|
|
245
|
+
def organisation
|
|
246
|
+
AIXM.organisation(
|
|
247
|
+
source: 'LF|GEN|0.0 FACTORY|0|0',
|
|
248
|
+
region: 'LF',
|
|
249
|
+
name: 'FRANCE',
|
|
250
|
+
type: 'S'
|
|
251
|
+
).tap do |organisation|
|
|
252
|
+
organisation.id = 'LF'
|
|
253
|
+
organisation.remarks = 'Oversea departments not included'
|
|
254
|
+
end
|
|
255
|
+
end
|
|
256
|
+
|
|
257
|
+
# Unit
|
|
258
|
+
|
|
259
|
+
def unit
|
|
260
|
+
AIXM.unit(
|
|
261
|
+
source: 'LF|GEN|0.0 FACTORY|0|0',
|
|
262
|
+
region: 'LF',
|
|
263
|
+
organisation: organisation,
|
|
264
|
+
name: 'PUJAUT TWR',
|
|
265
|
+
type: :aerodrome_control_tower,
|
|
266
|
+
class: :icao
|
|
267
|
+
).tap do |unit|
|
|
268
|
+
unit.airport = airport
|
|
269
|
+
unit.remarks = 'A/A FR only'
|
|
270
|
+
unit.add_service(service)
|
|
271
|
+
end
|
|
272
|
+
end
|
|
273
|
+
|
|
274
|
+
def service
|
|
275
|
+
AIXM.service(
|
|
276
|
+
name: "PUJAUT TOWER",
|
|
277
|
+
type: :approach_control_service
|
|
278
|
+
).tap do |service|
|
|
279
|
+
service.timetable = AIXM::H24
|
|
280
|
+
service.remarks = "service remarks"
|
|
281
|
+
service.add_frequency(frequency)
|
|
282
|
+
end
|
|
283
|
+
end
|
|
284
|
+
|
|
285
|
+
def frequency
|
|
286
|
+
AIXM.frequency(
|
|
287
|
+
transmission_f: AIXM.f(123.35, :mhz),
|
|
288
|
+
callsigns: { en: "PUJAUT CONTROL", fr: "PUJAUT CONTROLE" }
|
|
289
|
+
).tap do |frequency|
|
|
290
|
+
frequency.type = :standard
|
|
291
|
+
frequency.reception_f = AIXM.f(124.1, :mhz)
|
|
292
|
+
frequency.timetable = AIXM::H24
|
|
293
|
+
frequency.remarks = "frequency remarks"
|
|
294
|
+
end
|
|
295
|
+
end
|
|
296
|
+
|
|
297
|
+
# Airport
|
|
298
|
+
|
|
299
|
+
def airport
|
|
300
|
+
AIXM.airport(
|
|
301
|
+
source: 'LF|GEN|0.0 FACTORY|0|0',
|
|
302
|
+
region: 'LF',
|
|
303
|
+
organisation: organisation,
|
|
304
|
+
code: 'LFNT',
|
|
305
|
+
name: 'Avignon-Pujaut',
|
|
306
|
+
xy: AIXM.xy(lat: %q(43°59'46"N), long: %q(004°45'16"E))
|
|
307
|
+
).tap do |airport|
|
|
308
|
+
airport.gps = "LFPUJAUT"
|
|
309
|
+
airport.z = AIXM.z(146, :qnh)
|
|
310
|
+
airport.declination = 1.08
|
|
311
|
+
airport.transition_z = AIXM.z(10_000, :qnh)
|
|
312
|
+
airport.remarks = "Restricted access"
|
|
313
|
+
airport.add_runway(runway)
|
|
314
|
+
airport.add_helipad(helipad)
|
|
315
|
+
airport.add_usage_limitation :permitted
|
|
316
|
+
airport.add_usage_limitation(:reservation_required) do |reservation_required|
|
|
317
|
+
reservation_required.add_condition { |c| c.aircraft = :glider }
|
|
318
|
+
reservation_required.add_condition { |c| c.origin = :international }
|
|
319
|
+
reservation_required.timetable = AIXM::H24
|
|
320
|
+
reservation_required.remarks = "reservation remarks"
|
|
321
|
+
end
|
|
322
|
+
end
|
|
323
|
+
end
|
|
324
|
+
|
|
325
|
+
def runway
|
|
326
|
+
AIXM.runway(name: '16L/34R').tap do |runway|
|
|
327
|
+
runway.length = 650
|
|
328
|
+
runway.width = 80
|
|
329
|
+
runway.composition = :graded_earth
|
|
330
|
+
runway.status = :closed
|
|
331
|
+
runway.remarks = "Markings eroded"
|
|
332
|
+
runway.forth.xy = AIXM.xy(lat: %q(44°00'07.63"N), long: %q(004°45'07.81"E))
|
|
333
|
+
runway.forth.z = AIXM.z(145, :qnh)
|
|
334
|
+
runway.forth.displaced_threshold = AIXM.xy(lat: %q(44°00'03.54"N), long: %q(004°45'09.30"E))
|
|
335
|
+
runway.forth.geographic_orientation = 165
|
|
336
|
+
runway.forth.remarks = "forth remarks"
|
|
337
|
+
runway.back.xy = AIXM.xy(lat: %q(43°59'25.31"N), long: %q(004°45'23.24"E))
|
|
338
|
+
runway.forth.z = AIXM.z(147, :qnh)
|
|
339
|
+
runway.back.displaced_threshold = AIXM.xy(lat: %q(43°59'31.84"N), long: %q(004°45'20.85"E))
|
|
340
|
+
runway.back.geographic_orientation = 345
|
|
341
|
+
runway.back.remarks = "back remarks"
|
|
342
|
+
end
|
|
343
|
+
end
|
|
344
|
+
|
|
345
|
+
def helipad
|
|
346
|
+
AIXM.helipad(name: 'H1').tap do |helipad|
|
|
347
|
+
helipad.xy = AIXM.xy(lat: %q(43°59'56.94"N), long: %q(004°45'05.56"E))
|
|
348
|
+
helipad.z = AIXM.z(141, :qnh)
|
|
349
|
+
helipad.length = 20
|
|
350
|
+
helipad.width = 20
|
|
351
|
+
helipad.composition = :grass
|
|
352
|
+
helipad.status = :other
|
|
353
|
+
helipad.remarks = "Authorizaton by AD operator required"
|
|
354
|
+
end
|
|
355
|
+
end
|
|
356
|
+
|
|
357
|
+
# Document
|
|
358
|
+
|
|
190
359
|
def document
|
|
191
|
-
time = Time.parse('2018-01-
|
|
192
|
-
AIXM.document(
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
document.features <<
|
|
198
|
-
document.features <<
|
|
199
|
-
document.features <<
|
|
200
|
-
document.features <<
|
|
201
|
-
document.features <<
|
|
202
|
-
document.features <<
|
|
360
|
+
time = Time.parse('2018-01-01 12:00:00 +0100')
|
|
361
|
+
AIXM.document(
|
|
362
|
+
namespace: '00000000-0000-0000-0000-000000000000',
|
|
363
|
+
created_at: time,
|
|
364
|
+
effective_at: time
|
|
365
|
+
).tap do |document|
|
|
366
|
+
document.features << organisation
|
|
367
|
+
document.features << unit
|
|
368
|
+
document.features << airport
|
|
369
|
+
document.features << polygon_airspace
|
|
370
|
+
document.features << circle_airspace
|
|
371
|
+
document.features << designated_point
|
|
372
|
+
document.features << dme
|
|
373
|
+
document.features << marker
|
|
374
|
+
document.features << ndb
|
|
375
|
+
document.features << tacan
|
|
376
|
+
document.features << vor
|
|
377
|
+
document.features << vordme
|
|
378
|
+
document.features << vortac
|
|
203
379
|
end
|
|
204
380
|
end
|
|
205
381
|
|