aixm 1.4.2 → 1.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data/CHANGELOG.md +11 -0
- data/README.md +3 -1
- data/lib/aixm/concerns/memoize.rb +1 -0
- data/lib/aixm/config.rb +2 -2
- data/lib/aixm/f.rb +7 -0
- data/lib/aixm/shortcuts.rb +3 -0
- data/lib/aixm/version.rb +1 -1
- data/lib/aixm/xy.rb +4 -0
- data/schemas/ofmx/0.2/OFMX-CSV-Obstacle.json +209 -0
- data/schemas/ofmx/0.2/OFMX-CSV.json +12 -0
- data/schemas/ofmx/0.2/OFMX-DataTypes.xsd +5014 -0
- data/schemas/ofmx/0.2/OFMX-Features.xsd +9621 -0
- data/schemas/ofmx/0.2/OFMX-Snapshot.xsd +192 -0
- data.tar.gz.sig +0 -0
- metadata +33 -16
- metadata.gz.sig +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d0556be7c2b4e19ac4c4aa8f15571cb1d891e68877d4a18c97364770f0831fad
|
4
|
+
data.tar.gz: 68845e8b79c9e2ff381e90f0ba04487457148dedb630ce8be5efba2aa9e51811
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c6e12a9221b2cb64c4b5555c23ad5dbc5713d90c89e7c4c4fe831e16f2a4c096ec62902828a5488c812bc53d1e8d23a984488cc8fd7eeea63ef2b62a2f601b18
|
7
|
+
data.tar.gz: b8d8e45f79be86f24b6c9c4633e409dc8600740aff27873285cc37ad5f38453635d1f04536548143ec029767cfdc5f1cc534641066bf98f4b8e917c610e67516
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
data/CHANGELOG.md
CHANGED
data/README.md
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
[](https://rubygems.org/gems/aixm)
|
2
2
|
[](https://github.com/svoop/aixm/actions?workflow=Test)
|
3
3
|
[](https://codeclimate.com/github/svoop/aixm/)
|
4
|
-
[](https://github.com/sponsors/svoop)
|
5
5
|
|
6
6
|
# AIXM
|
7
7
|
|
@@ -13,6 +13,8 @@ For now, only the parts needed to automize the AIP import of [open flightmaps](h
|
|
13
13
|
* [API](https://www.rubydoc.info/gems/aixm)
|
14
14
|
* Author: [Sven Schwyn - Bitcetera](https://bitcetera.com)
|
15
15
|
|
16
|
+
Thank you for supporting free and open-source software by sponsoring on [GitHub](https://github.com/sponsors/svoop) or on [Donorbox](https://donorbox.com/bitcetera). Any gesture is appreciated, from a single Euro for a ☕️ cup of coffee to 🍹 early retirement.
|
17
|
+
|
16
18
|
## Install
|
17
19
|
|
18
20
|
### Security
|
data/lib/aixm/config.rb
CHANGED
@@ -9,8 +9,8 @@ module AIXM
|
|
9
9
|
},
|
10
10
|
ofmx: {
|
11
11
|
version: '0',
|
12
|
-
namespace: 'http://schema.openflightmaps.org/0.
|
13
|
-
xsd: Pathname(__dir__).join('..', '..', 'schemas', 'ofmx', '0.
|
12
|
+
namespace: 'http://schema.openflightmaps.org/0.2/OFMX-Snapshot.xsd',
|
13
|
+
xsd: Pathname(__dir__).join('..', '..', 'schemas', 'ofmx', '0.2', 'OFMX-Snapshot.xsd'),
|
14
14
|
root: 'OFMX-Snapshot'
|
15
15
|
}
|
16
16
|
}.freeze
|
data/lib/aixm/f.rb
CHANGED
@@ -84,6 +84,13 @@ module AIXM
|
|
84
84
|
end
|
85
85
|
end
|
86
86
|
|
87
|
+
# Whether this frequency is for emergencies only.
|
88
|
+
#
|
89
|
+
# @return [Boolean]
|
90
|
+
def voice_emergency?
|
91
|
+
self == AIXM::EMERGENCY
|
92
|
+
end
|
93
|
+
|
87
94
|
private
|
88
95
|
|
89
96
|
# Whether this frequency is part of the voice airband for civil aviation
|
data/lib/aixm/shortcuts.rb
CHANGED
data/lib/aixm/version.rb
CHANGED
data/lib/aixm/xy.rb
CHANGED
@@ -107,6 +107,7 @@ module AIXM
|
|
107
107
|
|
108
108
|
# Distance to another point as calculated by the Haversine formula
|
109
109
|
#
|
110
|
+
# @param other [AIXM::XY] other point
|
110
111
|
# @return [AIXM::D]
|
111
112
|
def distance(other)
|
112
113
|
if self == other
|
@@ -125,6 +126,7 @@ module AIXM
|
|
125
126
|
|
126
127
|
# Bearing to another point
|
127
128
|
#
|
129
|
+
# @param other [AIXM::XY] other point
|
128
130
|
# @return [AIXM::A]
|
129
131
|
def bearing(other)
|
130
132
|
fail "cannot calculate bearing to identical point" if self == other
|
@@ -141,6 +143,8 @@ module AIXM
|
|
141
143
|
|
142
144
|
# Calculate a new point by adding the distance in the given bearing
|
143
145
|
#
|
146
|
+
# @param distance [AIXM::D]
|
147
|
+
# @param bearing [AIXM::A]
|
144
148
|
# @return [AIXM::XY]
|
145
149
|
def add_distance(distance, bearing)
|
146
150
|
angular_dist = distance.to_m.dim / EARTH_RADIUS
|
@@ -0,0 +1,209 @@
|
|
1
|
+
{
|
2
|
+
"fields": [
|
3
|
+
{
|
4
|
+
"name": "codeId",
|
5
|
+
"type": "integer",
|
6
|
+
"constraints": {
|
7
|
+
"required": true,
|
8
|
+
"unique": true,
|
9
|
+
"minimum": 1
|
10
|
+
}
|
11
|
+
},
|
12
|
+
{
|
13
|
+
"name": "codeType",
|
14
|
+
"type": "string",
|
15
|
+
"constraints": {
|
16
|
+
"required": true,
|
17
|
+
"enum": [
|
18
|
+
"ANTENNA",
|
19
|
+
"BUILDING",
|
20
|
+
"CHIMNEY",
|
21
|
+
"CRANE",
|
22
|
+
"MAST",
|
23
|
+
"TOWER",
|
24
|
+
"TREE",
|
25
|
+
"WINDTURBINE",
|
26
|
+
"OTHER"
|
27
|
+
]
|
28
|
+
}
|
29
|
+
},
|
30
|
+
{
|
31
|
+
"name": "txtName",
|
32
|
+
"type": "string",
|
33
|
+
"constraints": {
|
34
|
+
"pattern": "[A-Z]*"
|
35
|
+
}
|
36
|
+
},
|
37
|
+
{
|
38
|
+
"name": "codeLgt",
|
39
|
+
"type": "string",
|
40
|
+
"constraints": {
|
41
|
+
"enum": [
|
42
|
+
"Y",
|
43
|
+
"N"
|
44
|
+
]
|
45
|
+
}
|
46
|
+
},
|
47
|
+
{
|
48
|
+
"name": "codeMarking",
|
49
|
+
"type": "string",
|
50
|
+
"constraints": {
|
51
|
+
"enum": [
|
52
|
+
"Y",
|
53
|
+
"N"
|
54
|
+
]
|
55
|
+
}
|
56
|
+
},
|
57
|
+
{
|
58
|
+
"name": "txtDescrLgt",
|
59
|
+
"type": "string"
|
60
|
+
},
|
61
|
+
{
|
62
|
+
"name": "txtDescrMarking",
|
63
|
+
"type": "string"
|
64
|
+
},
|
65
|
+
{
|
66
|
+
"name": "geoLat",
|
67
|
+
"type": "string",
|
68
|
+
"constraints": {
|
69
|
+
"required": true,
|
70
|
+
"pattern": "(([0-8][0-9](\\.\\d{1,8}){0,1}(N|S))|(90(\\.0{1,8}){0,1}(N|S)))"
|
71
|
+
}
|
72
|
+
},
|
73
|
+
{
|
74
|
+
"name": "geoLong",
|
75
|
+
"type": "string",
|
76
|
+
"constraints": {
|
77
|
+
"required": true,
|
78
|
+
"pattern": "((((0[0-9])|(1[0-7]))[0-9](\\.\\d{1,8}){0,1}(E|W))|(180(\\.0{1,8}){0,1}(E|W)))"
|
79
|
+
}
|
80
|
+
},
|
81
|
+
{
|
82
|
+
"name": "valGeoAccuracy",
|
83
|
+
"type": "integer",
|
84
|
+
"constraints": {
|
85
|
+
"minimum": 0
|
86
|
+
}
|
87
|
+
},
|
88
|
+
{
|
89
|
+
"name": "uomGeoAccuracy",
|
90
|
+
"type": "string",
|
91
|
+
"constraints": {
|
92
|
+
"enum": [
|
93
|
+
"FT",
|
94
|
+
"KM",
|
95
|
+
"M",
|
96
|
+
"NM"
|
97
|
+
]
|
98
|
+
}
|
99
|
+
},
|
100
|
+
{
|
101
|
+
"name": "valElev",
|
102
|
+
"type": "integer",
|
103
|
+
"constraints": {
|
104
|
+
"required": true
|
105
|
+
}
|
106
|
+
},
|
107
|
+
{
|
108
|
+
"name": "valElevAccuracy",
|
109
|
+
"type": "integer",
|
110
|
+
"constraints": {
|
111
|
+
"minimum": 0
|
112
|
+
}
|
113
|
+
},
|
114
|
+
{
|
115
|
+
"name": "valHgt",
|
116
|
+
"type": "integer",
|
117
|
+
"constraints": {
|
118
|
+
"minimum": 1
|
119
|
+
}
|
120
|
+
},
|
121
|
+
{
|
122
|
+
"name": "codeHgtAccuracy",
|
123
|
+
"type": "string",
|
124
|
+
"constraints": {
|
125
|
+
"enum": [
|
126
|
+
"Y",
|
127
|
+
"N"
|
128
|
+
]
|
129
|
+
}
|
130
|
+
},
|
131
|
+
{
|
132
|
+
"name": "uomDistVer",
|
133
|
+
"type": "string",
|
134
|
+
"constraints": {
|
135
|
+
"required": true,
|
136
|
+
"enum": [
|
137
|
+
"FT",
|
138
|
+
"M"
|
139
|
+
]
|
140
|
+
}
|
141
|
+
},
|
142
|
+
{
|
143
|
+
"name": "valRadius",
|
144
|
+
"type": "integer",
|
145
|
+
"constraints": {
|
146
|
+
"minimum": 1
|
147
|
+
}
|
148
|
+
},
|
149
|
+
{
|
150
|
+
"name": "uomRadius",
|
151
|
+
"type": "string",
|
152
|
+
"constraints": {
|
153
|
+
"enum": [
|
154
|
+
"FT",
|
155
|
+
"KM",
|
156
|
+
"M",
|
157
|
+
"NM"
|
158
|
+
]
|
159
|
+
}
|
160
|
+
},
|
161
|
+
{
|
162
|
+
"name": "codeGroupId",
|
163
|
+
"type": "string",
|
164
|
+
"constraints": {
|
165
|
+
"pattern": "(\\d+|[\\da-f]{8}-[\\da-f]{4}-[\\da-f]{4}-[\\da-f]{4}-[\\da-f]{12})?"
|
166
|
+
}
|
167
|
+
},
|
168
|
+
{
|
169
|
+
"name": "txtGroupName",
|
170
|
+
"type": "string"
|
171
|
+
},
|
172
|
+
{
|
173
|
+
"name": "codeLinkedToId",
|
174
|
+
"type": "integer"
|
175
|
+
},
|
176
|
+
{
|
177
|
+
"name": "codeLinkType",
|
178
|
+
"type": "string",
|
179
|
+
"constraints": {
|
180
|
+
"enum": [
|
181
|
+
"CABLE",
|
182
|
+
"SOLID",
|
183
|
+
"OTHER"
|
184
|
+
]
|
185
|
+
}
|
186
|
+
},
|
187
|
+
{
|
188
|
+
"name": "datetimeValidWef",
|
189
|
+
"type": "string",
|
190
|
+
"format": "datetime"
|
191
|
+
},
|
192
|
+
{
|
193
|
+
"name": "datetimeValidTil",
|
194
|
+
"type": "string",
|
195
|
+
"format": "datetime"
|
196
|
+
},
|
197
|
+
{
|
198
|
+
"name": "txtRmk",
|
199
|
+
"type": "string"
|
200
|
+
},
|
201
|
+
{
|
202
|
+
"name": "source",
|
203
|
+
"type": "string",
|
204
|
+
"constraints": {
|
205
|
+
"required": true
|
206
|
+
}
|
207
|
+
}
|
208
|
+
]
|
209
|
+
}
|