aixm 0.2.3 → 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +1 -0
- data/.ruby-version +1 -1
- data/.yardopts +3 -0
- data/CHANGELOG.md +34 -14
- data/Guardfile +1 -0
- data/README.md +64 -257
- data/lib/aixm.rb +16 -7
- data/lib/aixm/component.rb +6 -0
- data/lib/aixm/component/frequency.rb +135 -0
- data/lib/aixm/component/geometry.rb +34 -23
- data/lib/aixm/component/geometry/arc.rb +37 -22
- data/lib/aixm/component/geometry/border.rb +29 -20
- data/lib/aixm/component/geometry/circle.rb +39 -22
- data/lib/aixm/component/geometry/point.rb +29 -13
- data/lib/aixm/component/helipad.rb +154 -0
- data/lib/aixm/component/layer.rb +91 -0
- data/lib/aixm/component/runway.rb +294 -0
- data/lib/aixm/component/service.rb +170 -0
- data/lib/aixm/component/timetable.rb +65 -0
- data/lib/aixm/component/vertical_limits.rb +65 -29
- data/lib/aixm/config.rb +87 -0
- data/lib/aixm/document.rb +66 -42
- data/lib/aixm/errors.rb +11 -0
- data/lib/aixm/f.rb +34 -20
- data/lib/aixm/feature.rb +38 -0
- data/lib/aixm/feature/airport.rb +473 -0
- data/lib/aixm/feature/airspace.rb +145 -92
- data/lib/aixm/feature/navigational_aid.rb +94 -0
- data/lib/aixm/feature/navigational_aid/designated_point.rb +50 -54
- data/lib/aixm/feature/navigational_aid/dme.rb +48 -40
- data/lib/aixm/feature/navigational_aid/marker.rb +55 -45
- data/lib/aixm/feature/navigational_aid/ndb.rb +54 -50
- data/lib/aixm/feature/navigational_aid/tacan.rb +38 -31
- data/lib/aixm/feature/navigational_aid/vor.rb +84 -76
- data/lib/aixm/feature/organisation.rb +97 -0
- data/lib/aixm/feature/unit.rb +152 -0
- data/lib/aixm/refinements.rb +132 -47
- data/lib/aixm/shortcuts.rb +11 -6
- data/lib/aixm/version.rb +1 -1
- data/lib/aixm/xy.rb +64 -20
- data/lib/aixm/z.rb +51 -22
- data/{lib/aixm/schemas → schemas/aixm}/4.5/AIXM-DataTypes.xsd +0 -0
- data/{lib/aixm/schemas → schemas/aixm}/4.5/AIXM-Features.xsd +0 -0
- data/{lib/aixm/schemas → schemas/aixm}/4.5/AIXM-Snapshot.xsd +0 -0
- data/schemas/ofmx/0/OFMX-DataTypes.xsd +5077 -0
- data/schemas/ofmx/0/OFMX-Features.xsd +9955 -0
- data/schemas/ofmx/0/OFMX-Snapshot.xsd +217 -0
- data/spec/factory.rb +209 -33
- data/spec/lib/aixm/component/frequency_spec.rb +75 -0
- data/spec/lib/aixm/component/geometry/arc_spec.rb +28 -22
- data/spec/lib/aixm/component/geometry/border_spec.rb +23 -20
- data/spec/lib/aixm/component/geometry/circle_spec.rb +31 -22
- data/spec/lib/aixm/component/geometry/point_spec.rb +11 -14
- data/spec/lib/aixm/component/geometry_spec.rb +150 -69
- data/spec/lib/aixm/component/helipad_spec.rb +136 -0
- data/spec/lib/aixm/component/layer_spec.rb +110 -0
- data/spec/lib/aixm/component/runway_spec.rb +402 -0
- data/spec/lib/aixm/component/service_spec.rb +61 -0
- data/spec/lib/aixm/component/timetable_spec.rb +49 -0
- data/spec/lib/aixm/component/vertical_limits_spec.rb +39 -20
- data/spec/lib/aixm/config_spec.rb +41 -0
- data/spec/lib/aixm/document_spec.rb +637 -147
- data/spec/lib/aixm/errors_spec.rb +14 -0
- data/spec/lib/aixm/f_spec.rb +17 -10
- data/spec/lib/aixm/feature/airport_spec.rb +546 -0
- data/spec/lib/aixm/feature/airspace_spec.rb +349 -226
- data/spec/lib/aixm/feature/navigational_aid/designated_point_spec.rb +47 -36
- data/spec/lib/aixm/feature/navigational_aid/dme_spec.rb +61 -36
- data/spec/lib/aixm/feature/navigational_aid/marker_spec.rb +61 -113
- data/spec/lib/aixm/feature/navigational_aid/ndb_spec.rb +65 -79
- data/spec/lib/aixm/feature/navigational_aid/tacan_spec.rb +57 -36
- data/spec/lib/aixm/feature/navigational_aid/vor_spec.rb +86 -112
- data/spec/lib/aixm/feature/navigational_aid_spec.rb +52 -0
- data/spec/lib/aixm/feature/organisation_spec.rb +77 -0
- data/spec/lib/aixm/feature/unit_spec.rb +227 -0
- data/spec/lib/aixm/feature_spec.rb +58 -0
- data/spec/lib/aixm/refinements_spec.rb +187 -178
- data/spec/lib/aixm/xy_spec.rb +45 -34
- data/spec/lib/aixm/z_spec.rb +19 -21
- data/spec/macros/organisation.rb +11 -0
- data/spec/macros/remarks.rb +12 -0
- data/spec/macros/timetable.rb +11 -0
- data/spec/macros/xy.rb +11 -0
- data/spec/macros/z_qnh.rb +11 -0
- data/spec/spec_helper.rb +26 -0
- metadata +60 -19
- data/lib/aixm/base.rb +0 -10
- data/lib/aixm/component/base.rb +0 -6
- data/lib/aixm/component/class_layer.rb +0 -46
- data/lib/aixm/component/geometry/base.rb +0 -8
- data/lib/aixm/component/schedule.rb +0 -43
- data/lib/aixm/feature/base.rb +0 -6
- data/lib/aixm/feature/navigational_aid/base.rb +0 -79
- data/spec/lib/aixm/component/class_layer_spec.rb +0 -74
- data/spec/lib/aixm/component/schedule_spec.rb +0 -33
- data/spec/lib/aixm/feature/navigational_aid/base_spec.rb +0 -41
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c0f5f953610761dad1816bb0a390155538205afc41fc53d677f9d433a53de5f6
|
4
|
+
data.tar.gz: ba6b9edea4dc9ffe27239021f28fb3b2cb816bba568286f0108bf070a7108a73
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b0947e0e79962e86e21f96833d47944c012fd1be4fa28a2fbf1aa3d82e2549195bafdcb32d9b3e6fd65f8f63ede53000d7218c6afaa5393549768d1ad0d6b569
|
7
|
+
data.tar.gz: 4358cb754979f06efd3c62d0288a41db984573d6de47f021c585ab056f801c71de480c1258969eeed33db287cc13137355c016f7e911c91e555a499067d9f15c
|
data/.gitignore
CHANGED
data/.ruby-version
CHANGED
@@ -1 +1 @@
|
|
1
|
-
ruby-2.5.
|
1
|
+
ruby-2.5.1
|
data/.yardopts
ADDED
data/CHANGELOG.md
CHANGED
@@ -1,45 +1,65 @@
|
|
1
|
+
## 0.3.0
|
2
|
+
|
3
|
+
* Breaking additions:
|
4
|
+
* Global configuration with `AIXM.config`
|
5
|
+
* Breaking changes:
|
6
|
+
* Switch from "AIXM with OFM extensions" to OFMX
|
7
|
+
* `to_aixm` renamed to `to_xml` again
|
8
|
+
* Removed signature `to_xml(extension)` in favor of `AIXM.schema`
|
9
|
+
* Removed `Array#to_digest`
|
10
|
+
* Removed `Document#complete?`
|
11
|
+
* Renamed Schedule to Timetable
|
12
|
+
* Timetable and remarks moved from Airspace to to Layer (formerly known as
|
13
|
+
class layer)
|
14
|
+
* Additions
|
15
|
+
* Organization and Unit features
|
16
|
+
* Airport feature
|
17
|
+
* Refinement `Float#to_rad`
|
18
|
+
* Distance calculation with `AIXM::XY#distance`
|
19
|
+
* `Schedule#remarks`
|
20
|
+
|
1
21
|
## 0.2.3
|
2
22
|
|
3
|
-
* Breaking
|
23
|
+
* Breaking changes:
|
4
24
|
* VOR types renamed from :vor to :conventional and :doppler_vor to :doppler
|
5
25
|
* NBR types added
|
6
26
|
* Marker types added
|
7
|
-
*
|
27
|
+
* Changes:
|
8
28
|
* "mid" attributes on all navigational aid features
|
9
29
|
|
10
30
|
## 0.2.2
|
11
31
|
|
12
|
-
*
|
32
|
+
* Changes:
|
13
33
|
* Bad error classes fixed
|
14
34
|
* Allow navigational aids without name
|
15
35
|
|
16
36
|
## 0.2.1
|
17
37
|
|
18
|
-
*
|
38
|
+
* Breaking changes:
|
19
39
|
* DVOR and VORDME confusion fixed
|
20
|
-
* Schedule added to navigational aids
|
21
40
|
* VOR can be associated with DME (-> VOR/DME) or TACAN (-> VORTAC) now
|
22
41
|
* `to_xml` renamed to `to_aixm` everywhere
|
23
|
-
* Minor changes:
|
24
42
|
* Removed :other from all value lists
|
43
|
+
* Changes:
|
44
|
+
* Schedule added to navigational aids
|
25
45
|
|
26
46
|
## 0.2.0
|
27
47
|
|
48
|
+
* Breaking changes:
|
49
|
+
* Symbols such as :qnh, :ofm or :mhz are downcased now
|
28
50
|
* Additions:
|
29
51
|
* Frequency
|
30
|
-
* Navigational aids
|
52
|
+
* Navigational aids features
|
31
53
|
* `AIXM::Z#qfe?` and friends
|
32
|
-
* Breaking major changes:
|
33
|
-
* Symbols such as :qnh, :ofm or :mhz are downcased now
|
34
54
|
|
35
55
|
## 0.1.4
|
36
56
|
|
37
|
-
* Breaking
|
57
|
+
* Breaking changes:
|
38
58
|
* `AIXM.z(alt: 123, code: :QNE)` is now `AIXM.z(123, :QNE)`
|
39
59
|
|
40
60
|
## 0.1.3
|
41
61
|
|
42
|
-
* Breaking
|
62
|
+
* Breaking changes:
|
43
63
|
* Re-organization of classes in features and components
|
44
64
|
* Additions:
|
45
65
|
* Shortcut initializers e.g. `AIXM.airspace(...)`
|
@@ -48,7 +68,7 @@
|
|
48
68
|
|
49
69
|
* Breaking additions:
|
50
70
|
* Class layers
|
51
|
-
* Breaking
|
71
|
+
* Breaking changes:
|
52
72
|
* Use `document.features << (feature)` instead of `document << (feature)`
|
53
73
|
|
54
74
|
## 0.1.1
|
@@ -58,7 +78,7 @@
|
|
58
78
|
* Refinement `Float#to_km` and `String#uptrans`
|
59
79
|
* Shortcut constants `AIXM::UNLIMITED` and `AIXM::H24`
|
60
80
|
* `Airspace#short_name`
|
61
|
-
*
|
81
|
+
* Changes:
|
62
82
|
* `Document#created_at` and `#effective_at` accept Time, Date, String or *nil*
|
63
83
|
* Separate `AIXM::Document#valid?` from `#complete?`
|
64
84
|
* Write coordinates in DD if extension `:OFM` is set
|
@@ -70,7 +90,7 @@
|
|
70
90
|
* XY Coordinate
|
71
91
|
* Z Altitude
|
72
92
|
* AIXM-Snapshot 4.5 Document
|
73
|
-
* Airspace
|
93
|
+
* Airspace feature
|
74
94
|
* Vertical Limits
|
75
95
|
* Geometry
|
76
96
|
* Point
|
data/Guardfile
CHANGED
data/README.md
CHANGED
@@ -6,9 +6,9 @@
|
|
6
6
|
|
7
7
|
# AIXM
|
8
8
|
|
9
|
-
Partial implementation of the [Aeronautical Information Exchange Model (AIXM 4.5)](http://aixm.aero) for Ruby.
|
9
|
+
Partial implementation of the [Aeronautical Information Exchange Model (AIXM 4.5)](http://aixm.aero) and it's dialect [Open FlightMaps eXchange format (OFMX 0)](https://github.com/openflightmaps/ofmx) for Ruby.
|
10
10
|
|
11
|
-
For now, only the parts needed to automize the AIP import of [Open Flightmaps](https://openflightmaps.org) are part of this gem. Most notably, the gem is only a builder
|
11
|
+
For now, only the parts needed to automize the AIP import of [Open Flightmaps](https://openflightmaps.org) are part of this gem. Most notably, the gem is only a builder for snapshot files and does not parse them.
|
12
12
|
|
13
13
|
* [Homepage](https://github.com/svoop/aixm)
|
14
14
|
* [API](http://www.rubydoc.info/gems/aixm)
|
@@ -24,293 +24,100 @@ gem aixm
|
|
24
24
|
|
25
25
|
## Usage
|
26
26
|
|
27
|
-
|
27
|
+
Here's how to build a document object, populate it with a simple feature and then render it as AIXM:
|
28
28
|
|
29
29
|
```ruby
|
30
|
-
AIXM.
|
31
|
-
AIXM.
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
All fundamentals are subclasses of `AIXM::Base`.
|
37
|
-
|
38
|
-
### Document
|
39
|
-
|
40
|
-
The document is the root container of the AIXM snapshot file to be generated. It's essentially a collection of features:
|
41
|
-
|
42
|
-
```ruby
|
43
|
-
document = AIXM.document(created_at: Time.now, effective_at: Time.now)
|
44
|
-
document.features << AIXM.airspace(...)
|
45
|
-
```
|
46
|
-
|
47
|
-
To give you an overview of the AIXM building blocks, the remainder of this guide will use pseudo code to describe the initializer arguments, writer methods etc:
|
48
|
-
|
49
|
-
```ruby
|
50
|
-
document = AIXM.document(
|
51
|
-
created_at: Time or Date or String
|
52
|
-
effective_at: Time or Date or String
|
53
|
-
)
|
54
|
-
document.features << AIXM::Feature
|
55
|
-
```
|
56
|
-
|
57
|
-
See [the API documentation](http://www.rubydoc.info/gems/aixm) for details and [spec/factory.rb](https://github.com/svoop/aixm/blob/master/spec/factory.rb) for examples.
|
58
|
-
|
59
|
-
#### Coordinate
|
60
|
-
|
61
|
-
All of the below are equivalent:
|
62
|
-
|
63
|
-
```ruby
|
64
|
-
AIXM.xy(lat: %q(11°22'33.44"), long: %q(-111°22'33.44"))
|
65
|
-
AIXM.xy(lat: '112233.44N', long: '1112233.44W')
|
66
|
-
AIXM.xy(lat: 11.375955555555556, long: -111.37595555555555)
|
67
|
-
```
|
68
|
-
|
69
|
-
#### Altitude and Heights
|
70
|
-
|
71
|
-
Altitudes and heights exist in three different forms:
|
72
|
-
|
73
|
-
```ruby
|
74
|
-
AIXM.z(1000, :qfe) # height: 1000ft above ground
|
75
|
-
AIXM.z(2000, :qnh) # altitude: of 2000ft above mean sea level
|
76
|
-
AIXM.z(45, :qne) # altitude: flight level 45
|
77
|
-
```
|
78
|
-
|
79
|
-
#### Frequency
|
80
|
-
|
81
|
-
```ruby
|
82
|
-
AIXM.f(123.35, :mhz)
|
83
|
-
```
|
84
|
-
|
85
|
-
### Features
|
86
|
-
|
87
|
-
All features are subclasses of `AIXM::Feature::Base`.
|
88
|
-
|
89
|
-
#### Airspace
|
90
|
-
|
91
|
-
```ruby
|
92
|
-
airspace = AIXM.airspace(
|
93
|
-
name: String
|
94
|
-
short_name: String or nil
|
95
|
-
type: String or Symbol
|
96
|
-
)
|
97
|
-
airspace.schedule = AIXM.schedule
|
98
|
-
airspace.geometry << AIXM.point or AIXM.arc or AIXM.border or AIXM.circle
|
99
|
-
airspace.class_layers << AIXM.class_layer
|
100
|
-
airspace.remarks = String
|
101
|
-
```
|
102
|
-
|
103
|
-
#### Navigational Aids
|
104
|
-
|
105
|
-
##### Designated Point
|
106
|
-
|
107
|
-
```ruby
|
108
|
-
designated_point = AIXM.designated_point(
|
109
|
-
id: String
|
110
|
-
name: String or nil
|
111
|
-
xy: AIXM.xy
|
112
|
-
z: AIXM.z or nil
|
113
|
-
type: :icao or :adhp, or :coordinates
|
114
|
-
)
|
115
|
-
designated_point.schedule = AIXM.schedule
|
116
|
-
designated_point.remarks = String
|
117
|
-
```
|
118
|
-
|
119
|
-
##### DME
|
120
|
-
|
121
|
-
```ruby
|
122
|
-
dme = AIXM.dme(
|
123
|
-
id: String
|
124
|
-
name: String
|
125
|
-
xy: AIXM.xy
|
126
|
-
z: AIXM.z or nil
|
127
|
-
channel: String
|
128
|
-
)
|
129
|
-
dme.schedule = AIXM.schedule
|
130
|
-
dme.remarks = String
|
131
|
-
```
|
132
|
-
|
133
|
-
##### NDB
|
134
|
-
|
135
|
-
```ruby
|
136
|
-
ndb = AIXM.ndb(
|
137
|
-
id: String
|
138
|
-
name: String
|
139
|
-
xy: AIXM.xy
|
140
|
-
z: AIXM.z or nil
|
141
|
-
type: :en_route, :locator or :marine
|
142
|
-
f: AIXM.f
|
143
|
-
)
|
144
|
-
ndb.schedule = AIXM.schedule
|
145
|
-
ndb.remarks = String
|
146
|
-
```
|
147
|
-
|
148
|
-
##### Marker
|
149
|
-
|
150
|
-
WARNING: Marker are not fully implemented because they usually have to be
|
151
|
-
associated with ILS which are not yet implemented.
|
152
|
-
|
153
|
-
```ruby
|
154
|
-
marker = AIXM.marker(
|
155
|
-
id: String
|
156
|
-
name: String
|
157
|
-
xy: AIXM.xy
|
158
|
-
z: AIXM.z or nil
|
159
|
-
type: :outer, :middle, :inner or :backcourse
|
160
|
-
)
|
161
|
-
marker.schedule = AIXM.schedule
|
162
|
-
marker.remarks = String
|
163
|
-
```
|
164
|
-
|
165
|
-
##### TACAN
|
166
|
-
|
167
|
-
```ruby
|
168
|
-
tacan = AIXM.tacan(
|
169
|
-
id: String
|
170
|
-
name: String
|
171
|
-
xy: AIXM.xy
|
172
|
-
z: AIXM.z or nil
|
173
|
-
channel: String
|
174
|
-
)
|
175
|
-
tacan.schedule = AIXM.schedule
|
176
|
-
tacan.remarks = String
|
177
|
-
```
|
178
|
-
|
179
|
-
##### VOR
|
180
|
-
|
181
|
-
```ruby
|
182
|
-
vor = AIXM.vor(
|
183
|
-
id: String
|
184
|
-
name: String
|
185
|
-
xy: AIXM.xy
|
186
|
-
z: AIXM.z or nil
|
187
|
-
type: :conventional or :doppler
|
188
|
-
f: AIXM.f
|
189
|
-
north: :geographic or :grid or :magnetic
|
190
|
-
)
|
191
|
-
vor.schedule = AIXM.schedule
|
192
|
-
vor.remarks = String
|
193
|
-
vor.associate_dme(channel: String) # turns the VOR into a VOR/DME
|
194
|
-
vor.associate_tacan(channel: String) # turns the VOR into a VORTAC
|
195
|
-
```
|
196
|
-
|
197
|
-
### Components
|
198
|
-
|
199
|
-
All components are subclasses of `AIXM::Component::Base`.
|
200
|
-
|
201
|
-
#### Schedule
|
202
|
-
|
203
|
-
```ruby
|
204
|
-
schedule = AIXM.schedule(
|
205
|
-
code: String or Symbol
|
30
|
+
document = AIXM.document
|
31
|
+
document.features << AIXM.designated_point(
|
32
|
+
id: "ABIXI",
|
33
|
+
xy: AIXM.xy(lat: %q(46°31'54.3"N), long: %q(002°19'55.2"W)),
|
34
|
+
type: :icao
|
206
35
|
)
|
36
|
+
document.aixm! # not really necessary since AIXM is the default schema
|
37
|
+
document.to_xml
|
207
38
|
```
|
208
39
|
|
209
|
-
|
40
|
+
You can initialize all elements either traditionally or by use of shorter AIXM class methods. The following two statements are identical:
|
210
41
|
|
211
42
|
```ruby
|
212
|
-
|
213
|
-
|
214
|
-
vertical_limits: AIXM.vertical_limits
|
215
|
-
)
|
43
|
+
AIXM::Feature::NavigationalAid::DesignatedPoint.new(...)
|
44
|
+
AIXM.designated_point(...)
|
216
45
|
```
|
217
46
|
|
218
|
-
|
47
|
+
## Configuration
|
219
48
|
|
220
|
-
|
221
|
-
vertical_limits = AIXM.vertical_limits(
|
222
|
-
max_z: AIXM.z or nil
|
223
|
-
upper_z: AIXM.z
|
224
|
-
lower_z: AIXM.z
|
225
|
-
min_z: AIXM.z or nil
|
226
|
-
)
|
227
|
-
```
|
228
|
-
|
229
|
-
#### Point, Arc, Border and Circle
|
49
|
+
The following configuration options are available for setting and getting:
|
230
50
|
|
231
51
|
```ruby
|
232
|
-
|
233
|
-
|
234
|
-
|
235
|
-
arc = AIXM.arc(
|
236
|
-
xy: AIXM.xy
|
237
|
-
center_xy: AIXM.xy
|
238
|
-
cloclwise: true or false
|
239
|
-
)
|
240
|
-
border = AIXM.border(
|
241
|
-
xy: AIXM.xy
|
242
|
-
name: String
|
243
|
-
)
|
244
|
-
circle = AIXM.circle(
|
245
|
-
center_xy: AIXM.xy
|
246
|
-
radius: Numeric
|
247
|
-
)
|
52
|
+
AIXM.config.schema # either :aixm (default) or :ofmx
|
53
|
+
AIXM.config.region # fallback region
|
54
|
+
AIXM.config.ignored_errors # ignore XML schema errors which match this regex
|
248
55
|
```
|
249
56
|
|
250
|
-
|
57
|
+
There are shortcuts to set and get the schema:
|
251
58
|
|
252
59
|
```ruby
|
253
|
-
|
254
|
-
|
60
|
+
AIXM.schema # => :aixm
|
61
|
+
AIXM.aixm? # => true
|
62
|
+
AIXM.ofmx! # => :ofmx
|
63
|
+
AIXM.ofmx? # => true
|
64
|
+
AIXM.schema # => :ofmx
|
65
|
+
AIXM.schema(:version) # => 0
|
255
66
|
```
|
256
67
|
|
257
|
-
For a geometry to be complete, it must be comprised of either:
|
258
|
-
|
259
|
-
* exactly one circle
|
260
|
-
* at least three points, arcs or borders (the last of which a point with identical coordinates as the first)
|
261
|
-
|
262
68
|
## Validation
|
263
69
|
|
264
|
-
|
265
|
-
|
266
|
-
Use `AIXM::Document#valid?` to validate the resulting AIXM against the XSD schema. If any, you find the errors in `AIXM::Document#errors`. Since the data model is not fully implemented, some associations cannot be assigned and have to be left empty. The resulting validation errors are silently ignored:
|
267
|
-
|
268
|
-
* OrgUid - organizations may be empty tags
|
70
|
+
`AIXM::Document#valid?` validates the resulting AIXM or OFMX against its XML schema. If any, you find the errors in `AIXM::Document#errors`.
|
269
71
|
|
270
|
-
##
|
72
|
+
## Model
|
271
73
|
|
272
|
-
|
273
|
-
|
274
|
-
|
275
|
-
|
74
|
+
### Fundamentals
|
75
|
+
* [Document](http://www.rubydoc.info/gems/aixm/AIXM/Document.html)
|
76
|
+
* [XY (longitude and latitude)](http://www.rubydoc.info/gems/aixm/AIXM/XY.html)
|
77
|
+
* [Z (height, elevation or altitude)](http://www.rubydoc.info/gems/aixm/AIXM/Z.html)
|
78
|
+
* [F (frequency)](http://www.rubydoc.info/gems/aixm/AIXM/F.html)
|
276
79
|
|
277
|
-
|
80
|
+
### Features
|
81
|
+
* [Organisation](http://www.rubydoc.info/gems/aixm/AIXM/Feature/Organisation.html)
|
82
|
+
* [Unit](http://www.rubydoc.info/gems/aixm/AIXM/Feature/Unit.html)
|
83
|
+
* [Airport](http://www.rubydoc.info/gems/aixm/AIXM/Feature/Airport.html)
|
84
|
+
* [Airspace](http://www.rubydoc.info/gems/aixm/AIXM/Feature/Airspace.html)
|
85
|
+
* [Navigational aid](http://www.rubydoc.info/gems/aixm/AIXM/NavigationalAid.html)
|
86
|
+
* [Designated point](http://www.rubydoc.info/gems/aixm/AIXM/Feature/DesignatedPoint.html)
|
87
|
+
* [DME](http://www.rubydoc.info/gems/aixm/AIXM/Feature/DME.html)
|
88
|
+
* [Marker](http://www.rubydoc.info/gems/aixm/AIXM/Feature/Marker.html)
|
89
|
+
* [NDB](http://www.rubydoc.info/gems/aixm/AIXM/Feature/NDB.html)
|
90
|
+
* [TACAN](http://www.rubydoc.info/gems/aixm/AIXM/Feature/TACAN.html)
|
91
|
+
* [VOR](http://www.rubydoc.info/gems/aixm/AIXM/Feature/VOR.html)
|
278
92
|
|
279
|
-
|
280
|
-
*
|
281
|
-
*
|
93
|
+
### Components
|
94
|
+
* [Service](http://www.rubydoc.info/gems/aixm/AIXM/Component/Service.html)
|
95
|
+
* [Frequency](http://www.rubydoc.info/gems/aixm/AIXM/Component/Frequency.html)
|
96
|
+
* [Geometry](http://www.rubydoc.info/gems/aixm/AIXM/Component/Geometry.html)
|
97
|
+
* [Point](http://www.rubydoc.info/gems/aixm/AIXM/Component/Point.html)
|
98
|
+
* [Arc](http://www.rubydoc.info/gems/aixm/AIXM/Component/Arc.html)
|
99
|
+
* [Border](http://www.rubydoc.info/gems/aixm/AIXM/Component/Border.html)
|
100
|
+
* [Circle](http://www.rubydoc.info/gems/aixm/AIXM/Component/Circle.html)
|
101
|
+
* [Runway](http://www.rubydoc.info/gems/aixm/AIXM/Component/Runway.html)
|
102
|
+
* [Helipad](http://www.rubydoc.info/gems/aixm/AIXM/Component/Helipad.html)
|
103
|
+
* [Layer](http://www.rubydoc.info/gems/aixm/AIXM/Component/Layer.html)
|
104
|
+
* [Vertical limits](http://www.rubydoc.info/gems/aixm/AIXM/Component/VerticalLimits.html)
|
105
|
+
* [Timetable](http://www.rubydoc.info/gems/aixm/AIXM/Component/Timetable.html)
|
282
106
|
|
283
107
|
## Refinements
|
284
108
|
|
285
|
-
By `using AIXM::Refinements` you get
|
286
|
-
|
287
|
-
* `Hash#lookup(key, default)`<br>Similar to `fetch` but falls back to values
|
288
|
-
* `String#indent(number)`<br>Indent every line of a string with *number* spaces
|
289
|
-
* `String#uptrans`<br>upcase and transliterate to match the reduced character set for names
|
290
|
-
* `String#to_dd`<br>Convert DMS angle to DD or `nil` if the format is not recognized
|
291
|
-
* `Float#to_dms(padding)`<br>Convert DD angle to DMS with the degrees zero padded to *padding* length
|
292
|
-
* `Float#trim`<br>Convert whole numbers to Integer and leave all other untouched
|
293
|
-
* `Float#to_km(from: unit)`<br>Convert a distance from *unit* (:km, :m, :nm or :ft) to km
|
294
|
-
|
295
|
-
See the [source code](https://github.com/svoop/aixm/blob/master/lib/aixm/refinements.rb) for more explicit descriptions and examples.
|
296
|
-
|
297
|
-
## Extensions
|
298
|
-
|
299
|
-
### OFM
|
300
|
-
|
301
|
-
This extension adds proprietary tags and attributes (most of which are prefixed with `xt_`) aiming to improve importing the resulting AIXM into the OFM originative suite:
|
302
|
-
|
303
|
-
* `<AIXM-Snapshot version="4.5 + OFM extensions of version 0.1" (...) />`<br>root node with extended version string
|
304
|
-
* `<Ase xt_classLayersAvail="(true|false)">`<br>true when multiple class layers and therefore an Adg-node is present
|
305
|
-
* `<xt_selAvail>(true|false)</xt_selAvail>`<br>enables conditional airspaces feature
|
306
|
-
* `<AseUid newEntity="(true|false)">`<br>tell the importer whether adding a new or updating an existing entity
|
109
|
+
By `using AIXM::Refinements` you get a few handy [extensions to Ruby core classes](http://www.rubydoc.info/gems/aixm/AIXM/Refinements.html).
|
307
110
|
|
308
111
|
## References
|
309
112
|
|
113
|
+
### AIXM
|
310
114
|
* [AIXM](http://aixm.aero)
|
311
|
-
* [
|
115
|
+
* [AICM 4.5 Documentation](https://openflightmaps.github.io/ofmx/aixm/4.5/manual/aicm/)
|
312
116
|
* [AIXM 4.5 Specification](http://aixm.aero/document/aixm-45-specification)
|
313
|
-
|
117
|
+
|
118
|
+
### OFMX
|
119
|
+
* [OFMX](https://github.com/openflightmaps/ofmx)
|
120
|
+
* [OFMX Documentation](https://github.com/openflightmaps/ofmx/wiki)
|
314
121
|
* [Open Flightmaps](https://openflightmaps.org)
|
315
122
|
|
316
123
|
## Tests
|