aixm 0.1.0 → 0.1.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +29 -1
- data/Guardfile +1 -1
- data/README.md +146 -17
- data/aixm.gemspec +3 -1
- data/lib/aixm.rb +12 -10
- data/lib/aixm/component/base.rb +6 -0
- data/lib/aixm/component/class_layer.rb +49 -0
- data/lib/aixm/component/geometry.rb +73 -0
- data/lib/aixm/component/geometry/arc.rb +53 -0
- data/lib/aixm/component/geometry/border.rb +49 -0
- data/lib/aixm/component/geometry/circle.rb +56 -0
- data/lib/aixm/component/geometry/point.rb +42 -0
- data/lib/aixm/component/schedule.rb +45 -0
- data/lib/aixm/{vertical/limits.rb → component/vertical_limits.rb} +9 -14
- data/lib/aixm/document.rb +30 -19
- data/lib/aixm/feature/airspace.rb +60 -29
- data/lib/aixm/refinements.rb +49 -2
- data/lib/aixm/shortcuts.rb +30 -0
- data/lib/aixm/version.rb +1 -1
- data/spec/factory.rb +42 -25
- data/spec/lib/aixm/component/class_layer_spec.rb +74 -0
- data/spec/lib/aixm/{horizontal → component/geometry}/arc_spec.rb +11 -11
- data/spec/lib/aixm/component/geometry/border_spec.rb +30 -0
- data/spec/lib/aixm/{horizontal → component/geometry}/circle_spec.rb +8 -8
- data/spec/lib/aixm/{horizontal → component/geometry}/point_spec.rb +7 -7
- data/spec/lib/aixm/{geometry_spec.rb → component/geometry_spec.rb} +39 -40
- data/spec/lib/aixm/component/schedule_spec.rb +33 -0
- data/spec/lib/aixm/{vertical/limits_spec.rb → component/vertical_limits_spec.rb} +10 -10
- data/spec/lib/aixm/document_spec.rb +97 -36
- data/spec/lib/aixm/feature/airspace_spec.rb +230 -71
- data/spec/lib/aixm/refinements_spec.rb +52 -12
- metadata +30 -23
- data/lib/aixm/constants.rb +0 -6
- data/lib/aixm/geometry.rb +0 -71
- data/lib/aixm/horizontal/arc.rb +0 -50
- data/lib/aixm/horizontal/border.rb +0 -45
- data/lib/aixm/horizontal/circle.rb +0 -53
- data/lib/aixm/horizontal/point.rb +0 -39
- data/spec/lib/aixm/horizontal/border_spec.rb +0 -47
@@ -1,75 +1,74 @@
|
|
1
|
-
require_relative '
|
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 :
|
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::
|
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 :
|
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::
|
35
|
-
geometry << AIXM::
|
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 :
|
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::
|
50
|
-
geometry << AIXM::
|
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 :
|
56
|
+
subject.wont_be :complete?
|
58
57
|
end
|
59
58
|
|
60
59
|
it "must recognize closed" do
|
61
|
-
subject << AIXM::
|
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 :
|
63
|
+
subject.must_be :complete?
|
65
64
|
end
|
66
65
|
|
67
66
|
it "must return elements" do
|
68
|
-
subject.
|
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
|
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::
|
97
|
-
geometry << AIXM::
|
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 :
|
103
|
+
subject.wont_be :complete?
|
105
104
|
end
|
106
105
|
|
107
106
|
it "must recognize closed" do
|
108
|
-
subject << AIXM::
|
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 :
|
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
|
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::
|
142
|
-
geometry << AIXM::
|
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 :
|
148
|
+
subject.wont_be :complete?
|
150
149
|
end
|
151
150
|
|
152
151
|
it "must recognize closed" do
|
153
|
-
subject << AIXM::
|
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 :
|
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
|
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::
|
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 :
|
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::
|
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 :
|
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
|
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::
|
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::
|
8
|
-
-> { AIXM::
|
9
|
-
-> { AIXM::
|
10
|
-
-> { AIXM::
|
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::
|
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
|
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::
|
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::
|
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::
|
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 :
|
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 :
|
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
|
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="
|
65
|
+
<AseUid mid="202650074">
|
33
66
|
<codeType>D</codeType>
|
34
|
-
<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="
|
91
|
+
<AseUid mid="202650074">
|
54
92
|
<codeType>D</codeType>
|
55
|
-
<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="
|
119
|
+
<AseUid mid="646302629">
|
81
120
|
<codeType>D</codeType>
|
82
|
-
<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="
|
145
|
+
<AseUid mid="646302629">
|
102
146
|
<codeType>D</codeType>
|
103
|
-
<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
|
123
|
-
|
124
|
-
|
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>
|
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="
|
196
|
+
<AseUid mid="202650074" newEntity="true">
|
146
197
|
<codeType>D</codeType>
|
147
|
-
<codeId>
|
198
|
+
<codeId>202650074</codeId>
|
148
199
|
</AseUid>
|
149
200
|
</AbdUid>
|
150
201
|
<Avx>
|
151
202
|
<codeType>CWA</codeType>
|
152
|
-
<geoLat>
|
153
|
-
<geoLong>
|
203
|
+
<geoLat>47.85916667N</geoLat>
|
204
|
+
<geoLong>7.56000000E</geoLong>
|
154
205
|
<codeDatum>WGE</codeDatum>
|
155
|
-
<geoLatArc>
|
156
|
-
<geoLongArc>
|
206
|
+
<geoLatArc>47.90416667N</geoLatArc>
|
207
|
+
<geoLongArc>7.56333333E</geoLongArc>
|
157
208
|
</Avx>
|
158
209
|
<Avx>
|
159
210
|
<codeType>FNT</codeType>
|
160
|
-
<geoLat>
|
161
|
-
<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>
|
167
|
-
<geoLong>
|
220
|
+
<geoLat>47.85916667N</geoLat>
|
221
|
+
<geoLong>7.56000000E</geoLong>
|
168
222
|
<codeDatum>WGE</codeDatum>
|
169
223
|
</Avx>
|
170
224
|
</Abd>
|
171
|
-
|
172
|
-
|
225
|
+
<!-- Airspace: [D] CIRCLE AIRSPACE -->
|
226
|
+
<Ase xt_classLayersAvail="false">
|
227
|
+
<AseUid mid="646302629" newEntity="true">
|
173
228
|
<codeType>D</codeType>
|
174
|
-
<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="
|
254
|
+
<AseUid mid="646302629" newEntity="true">
|
194
255
|
<codeType>D</codeType>
|
195
|
-
<codeId>
|
256
|
+
<codeId>646302629</codeId>
|
196
257
|
</AseUid>
|
197
258
|
</AbdUid>
|
198
259
|
<Avx>
|
199
260
|
<codeType>CWA</codeType>
|
200
|
-
<geoLat>
|
201
|
-
<geoLong>
|
261
|
+
<geoLat>47.67326549N</geoLat>
|
262
|
+
<geoLong>4.88333333E</geoLong>
|
202
263
|
<codeDatum>WGE</codeDatum>
|
203
|
-
<geoLatArc>
|
204
|
-
<geoLongArc>
|
264
|
+
<geoLatArc>47.58333333N</geoLatArc>
|
265
|
+
<geoLongArc>4.88333333E</geoLongArc>
|
205
266
|
</Avx>
|
206
267
|
</Abd>
|
207
268
|
</AIXM-Snapshot>
|