aixm 0.3.8 → 0.3.10

Sign up to get free protection for your applications and to get access to all the features.
Files changed (115) hide show
  1. checksums.yaml +4 -4
  2. checksums.yaml.gz.sig +1 -0
  3. data.tar.gz.sig +0 -0
  4. data/CHANGELOG.md +33 -3
  5. data/README.md +166 -56
  6. data/exe/ckmid +14 -0
  7. data/exe/mkmid +14 -0
  8. data/lib/aixm.rb +16 -6
  9. data/lib/aixm/association.rb +369 -0
  10. data/lib/aixm/classes.rb +43 -0
  11. data/lib/aixm/component/fato.rb +45 -53
  12. data/lib/aixm/component/frequency.rb +11 -12
  13. data/lib/aixm/component/geometry.rb +36 -38
  14. data/lib/aixm/component/geometry/arc.rb +2 -2
  15. data/lib/aixm/component/geometry/border.rb +6 -3
  16. data/lib/aixm/component/geometry/circle.rb +8 -2
  17. data/lib/aixm/component/geometry/point.rb +8 -2
  18. data/lib/aixm/component/helipad.rb +30 -38
  19. data/lib/aixm/component/layer.rb +28 -19
  20. data/lib/aixm/component/lighting.rb +12 -13
  21. data/lib/aixm/component/runway.rb +44 -48
  22. data/lib/aixm/{feature → component}/service.rb +37 -36
  23. data/lib/aixm/component/surface.rb +3 -3
  24. data/lib/aixm/component/timetable.rb +2 -2
  25. data/lib/aixm/component/{vertical_limits.rb → vertical_limit.rb} +12 -6
  26. data/lib/aixm/config.rb +2 -1
  27. data/lib/aixm/document.rb +27 -50
  28. data/lib/aixm/executables.rb +85 -0
  29. data/lib/aixm/feature.rb +13 -3
  30. data/lib/aixm/feature/address.rb +12 -13
  31. data/lib/aixm/feature/airport.rb +103 -128
  32. data/lib/aixm/feature/airspace.rb +44 -17
  33. data/lib/aixm/feature/navigational_aid.rb +7 -9
  34. data/lib/aixm/feature/navigational_aid/designated_point.rb +13 -15
  35. data/lib/aixm/feature/navigational_aid/dme.rb +11 -12
  36. data/lib/aixm/feature/navigational_aid/marker.rb +7 -3
  37. data/lib/aixm/feature/navigational_aid/ndb.rb +7 -3
  38. data/lib/aixm/feature/navigational_aid/tacan.rb +7 -3
  39. data/lib/aixm/feature/navigational_aid/vor.rb +23 -15
  40. data/lib/aixm/feature/obstacle.rb +29 -43
  41. data/lib/aixm/feature/obstacle_group.rb +37 -34
  42. data/lib/aixm/feature/organisation.rb +21 -5
  43. data/lib/aixm/feature/unit.rb +36 -46
  44. data/lib/aixm/memoize.rb +89 -0
  45. data/lib/aixm/object.rb +9 -0
  46. data/lib/aixm/payload_hash.rb +114 -0
  47. data/lib/aixm/refinements.rb +29 -76
  48. data/lib/aixm/shortcuts.rb +5 -42
  49. data/lib/aixm/version.rb +1 -1
  50. data/lib/aixm/xy.rb +1 -1
  51. data/schemas/ofmx/0/OFMX-Features.xsd +152 -20
  52. data/schemas/ofmx/0/OFMX-Snapshot.xsd +0 -5
  53. metadata +107 -156
  54. metadata.gz.sig +2 -0
  55. data/.github/workflows/test.yml +0 -26
  56. data/.gitignore +0 -6
  57. data/.ruby-version +0 -1
  58. data/.yardopts +0 -3
  59. data/Guardfile +0 -8
  60. data/aixm.gemspec +0 -35
  61. data/gems.rb +0 -3
  62. data/lib/aixm/component.rb +0 -6
  63. data/rakefile.rb +0 -36
  64. data/spec/factory.rb +0 -559
  65. data/spec/lib/aixm/a_spec.rb +0 -203
  66. data/spec/lib/aixm/component/fato_spec.rb +0 -267
  67. data/spec/lib/aixm/component/frequency_spec.rb +0 -74
  68. data/spec/lib/aixm/component/geometry/arc_spec.rb +0 -73
  69. data/spec/lib/aixm/component/geometry/border_spec.rb +0 -38
  70. data/spec/lib/aixm/component/geometry/circle_spec.rb +0 -68
  71. data/spec/lib/aixm/component/geometry/point_spec.rb +0 -37
  72. data/spec/lib/aixm/component/geometry_spec.rb +0 -316
  73. data/spec/lib/aixm/component/helipad_spec.rb +0 -193
  74. data/spec/lib/aixm/component/layer_spec.rb +0 -135
  75. data/spec/lib/aixm/component/lighting_spec.rb +0 -94
  76. data/spec/lib/aixm/component/runway_spec.rb +0 -479
  77. data/spec/lib/aixm/component/surface_spec.rb +0 -124
  78. data/spec/lib/aixm/component/timetable_spec.rb +0 -47
  79. data/spec/lib/aixm/component/vertical_limits_spec.rb +0 -94
  80. data/spec/lib/aixm/config_spec.rb +0 -41
  81. data/spec/lib/aixm/d_spec.rb +0 -150
  82. data/spec/lib/aixm/document_spec.rb +0 -1884
  83. data/spec/lib/aixm/errors_spec.rb +0 -14
  84. data/spec/lib/aixm/f_spec.rb +0 -85
  85. data/spec/lib/aixm/feature/address_spec.rb +0 -60
  86. data/spec/lib/aixm/feature/airport_spec.rb +0 -776
  87. data/spec/lib/aixm/feature/airspace_spec.rb +0 -394
  88. data/spec/lib/aixm/feature/navigational_aid/designated_point_spec.rb +0 -103
  89. data/spec/lib/aixm/feature/navigational_aid/dme_spec.rb +0 -98
  90. data/spec/lib/aixm/feature/navigational_aid/marker_spec.rb +0 -85
  91. data/spec/lib/aixm/feature/navigational_aid/ndb_spec.rb +0 -95
  92. data/spec/lib/aixm/feature/navigational_aid/tacan_spec.rb +0 -94
  93. data/spec/lib/aixm/feature/navigational_aid/vor_spec.rb +0 -251
  94. data/spec/lib/aixm/feature/navigational_aid_spec.rb +0 -52
  95. data/spec/lib/aixm/feature/obstacle_group_spec.rb +0 -330
  96. data/spec/lib/aixm/feature/obstacle_spec.rb +0 -284
  97. data/spec/lib/aixm/feature/organisation_spec.rb +0 -83
  98. data/spec/lib/aixm/feature/service_spec.rb +0 -59
  99. data/spec/lib/aixm/feature/unit_spec.rb +0 -238
  100. data/spec/lib/aixm/feature_spec.rb +0 -38
  101. data/spec/lib/aixm/p_spec.rb +0 -189
  102. data/spec/lib/aixm/refinements_spec.rb +0 -430
  103. data/spec/lib/aixm/version_spec.rb +0 -7
  104. data/spec/lib/aixm/w_spec.rb +0 -150
  105. data/spec/lib/aixm/xy_spec.rb +0 -180
  106. data/spec/lib/aixm/z_spec.rb +0 -94
  107. data/spec/macros/marking.rb +0 -12
  108. data/spec/macros/organisation.rb +0 -11
  109. data/spec/macros/remarks.rb +0 -12
  110. data/spec/macros/timetable.rb +0 -11
  111. data/spec/macros/xy.rb +0 -11
  112. data/spec/macros/z_qnh.rb +0 -11
  113. data/spec/sounds/failure.mp3 +0 -0
  114. data/spec/sounds/success.mp3 +0 -0
  115. data/spec/spec_helper.rb +0 -62
@@ -1,1884 +0,0 @@
1
- require_relative '../../spec_helper'
2
-
3
- describe AIXM::Document do
4
- subject do
5
- AIXM.document
6
- end
7
-
8
- describe :initialize do
9
- it "sets defaults" do
10
- _(subject.features).must_equal []
11
- end
12
- end
13
-
14
- describe :namespace= do
15
- it "fails on invalid values" do
16
- _(['foobar', :foobar]).wont_be_written_to subject, :namespace
17
- end
18
-
19
- it "sets random UUID for nil value" do
20
- _(subject.tap { |s| s.namespace = nil }.namespace).must_match AIXM::Document::NAMESPACE_RE
21
- end
22
-
23
- it "accepts UUID value" do
24
- _([SecureRandom.uuid]).must_be_written_to subject, :namespace
25
- end
26
- end
27
-
28
- describe :region= do
29
- it "fails on invalid values" do
30
- _(['x', 'foobar', :foobar]).wont_be_written_to subject, :region
31
- end
32
-
33
- it "upcases valid values" do
34
- _(subject.tap { |s| s.region = 'lf' }.region).must_equal 'LF'
35
- end
36
- end
37
-
38
- describe :created_at= do
39
- it "fails on invalid values" do
40
- _(['foobar', '2018-01-77']).wont_be_written_to subject, :created_at
41
- end
42
-
43
- it "parses dates and times" do
44
- string = '2018-01-01 12:00:00 +0100'
45
- _(subject.tap { |s| s.created_at = string }.created_at).must_equal Time.parse(string)
46
- end
47
-
48
- it "falls back to effective_at first" do
49
- subject.effective_at = Time.now
50
- subject.created_at = nil
51
- _(subject.created_at).must_equal subject.effective_at
52
- end
53
-
54
- it "falls back to now second" do
55
- subject.created_at = nil
56
- _(subject.created_at).must_be_close_to Time.now
57
- end
58
- end
59
-
60
- describe :effective_at= do
61
- it "fails on invalid values" do
62
- _(['foobar', '2018-01-77']).wont_be_written_to subject, :effective_at
63
- end
64
-
65
- it "parses dates and times" do
66
- string = '2018-01-01 12:00:00 +0100'
67
- _(subject.tap { |s| s.effective_at = string }.effective_at).must_equal Time.parse(string)
68
- end
69
-
70
- it "falls back to created_at first" do
71
- subject.effective_at = Time.now
72
- subject.effective_at = nil
73
- _(subject.effective_at).must_equal subject.created_at
74
- end
75
-
76
- it "falls back to now second" do
77
- subject.effective_at = nil
78
- _(subject.effective_at).must_be_close_to Time.now
79
- end
80
- end
81
-
82
- describe :select_features do
83
- subject do
84
- AIXM::Factory.document
85
- end
86
-
87
- it "returns array of features by class" do
88
- _(subject.select_features(:airport).map(&:id)).must_equal %w(LFNT)
89
- _(subject.select_features(AIXM::Feature::Airport).map(&:id)).must_equal %w(LFNT)
90
- end
91
-
92
- it "returns array of features by class and attributes" do
93
- _(subject.select_features(:airport, id: "LFNT").map(&:id)).must_equal %w(LFNT)
94
- _(subject.select_features(AIXM::Feature::Airport, id: "LFNT").map(&:id)).must_equal %w(LFNT)
95
- end
96
-
97
- it "returns empty array if nothing matches" do
98
- _(subject.select_features(:airport, id: "FAKE")).must_equal []
99
- end
100
-
101
- it "fails on invalid shortcut" do
102
- _{ subject.select_features(:fake) }.must_raise ArgumentError
103
- end
104
- end
105
-
106
- describe :group_obstacles! do
107
- subject do
108
- AIXM.document.tap do |document|
109
- {
110
- 1 => AIXM.xy(lat: 32.665623, long: -111.488584), # 4 north ends:
111
- 2 => AIXM.xy(lat: 32.665613, long: -111.487701), # 84m distance between each
112
- 3 => AIXM.xy(lat: 32.665603, long: -111.486796), # 505m distance to south ends
113
- 4 => AIXM.xy(lat: 32.665611, long: -111.485902),
114
- 5 => AIXM.xy(lat: 32.661062, long: -111.488624), # 4 south ends:
115
- 6 => AIXM.xy(lat: 32.661061, long: -111.487731), # 84m distance between each
116
- 7 => AIXM.xy(lat: 32.661042, long: -111.486814), # 505m distance to north ends
117
- 8 => AIXM.xy(lat: 32.661054, long: -111.485931),
118
- 9 => AIXM.xy(lat: 0, long: 0) # far away from the others
119
- }.to_a.shuffle.each do |index, xy|
120
- document.features << AIXM.obstacle(
121
- source: index.to_s,
122
- name: index.to_s,
123
- type: :other,
124
- xy: xy,
125
- radius: AIXM.d(10, :m),
126
- z: AIXM.z(1680 , :qnh)
127
- )
128
- end
129
- end
130
- end
131
-
132
- it "adds 1 group of obstacles with default max distance" do
133
- _(subject.group_obstacles!).must_equal 1
134
- obstacle_group = subject.select_features(:obstacle_group).first
135
- _(obstacle_group.obstacles.count).must_equal 8
136
- end
137
-
138
- it "adds 2 groups of obstacles with max distance 400m" do
139
- _(subject.group_obstacles!(max_distance: AIXM.d(400, :m))).must_equal 2
140
- obstacle_groups = subject.features.select { |f| f.is_a? AIXM::Feature::ObstacleGroup }
141
- obstacle_groups.each do |obstacle_group|
142
- names = obstacle_group.obstacles.map(&:name).sort
143
- _(names).must_equal names.include?('1') ? %w(1 2 3 4) : %w(5 6 7 8)
144
- end
145
- end
146
-
147
- it "leaves ungrouped obstacles untouched" do
148
- subject.group_obstacles!
149
- _(subject.select_features(:obstacle).count).must_equal 1
150
- end
151
-
152
- it "copies source of first obstacle to obstacle group" do
153
- subject.group_obstacles!
154
- obstacle_group = subject.select_features(:obstacle_group).first
155
- _(obstacle_group.source).must_equal obstacle_group.obstacles.first.source
156
- end
157
- end
158
-
159
- context "AIXM" do
160
- subject do
161
- AIXM::Factory.document
162
- end
163
-
164
- it "won't have errors" do
165
- _(subject.errors).must_equal []
166
- end
167
-
168
- it "builds correct AIXM" do
169
- _(subject.to_xml).must_equal <<~"END"
170
- <?xml version="1.0" encoding="UTF-8"?>
171
- <AIXM-Snapshot xmlns:xsi="http://www.aixm.aero/schema/4.5/AIXM-Snapshot.xsd" version="4.5" origin="rubygem aixm-#{AIXM::VERSION}" created="2018-01-01T12:00:00+01:00" effective="2018-01-01T12:00:00+01:00">
172
- <!-- Organisation: FRANCE -->
173
- <Org>
174
- <OrgUid>
175
- <txtName>FRANCE</txtName>
176
- </OrgUid>
177
- <codeId>LF</codeId>
178
- <codeType>S</codeType>
179
- <txtRmk>Oversea departments not included</txtRmk>
180
- </Org>
181
- <!-- Unit: PUJAUT TWR -->
182
- <Uni>
183
- <UniUid>
184
- <txtName>PUJAUT TWR</txtName>
185
- </UniUid>
186
- <OrgUid>
187
- <txtName>FRANCE</txtName>
188
- </OrgUid>
189
- <AhpUid>
190
- <codeId>LFNT</codeId>
191
- </AhpUid>
192
- <codeType>TWR</codeType>
193
- <codeClass>ICAO</codeClass>
194
- <txtRmk>FR only</txtRmk>
195
- </Uni>
196
- <!-- Service: APP by PUJAUT TWR -->
197
- <Ser>
198
- <SerUid>
199
- <UniUid>
200
- <txtName>PUJAUT TWR</txtName>
201
- </UniUid>
202
- <codeType>APP</codeType>
203
- <noSeq>1</noSeq>
204
- </SerUid>
205
- <Stt>
206
- <codeWorkHr>H24</codeWorkHr>
207
- </Stt>
208
- <txtRmk>service remarks</txtRmk>
209
- </Ser>
210
- <Fqy>
211
- <FqyUid>
212
- <SerUid>
213
- <UniUid>
214
- <txtName>PUJAUT TWR</txtName>
215
- </UniUid>
216
- <codeType>APP</codeType>
217
- <noSeq>1</noSeq>
218
- </SerUid>
219
- <valFreqTrans>123.35</valFreqTrans>
220
- </FqyUid>
221
- <valFreqRec>124.1</valFreqRec>
222
- <uomFreq>MHZ</uomFreq>
223
- <Ftt>
224
- <codeWorkHr>H24</codeWorkHr>
225
- </Ftt>
226
- <txtRmk>frequency remarks</txtRmk>
227
- <Cdl>
228
- <txtCallSign>PUJAUT CONTROL</txtCallSign>
229
- <codeLang>EN</codeLang>
230
- </Cdl>
231
- <Cdl>
232
- <txtCallSign>PUJAUT CONTROLE</txtCallSign>
233
- <codeLang>FR</codeLang>
234
- </Cdl>
235
- </Fqy>
236
- <!-- Airport: LFNT AVIGNON-PUJAUT -->
237
- <Ahp>
238
- <AhpUid>
239
- <codeId>LFNT</codeId>
240
- </AhpUid>
241
- <OrgUid>
242
- <txtName>FRANCE</txtName>
243
- </OrgUid>
244
- <txtName>AVIGNON-PUJAUT</txtName>
245
- <codeIcao>LFNT</codeIcao>
246
- <codeType>AH</codeType>
247
- <geoLat>435946.00N</geoLat>
248
- <geoLong>0044516.00E</geoLong>
249
- <codeDatum>WGE</codeDatum>
250
- <valElev>146</valElev>
251
- <uomDistVer>FT</uomDistVer>
252
- <valMagVar>1.08</valMagVar>
253
- <txtNameAdmin>MUNICIPALITY OF PUJAUT</txtNameAdmin>
254
- <valTransitionAlt>10000</valTransitionAlt>
255
- <uomTransitionAlt>FT</uomTransitionAlt>
256
- <txtRmk>Restricted access</txtRmk>
257
- </Ahp>
258
- <Rwy>
259
- <RwyUid>
260
- <AhpUid>
261
- <codeId>LFNT</codeId>
262
- </AhpUid>
263
- <txtDesig>16L/34R</txtDesig>
264
- </RwyUid>
265
- <valLen>650</valLen>
266
- <valWid>80</valWid>
267
- <uomDimRwy>M</uomDimRwy>
268
- <codeComposition>ASPH</codeComposition>
269
- <codePreparation>PAVED</codePreparation>
270
- <codeCondSfc>GOOD</codeCondSfc>
271
- <valPcnClass>59</valPcnClass>
272
- <codePcnPavementType>F</codePcnPavementType>
273
- <codePcnPavementSubgrade>A</codePcnPavementSubgrade>
274
- <codePcnMaxTirePressure>W</codePcnMaxTirePressure>
275
- <codePcnEvalMethod>T</codePcnEvalMethod>
276
- <txtPcnNote>Paved shoulder on 2.5m on each side of the RWY.</txtPcnNote>
277
- <valSiwlWeight>1500</valSiwlWeight>
278
- <uomSiwlWeight>KG</uomSiwlWeight>
279
- <valSiwlTirePressure>0.5</valSiwlTirePressure>
280
- <uomSiwlTirePressure>MPA</uomSiwlTirePressure>
281
- <valAuwWeight>30</valAuwWeight>
282
- <uomAuwWeight>T</uomAuwWeight>
283
- <codeSts>CLSD</codeSts>
284
- <txtRmk>Markings eroded</txtRmk>
285
- </Rwy>
286
- <Rdn>
287
- <RdnUid>
288
- <RwyUid>
289
- <AhpUid>
290
- <codeId>LFNT</codeId>
291
- </AhpUid>
292
- <txtDesig>16L/34R</txtDesig>
293
- </RwyUid>
294
- <txtDesig>16L</txtDesig>
295
- </RdnUid>
296
- <geoLat>440007.63N</geoLat>
297
- <geoLong>0044507.81E</geoLong>
298
- <valTrueBrg>165</valTrueBrg>
299
- <valMagBrg>164</valMagBrg>
300
- <valElevTdz>145</valElevTdz>
301
- <uomElevTdz>FT</uomElevTdz>
302
- <codeVfrPattern>E</codeVfrPattern>
303
- <txtRmk>forth remarks</txtRmk>
304
- </Rdn>
305
- <Rdd>
306
- <RddUid>
307
- <RdnUid>
308
- <RwyUid>
309
- <AhpUid>
310
- <codeId>LFNT</codeId>
311
- </AhpUid>
312
- <txtDesig>16L/34R</txtDesig>
313
- </RwyUid>
314
- <txtDesig>16L</txtDesig>
315
- </RdnUid>
316
- <codeType>DPLM</codeType>
317
- <codeDayPeriod>A</codeDayPeriod>
318
- </RddUid>
319
- <valDist>131</valDist>
320
- <uomDist>M</uomDist>
321
- <txtRmk>forth remarks</txtRmk>
322
- </Rdd>
323
- <Rls>
324
- <RlsUid>
325
- <RdnUid>
326
- <RwyUid>
327
- <AhpUid>
328
- <codeId>LFNT</codeId>
329
- </AhpUid>
330
- <txtDesig>16L/34R</txtDesig>
331
- </RwyUid>
332
- <txtDesig>16L</txtDesig>
333
- </RdnUid>
334
- <codePsn>AIM</codePsn>
335
- </RlsUid>
336
- <txtDescr>omnidirectional</txtDescr>
337
- <codeIntst>LIM</codeIntst>
338
- <codeColour>GRN</codeColour>
339
- <txtRmk>lighting remarks</txtRmk>
340
- </Rls>
341
- <Rdn>
342
- <RdnUid>
343
- <RwyUid>
344
- <AhpUid>
345
- <codeId>LFNT</codeId>
346
- </AhpUid>
347
- <txtDesig>16L/34R</txtDesig>
348
- </RwyUid>
349
- <txtDesig>34R</txtDesig>
350
- </RdnUid>
351
- <geoLat>435925.31N</geoLat>
352
- <geoLong>0044523.24E</geoLong>
353
- <valTrueBrg>345</valTrueBrg>
354
- <valMagBrg>344</valMagBrg>
355
- <valElevTdz>147</valElevTdz>
356
- <uomElevTdz>FT</uomElevTdz>
357
- <codeVfrPattern>L</codeVfrPattern>
358
- <txtRmk>back remarks</txtRmk>
359
- </Rdn>
360
- <Rdd>
361
- <RddUid>
362
- <RdnUid>
363
- <RwyUid>
364
- <AhpUid>
365
- <codeId>LFNT</codeId>
366
- </AhpUid>
367
- <txtDesig>16L/34R</txtDesig>
368
- </RwyUid>
369
- <txtDesig>34R</txtDesig>
370
- </RdnUid>
371
- <codeType>DPLM</codeType>
372
- <codeDayPeriod>A</codeDayPeriod>
373
- </RddUid>
374
- <valDist>209</valDist>
375
- <uomDist>M</uomDist>
376
- <txtRmk>back remarks</txtRmk>
377
- </Rdd>
378
- <Rls>
379
- <RlsUid>
380
- <RdnUid>
381
- <RwyUid>
382
- <AhpUid>
383
- <codeId>LFNT</codeId>
384
- </AhpUid>
385
- <txtDesig>16L/34R</txtDesig>
386
- </RwyUid>
387
- <txtDesig>34R</txtDesig>
388
- </RdnUid>
389
- <codePsn>AIM</codePsn>
390
- </RlsUid>
391
- <txtDescr>omnidirectional</txtDescr>
392
- <codeIntst>LIM</codeIntst>
393
- <codeColour>GRN</codeColour>
394
- <txtRmk>lighting remarks</txtRmk>
395
- </Rls>
396
- <Fto>
397
- <FtoUid>
398
- <AhpUid>
399
- <codeId>LFNT</codeId>
400
- </AhpUid>
401
- <txtDesig>H1</txtDesig>
402
- </FtoUid>
403
- <valLen>35</valLen>
404
- <valWid>35</valWid>
405
- <uomDim>M</uomDim>
406
- <codeComposition>CONC</codeComposition>
407
- <codePreparation>PAVED</codePreparation>
408
- <codeCondSfc>FAIR</codeCondSfc>
409
- <valPcnClass>30</valPcnClass>
410
- <codePcnPavementType>F</codePcnPavementType>
411
- <codePcnPavementSubgrade>A</codePcnPavementSubgrade>
412
- <codePcnMaxTirePressure>W</codePcnMaxTirePressure>
413
- <codePcnEvalMethod>U</codePcnEvalMethod>
414
- <txtPcnNote>Cracks near the center</txtPcnNote>
415
- <valSiwlWeight>1500</valSiwlWeight>
416
- <uomSiwlWeight>KG</uomSiwlWeight>
417
- <valSiwlTirePressure>0.5</valSiwlTirePressure>
418
- <uomSiwlTirePressure>MPA</uomSiwlTirePressure>
419
- <valAuwWeight>8</valAuwWeight>
420
- <uomAuwWeight>T</uomAuwWeight>
421
- <txtProfile>Northwest from RWY 12/30</txtProfile>
422
- <txtMarking>Dashed white lines</txtMarking>
423
- <codeSts>OTHER</codeSts>
424
- <txtRmk>Authorizaton by AD operator required</txtRmk>
425
- </Fto>
426
- <Fdn>
427
- <FdnUid>
428
- <FtoUid>
429
- <AhpUid>
430
- <codeId>LFNT</codeId>
431
- </AhpUid>
432
- <txtDesig>H1</txtDesig>
433
- </FtoUid>
434
- <txtDesig>35</txtDesig>
435
- </FdnUid>
436
- <valTrueBrg>355</valTrueBrg>
437
- <valMagBrg>354</valMagBrg>
438
- <txtRmk>Avoid flight over residental area</txtRmk>
439
- </Fdn>
440
- <Fls>
441
- <FlsUid>
442
- <FdnUid>
443
- <FtoUid>
444
- <AhpUid>
445
- <codeId>LFNT</codeId>
446
- </AhpUid>
447
- <txtDesig>H1</txtDesig>
448
- </FtoUid>
449
- <txtDesig>35</txtDesig>
450
- </FdnUid>
451
- <codePsn>AIM</codePsn>
452
- </FlsUid>
453
- <txtDescr>omnidirectional</txtDescr>
454
- <codeIntst>LIM</codeIntst>
455
- <codeColour>GRN</codeColour>
456
- <txtRmk>lighting remarks</txtRmk>
457
- </Fls>
458
- <Tla>
459
- <TlaUid>
460
- <AhpUid>
461
- <codeId>LFNT</codeId>
462
- </AhpUid>
463
- <txtDesig>H1</txtDesig>
464
- </TlaUid>
465
- <FtoUid>
466
- <AhpUid>
467
- <codeId>LFNT</codeId>
468
- </AhpUid>
469
- <txtDesig>H1</txtDesig>
470
- </FtoUid>
471
- <geoLat>435956.94N</geoLat>
472
- <geoLong>0044505.56E</geoLong>
473
- <codeDatum>WGE</codeDatum>
474
- <valElev>141</valElev>
475
- <uomDistVer>FT</uomDistVer>
476
- <valLen>20</valLen>
477
- <valWid>20</valWid>
478
- <uomDim>M</uomDim>
479
- <codeComposition>CONC</codeComposition>
480
- <codePreparation>PAVED</codePreparation>
481
- <codeCondSfc>FAIR</codeCondSfc>
482
- <valPcnClass>30</valPcnClass>
483
- <codePcnPavementType>F</codePcnPavementType>
484
- <codePcnPavementSubgrade>A</codePcnPavementSubgrade>
485
- <codePcnMaxTirePressure>W</codePcnMaxTirePressure>
486
- <codePcnEvalMethod>U</codePcnEvalMethod>
487
- <txtPcnNote>Cracks near the center</txtPcnNote>
488
- <valSiwlWeight>1500</valSiwlWeight>
489
- <uomSiwlWeight>KG</uomSiwlWeight>
490
- <valSiwlTirePressure>0.5</valSiwlTirePressure>
491
- <uomSiwlTirePressure>MPA</uomSiwlTirePressure>
492
- <valAuwWeight>8</valAuwWeight>
493
- <uomAuwWeight>T</uomAuwWeight>
494
- <codeClassHel>1</codeClassHel>
495
- <txtMarking>Continuous white lines</txtMarking>
496
- <codeSts>OTHER</codeSts>
497
- <txtRmk>Authorizaton by AD operator required</txtRmk>
498
- </Tla>
499
- <Tls>
500
- <TlsUid>
501
- <TlaUid>
502
- <AhpUid>
503
- <codeId>LFNT</codeId>
504
- </AhpUid>
505
- <txtDesig>H1</txtDesig>
506
- </TlaUid>
507
- <codePsn>AIM</codePsn>
508
- </TlsUid>
509
- <txtDescr>omnidirectional</txtDescr>
510
- <codeIntst>LIM</codeIntst>
511
- <codeColour>GRN</codeColour>
512
- <txtRmk>lighting remarks</txtRmk>
513
- </Tls>
514
- <Ahu>
515
- <AhuUid>
516
- <AhpUid>
517
- <codeId>LFNT</codeId>
518
- </AhpUid>
519
- </AhuUid>
520
- <UsageLimitation>
521
- <codeUsageLimitation>PERMIT</codeUsageLimitation>
522
- </UsageLimitation>
523
- <UsageLimitation>
524
- <codeUsageLimitation>RESERV</codeUsageLimitation>
525
- <UsageCondition>
526
- <AircraftClass>
527
- <codeType>E</codeType>
528
- </AircraftClass>
529
- </UsageCondition>
530
- <UsageCondition>
531
- <FlightClass>
532
- <codeOrigin>INTL</codeOrigin>
533
- </FlightClass>
534
- </UsageCondition>
535
- <Timetable>
536
- <codeWorkHr>H24</codeWorkHr>
537
- </Timetable>
538
- <txtRmk>reservation remarks</txtRmk>
539
- </UsageLimitation>
540
- </Ahu>
541
- <!-- Address: RADIO for LFNT -->
542
- <Aha>
543
- <AhaUid>
544
- <AhpUid>
545
- <codeId>LFNT</codeId>
546
- </AhpUid>
547
- <codeType>RADIO</codeType>
548
- <noSeq>1</noSeq>
549
- </AhaUid>
550
- <txtAddress>123.35</txtAddress>
551
- <txtRmk>A/A (callsign PUJAUT)</txtRmk>
552
- </Aha>
553
- <!-- Airspace: [D] POLYGON AIRSPACE -->
554
- <Ase>
555
- <AseUid>
556
- <codeType>D</codeType>
557
- <codeId>PA</codeId>
558
- </AseUid>
559
- <txtLocalType>POLYGON</txtLocalType>
560
- <txtName>POLYGON AIRSPACE</txtName>
561
- <codeClass>C</codeClass>
562
- <codeLocInd>XXXX</codeLocInd>
563
- <codeActivity>TFC-AD</codeActivity>
564
- <codeDistVerUpper>STD</codeDistVerUpper>
565
- <valDistVerUpper>65</valDistVerUpper>
566
- <uomDistVerUpper>FL</uomDistVerUpper>
567
- <codeDistVerLower>STD</codeDistVerLower>
568
- <valDistVerLower>45</valDistVerLower>
569
- <uomDistVerLower>FL</uomDistVerLower>
570
- <codeDistVerMax>ALT</codeDistVerMax>
571
- <valDistVerMax>6000</valDistVerMax>
572
- <uomDistVerMax>FT</uomDistVerMax>
573
- <codeDistVerMnm>HEI</codeDistVerMnm>
574
- <valDistVerMnm>3000</valDistVerMnm>
575
- <uomDistVerMnm>FT</uomDistVerMnm>
576
- <Att>
577
- <codeWorkHr>H24</codeWorkHr>
578
- </Att>
579
- <txtRmk>airspace layer</txtRmk>
580
- </Ase>
581
- <Abd>
582
- <AbdUid>
583
- <AseUid>
584
- <codeType>D</codeType>
585
- <codeId>PA</codeId>
586
- </AseUid>
587
- </AbdUid>
588
- <Avx>
589
- <codeType>CWA</codeType>
590
- <geoLat>475133.00N</geoLat>
591
- <geoLong>0073336.00E</geoLong>
592
- <codeDatum>WGE</codeDatum>
593
- <geoLatArc>475415.00N</geoLatArc>
594
- <geoLongArc>0073348.00E</geoLongArc>
595
- </Avx>
596
- <Avx>
597
- <GbrUid>
598
- <txtName>FRANCE_GERMANY</txtName>
599
- </GbrUid>
600
- <codeType>FNT</codeType>
601
- <geoLat>475637.00N</geoLat>
602
- <geoLong>0073545.00E</geoLong>
603
- <codeDatum>WGE</codeDatum>
604
- </Avx>
605
- <Avx>
606
- <codeType>GRC</codeType>
607
- <geoLat>475133.00N</geoLat>
608
- <geoLong>0073336.00E</geoLong>
609
- <codeDatum>WGE</codeDatum>
610
- </Avx>
611
- </Abd>
612
- <!-- Airspace: [D] CIRCLE AIRSPACE -->
613
- <Ase>
614
- <AseUid>
615
- <codeType>D</codeType>
616
- <codeId>CA</codeId>
617
- </AseUid>
618
- <txtLocalType>CIRCLE</txtLocalType>
619
- <txtName>CIRCLE AIRSPACE</txtName>
620
- <codeClass>C</codeClass>
621
- <codeLocInd>XXXX</codeLocInd>
622
- <codeActivity>TFC-AD</codeActivity>
623
- <codeDistVerUpper>STD</codeDistVerUpper>
624
- <valDistVerUpper>65</valDistVerUpper>
625
- <uomDistVerUpper>FL</uomDistVerUpper>
626
- <codeDistVerLower>STD</codeDistVerLower>
627
- <valDistVerLower>45</valDistVerLower>
628
- <uomDistVerLower>FL</uomDistVerLower>
629
- <codeDistVerMax>ALT</codeDistVerMax>
630
- <valDistVerMax>6000</valDistVerMax>
631
- <uomDistVerMax>FT</uomDistVerMax>
632
- <codeDistVerMnm>HEI</codeDistVerMnm>
633
- <valDistVerMnm>3000</valDistVerMnm>
634
- <uomDistVerMnm>FT</uomDistVerMnm>
635
- <Att>
636
- <codeWorkHr>H24</codeWorkHr>
637
- </Att>
638
- <txtRmk>airspace layer</txtRmk>
639
- </Ase>
640
- <Abd>
641
- <AbdUid>
642
- <AseUid>
643
- <codeType>D</codeType>
644
- <codeId>CA</codeId>
645
- </AseUid>
646
- </AbdUid>
647
- <Avx>
648
- <codeType>CWA</codeType>
649
- <geoLat>474023.76N</geoLat>
650
- <geoLong>0045300.00E</geoLong>
651
- <codeDatum>WGE</codeDatum>
652
- <geoLatArc>473500.00N</geoLatArc>
653
- <geoLongArc>0045300.00E</geoLongArc>
654
- </Avx>
655
- </Abd>
656
- <!-- NavigationalAid: [DesignatedPoint:VFR-RP] DDD / DESIGNATED POINT NAVAID -->
657
- <Dpn>
658
- <DpnUid>
659
- <codeId>DDD</codeId>
660
- <geoLat>475133.00N</geoLat>
661
- <geoLong>0073336.00E</geoLong>
662
- </DpnUid>
663
- <AhpUidAssoc>
664
- <codeId>LFNT</codeId>
665
- </AhpUidAssoc>
666
- <codeDatum>WGE</codeDatum>
667
- <codeType>OTHER</codeType>
668
- <txtName>DESIGNATED POINT NAVAID</txtName>
669
- <txtRmk>designated point navaid</txtRmk>
670
- </Dpn>
671
- <!-- NavigationalAid: [DME] MMM / DME NAVAID -->
672
- <Dme>
673
- <DmeUid>
674
- <codeId>MMM</codeId>
675
- <geoLat>475133.00N</geoLat>
676
- <geoLong>0073336.00E</geoLong>
677
- </DmeUid>
678
- <OrgUid>
679
- <txtName>FRANCE</txtName>
680
- </OrgUid>
681
- <txtName>DME NAVAID</txtName>
682
- <codeChannel>95X</codeChannel>
683
- <valGhostFreq>114.8</valGhostFreq>
684
- <uomGhostFreq>MHZ</uomGhostFreq>
685
- <codeDatum>WGE</codeDatum>
686
- <valElev>500</valElev>
687
- <uomDistVer>FT</uomDistVer>
688
- <Dtt>
689
- <codeWorkHr>H24</codeWorkHr>
690
- </Dtt>
691
- <txtRmk>dme navaid</txtRmk>
692
- </Dme>
693
- <!-- NavigationalAid: [Marker:O] --- / MARKER NAVAID -->
694
- <Mkr>
695
- <MkrUid>
696
- <codeId>---</codeId>
697
- <geoLat>475133.00N</geoLat>
698
- <geoLong>0073336.00E</geoLong>
699
- </MkrUid>
700
- <OrgUid>
701
- <txtName>FRANCE</txtName>
702
- </OrgUid>
703
- <codePsnIls>O</codePsnIls>
704
- <valFreq>75</valFreq>
705
- <uomFreq>MHZ</uomFreq>
706
- <txtName>MARKER NAVAID</txtName>
707
- <codeDatum>WGE</codeDatum>
708
- <valElev>500</valElev>
709
- <uomDistVer>FT</uomDistVer>
710
- <Mtt>
711
- <codeWorkHr>H24</codeWorkHr>
712
- </Mtt>
713
- <txtRmk>marker navaid</txtRmk>
714
- </Mkr>
715
- <!-- NavigationalAid: [NDB:B] NNN / NDB NAVAID -->
716
- <Ndb>
717
- <NdbUid>
718
- <codeId>NNN</codeId>
719
- <geoLat>475133.00N</geoLat>
720
- <geoLong>0073336.00E</geoLong>
721
- </NdbUid>
722
- <OrgUid>
723
- <txtName>FRANCE</txtName>
724
- </OrgUid>
725
- <txtName>NDB NAVAID</txtName>
726
- <valFreq>555</valFreq>
727
- <uomFreq>KHZ</uomFreq>
728
- <codeClass>B</codeClass>
729
- <codeDatum>WGE</codeDatum>
730
- <valElev>500</valElev>
731
- <uomDistVer>FT</uomDistVer>
732
- <Ntt>
733
- <codeWorkHr>H24</codeWorkHr>
734
- </Ntt>
735
- <txtRmk>ndb navaid</txtRmk>
736
- </Ndb>
737
- <!-- NavigationalAid: [TACAN] TTT / TACAN NAVAID -->
738
- <Tcn>
739
- <TcnUid>
740
- <codeId>TTT</codeId>
741
- <geoLat>475133.00N</geoLat>
742
- <geoLong>0073336.00E</geoLong>
743
- </TcnUid>
744
- <OrgUid>
745
- <txtName>FRANCE</txtName>
746
- </OrgUid>
747
- <txtName>TACAN NAVAID</txtName>
748
- <codeChannel>29X</codeChannel>
749
- <codeDatum>WGE</codeDatum>
750
- <valElev>500</valElev>
751
- <uomDistVer>FT</uomDistVer>
752
- <Ttt>
753
- <codeWorkHr>H24</codeWorkHr>
754
- </Ttt>
755
- <txtRmk>tacan navaid</txtRmk>
756
- </Tcn>
757
- <!-- NavigationalAid: [VOR:VOR] VVV / VOR NAVAID -->
758
- <Vor>
759
- <VorUid>
760
- <codeId>VVV</codeId>
761
- <geoLat>475133.00N</geoLat>
762
- <geoLong>0073336.00E</geoLong>
763
- </VorUid>
764
- <OrgUid>
765
- <txtName>FRANCE</txtName>
766
- </OrgUid>
767
- <txtName>VOR NAVAID</txtName>
768
- <codeType>VOR</codeType>
769
- <valFreq>111</valFreq>
770
- <uomFreq>MHZ</uomFreq>
771
- <codeTypeNorth>TRUE</codeTypeNorth>
772
- <codeDatum>WGE</codeDatum>
773
- <valElev>500</valElev>
774
- <uomDistVer>FT</uomDistVer>
775
- <Vtt>
776
- <codeWorkHr>H24</codeWorkHr>
777
- </Vtt>
778
- <txtRmk>vor navaid</txtRmk>
779
- </Vor>
780
- <!-- NavigationalAid: [VOR:VOR] VDD / VOR/DME NAVAID -->
781
- <Vor>
782
- <VorUid>
783
- <codeId>VDD</codeId>
784
- <geoLat>475133.00N</geoLat>
785
- <geoLong>0073336.00E</geoLong>
786
- </VorUid>
787
- <OrgUid>
788
- <txtName>FRANCE</txtName>
789
- </OrgUid>
790
- <txtName>VOR/DME NAVAID</txtName>
791
- <codeType>VOR</codeType>
792
- <valFreq>111</valFreq>
793
- <uomFreq>MHZ</uomFreq>
794
- <codeTypeNorth>TRUE</codeTypeNorth>
795
- <codeDatum>WGE</codeDatum>
796
- <valElev>500</valElev>
797
- <uomDistVer>FT</uomDistVer>
798
- <Vtt>
799
- <codeWorkHr>H24</codeWorkHr>
800
- </Vtt>
801
- <txtRmk>vor/dme navaid</txtRmk>
802
- </Vor>
803
- <!-- NavigationalAid: [DME] VDD / VOR/DME NAVAID -->
804
- <Dme>
805
- <DmeUid>
806
- <codeId>VDD</codeId>
807
- <geoLat>475133.00N</geoLat>
808
- <geoLong>0073336.00E</geoLong>
809
- </DmeUid>
810
- <OrgUid>
811
- <txtName>FRANCE</txtName>
812
- </OrgUid>
813
- <VorUid>
814
- <codeId>VDD</codeId>
815
- <geoLat>475133.00N</geoLat>
816
- <geoLong>0073336.00E</geoLong>
817
- </VorUid>
818
- <txtName>VOR/DME NAVAID</txtName>
819
- <codeChannel>95X</codeChannel>
820
- <codeDatum>WGE</codeDatum>
821
- <valElev>500</valElev>
822
- <uomDistVer>FT</uomDistVer>
823
- <Dtt>
824
- <codeWorkHr>H24</codeWorkHr>
825
- </Dtt>
826
- <txtRmk>vor/dme navaid</txtRmk>
827
- </Dme>
828
- <!-- NavigationalAid: [VOR:VOR] VTT / VORTAC NAVAID -->
829
- <Vor>
830
- <VorUid>
831
- <codeId>VTT</codeId>
832
- <geoLat>475133.00N</geoLat>
833
- <geoLong>0073336.00E</geoLong>
834
- </VorUid>
835
- <OrgUid>
836
- <txtName>FRANCE</txtName>
837
- </OrgUid>
838
- <txtName>VORTAC NAVAID</txtName>
839
- <codeType>VOR</codeType>
840
- <valFreq>111</valFreq>
841
- <uomFreq>MHZ</uomFreq>
842
- <codeTypeNorth>TRUE</codeTypeNorth>
843
- <codeDatum>WGE</codeDatum>
844
- <valElev>500</valElev>
845
- <uomDistVer>FT</uomDistVer>
846
- <Vtt>
847
- <codeWorkHr>H24</codeWorkHr>
848
- </Vtt>
849
- <txtRmk>vortac navaid</txtRmk>
850
- </Vor>
851
- <!-- NavigationalAid: [TACAN] VTT / VORTAC NAVAID -->
852
- <Tcn>
853
- <TcnUid>
854
- <codeId>VTT</codeId>
855
- <geoLat>475133.00N</geoLat>
856
- <geoLong>0073336.00E</geoLong>
857
- </TcnUid>
858
- <OrgUid>
859
- <txtName>FRANCE</txtName>
860
- </OrgUid>
861
- <VorUid>
862
- <codeId>VTT</codeId>
863
- <geoLat>475133.00N</geoLat>
864
- <geoLong>0073336.00E</geoLong>
865
- </VorUid>
866
- <txtName>VORTAC NAVAID</txtName>
867
- <codeChannel>29X</codeChannel>
868
- <codeDatum>WGE</codeDatum>
869
- <valElev>500</valElev>
870
- <uomDistVer>FT</uomDistVer>
871
- <Ttt>
872
- <codeWorkHr>H24</codeWorkHr>
873
- </Ttt>
874
- <txtRmk>vortac navaid</txtRmk>
875
- </Tcn>
876
- <!-- Obstacle: [tower] 48.85825000N 002.29458889E EIFFEL TOWER -->
877
- <Obs>
878
- <ObsUid>
879
- <geoLat>485129.70N</geoLat>
880
- <geoLong>0021740.52E</geoLong>
881
- </ObsUid>
882
- <txtName>EIFFEL TOWER</txtName>
883
- <txtDescrType>TOWER</txtDescrType>
884
- <codeGroup>N</codeGroup>
885
- <codeLgt>Y</codeLgt>
886
- <txtDescrLgt>red strobes</txtDescrLgt>
887
- <codeDatum>WGE</codeDatum>
888
- <valGeoAccuracy>2</valGeoAccuracy>
889
- <uomGeoAccuracy>M</uomGeoAccuracy>
890
- <valElev>1187</valElev>
891
- <valElevAccuracy>3</valElevAccuracy>
892
- <valHgt>1063</valHgt>
893
- <uomDistVer>FT</uomDistVer>
894
- <txtRmk>Temporary light installations (white strobes, gyro light etc)</txtRmk>
895
- </Obs>
896
- <!-- Obstacle: [wind_turbine] 44.67501389N 004.87256667E LA TEISSONIERE 1 -->
897
- <Obs>
898
- <ObsUid>
899
- <geoLat>444030.05N</geoLat>
900
- <geoLong>0045221.24E</geoLong>
901
- </ObsUid>
902
- <txtName>LA TEISSONIERE 1</txtName>
903
- <txtDescrType>WINDTURBINE</txtDescrType>
904
- <codeGroup>Y</codeGroup>
905
- <codeLgt>N</codeLgt>
906
- <codeDatum>WGE</codeDatum>
907
- <valGeoAccuracy>50</valGeoAccuracy>
908
- <uomGeoAccuracy>M</uomGeoAccuracy>
909
- <valElev>1764</valElev>
910
- <valElevAccuracy>33</valElevAccuracy>
911
- <valHgt>262</valHgt>
912
- <uomDistVer>FT</uomDistVer>
913
- </Obs>
914
- <!-- Obstacle: [wind_turbine] 44.67946667N 004.87381111E LA TEISSONIERE 2 -->
915
- <Obs>
916
- <ObsUid>
917
- <geoLat>444046.08N</geoLat>
918
- <geoLong>0045225.72E</geoLong>
919
- </ObsUid>
920
- <txtName>LA TEISSONIERE 2</txtName>
921
- <txtDescrType>WINDTURBINE</txtDescrType>
922
- <codeGroup>Y</codeGroup>
923
- <codeLgt>N</codeLgt>
924
- <codeDatum>WGE</codeDatum>
925
- <valGeoAccuracy>50</valGeoAccuracy>
926
- <uomGeoAccuracy>M</uomGeoAccuracy>
927
- <valElev>1738</valElev>
928
- <valElevAccuracy>33</valElevAccuracy>
929
- <valHgt>262</valHgt>
930
- <uomDistVer>FT</uomDistVer>
931
- </Obs>
932
- <!-- Obstacle: [mast] 52.29639722N 002.10675278W DROITWICH LW NORTH -->
933
- <Obs>
934
- <ObsUid>
935
- <geoLat>521747.03N</geoLat>
936
- <geoLong>0020624.31W</geoLong>
937
- </ObsUid>
938
- <txtName>DROITWICH LW NORTH</txtName>
939
- <txtDescrType>MAST</txtDescrType>
940
- <codeGroup>Y</codeGroup>
941
- <codeLgt>N</codeLgt>
942
- <codeDatum>WGE</codeDatum>
943
- <valGeoAccuracy>0</valGeoAccuracy>
944
- <uomGeoAccuracy>M</uomGeoAccuracy>
945
- <valElev>848</valElev>
946
- <valElevAccuracy>0</valElevAccuracy>
947
- <valHgt>700</valHgt>
948
- <uomDistVer>FT</uomDistVer>
949
- </Obs>
950
- <!-- Obstacle: [mast] 52.29457778N 002.10568611W DROITWICH LW NORTH -->
951
- <Obs>
952
- <ObsUid>
953
- <geoLat>521740.48N</geoLat>
954
- <geoLong>0020620.47W</geoLong>
955
- </ObsUid>
956
- <txtName>DROITWICH LW NORTH</txtName>
957
- <txtDescrType>MAST</txtDescrType>
958
- <codeGroup>Y</codeGroup>
959
- <codeLgt>N</codeLgt>
960
- <codeDatum>WGE</codeDatum>
961
- <valGeoAccuracy>0</valGeoAccuracy>
962
- <uomGeoAccuracy>M</uomGeoAccuracy>
963
- <valElev>848</valElev>
964
- <valElevAccuracy>0</valElevAccuracy>
965
- <valHgt>700</valHgt>
966
- <uomDistVer>FT</uomDistVer>
967
- </Obs>
968
- </AIXM-Snapshot>
969
- END
970
- end
971
- end
972
-
973
- context "OFMX" do
974
- subject do
975
- AIXM.ofmx!
976
- AIXM::Factory.document
977
- end
978
-
979
- it "won't have errors" do
980
- _(subject.errors).must_equal []
981
- end
982
-
983
- it "builds correct OFMX" do
984
- _(subject.to_xml).must_equal <<~"END"
985
- <?xml version="1.0" encoding="UTF-8"?>
986
- <OFMX-Snapshot xmlns:xsi="http://schema.openflightmaps.org/0/OFMX-Snapshot.xsd" version="0" origin="rubygem aixm-#{AIXM::VERSION}" region="LF" namespace="00000000-0000-0000-0000-000000000000" created="2018-01-01T12:00:00+01:00" effective="2018-01-01T12:00:00+01:00">
987
- <!-- Organisation: FRANCE -->
988
- <Org source="LF|GEN|0.0 FACTORY|0|0">
989
- <OrgUid>
990
- <txtName>FRANCE</txtName>
991
- </OrgUid>
992
- <codeId>LF</codeId>
993
- <codeType>S</codeType>
994
- <txtRmk>Oversea departments not included</txtRmk>
995
- </Org>
996
- <!-- Unit: PUJAUT TWR -->
997
- <Uni source="LF|GEN|0.0 FACTORY|0|0">
998
- <UniUid>
999
- <txtName>PUJAUT TWR</txtName>
1000
- </UniUid>
1001
- <OrgUid>
1002
- <txtName>FRANCE</txtName>
1003
- </OrgUid>
1004
- <AhpUid>
1005
- <codeId>LFNT</codeId>
1006
- </AhpUid>
1007
- <codeType>TWR</codeType>
1008
- <codeClass>ICAO</codeClass>
1009
- <txtRmk>FR only</txtRmk>
1010
- </Uni>
1011
- <!-- Service: APP by PUJAUT TWR -->
1012
- <Ser source="LF|GEN|0.0 FACTORY|0|0">
1013
- <SerUid>
1014
- <UniUid>
1015
- <txtName>PUJAUT TWR</txtName>
1016
- </UniUid>
1017
- <codeType>APP</codeType>
1018
- <noSeq>1</noSeq>
1019
- </SerUid>
1020
- <Stt>
1021
- <codeWorkHr>H24</codeWorkHr>
1022
- </Stt>
1023
- <txtRmk>service remarks</txtRmk>
1024
- </Ser>
1025
- <Fqy>
1026
- <FqyUid>
1027
- <SerUid>
1028
- <UniUid>
1029
- <txtName>PUJAUT TWR</txtName>
1030
- </UniUid>
1031
- <codeType>APP</codeType>
1032
- <noSeq>1</noSeq>
1033
- </SerUid>
1034
- <valFreqTrans>123.35</valFreqTrans>
1035
- </FqyUid>
1036
- <valFreqRec>124.1</valFreqRec>
1037
- <uomFreq>MHZ</uomFreq>
1038
- <Ftt>
1039
- <codeWorkHr>H24</codeWorkHr>
1040
- </Ftt>
1041
- <txtRmk>frequency remarks</txtRmk>
1042
- <Cdl>
1043
- <txtCallSign>PUJAUT CONTROL</txtCallSign>
1044
- <codeLang>EN</codeLang>
1045
- </Cdl>
1046
- <Cdl>
1047
- <txtCallSign>PUJAUT CONTROLE</txtCallSign>
1048
- <codeLang>FR</codeLang>
1049
- </Cdl>
1050
- </Fqy>
1051
- <!-- Airport: LFNT AVIGNON-PUJAUT -->
1052
- <Ahp source="LF|GEN|0.0 FACTORY|0|0">
1053
- <AhpUid>
1054
- <codeId>LFNT</codeId>
1055
- </AhpUid>
1056
- <OrgUid>
1057
- <txtName>FRANCE</txtName>
1058
- </OrgUid>
1059
- <txtName>AVIGNON-PUJAUT</txtName>
1060
- <codeIcao>LFNT</codeIcao>
1061
- <codeGps>LFPUJAUT</codeGps>
1062
- <codeType>AH</codeType>
1063
- <geoLat>43.99611111N</geoLat>
1064
- <geoLong>004.75444444E</geoLong>
1065
- <codeDatum>WGE</codeDatum>
1066
- <valElev>146</valElev>
1067
- <uomDistVer>FT</uomDistVer>
1068
- <valMagVar>1.08</valMagVar>
1069
- <txtNameAdmin>MUNICIPALITY OF PUJAUT</txtNameAdmin>
1070
- <valTransitionAlt>10000</valTransitionAlt>
1071
- <uomTransitionAlt>FT</uomTransitionAlt>
1072
- <txtRmk>Restricted access</txtRmk>
1073
- </Ahp>
1074
- <Rwy>
1075
- <RwyUid>
1076
- <AhpUid>
1077
- <codeId>LFNT</codeId>
1078
- </AhpUid>
1079
- <txtDesig>16L/34R</txtDesig>
1080
- </RwyUid>
1081
- <valLen>650</valLen>
1082
- <valWid>80</valWid>
1083
- <uomDimRwy>M</uomDimRwy>
1084
- <codeComposition>ASPH</codeComposition>
1085
- <codePreparation>PAVED</codePreparation>
1086
- <codeCondSfc>GOOD</codeCondSfc>
1087
- <valPcnClass>59</valPcnClass>
1088
- <codePcnPavementType>F</codePcnPavementType>
1089
- <codePcnPavementSubgrade>A</codePcnPavementSubgrade>
1090
- <codePcnMaxTirePressure>W</codePcnMaxTirePressure>
1091
- <codePcnEvalMethod>T</codePcnEvalMethod>
1092
- <txtPcnNote>Paved shoulder on 2.5m on each side of the RWY.</txtPcnNote>
1093
- <valSiwlWeight>1500</valSiwlWeight>
1094
- <uomSiwlWeight>KG</uomSiwlWeight>
1095
- <valSiwlTirePressure>0.5</valSiwlTirePressure>
1096
- <uomSiwlTirePressure>MPA</uomSiwlTirePressure>
1097
- <valAuwWeight>30</valAuwWeight>
1098
- <uomAuwWeight>T</uomAuwWeight>
1099
- <codeSts>CLSD</codeSts>
1100
- <txtRmk>Markings eroded</txtRmk>
1101
- </Rwy>
1102
- <Rdn>
1103
- <RdnUid>
1104
- <RwyUid>
1105
- <AhpUid>
1106
- <codeId>LFNT</codeId>
1107
- </AhpUid>
1108
- <txtDesig>16L/34R</txtDesig>
1109
- </RwyUid>
1110
- <txtDesig>16L</txtDesig>
1111
- </RdnUid>
1112
- <geoLat>44.00211944N</geoLat>
1113
- <geoLong>004.75216944E</geoLong>
1114
- <valTrueBrg>165</valTrueBrg>
1115
- <valMagBrg>164</valMagBrg>
1116
- <valElevTdz>145</valElevTdz>
1117
- <uomElevTdz>FT</uomElevTdz>
1118
- <codeVfrPattern>E</codeVfrPattern>
1119
- <txtRmk>forth remarks</txtRmk>
1120
- </Rdn>
1121
- <Rdd>
1122
- <RddUid>
1123
- <RdnUid>
1124
- <RwyUid>
1125
- <AhpUid>
1126
- <codeId>LFNT</codeId>
1127
- </AhpUid>
1128
- <txtDesig>16L/34R</txtDesig>
1129
- </RwyUid>
1130
- <txtDesig>16L</txtDesig>
1131
- </RdnUid>
1132
- <codeType>DPLM</codeType>
1133
- <codeDayPeriod>A</codeDayPeriod>
1134
- </RddUid>
1135
- <valDist>131</valDist>
1136
- <uomDist>M</uomDist>
1137
- <txtRmk>forth remarks</txtRmk>
1138
- </Rdd>
1139
- <Rls>
1140
- <RlsUid>
1141
- <RdnUid>
1142
- <RwyUid>
1143
- <AhpUid>
1144
- <codeId>LFNT</codeId>
1145
- </AhpUid>
1146
- <txtDesig>16L/34R</txtDesig>
1147
- </RwyUid>
1148
- <txtDesig>16L</txtDesig>
1149
- </RdnUid>
1150
- <codePsn>AIM</codePsn>
1151
- </RlsUid>
1152
- <txtDescr>omnidirectional</txtDescr>
1153
- <codeIntst>LIM</codeIntst>
1154
- <codeColour>GRN</codeColour>
1155
- <txtRmk>lighting remarks</txtRmk>
1156
- </Rls>
1157
- <Rdn>
1158
- <RdnUid>
1159
- <RwyUid>
1160
- <AhpUid>
1161
- <codeId>LFNT</codeId>
1162
- </AhpUid>
1163
- <txtDesig>16L/34R</txtDesig>
1164
- </RwyUid>
1165
- <txtDesig>34R</txtDesig>
1166
- </RdnUid>
1167
- <geoLat>43.99036389N</geoLat>
1168
- <geoLong>004.75645556E</geoLong>
1169
- <valTrueBrg>345</valTrueBrg>
1170
- <valMagBrg>344</valMagBrg>
1171
- <valElevTdz>147</valElevTdz>
1172
- <uomElevTdz>FT</uomElevTdz>
1173
- <codeVfrPattern>L</codeVfrPattern>
1174
- <txtRmk>back remarks</txtRmk>
1175
- </Rdn>
1176
- <Rdd>
1177
- <RddUid>
1178
- <RdnUid>
1179
- <RwyUid>
1180
- <AhpUid>
1181
- <codeId>LFNT</codeId>
1182
- </AhpUid>
1183
- <txtDesig>16L/34R</txtDesig>
1184
- </RwyUid>
1185
- <txtDesig>34R</txtDesig>
1186
- </RdnUid>
1187
- <codeType>DPLM</codeType>
1188
- <codeDayPeriod>A</codeDayPeriod>
1189
- </RddUid>
1190
- <valDist>209</valDist>
1191
- <uomDist>M</uomDist>
1192
- <txtRmk>back remarks</txtRmk>
1193
- </Rdd>
1194
- <Rls>
1195
- <RlsUid>
1196
- <RdnUid>
1197
- <RwyUid>
1198
- <AhpUid>
1199
- <codeId>LFNT</codeId>
1200
- </AhpUid>
1201
- <txtDesig>16L/34R</txtDesig>
1202
- </RwyUid>
1203
- <txtDesig>34R</txtDesig>
1204
- </RdnUid>
1205
- <codePsn>AIM</codePsn>
1206
- </RlsUid>
1207
- <txtDescr>omnidirectional</txtDescr>
1208
- <codeIntst>LIM</codeIntst>
1209
- <codeColour>GRN</codeColour>
1210
- <txtRmk>lighting remarks</txtRmk>
1211
- </Rls>
1212
- <Fto>
1213
- <FtoUid>
1214
- <AhpUid>
1215
- <codeId>LFNT</codeId>
1216
- </AhpUid>
1217
- <txtDesig>H1</txtDesig>
1218
- </FtoUid>
1219
- <valLen>35</valLen>
1220
- <valWid>35</valWid>
1221
- <uomDim>M</uomDim>
1222
- <codeComposition>CONC</codeComposition>
1223
- <codePreparation>PAVED</codePreparation>
1224
- <codeCondSfc>FAIR</codeCondSfc>
1225
- <valPcnClass>30</valPcnClass>
1226
- <codePcnPavementType>F</codePcnPavementType>
1227
- <codePcnPavementSubgrade>A</codePcnPavementSubgrade>
1228
- <codePcnMaxTirePressure>W</codePcnMaxTirePressure>
1229
- <codePcnEvalMethod>U</codePcnEvalMethod>
1230
- <txtPcnNote>Cracks near the center</txtPcnNote>
1231
- <valSiwlWeight>1500</valSiwlWeight>
1232
- <uomSiwlWeight>KG</uomSiwlWeight>
1233
- <valSiwlTirePressure>0.5</valSiwlTirePressure>
1234
- <uomSiwlTirePressure>MPA</uomSiwlTirePressure>
1235
- <valAuwWeight>8</valAuwWeight>
1236
- <uomAuwWeight>T</uomAuwWeight>
1237
- <txtProfile>Northwest from RWY 12/30</txtProfile>
1238
- <txtMarking>Dashed white lines</txtMarking>
1239
- <codeSts>OTHER</codeSts>
1240
- <txtRmk>Authorizaton by AD operator required</txtRmk>
1241
- </Fto>
1242
- <Fdn>
1243
- <FdnUid>
1244
- <FtoUid>
1245
- <AhpUid>
1246
- <codeId>LFNT</codeId>
1247
- </AhpUid>
1248
- <txtDesig>H1</txtDesig>
1249
- </FtoUid>
1250
- <txtDesig>35</txtDesig>
1251
- </FdnUid>
1252
- <valTrueBrg>355</valTrueBrg>
1253
- <valMagBrg>354</valMagBrg>
1254
- <txtRmk>Avoid flight over residental area</txtRmk>
1255
- </Fdn>
1256
- <Fls>
1257
- <FlsUid>
1258
- <FdnUid>
1259
- <FtoUid>
1260
- <AhpUid>
1261
- <codeId>LFNT</codeId>
1262
- </AhpUid>
1263
- <txtDesig>H1</txtDesig>
1264
- </FtoUid>
1265
- <txtDesig>35</txtDesig>
1266
- </FdnUid>
1267
- <codePsn>AIM</codePsn>
1268
- </FlsUid>
1269
- <txtDescr>omnidirectional</txtDescr>
1270
- <codeIntst>LIM</codeIntst>
1271
- <codeColour>GRN</codeColour>
1272
- <txtRmk>lighting remarks</txtRmk>
1273
- </Fls>
1274
- <Tla>
1275
- <TlaUid>
1276
- <AhpUid>
1277
- <codeId>LFNT</codeId>
1278
- </AhpUid>
1279
- <txtDesig>H1</txtDesig>
1280
- </TlaUid>
1281
- <FtoUid>
1282
- <AhpUid>
1283
- <codeId>LFNT</codeId>
1284
- </AhpUid>
1285
- <txtDesig>H1</txtDesig>
1286
- </FtoUid>
1287
- <geoLat>43.99915000N</geoLat>
1288
- <geoLong>004.75154444E</geoLong>
1289
- <codeDatum>WGE</codeDatum>
1290
- <valElev>141</valElev>
1291
- <uomDistVer>FT</uomDistVer>
1292
- <valLen>20</valLen>
1293
- <valWid>20</valWid>
1294
- <uomDim>M</uomDim>
1295
- <codeComposition>CONC</codeComposition>
1296
- <codePreparation>PAVED</codePreparation>
1297
- <codeCondSfc>FAIR</codeCondSfc>
1298
- <valPcnClass>30</valPcnClass>
1299
- <codePcnPavementType>F</codePcnPavementType>
1300
- <codePcnPavementSubgrade>A</codePcnPavementSubgrade>
1301
- <codePcnMaxTirePressure>W</codePcnMaxTirePressure>
1302
- <codePcnEvalMethod>U</codePcnEvalMethod>
1303
- <txtPcnNote>Cracks near the center</txtPcnNote>
1304
- <valSiwlWeight>1500</valSiwlWeight>
1305
- <uomSiwlWeight>KG</uomSiwlWeight>
1306
- <valSiwlTirePressure>0.5</valSiwlTirePressure>
1307
- <uomSiwlTirePressure>MPA</uomSiwlTirePressure>
1308
- <valAuwWeight>8</valAuwWeight>
1309
- <uomAuwWeight>T</uomAuwWeight>
1310
- <codeClassHel>1</codeClassHel>
1311
- <txtMarking>Continuous white lines</txtMarking>
1312
- <codeSts>OTHER</codeSts>
1313
- <txtRmk>Authorizaton by AD operator required</txtRmk>
1314
- </Tla>
1315
- <Tls>
1316
- <TlsUid>
1317
- <TlaUid>
1318
- <AhpUid>
1319
- <codeId>LFNT</codeId>
1320
- </AhpUid>
1321
- <txtDesig>H1</txtDesig>
1322
- </TlaUid>
1323
- <codePsn>AIM</codePsn>
1324
- </TlsUid>
1325
- <txtDescr>omnidirectional</txtDescr>
1326
- <codeIntst>LIM</codeIntst>
1327
- <codeColour>GRN</codeColour>
1328
- <txtRmk>lighting remarks</txtRmk>
1329
- </Tls>
1330
- <Ahu>
1331
- <AhuUid>
1332
- <AhpUid>
1333
- <codeId>LFNT</codeId>
1334
- </AhpUid>
1335
- </AhuUid>
1336
- <UsageLimitation>
1337
- <codeUsageLimitation>PERMIT</codeUsageLimitation>
1338
- </UsageLimitation>
1339
- <UsageLimitation>
1340
- <codeUsageLimitation>RESERV</codeUsageLimitation>
1341
- <UsageCondition>
1342
- <AircraftClass>
1343
- <codeType>E</codeType>
1344
- </AircraftClass>
1345
- </UsageCondition>
1346
- <UsageCondition>
1347
- <FlightClass>
1348
- <codeOrigin>INTL</codeOrigin>
1349
- </FlightClass>
1350
- </UsageCondition>
1351
- <Timetable>
1352
- <codeWorkHr>H24</codeWorkHr>
1353
- </Timetable>
1354
- <txtRmk>reservation remarks</txtRmk>
1355
- </UsageLimitation>
1356
- </Ahu>
1357
- <!-- Address: RADIO for LFNT -->
1358
- <Aha source="LF|GEN|0.0 FACTORY|0|0">
1359
- <AhaUid>
1360
- <AhpUid>
1361
- <codeId>LFNT</codeId>
1362
- </AhpUid>
1363
- <codeType>RADIO</codeType>
1364
- <noSeq>1</noSeq>
1365
- </AhaUid>
1366
- <txtAddress>123.35</txtAddress>
1367
- <txtRmk>A/A (callsign PUJAUT)</txtRmk>
1368
- </Aha>
1369
- <!-- Airspace: [D] POLYGON AIRSPACE -->
1370
- <Ase source="LF|GEN|0.0 FACTORY|0|0">
1371
- <AseUid>
1372
- <codeType>D</codeType>
1373
- <codeId>PA</codeId>
1374
- </AseUid>
1375
- <txtLocalType>POLYGON</txtLocalType>
1376
- <txtName>POLYGON AIRSPACE</txtName>
1377
- <codeClass>C</codeClass>
1378
- <codeLocInd>XXXX</codeLocInd>
1379
- <codeActivity>TFC-AD</codeActivity>
1380
- <codeDistVerUpper>STD</codeDistVerUpper>
1381
- <valDistVerUpper>65</valDistVerUpper>
1382
- <uomDistVerUpper>FL</uomDistVerUpper>
1383
- <codeDistVerLower>STD</codeDistVerLower>
1384
- <valDistVerLower>45</valDistVerLower>
1385
- <uomDistVerLower>FL</uomDistVerLower>
1386
- <codeDistVerMax>ALT</codeDistVerMax>
1387
- <valDistVerMax>6000</valDistVerMax>
1388
- <uomDistVerMax>FT</uomDistVerMax>
1389
- <codeDistVerMnm>HEI</codeDistVerMnm>
1390
- <valDistVerMnm>3000</valDistVerMnm>
1391
- <uomDistVerMnm>FT</uomDistVerMnm>
1392
- <Att>
1393
- <codeWorkHr>H24</codeWorkHr>
1394
- </Att>
1395
- <codeSelAvbl>Y</codeSelAvbl>
1396
- <txtRmk>airspace layer</txtRmk>
1397
- </Ase>
1398
- <Abd>
1399
- <AbdUid>
1400
- <AseUid>
1401
- <codeType>D</codeType>
1402
- <codeId>PA</codeId>
1403
- </AseUid>
1404
- </AbdUid>
1405
- <Avx>
1406
- <codeType>CWA</codeType>
1407
- <geoLat>47.85916667N</geoLat>
1408
- <geoLong>007.56000000E</geoLong>
1409
- <codeDatum>WGE</codeDatum>
1410
- <geoLatArc>47.90416667N</geoLatArc>
1411
- <geoLongArc>007.56333333E</geoLongArc>
1412
- </Avx>
1413
- <Avx>
1414
- <GbrUid>
1415
- <txtName>FRANCE_GERMANY</txtName>
1416
- </GbrUid>
1417
- <codeType>FNT</codeType>
1418
- <geoLat>47.94361111N</geoLat>
1419
- <geoLong>007.59583333E</geoLong>
1420
- <codeDatum>WGE</codeDatum>
1421
- </Avx>
1422
- <Avx>
1423
- <codeType>GRC</codeType>
1424
- <geoLat>47.85916667N</geoLat>
1425
- <geoLong>007.56000000E</geoLong>
1426
- <codeDatum>WGE</codeDatum>
1427
- </Avx>
1428
- </Abd>
1429
- <!-- Airspace: [D] CIRCLE AIRSPACE -->
1430
- <Ase source="LF|GEN|0.0 FACTORY|0|0">
1431
- <AseUid>
1432
- <codeType>D</codeType>
1433
- <codeId>CA</codeId>
1434
- </AseUid>
1435
- <txtLocalType>CIRCLE</txtLocalType>
1436
- <txtName>CIRCLE AIRSPACE</txtName>
1437
- <codeClass>C</codeClass>
1438
- <codeLocInd>XXXX</codeLocInd>
1439
- <codeActivity>TFC-AD</codeActivity>
1440
- <codeDistVerUpper>STD</codeDistVerUpper>
1441
- <valDistVerUpper>65</valDistVerUpper>
1442
- <uomDistVerUpper>FL</uomDistVerUpper>
1443
- <codeDistVerLower>STD</codeDistVerLower>
1444
- <valDistVerLower>45</valDistVerLower>
1445
- <uomDistVerLower>FL</uomDistVerLower>
1446
- <codeDistVerMax>ALT</codeDistVerMax>
1447
- <valDistVerMax>6000</valDistVerMax>
1448
- <uomDistVerMax>FT</uomDistVerMax>
1449
- <codeDistVerMnm>HEI</codeDistVerMnm>
1450
- <valDistVerMnm>3000</valDistVerMnm>
1451
- <uomDistVerMnm>FT</uomDistVerMnm>
1452
- <Att>
1453
- <codeWorkHr>H24</codeWorkHr>
1454
- </Att>
1455
- <codeSelAvbl>Y</codeSelAvbl>
1456
- <txtRmk>airspace layer</txtRmk>
1457
- </Ase>
1458
- <Abd>
1459
- <AbdUid>
1460
- <AseUid>
1461
- <codeType>D</codeType>
1462
- <codeId>CA</codeId>
1463
- </AseUid>
1464
- </AbdUid>
1465
- <Avx>
1466
- <codeType>CWA</codeType>
1467
- <geoLat>47.67326537N</geoLat>
1468
- <geoLong>004.88333333E</geoLong>
1469
- <codeDatum>WGE</codeDatum>
1470
- <geoLatArc>47.58333333N</geoLatArc>
1471
- <geoLongArc>004.88333333E</geoLongArc>
1472
- </Avx>
1473
- </Abd>
1474
- <!-- NavigationalAid: [DesignatedPoint:VFR-RP] DDD / DESIGNATED POINT NAVAID -->
1475
- <Dpn source="LF|GEN|0.0 FACTORY|0|0">
1476
- <DpnUid>
1477
- <codeId>DDD</codeId>
1478
- <geoLat>47.85916667N</geoLat>
1479
- <geoLong>007.56000000E</geoLong>
1480
- </DpnUid>
1481
- <AhpUidAssoc>
1482
- <codeId>LFNT</codeId>
1483
- </AhpUidAssoc>
1484
- <codeDatum>WGE</codeDatum>
1485
- <codeType>VFR-RP</codeType>
1486
- <txtName>DESIGNATED POINT NAVAID</txtName>
1487
- <txtRmk>designated point navaid</txtRmk>
1488
- </Dpn>
1489
- <!-- NavigationalAid: [DME] MMM / DME NAVAID -->
1490
- <Dme source="LF|GEN|0.0 FACTORY|0|0">
1491
- <DmeUid>
1492
- <codeId>MMM</codeId>
1493
- <geoLat>47.85916667N</geoLat>
1494
- <geoLong>007.56000000E</geoLong>
1495
- </DmeUid>
1496
- <OrgUid>
1497
- <txtName>FRANCE</txtName>
1498
- </OrgUid>
1499
- <txtName>DME NAVAID</txtName>
1500
- <codeChannel>95X</codeChannel>
1501
- <valGhostFreq>114.8</valGhostFreq>
1502
- <uomGhostFreq>MHZ</uomGhostFreq>
1503
- <codeDatum>WGE</codeDatum>
1504
- <valElev>500</valElev>
1505
- <uomDistVer>FT</uomDistVer>
1506
- <Dtt>
1507
- <codeWorkHr>H24</codeWorkHr>
1508
- </Dtt>
1509
- <txtRmk>dme navaid</txtRmk>
1510
- </Dme>
1511
- <!-- NavigationalAid: [Marker:O] --- / MARKER NAVAID -->
1512
- <Mkr source="LF|GEN|0.0 FACTORY|0|0">
1513
- <MkrUid>
1514
- <codeId>---</codeId>
1515
- <geoLat>47.85916667N</geoLat>
1516
- <geoLong>007.56000000E</geoLong>
1517
- </MkrUid>
1518
- <OrgUid>
1519
- <txtName>FRANCE</txtName>
1520
- </OrgUid>
1521
- <codePsnIls>O</codePsnIls>
1522
- <valFreq>75</valFreq>
1523
- <uomFreq>MHZ</uomFreq>
1524
- <txtName>MARKER NAVAID</txtName>
1525
- <codeDatum>WGE</codeDatum>
1526
- <valElev>500</valElev>
1527
- <uomDistVer>FT</uomDistVer>
1528
- <Mtt>
1529
- <codeWorkHr>H24</codeWorkHr>
1530
- </Mtt>
1531
- <txtRmk>marker navaid</txtRmk>
1532
- </Mkr>
1533
- <!-- NavigationalAid: [NDB:B] NNN / NDB NAVAID -->
1534
- <Ndb source="LF|GEN|0.0 FACTORY|0|0">
1535
- <NdbUid>
1536
- <codeId>NNN</codeId>
1537
- <geoLat>47.85916667N</geoLat>
1538
- <geoLong>007.56000000E</geoLong>
1539
- </NdbUid>
1540
- <OrgUid>
1541
- <txtName>FRANCE</txtName>
1542
- </OrgUid>
1543
- <txtName>NDB NAVAID</txtName>
1544
- <valFreq>555</valFreq>
1545
- <uomFreq>KHZ</uomFreq>
1546
- <codeClass>B</codeClass>
1547
- <codeDatum>WGE</codeDatum>
1548
- <valElev>500</valElev>
1549
- <uomDistVer>FT</uomDistVer>
1550
- <Ntt>
1551
- <codeWorkHr>H24</codeWorkHr>
1552
- </Ntt>
1553
- <txtRmk>ndb navaid</txtRmk>
1554
- </Ndb>
1555
- <!-- NavigationalAid: [TACAN] TTT / TACAN NAVAID -->
1556
- <Tcn source="LF|GEN|0.0 FACTORY|0|0">
1557
- <TcnUid>
1558
- <codeId>TTT</codeId>
1559
- <geoLat>47.85916667N</geoLat>
1560
- <geoLong>007.56000000E</geoLong>
1561
- </TcnUid>
1562
- <OrgUid>
1563
- <txtName>FRANCE</txtName>
1564
- </OrgUid>
1565
- <txtName>TACAN NAVAID</txtName>
1566
- <codeChannel>29X</codeChannel>
1567
- <valGhostFreq>109.2</valGhostFreq>
1568
- <uomGhostFreq>MHZ</uomGhostFreq>
1569
- <codeDatum>WGE</codeDatum>
1570
- <valElev>500</valElev>
1571
- <uomDistVer>FT</uomDistVer>
1572
- <Ttt>
1573
- <codeWorkHr>H24</codeWorkHr>
1574
- </Ttt>
1575
- <txtRmk>tacan navaid</txtRmk>
1576
- </Tcn>
1577
- <!-- NavigationalAid: [VOR:VOR] VVV / VOR NAVAID -->
1578
- <Vor source="LF|GEN|0.0 FACTORY|0|0">
1579
- <VorUid>
1580
- <codeId>VVV</codeId>
1581
- <geoLat>47.85916667N</geoLat>
1582
- <geoLong>007.56000000E</geoLong>
1583
- </VorUid>
1584
- <OrgUid>
1585
- <txtName>FRANCE</txtName>
1586
- </OrgUid>
1587
- <txtName>VOR NAVAID</txtName>
1588
- <codeType>VOR</codeType>
1589
- <valFreq>111</valFreq>
1590
- <uomFreq>MHZ</uomFreq>
1591
- <codeTypeNorth>TRUE</codeTypeNorth>
1592
- <codeDatum>WGE</codeDatum>
1593
- <valElev>500</valElev>
1594
- <uomDistVer>FT</uomDistVer>
1595
- <Vtt>
1596
- <codeWorkHr>H24</codeWorkHr>
1597
- </Vtt>
1598
- <txtRmk>vor navaid</txtRmk>
1599
- </Vor>
1600
- <!-- NavigationalAid: [VOR:VOR] VDD / VOR/DME NAVAID -->
1601
- <Vor source="LF|GEN|0.0 FACTORY|0|0">
1602
- <VorUid>
1603
- <codeId>VDD</codeId>
1604
- <geoLat>47.85916667N</geoLat>
1605
- <geoLong>007.56000000E</geoLong>
1606
- </VorUid>
1607
- <OrgUid>
1608
- <txtName>FRANCE</txtName>
1609
- </OrgUid>
1610
- <txtName>VOR/DME NAVAID</txtName>
1611
- <codeType>VOR</codeType>
1612
- <valFreq>111</valFreq>
1613
- <uomFreq>MHZ</uomFreq>
1614
- <codeTypeNorth>TRUE</codeTypeNorth>
1615
- <codeDatum>WGE</codeDatum>
1616
- <valElev>500</valElev>
1617
- <uomDistVer>FT</uomDistVer>
1618
- <Vtt>
1619
- <codeWorkHr>H24</codeWorkHr>
1620
- </Vtt>
1621
- <txtRmk>vor/dme navaid</txtRmk>
1622
- </Vor>
1623
- <!-- NavigationalAid: [DME] VDD / VOR/DME NAVAID -->
1624
- <Dme>
1625
- <DmeUid>
1626
- <codeId>VDD</codeId>
1627
- <geoLat>47.85916667N</geoLat>
1628
- <geoLong>007.56000000E</geoLong>
1629
- </DmeUid>
1630
- <OrgUid>
1631
- <txtName>FRANCE</txtName>
1632
- </OrgUid>
1633
- <VorUid>
1634
- <codeId>VDD</codeId>
1635
- <geoLat>47.85916667N</geoLat>
1636
- <geoLong>007.56000000E</geoLong>
1637
- </VorUid>
1638
- <txtName>VOR/DME NAVAID</txtName>
1639
- <codeChannel>95X</codeChannel>
1640
- <codeDatum>WGE</codeDatum>
1641
- <valElev>500</valElev>
1642
- <uomDistVer>FT</uomDistVer>
1643
- <Dtt>
1644
- <codeWorkHr>H24</codeWorkHr>
1645
- </Dtt>
1646
- <txtRmk>vor/dme navaid</txtRmk>
1647
- </Dme>
1648
- <!-- NavigationalAid: [VOR:VOR] VTT / VORTAC NAVAID -->
1649
- <Vor source="LF|GEN|0.0 FACTORY|0|0">
1650
- <VorUid>
1651
- <codeId>VTT</codeId>
1652
- <geoLat>47.85916667N</geoLat>
1653
- <geoLong>007.56000000E</geoLong>
1654
- </VorUid>
1655
- <OrgUid>
1656
- <txtName>FRANCE</txtName>
1657
- </OrgUid>
1658
- <txtName>VORTAC NAVAID</txtName>
1659
- <codeType>VOR</codeType>
1660
- <valFreq>111</valFreq>
1661
- <uomFreq>MHZ</uomFreq>
1662
- <codeTypeNorth>TRUE</codeTypeNorth>
1663
- <codeDatum>WGE</codeDatum>
1664
- <valElev>500</valElev>
1665
- <uomDistVer>FT</uomDistVer>
1666
- <Vtt>
1667
- <codeWorkHr>H24</codeWorkHr>
1668
- </Vtt>
1669
- <txtRmk>vortac navaid</txtRmk>
1670
- </Vor>
1671
- <!-- NavigationalAid: [TACAN] VTT / VORTAC NAVAID -->
1672
- <Tcn>
1673
- <TcnUid>
1674
- <codeId>VTT</codeId>
1675
- <geoLat>47.85916667N</geoLat>
1676
- <geoLong>007.56000000E</geoLong>
1677
- </TcnUid>
1678
- <OrgUid>
1679
- <txtName>FRANCE</txtName>
1680
- </OrgUid>
1681
- <VorUid>
1682
- <codeId>VTT</codeId>
1683
- <geoLat>47.85916667N</geoLat>
1684
- <geoLong>007.56000000E</geoLong>
1685
- </VorUid>
1686
- <txtName>VORTAC NAVAID</txtName>
1687
- <codeChannel>29X</codeChannel>
1688
- <codeDatum>WGE</codeDatum>
1689
- <valElev>500</valElev>
1690
- <uomDistVer>FT</uomDistVer>
1691
- <Ttt>
1692
- <codeWorkHr>H24</codeWorkHr>
1693
- </Ttt>
1694
- <txtRmk>vortac navaid</txtRmk>
1695
- </Tcn>
1696
- <!-- Obstacle group: EIFFEL TOWER -->
1697
- <Ogr>
1698
- <OgrUid>
1699
- <txtName>EIFFEL TOWER</txtName>
1700
- <geoLat>48.85825000N</geoLat>
1701
- <geoLong>002.29458889E</geoLong>
1702
- </OgrUid>
1703
- <codeDatum>WGE</codeDatum>
1704
- <valGeoAccuracy>2</valGeoAccuracy>
1705
- <uomGeoAccuracy>M</uomGeoAccuracy>
1706
- <valElevAccuracy>3</valElevAccuracy>
1707
- <uomElevAccuracy>FT</uomElevAccuracy>
1708
- </Ogr>
1709
- <!-- Obstacle: [tower] 48.85825000N 002.29458889E EIFFEL TOWER -->
1710
- <Obs>
1711
- <ObsUid>
1712
- <OgrUid>
1713
- <txtName>EIFFEL TOWER</txtName>
1714
- <geoLat>48.85825000N</geoLat>
1715
- <geoLong>002.29458889E</geoLong>
1716
- </OgrUid>
1717
- <geoLat>48.85825000N</geoLat>
1718
- <geoLong>002.29458889E</geoLong>
1719
- </ObsUid>
1720
- <txtName>EIFFEL TOWER</txtName>
1721
- <codeType>TOWER</codeType>
1722
- <codeGroup>N</codeGroup>
1723
- <codeLgt>Y</codeLgt>
1724
- <txtDescrLgt>red strobes</txtDescrLgt>
1725
- <codeDatum>WGE</codeDatum>
1726
- <valElev>1187</valElev>
1727
- <valHgt>1063</valHgt>
1728
- <uomDistVer>FT</uomDistVer>
1729
- <codeHgtAccuracy>Y</codeHgtAccuracy>
1730
- <valRadius>88</valRadius>
1731
- <uomRadius>M</uomRadius>
1732
- <datetimeValidWef>2018-01-01T12:00:00+01:00</datetimeValidWef>
1733
- <datetimeValidTil>2019-01-01T12:00:00+01:00</datetimeValidTil>
1734
- <txtRmk>Temporary light installations (white strobes, gyro light etc)</txtRmk>
1735
- </Obs>
1736
- <!-- Obstacle group: MIRMANDE EOLIENNES -->
1737
- <Ogr>
1738
- <OgrUid>
1739
- <txtName>MIRMANDE EOLIENNES</txtName>
1740
- <geoLat>44.67501389N</geoLat>
1741
- <geoLong>004.87256667E</geoLong>
1742
- </OgrUid>
1743
- <codeDatum>WGE</codeDatum>
1744
- <valGeoAccuracy>50</valGeoAccuracy>
1745
- <uomGeoAccuracy>M</uomGeoAccuracy>
1746
- <valElevAccuracy>33</valElevAccuracy>
1747
- <uomElevAccuracy>FT</uomElevAccuracy>
1748
- <txtRmk>Extension planned</txtRmk>
1749
- </Ogr>
1750
- <!-- Obstacle: [wind_turbine] 44.67501389N 004.87256667E LA TEISSONIERE 1 -->
1751
- <Obs>
1752
- <ObsUid>
1753
- <OgrUid>
1754
- <txtName>MIRMANDE EOLIENNES</txtName>
1755
- <geoLat>44.67501389N</geoLat>
1756
- <geoLong>004.87256667E</geoLong>
1757
- </OgrUid>
1758
- <geoLat>44.67501389N</geoLat>
1759
- <geoLong>004.87256667E</geoLong>
1760
- </ObsUid>
1761
- <txtName>LA TEISSONIERE 1</txtName>
1762
- <codeType>WINDTURBINE</codeType>
1763
- <codeGroup>Y</codeGroup>
1764
- <codeLgt>N</codeLgt>
1765
- <codeMarking>N</codeMarking>
1766
- <codeDatum>WGE</codeDatum>
1767
- <valElev>1764</valElev>
1768
- <valHgt>262</valHgt>
1769
- <uomDistVer>FT</uomDistVer>
1770
- <codeHgtAccuracy>N</codeHgtAccuracy>
1771
- <valRadius>80</valRadius>
1772
- <uomRadius>M</uomRadius>
1773
- </Obs>
1774
- <!-- Obstacle: [wind_turbine] 44.67946667N 004.87381111E LA TEISSONIERE 2 -->
1775
- <Obs>
1776
- <ObsUid>
1777
- <OgrUid>
1778
- <txtName>MIRMANDE EOLIENNES</txtName>
1779
- <geoLat>44.67501389N</geoLat>
1780
- <geoLong>004.87256667E</geoLong>
1781
- </OgrUid>
1782
- <geoLat>44.67946667N</geoLat>
1783
- <geoLong>004.87381111E</geoLong>
1784
- </ObsUid>
1785
- <txtName>LA TEISSONIERE 2</txtName>
1786
- <codeType>WINDTURBINE</codeType>
1787
- <codeGroup>Y</codeGroup>
1788
- <codeLgt>N</codeLgt>
1789
- <codeMarking>N</codeMarking>
1790
- <codeDatum>WGE</codeDatum>
1791
- <valElev>1738</valElev>
1792
- <valHgt>262</valHgt>
1793
- <uomDistVer>FT</uomDistVer>
1794
- <codeHgtAccuracy>N</codeHgtAccuracy>
1795
- <valRadius>80</valRadius>
1796
- <uomRadius>M</uomRadius>
1797
- </Obs>
1798
- <!-- Obstacle group: DROITWICH LONGWAVE ANTENNA -->
1799
- <Ogr>
1800
- <OgrUid>
1801
- <txtName>DROITWICH LONGWAVE ANTENNA</txtName>
1802
- <geoLat>52.29639722N</geoLat>
1803
- <geoLong>002.10675278W</geoLong>
1804
- </OgrUid>
1805
- <codeDatum>WGE</codeDatum>
1806
- <valGeoAccuracy>0</valGeoAccuracy>
1807
- <uomGeoAccuracy>M</uomGeoAccuracy>
1808
- <valElevAccuracy>0</valElevAccuracy>
1809
- <uomElevAccuracy>FT</uomElevAccuracy>
1810
- <txtRmk>Destruction planned</txtRmk>
1811
- </Ogr>
1812
- <!-- Obstacle: [mast] 52.29639722N 002.10675278W DROITWICH LW NORTH -->
1813
- <Obs>
1814
- <ObsUid>
1815
- <OgrUid>
1816
- <txtName>DROITWICH LONGWAVE ANTENNA</txtName>
1817
- <geoLat>52.29639722N</geoLat>
1818
- <geoLong>002.10675278W</geoLong>
1819
- </OgrUid>
1820
- <geoLat>52.29639722N</geoLat>
1821
- <geoLong>002.10675278W</geoLong>
1822
- </ObsUid>
1823
- <txtName>DROITWICH LW NORTH</txtName>
1824
- <codeType>MAST</codeType>
1825
- <codeGroup>Y</codeGroup>
1826
- <codeLgt>N</codeLgt>
1827
- <codeMarking>N</codeMarking>
1828
- <codeDatum>WGE</codeDatum>
1829
- <valElev>848</valElev>
1830
- <valHgt>700</valHgt>
1831
- <uomDistVer>FT</uomDistVer>
1832
- <codeHgtAccuracy>Y</codeHgtAccuracy>
1833
- <valRadius>200</valRadius>
1834
- <uomRadius>M</uomRadius>
1835
- </Obs>
1836
- <!-- Obstacle: [mast] 52.29457778N 002.10568611W DROITWICH LW NORTH -->
1837
- <Obs>
1838
- <ObsUid>
1839
- <OgrUid>
1840
- <txtName>DROITWICH LONGWAVE ANTENNA</txtName>
1841
- <geoLat>52.29639722N</geoLat>
1842
- <geoLong>002.10675278W</geoLong>
1843
- </OgrUid>
1844
- <geoLat>52.29457778N</geoLat>
1845
- <geoLong>002.10568611W</geoLong>
1846
- </ObsUid>
1847
- <txtName>DROITWICH LW NORTH</txtName>
1848
- <codeType>MAST</codeType>
1849
- <codeGroup>Y</codeGroup>
1850
- <codeLgt>N</codeLgt>
1851
- <codeMarking>N</codeMarking>
1852
- <codeDatum>WGE</codeDatum>
1853
- <valElev>848</valElev>
1854
- <valHgt>700</valHgt>
1855
- <uomDistVer>FT</uomDistVer>
1856
- <codeHgtAccuracy>Y</codeHgtAccuracy>
1857
- <valRadius>200</valRadius>
1858
- <uomRadius>M</uomRadius>
1859
- <ObsUidLink>
1860
- <OgrUid>
1861
- <txtName>DROITWICH LONGWAVE ANTENNA</txtName>
1862
- <geoLat>52.29639722N</geoLat>
1863
- <geoLong>002.10675278W</geoLong>
1864
- </OgrUid>
1865
- <geoLat>52.29639722N</geoLat>
1866
- <geoLong>002.10675278W</geoLong>
1867
- </ObsUidLink>
1868
- <codeLinkType>CABLE</codeLinkType>
1869
- </Obs>
1870
- </OFMX-Snapshot>
1871
- END
1872
- end
1873
-
1874
- it "builds OFMX with one mid for every *Uid" do
1875
- AIXM.ofmx!
1876
- AIXM.config.mid_region = 'LF'
1877
- xml = subject.to_xml
1878
- #require 'pry'; binding.pry
1879
- count_mid = xml.scan(/mid=/).count
1880
- count_uid = xml.scan(/<\w+Uid[\s>]/).count
1881
- _(count_mid).must_equal count_uid
1882
- end
1883
- end
1884
- end