aixm 0.1.0 → 0.1.3

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.
Files changed (40) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +29 -1
  3. data/Guardfile +1 -1
  4. data/README.md +146 -17
  5. data/aixm.gemspec +3 -1
  6. data/lib/aixm.rb +12 -10
  7. data/lib/aixm/component/base.rb +6 -0
  8. data/lib/aixm/component/class_layer.rb +49 -0
  9. data/lib/aixm/component/geometry.rb +73 -0
  10. data/lib/aixm/component/geometry/arc.rb +53 -0
  11. data/lib/aixm/component/geometry/border.rb +49 -0
  12. data/lib/aixm/component/geometry/circle.rb +56 -0
  13. data/lib/aixm/component/geometry/point.rb +42 -0
  14. data/lib/aixm/component/schedule.rb +45 -0
  15. data/lib/aixm/{vertical/limits.rb → component/vertical_limits.rb} +9 -14
  16. data/lib/aixm/document.rb +30 -19
  17. data/lib/aixm/feature/airspace.rb +60 -29
  18. data/lib/aixm/refinements.rb +49 -2
  19. data/lib/aixm/shortcuts.rb +30 -0
  20. data/lib/aixm/version.rb +1 -1
  21. data/spec/factory.rb +42 -25
  22. data/spec/lib/aixm/component/class_layer_spec.rb +74 -0
  23. data/spec/lib/aixm/{horizontal → component/geometry}/arc_spec.rb +11 -11
  24. data/spec/lib/aixm/component/geometry/border_spec.rb +30 -0
  25. data/spec/lib/aixm/{horizontal → component/geometry}/circle_spec.rb +8 -8
  26. data/spec/lib/aixm/{horizontal → component/geometry}/point_spec.rb +7 -7
  27. data/spec/lib/aixm/{geometry_spec.rb → component/geometry_spec.rb} +39 -40
  28. data/spec/lib/aixm/component/schedule_spec.rb +33 -0
  29. data/spec/lib/aixm/{vertical/limits_spec.rb → component/vertical_limits_spec.rb} +10 -10
  30. data/spec/lib/aixm/document_spec.rb +97 -36
  31. data/spec/lib/aixm/feature/airspace_spec.rb +230 -71
  32. data/spec/lib/aixm/refinements_spec.rb +52 -12
  33. metadata +30 -23
  34. data/lib/aixm/constants.rb +0 -6
  35. data/lib/aixm/geometry.rb +0 -71
  36. data/lib/aixm/horizontal/arc.rb +0 -50
  37. data/lib/aixm/horizontal/border.rb +0 -45
  38. data/lib/aixm/horizontal/circle.rb +0 -53
  39. data/lib/aixm/horizontal/point.rb +0 -39
  40. data/spec/lib/aixm/horizontal/border_spec.rb +0 -47
@@ -1,75 +1,74 @@
1
- require_relative '../../spec_helper'
2
-
3
- describe AIXM::Geometry do
1
+ require_relative '../../../spec_helper'
4
2
 
3
+ describe AIXM::Component::Geometry do
5
4
  context "singularity" do
6
5
  subject do
7
- AIXM::Geometry.new
6
+ AIXM::Component::Geometry.new
8
7
  end
9
8
 
10
9
  it "must fail validation" do
11
10
  subject.wont_be :circle?
12
11
  subject.wont_be :closed_shape?
13
- subject.wont_be :valid?
12
+ subject.wont_be :complete?
14
13
  end
15
14
  end
16
15
 
17
16
  context "point" do
18
17
  subject do
19
- AIXM::Geometry.new.tap do |geometry|
20
- geometry << AIXM::Horizontal::Point.new(xy: AIXM::XY.new(lat: 11, long: 22))
18
+ AIXM::Component::Geometry.new.tap do |geometry|
19
+ geometry << AIXM::Component::Geometry::Point.new(xy: AIXM::XY.new(lat: 11, long: 22))
21
20
  end
22
21
  end
23
22
 
24
23
  it "must fail validation" do
25
24
  subject.wont_be :circle?
26
25
  subject.wont_be :closed_shape?
27
- subject.wont_be :valid?
26
+ subject.wont_be :complete?
28
27
  end
29
28
  end
30
29
 
31
30
  context "line" do
32
31
  subject do
33
- AIXM::Geometry.new.tap do |geometry|
34
- geometry << AIXM::Horizontal::Point.new(xy: AIXM::XY.new(lat: 11, long: 22))
35
- geometry << AIXM::Horizontal::Point.new(xy: AIXM::XY.new(lat: 22, long: 33))
32
+ AIXM::Component::Geometry.new.tap do |geometry|
33
+ geometry << AIXM::Component::Geometry::Point.new(xy: AIXM::XY.new(lat: 11, long: 22))
34
+ geometry << AIXM::Component::Geometry::Point.new(xy: AIXM::XY.new(lat: 22, long: 33))
36
35
  end
37
36
  end
38
37
 
39
38
  it "must fail validation" do
40
39
  subject.wont_be :circle?
41
40
  subject.wont_be :closed_shape?
42
- subject.wont_be :valid?
41
+ subject.wont_be :complete?
43
42
  end
44
43
  end
45
44
 
46
45
  context "polygon" do
47
46
  subject do
48
- AIXM::Geometry.new.tap do |geometry|
49
- geometry << AIXM::Horizontal::Point.new(xy: AIXM::XY.new(lat: 11, long: 22))
50
- geometry << AIXM::Horizontal::Point.new(xy: AIXM::XY.new(lat: 22, long: 33))
47
+ AIXM::Component::Geometry.new.tap do |geometry|
48
+ geometry << AIXM::Component::Geometry::Point.new(xy: AIXM::XY.new(lat: 11, long: 22))
49
+ geometry << AIXM::Component::Geometry::Point.new(xy: AIXM::XY.new(lat: 22, long: 33))
51
50
  end
52
51
  end
53
52
 
54
53
  it "must recognize unclosed" do
55
54
  subject.wont_be :circle?
56
55
  subject.wont_be :closed_shape?
57
- subject.wont_be :valid?
56
+ subject.wont_be :complete?
58
57
  end
59
58
 
60
59
  it "must recognize closed" do
61
- subject << AIXM::Horizontal::Point.new(xy: AIXM::XY.new(lat: 11, long: 22))
60
+ subject << AIXM::Component::Geometry::Point.new(xy: AIXM::XY.new(lat: 11, long: 22))
62
61
  subject.wont_be :circle?
63
62
  subject.must_be :closed_shape?
64
- subject.must_be :valid?
63
+ subject.must_be :complete?
65
64
  end
66
65
 
67
66
  it "must return elements" do
68
- subject.horizontals.count.must_equal 2
67
+ subject.segments.count.must_equal 2
69
68
  end
70
69
 
71
70
  it "must return digest of payload" do
72
- subject.to_digest.must_equal '281EE1FA'
71
+ subject.to_digest.must_equal 310635400
73
72
  end
74
73
 
75
74
  it "must build valid XML" do
@@ -92,23 +91,23 @@ describe AIXM::Geometry do
92
91
 
93
92
  context "arc" do
94
93
  subject do
95
- AIXM::Geometry.new.tap do |geometry|
96
- geometry << AIXM::Horizontal::Arc.new(xy: AIXM::XY.new(lat: 11, long: 22), center_xy: AIXM::XY.new(lat: 10, long: 20), clockwise: true)
97
- geometry << AIXM::Horizontal::Point.new(xy: AIXM::XY.new(lat: 22, long: 33))
94
+ AIXM::Component::Geometry.new.tap do |geometry|
95
+ geometry << AIXM::Component::Geometry::Arc.new(xy: AIXM::XY.new(lat: 11, long: 22), center_xy: AIXM::XY.new(lat: 10, long: 20), clockwise: true)
96
+ geometry << AIXM::Component::Geometry::Point.new(xy: AIXM::XY.new(lat: 22, long: 33))
98
97
  end
99
98
  end
100
99
 
101
100
  it "must recognize unclosed" do
102
101
  subject.wont_be :circle?
103
102
  subject.wont_be :closed_shape?
104
- subject.wont_be :valid?
103
+ subject.wont_be :complete?
105
104
  end
106
105
 
107
106
  it "must recognize closed" do
108
- subject << AIXM::Horizontal::Point.new(xy: AIXM::XY.new(lat: 11, long: 22))
107
+ subject << AIXM::Component::Geometry::Point.new(xy: AIXM::XY.new(lat: 11, long: 22))
109
108
  subject.wont_be :circle?
110
109
  subject.must_be :closed_shape?
111
- subject.must_be :valid?
110
+ subject.must_be :complete?
112
111
  end
113
112
 
114
113
  it "must build valid XML" do
@@ -131,29 +130,29 @@ describe AIXM::Geometry do
131
130
  end
132
131
 
133
132
  it "must return digest of payload" do
134
- subject.to_digest.must_equal '8DC81708'
133
+ subject.to_digest.must_equal 8205396
135
134
  end
136
135
  end
137
136
 
138
137
  context "border" do
139
138
  subject do
140
- AIXM::Geometry.new.tap do |geometry|
141
- geometry << AIXM::Horizontal::Border.new(xy: AIXM::XY.new(lat: 11, long: 22), name: 'foobar')
142
- geometry << AIXM::Horizontal::Point.new(xy: AIXM::XY.new(lat: 22, long: 33))
139
+ AIXM::Component::Geometry.new.tap do |geometry|
140
+ geometry << AIXM::Component::Geometry::Border.new(xy: AIXM::XY.new(lat: 11, long: 22), name: 'foobar')
141
+ geometry << AIXM::Component::Geometry::Point.new(xy: AIXM::XY.new(lat: 22, long: 33))
143
142
  end
144
143
  end
145
144
 
146
145
  it "must recognize unclosed" do
147
146
  subject.wont_be :circle?
148
147
  subject.wont_be :closed_shape?
149
- subject.wont_be :valid?
148
+ subject.wont_be :complete?
150
149
  end
151
150
 
152
151
  it "must recognize closed" do
153
- subject << AIXM::Horizontal::Point.new(xy: AIXM::XY.new(lat: 11, long: 22))
152
+ subject << AIXM::Component::Geometry::Point.new(xy: AIXM::XY.new(lat: 11, long: 22))
154
153
  subject.wont_be :circle?
155
154
  subject.must_be :closed_shape?
156
- subject.must_be :valid?
155
+ subject.must_be :complete?
157
156
  end
158
157
 
159
158
  it "must build valid XML" do
@@ -174,28 +173,28 @@ describe AIXM::Geometry do
174
173
  end
175
174
 
176
175
  it "must return digest of payload" do
177
- subject.to_digest.must_equal 'F208007C'
176
+ subject.to_digest.must_equal 376662362
178
177
  end
179
178
  end
180
179
 
181
180
  context "circle" do
182
181
  subject do
183
- AIXM::Geometry.new.tap do |geometry|
184
- geometry << AIXM::Horizontal::Circle.new(center_xy: AIXM::XY.new(lat: 11, long: 22), radius: 10)
182
+ AIXM::Component::Geometry.new.tap do |geometry|
183
+ geometry << AIXM::Component::Geometry::Circle.new(center_xy: AIXM::XY.new(lat: 11, long: 22), radius: 10)
185
184
  end
186
185
  end
187
186
 
188
187
  it "must pass validation" do
189
188
  subject.must_be :circle?
190
189
  subject.wont_be :closed_shape?
191
- subject.must_be :valid?
190
+ subject.must_be :complete?
192
191
  end
193
192
 
194
193
  it "must fail validation when additional elements are present" do
195
- subject << AIXM::Horizontal::Point.new(xy: AIXM::XY.new(lat: 11, long: 22))
194
+ subject << AIXM::Component::Geometry::Point.new(xy: AIXM::XY.new(lat: 11, long: 22))
196
195
  subject.wont_be :circle?
197
196
  subject.wont_be :closed_shape?
198
- subject.wont_be :valid?
197
+ subject.wont_be :complete?
199
198
  end
200
199
 
201
200
  it "must build valid XML" do
@@ -212,7 +211,7 @@ describe AIXM::Geometry do
212
211
  end
213
212
 
214
213
  it "must return digest of payload" do
215
- subject.to_digest.must_equal 'CCBB63FD'
214
+ subject.to_digest.must_equal 141059998
216
215
  end
217
216
  end
218
217
  end
@@ -0,0 +1,33 @@
1
+ require_relative '../../../spec_helper'
2
+
3
+ describe AIXM::Component::Schedule do
4
+ describe :initialize do
5
+ it "won't accept invalid arguments" do
6
+ -> { AIXM::Component::Schedule.new(code: 'foobar') }.must_raise ArgumentError
7
+ end
8
+
9
+ it "must accept explicit codes" do
10
+ AIXM::Component::Schedule.new(code: :sunrise_to_sunset).code.must_equal :HJ
11
+ end
12
+
13
+ it "must accept short codes" do
14
+ AIXM::Component::Schedule.new(code: :H24).code.must_equal :H24
15
+ end
16
+ end
17
+
18
+ describe :to_digest do
19
+ it "must return digest of payload" do
20
+ subject = AIXM::Component::Schedule.new(code: :H24)
21
+ subject.to_digest.must_equal 962036587
22
+ end
23
+ end
24
+
25
+ describe :to_xml do
26
+ it "must build correct XML" do
27
+ subject = AIXM::Component::Schedule.new(code: :H24)
28
+ subject.to_xml.must_equal <<~END
29
+ <codeWorkHr>H24</codeWorkHr>
30
+ END
31
+ end
32
+ end
33
+ end
@@ -1,29 +1,29 @@
1
1
  require_relative '../../../spec_helper'
2
2
 
3
- describe AIXM::Vertical::Limits do
3
+ describe AIXM::Component::VerticalLimits do
4
4
  describe :initialize do
5
5
  it "won't accept invalid arguments" do
6
6
  z = AIXM::Z.new(alt: 1000, code: :QNH)
7
- -> { AIXM::Vertical::Limits.new(upper_z: 0, lower_z: z, max_z: z, min_z: z) }.must_raise ArgumentError
8
- -> { AIXM::Vertical::Limits.new(upper_z: z, lower_z: 0, max_z: z, min_z: z) }.must_raise ArgumentError
9
- -> { AIXM::Vertical::Limits.new(upper_z: z, lower_z: z, max_z: 0, min_z: z) }.must_raise ArgumentError
10
- -> { AIXM::Vertical::Limits.new(upper_z: z, lower_z: z, max_z: z, min_z: 0) }.must_raise ArgumentError
7
+ -> { AIXM::Component::VerticalLimits.new(upper_z: 0, lower_z: z, max_z: z, min_z: z) }.must_raise ArgumentError
8
+ -> { AIXM::Component::VerticalLimits.new(upper_z: z, lower_z: 0, max_z: z, min_z: z) }.must_raise ArgumentError
9
+ -> { AIXM::Component::VerticalLimits.new(upper_z: z, lower_z: z, max_z: 0, min_z: z) }.must_raise ArgumentError
10
+ -> { AIXM::Component::VerticalLimits.new(upper_z: z, lower_z: z, max_z: z, min_z: 0) }.must_raise ArgumentError
11
11
  end
12
12
  end
13
13
 
14
14
  describe :to_digest do
15
15
  it "must return digest of payload" do
16
- subject = AIXM::Vertical::Limits.new(
16
+ subject = AIXM::Component::VerticalLimits.new(
17
17
  upper_z: AIXM::Z.new(alt: 2000, code: :QNH),
18
18
  lower_z: AIXM::GROUND
19
19
  )
20
- subject.to_digest.must_equal 'ABF2A04F'
20
+ subject.to_digest.must_equal 929399130
21
21
  end
22
22
  end
23
23
 
24
24
  describe :to_xml do
25
25
  it "must build correct XML with only upper_z and lower_z" do
26
- subject = AIXM::Vertical::Limits.new(
26
+ subject = AIXM::Component::VerticalLimits.new(
27
27
  upper_z: AIXM::Z.new(alt: 2000, code: :QNH),
28
28
  lower_z: AIXM::GROUND
29
29
  )
@@ -38,7 +38,7 @@ describe AIXM::Vertical::Limits do
38
38
  end
39
39
 
40
40
  it "must build correct XML with additional max_z" do
41
- subject = AIXM::Vertical::Limits.new(
41
+ subject = AIXM::Component::VerticalLimits.new(
42
42
  upper_z: AIXM::Z.new(alt: 65, code: :QNE),
43
43
  lower_z: AIXM::Z.new(alt: 1000, code: :QFE),
44
44
  max_z: AIXM::Z.new(alt: 6000, code: :QNH)
@@ -57,7 +57,7 @@ describe AIXM::Vertical::Limits do
57
57
  end
58
58
 
59
59
  it "must build correct XML with additional min_z" do
60
- subject = AIXM::Vertical::Limits.new(
60
+ subject = AIXM::Component::VerticalLimits.new(
61
61
  upper_z: AIXM::Z.new(alt: 65, code: :QNE),
62
62
  lower_z: AIXM::Z.new(alt: 45, code: :QNE),
63
63
  min_z: AIXM::Z.new(alt: 3000, code: :QNH)
@@ -1,13 +1,45 @@
1
1
  require_relative '../../spec_helper'
2
2
 
3
3
  describe AIXM::Document do
4
+ describe :initialize do
5
+ it "won't accept invalid arguments" do
6
+ -> { AIXM::Document.new(created_at: 0) }.must_raise ArgumentError
7
+ -> { AIXM::Document.new(created_at: 'foobar') }.must_raise ArgumentError
8
+ -> { AIXM::Document.new(effective_at: 0) }.must_raise ArgumentError
9
+ -> { AIXM::Document.new(effective_at: 'foobar') }.must_raise ArgumentError
10
+ end
11
+
12
+ it "must accept strings" do
13
+ string = '2018-01-01 12:00:00 +0100'
14
+ AIXM::Document.new(created_at: string).created_at.must_equal Time.parse(string)
15
+ AIXM::Document.new(effective_at: string).effective_at.must_equal Time.parse(string)
16
+ end
17
+
18
+ it "must accept dates" do
19
+ date = Date.parse('2018-01-01')
20
+ AIXM::Document.new(created_at: date).created_at.must_equal date.to_time
21
+ AIXM::Document.new(effective_at: date).effective_at.must_equal date.to_time
22
+ end
23
+
24
+ it "must accept times" do
25
+ time = Time.parse('2018-01-01 12:00:00 +0100')
26
+ AIXM::Document.new(created_at: time).created_at.must_equal time
27
+ AIXM::Document.new(effective_at: time).effective_at.must_equal time
28
+ end
29
+
30
+ it "must accept nils" do
31
+ AIXM::Document.new(created_at: nil).created_at.must_be :nil?
32
+ AIXM::Document.new(effective_at: nil).effective_at.must_be :nil?
33
+ end
34
+ end
35
+
4
36
  context "incomplete" do
5
37
  subject do
6
38
  AIXM::Document.new
7
39
  end
8
40
 
9
41
  it "must fail validation" do
10
- subject.wont_be :valid?
42
+ subject.wont_be :complete?
11
43
  end
12
44
  end
13
45
 
@@ -21,19 +53,22 @@ describe AIXM::Document do
21
53
  end
22
54
 
23
55
  it "must pass validation" do
24
- subject.must_be :valid?
56
+ subject.must_be :complete?
25
57
  end
26
58
 
27
59
  it "must build correct XML without extensions" do
28
- subject.to_xml.must_equal <<~END
60
+ subject.to_xml.must_equal <<~"END"
29
61
  <?xml version="1.0" encoding="UTF-8"?>
30
- <AIXM-Snapshot xmlns:xsi="http://www.aixm.aero/schema/4.5/AIXM-Snapshot.xsd" version="4.5" origin="AIXM 0.1.0 Ruby gem" created="2018-01-18T12:00:00+01:00" effective="2018-01-18T12:00:00+01:00">
62
+ <AIXM-Snapshot xmlns:xsi="http://www.aixm.aero/schema/4.5/AIXM-Snapshot.xsd" version="4.5" origin="AIXM #{AIXM::VERSION} Ruby gem" created="2018-01-18T12:00:00+01:00" effective="2018-01-18T12:00:00+01:00">
63
+ <!-- Airspace: [D] POLYGON AIRSPACE -->
31
64
  <Ase>
32
- <AseUid mid="7F466CA0">
65
+ <AseUid mid="202650074">
33
66
  <codeType>D</codeType>
34
- <codeId>7F466CA0</codeId>
67
+ <codeId>202650074</codeId>
35
68
  </AseUid>
69
+ <txtLocalType>POLYGON</txtLocalType>
36
70
  <txtName>POLYGON AIRSPACE</txtName>
71
+ <codeClass>C</codeClass>
37
72
  <codeDistVerUpper>STD</codeDistVerUpper>
38
73
  <valDistVerUpper>65</valDistVerUpper>
39
74
  <uomDistVerUpper>FL</uomDistVerUpper>
@@ -46,13 +81,16 @@ describe AIXM::Document do
46
81
  <codeDistVerMnm>HEI</codeDistVerMnm>
47
82
  <valDistVerMnm>3000</valDistVerMnm>
48
83
  <uomDistVerMnm>FT</uomDistVerMnm>
84
+ <Att>
85
+ <codeWorkHr>H24</codeWorkHr>
86
+ </Att>
49
87
  <txtRmk>polygon airspace</txtRmk>
50
88
  </Ase>
51
89
  <Abd>
52
90
  <AbdUid>
53
- <AseUid mid="7F466CA0">
91
+ <AseUid mid="202650074">
54
92
  <codeType>D</codeType>
55
- <codeId>7F466CA0</codeId>
93
+ <codeId>202650074</codeId>
56
94
  </AseUid>
57
95
  </AbdUid>
58
96
  <Avx>
@@ -76,12 +114,15 @@ describe AIXM::Document do
76
114
  <codeDatum>WGE</codeDatum>
77
115
  </Avx>
78
116
  </Abd>
117
+ <!-- Airspace: [D] CIRCLE AIRSPACE -->
79
118
  <Ase>
80
- <AseUid mid="E1115E8A">
119
+ <AseUid mid="646302629">
81
120
  <codeType>D</codeType>
82
- <codeId>E1115E8A</codeId>
121
+ <codeId>646302629</codeId>
83
122
  </AseUid>
123
+ <txtLocalType>CIRCLE</txtLocalType>
84
124
  <txtName>CIRCLE AIRSPACE</txtName>
125
+ <codeClass>C</codeClass>
85
126
  <codeDistVerUpper>STD</codeDistVerUpper>
86
127
  <valDistVerUpper>65</valDistVerUpper>
87
128
  <uomDistVerUpper>FL</uomDistVerUpper>
@@ -94,13 +135,16 @@ describe AIXM::Document do
94
135
  <codeDistVerMnm>HEI</codeDistVerMnm>
95
136
  <valDistVerMnm>3000</valDistVerMnm>
96
137
  <uomDistVerMnm>FT</uomDistVerMnm>
138
+ <Att>
139
+ <codeWorkHr>H24</codeWorkHr>
140
+ </Att>
97
141
  <txtRmk>circle airspace</txtRmk>
98
142
  </Ase>
99
143
  <Abd>
100
144
  <AbdUid>
101
- <AseUid mid="E1115E8A">
145
+ <AseUid mid="646302629">
102
146
  <codeType>D</codeType>
103
- <codeId>E1115E8A</codeId>
147
+ <codeId>646302629</codeId>
104
148
  </AseUid>
105
149
  </AbdUid>
106
150
  <Avx>
@@ -117,15 +161,18 @@ describe AIXM::Document do
117
161
  end
118
162
 
119
163
  it "must build correct XML with OFM extensions" do
120
- subject.to_xml(:OFM).must_equal <<~END
164
+ subject.to_xml(:OFM).must_equal <<~"END"
121
165
  <?xml version="1.0" encoding="UTF-8"?>
122
- <AIXM-Snapshot xmlns:xsi="http://www.aixm.aero/schema/4.5/AIXM-Snapshot.xsd" version="4.5 + OFM extensions of version 0.1" origin="AIXM 0.1.0 Ruby gem" created="2018-01-18T12:00:00+01:00" effective="2018-01-18T12:00:00+01:00">
123
- <Ase>
124
- <AseUid mid="7F466CA0">
166
+ <AIXM-Snapshot xmlns:xsi="http://www.aixm.aero/schema/4.5/AIXM-Snapshot.xsd" version="4.5 + OFM extensions of version 0.1" origin="AIXM #{AIXM::VERSION} Ruby gem" created="2018-01-18T12:00:00+01:00" effective="2018-01-18T12:00:00+01:00">
167
+ <!-- Airspace: [D] POLYGON AIRSPACE -->
168
+ <Ase xt_classLayersAvail="false">
169
+ <AseUid mid="202650074" newEntity="true">
125
170
  <codeType>D</codeType>
126
- <codeId>7F466CA0</codeId>
171
+ <codeId>202650074</codeId>
127
172
  </AseUid>
173
+ <txtLocalType>POLYGON</txtLocalType>
128
174
  <txtName>POLYGON AIRSPACE</txtName>
175
+ <codeClass>C</codeClass>
129
176
  <codeDistVerUpper>STD</codeDistVerUpper>
130
177
  <valDistVerUpper>65</valDistVerUpper>
131
178
  <uomDistVerUpper>FL</uomDistVerUpper>
@@ -138,42 +185,52 @@ describe AIXM::Document do
138
185
  <codeDistVerMnm>HEI</codeDistVerMnm>
139
186
  <valDistVerMnm>3000</valDistVerMnm>
140
187
  <uomDistVerMnm>FT</uomDistVerMnm>
188
+ <Att>
189
+ <codeWorkHr>H24</codeWorkHr>
190
+ </Att>
141
191
  <txtRmk>polygon airspace</txtRmk>
192
+ <xt_selAvail>false</xt_selAvail>
142
193
  </Ase>
143
194
  <Abd>
144
195
  <AbdUid>
145
- <AseUid mid="7F466CA0">
196
+ <AseUid mid="202650074" newEntity="true">
146
197
  <codeType>D</codeType>
147
- <codeId>7F466CA0</codeId>
198
+ <codeId>202650074</codeId>
148
199
  </AseUid>
149
200
  </AbdUid>
150
201
  <Avx>
151
202
  <codeType>CWA</codeType>
152
- <geoLat>475133.00N</geoLat>
153
- <geoLong>0073336.00E</geoLong>
203
+ <geoLat>47.85916667N</geoLat>
204
+ <geoLong>7.56000000E</geoLong>
154
205
  <codeDatum>WGE</codeDatum>
155
- <geoLatArc>475415.00N</geoLatArc>
156
- <geoLongArc>0073348.00E</geoLongArc>
206
+ <geoLatArc>47.90416667N</geoLatArc>
207
+ <geoLongArc>7.56333333E</geoLongArc>
157
208
  </Avx>
158
209
  <Avx>
159
210
  <codeType>FNT</codeType>
160
- <geoLat>475637.00N</geoLat>
161
- <geoLong>0073545.00E</geoLong>
211
+ <geoLat>47.94361111N</geoLat>
212
+ <geoLong>7.59583333E</geoLong>
162
213
  <codeDatum>WGE</codeDatum>
214
+ <GbrUid>
215
+ <txtName>FRANCE_GERMANY</txtName>
216
+ </GbrUid>
163
217
  </Avx>
164
218
  <Avx>
165
219
  <codeType>GRC</codeType>
166
- <geoLat>475133.00N</geoLat>
167
- <geoLong>0073336.00E</geoLong>
220
+ <geoLat>47.85916667N</geoLat>
221
+ <geoLong>7.56000000E</geoLong>
168
222
  <codeDatum>WGE</codeDatum>
169
223
  </Avx>
170
224
  </Abd>
171
- <Ase>
172
- <AseUid mid="E1115E8A">
225
+ <!-- Airspace: [D] CIRCLE AIRSPACE -->
226
+ <Ase xt_classLayersAvail="false">
227
+ <AseUid mid="646302629" newEntity="true">
173
228
  <codeType>D</codeType>
174
- <codeId>E1115E8A</codeId>
229
+ <codeId>646302629</codeId>
175
230
  </AseUid>
231
+ <txtLocalType>CIRCLE</txtLocalType>
176
232
  <txtName>CIRCLE AIRSPACE</txtName>
233
+ <codeClass>C</codeClass>
177
234
  <codeDistVerUpper>STD</codeDistVerUpper>
178
235
  <valDistVerUpper>65</valDistVerUpper>
179
236
  <uomDistVerUpper>FL</uomDistVerUpper>
@@ -186,22 +243,26 @@ describe AIXM::Document do
186
243
  <codeDistVerMnm>HEI</codeDistVerMnm>
187
244
  <valDistVerMnm>3000</valDistVerMnm>
188
245
  <uomDistVerMnm>FT</uomDistVerMnm>
246
+ <Att>
247
+ <codeWorkHr>H24</codeWorkHr>
248
+ </Att>
189
249
  <txtRmk>circle airspace</txtRmk>
250
+ <xt_selAvail>false</xt_selAvail>
190
251
  </Ase>
191
252
  <Abd>
192
253
  <AbdUid>
193
- <AseUid mid="E1115E8A">
254
+ <AseUid mid="646302629" newEntity="true">
194
255
  <codeType>D</codeType>
195
- <codeId>E1115E8A</codeId>
256
+ <codeId>646302629</codeId>
196
257
  </AseUid>
197
258
  </AbdUid>
198
259
  <Avx>
199
260
  <codeType>CWA</codeType>
200
- <geoLat>474023.76N</geoLat>
201
- <geoLong>0045300.00E</geoLong>
261
+ <geoLat>47.67326549N</geoLat>
262
+ <geoLong>4.88333333E</geoLong>
202
263
  <codeDatum>WGE</codeDatum>
203
- <geoLatArc>473500.00N</geoLatArc>
204
- <geoLongArc>0045300.00E</geoLongArc>
264
+ <geoLatArc>47.58333333N</geoLatArc>
265
+ <geoLongArc>4.88333333E</geoLongArc>
205
266
  </Avx>
206
267
  </Abd>
207
268
  </AIXM-Snapshot>