aixm 0.3.11 → 1.0.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: d86771a98ab156be9da1487e7e2e11615bcd63590824108717a51f07c044e241
4
- data.tar.gz: b6fc6d7c2803169145153d434f1675f161be6ae731b54eb1d53b6d2fbcf4807b
3
+ metadata.gz: 2f4efdae60e160732c8f30262673f01b49d6dd53d5c5e9bc2d8c395cf696ccae
4
+ data.tar.gz: 7b129a858e6c6d0eb7545d4a32910243e7a8ecd00a8895698f4ae69fcaed33f2
5
5
  SHA512:
6
- metadata.gz: e537adc538ba520a2f0e891da01ccb13e768a5e183c8a042fbe3bf55f63bfc9f2a66125cf6a19b1882e7d646d8c9b0f848fc551f095a24323f24216d9a8036a1
7
- data.tar.gz: 5a3884e00a329f243835648bce2bc13f1cd0ae701113dc89a86f23e83ebe9a82abf4af7a5c6aa87a8f22b1d7c49bc94fd222b2752a5a9bef42276936def12e60
6
+ metadata.gz: 98115e7b0f93f82e976235045afdff88b3b6a99b256620de733b4b4741ffa7fb769e6bb92aae86657d6ae57b5744aef5df82a634b22adb5ae81b9db18a7c1531
7
+ data.tar.gz: fd3bf40b77d4cfef51465b4e1806382465a4eee86abd8c74c3639763a627653a7832696395bab9673dd6433458bef8474871b7dcd121533891df3c911a429baf
checksums.yaml.gz.sig CHANGED
Binary file
data/CHANGELOG.md CHANGED
@@ -1,3 +1,11 @@
1
+ ## 1.0.0
2
+
3
+ #### Breaking Changes
4
+ * Move `Ase->txtLocalType` up into `AseUid` for OFMX
5
+
6
+ #### Additions
7
+ * Add `AIXM::Component::Geometry::RhumbLine`
8
+
1
9
  ## 0.3.11
2
10
 
3
11
  #### Breaking Changes
data/lib/aixm/classes.rb CHANGED
@@ -25,10 +25,11 @@ module AIXM
25
25
  layer: 'AIXM::Component::Layer',
26
26
  geometry: 'AIXM::Component::Geometry',
27
27
  vertical_limit: 'AIXM::Component::VerticalLimit',
28
+ point: 'AIXM::Component::Geometry::Point',
29
+ rhumb_line: 'AIXM::Component::Geometry::RhumbLine',
28
30
  arc: 'AIXM::Component::Geometry::Arc',
29
- border: 'AIXM::Component::Geometry::Border',
30
31
  circle: 'AIXM::Component::Geometry::Circle',
31
- point: 'AIXM::Component::Geometry::Point',
32
+ border: 'AIXM::Component::Geometry::Border',
32
33
  dme: 'AIXM::Feature::NavigationalAid::DME',
33
34
  designated_point: 'AIXM::Feature::NavigationalAid::DesignatedPoint',
34
35
  marker: 'AIXM::Feature::NavigationalAid::Marker',
@@ -17,7 +17,7 @@ module AIXM
17
17
  include AIXM::Association
18
18
 
19
19
  # @!method geometry
20
- # @return [AIXM::Component::Geometry] geometry the arc belongs to
20
+ # @return [AIXM::Component::Geometry] geometry this segment belongs to
21
21
  belongs_to :geometry, as: :segment
22
22
 
23
23
  # @return [AIXM::XY] center point
@@ -4,7 +4,8 @@ module AIXM
4
4
  module Component
5
5
  class Geometry
6
6
 
7
- # Points are defined by {#xy} coordinates.
7
+ # Either an individual point or the starting point of a great circle
8
+ # line. Defined by {#xy} coordinates.
8
9
  #
9
10
  # ===Cheat Sheet in Pseudo Code:
10
11
  # point = AIXM.point(
@@ -16,7 +17,7 @@ module AIXM
16
17
  include AIXM::Association
17
18
 
18
19
  # @!method geometry
19
- # @return [AIXM::Component::Geometry] geometry the arc belongs to
20
+ # @return [AIXM::Component::Geometry] geometry this segment belongs to
20
21
  belongs_to :geometry, as: :segment
21
22
 
22
23
  # @return [AIXM::XY] (starting) point
@@ -0,0 +1,54 @@
1
+ using AIXM::Refinements
2
+
3
+ module AIXM
4
+ module Component
5
+ class Geometry
6
+
7
+ # Starting point of a rhumb line which describes a spiral on a sphere
8
+ # crossing all meridians at the same angle. Defined by {#xy} coordinates.
9
+ #
10
+ # ===Cheat Sheet in Pseudo Code:
11
+ # point = AIXM.rhumb_line(
12
+ # xy: AIXM.xy
13
+ # )
14
+ #
15
+ # @see https://gitlab.com/openflightmaps/ofmx/wikis/Airspace#rhumb-line
16
+ class RhumbLine
17
+ include AIXM::Association
18
+
19
+ # @!method geometry
20
+ # @return [AIXM::Component::Geometry] geometry this segment belongs to
21
+ belongs_to :geometry, as: :segment
22
+
23
+ # @return [AIXM::XY] (starting) point
24
+ attr_reader :xy
25
+
26
+ def initialize(xy:)
27
+ self.xy = xy
28
+ end
29
+
30
+ # @return [String]
31
+ def inspect
32
+ %Q(#<#{self.class} xy="#{xy}">)
33
+ end
34
+
35
+ def xy=(value)
36
+ fail(ArgumentError, "invalid xy") unless value.is_a? AIXM::XY
37
+ @xy = value
38
+ end
39
+
40
+ # @return [String] AIXM or OFMX markup
41
+ def to_xml
42
+ builder = Builder::XmlMarkup.new(indent: 2)
43
+ builder.Avx do |avx|
44
+ avx.codeType('RHL')
45
+ avx.geoLat(xy.lat(AIXM.schema))
46
+ avx.geoLong(xy.long(AIXM.schema))
47
+ avx.codeDatum('WGE')
48
+ end
49
+ end
50
+ end
51
+
52
+ end
53
+ end
54
+ end
@@ -31,16 +31,18 @@ module AIXM
31
31
 
32
32
  # @!method segments
33
33
  # @return [Array<AIXM::Component::Geometry::Point,
34
+ # AIXM::Component::Geometry::RhumbLine
34
35
  # AIXM::Component::Geometry::Arc,
35
- # AIXM::Component::Geometry::Border,
36
- # AIXM::Component::Geometry::Circle>] points, arcs, borders or circle
36
+ # AIXM::Component::Geometry::Circle,
37
+ # AIXM::Component::Geometry::Border>] points, rhumb lines, arcs, borders or circle
37
38
  # @!method add_segment(segment)
38
39
  # @param segment [AIXM::Component::Geometry::Point,
40
+ # AIXM::Component::Geometry::RhumbLine,
39
41
  # AIXM::Component::Geometry::Arc,
40
- # AIXM::Component::Geometry::Border,
41
- # AIXM::Component::Geometry::Circle]
42
+ # AIXM::Component::Geometry::Circle,
43
+ # AIXM::Component::Geometry::Border]
42
44
  # @return [self]
43
- has_many :segments, accept: %i(point arc border circle)
45
+ has_many :segments, accept: %i(point rhumb_line arc circle border)
44
46
 
45
47
  # @!method airspace
46
48
  # @return [AIXM::Feature::Airspace] airspace the geometry defines
@@ -116,7 +116,7 @@ module AIXM
116
116
  @length = if value
117
117
  fail(ArgumentError, "invalid length") unless value.is_a?(AIXM::D) && value.dist > 0
118
118
  fail(ArgumentError, "invalid length unit") if width && width.unit != value.unit
119
- @length = value
119
+ value
120
120
  end
121
121
  end
122
122
 
@@ -124,7 +124,7 @@ module AIXM
124
124
  @width = if value
125
125
  fail(ArgumentError, "invalid width") unless value.is_a?(AIXM::D) && value.dist > 0
126
126
  fail(ArgumentError, "invalid width unit") if length && length.unit != value.unit
127
- @width = value
127
+ value
128
128
  end
129
129
  end
130
130
 
@@ -45,7 +45,9 @@ module AIXM
45
45
  end
46
46
 
47
47
  def code=(value)
48
- @code = CODES.lookup(value&.to_s&.to_sym, nil) || fail(ArgumentError, "invalid code")
48
+ @code = if value
49
+ CODES.lookup(value&.to_s&.to_sym, nil) || fail(ArgumentError, "invalid code")
50
+ end
49
51
  end
50
52
 
51
53
  def remarks=(value)
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/OFMX-Snapshot.xsd',
13
- xsd: Pathname(__dir__).join('..', '..', 'schemas', 'ofmx', '0', 'OFMX-Snapshot.xsd'),
12
+ namespace: 'http://schema.openflightmaps.org/0.1/OFMX-Snapshot.xsd',
13
+ xsd: Pathname(__dir__).join('..', '..', 'schemas', 'ofmx', '0.1', 'OFMX-Snapshot.xsd'),
14
14
  root: 'OFMX-Snapshot'
15
15
  }
16
16
  }.freeze
data/lib/aixm/document.rb CHANGED
@@ -61,6 +61,10 @@ module AIXM
61
61
  # Compare all ungrouped obstacles and create new obstacle groups whose
62
62
  # members are located within +max_distance+ pairwise.
63
63
  #
64
+ # @note OFMX requires every obstacle, even single ones, to be part of an
65
+ # obstacle group which has a region assigned. For this to work, you must
66
+ # assure every obstacle has a region assigned when using this method.
67
+ #
64
68
  # @param max_distance [AIXM::D] max distance between obstacle group member
65
69
  # pairs (default: 1 NM)
66
70
  # @return [Integer] number of obstacle groups added
@@ -145,6 +145,7 @@ module AIXM
145
145
  builder.tag!(as, ({ region: (region if AIXM.ofmx?) }.compact)) do |tag|
146
146
  tag.codeType(TYPES.key(type).to_s)
147
147
  tag.codeId(id)
148
+ tag.txtLocalType(local_type) if AIXM.ofmx? && local_type && local_type != name
148
149
  end
149
150
  end
150
151
  memoize :to_uid
@@ -166,7 +167,7 @@ module AIXM
166
167
  builder.comment! "Airspace: [#{TYPES.key(type)}] #{name || :UNNAMED}"
167
168
  builder.Ase({ source: (source if AIXM.ofmx?) }.compact) do |ase|
168
169
  ase << to_uid.indent(2)
169
- ase.txtLocalType(local_type) if local_type && local_type != name
170
+ ase.txtLocalType(local_type) if AIXM.aixm? && local_type && local_type != name
170
171
  ase.txtName(name) if name
171
172
  unless layered?
172
173
  ase << layers.first.to_xml.indent(2)
@@ -33,9 +33,11 @@ module AIXM
33
33
  # See {AIXM::Feature::ObstacleGroup} for how to define physical links
34
34
  # between two obstacles (e.g. cables between powerline towers).
35
35
  #
36
- # Please note: Accuracies (+xy_accuracy+ and +z_accuracy+) set on an
37
- # obstacle group are implicitly applied to all obstacles of the group
38
- # unless they have their own, different accuracies set.
36
+ # Please note: As soon as an obstacle is added to an obstacle group, the
37
+ # +xy_accuracy+ and +z_accuracy+ of the obstacle group overwrite whatever
38
+ # is set on the individual obstacles. On the other hand, if the obstacle
39
+ # group has no +source+ set, it will inherit this value from the first
40
+ # obstacle in the group.
39
41
  #
40
42
  # @see https://gitlab.com/openflightmaps/ofmx/wikis/Obstacle
41
43
  class Obstacle < Feature
@@ -218,6 +220,11 @@ module AIXM
218
220
  end
219
221
  private :link_type=
220
222
 
223
+ # @return [Boolean] whether part of an obstacle group
224
+ def grouped?
225
+ obstacle_group && obstacle_group.obstacles.count > 1
226
+ end
227
+
221
228
  # @return [Boolean] whether obstacle is linked to another one
222
229
  def linked?
223
230
  !!linked_to
@@ -225,8 +232,10 @@ module AIXM
225
232
 
226
233
  # @return [String] UID markup
227
234
  def to_uid(as: :ObsUid)
235
+ obstacle_group = self.obstacle_group || singleton_obstacle_group
228
236
  builder = Builder::XmlMarkup.new(indent: 2)
229
- builder.tag!(as, { region: (region if AIXM.ofmx?) }.compact) do |tag|
237
+ builder.tag!(as) do |tag|
238
+ tag << obstacle_group.to_uid.indent(2) if AIXM.ofmx?
230
239
  tag.geoLat((xy.lat(AIXM.schema)))
231
240
  tag.geoLong((xy.long(AIXM.schema)))
232
241
  end
@@ -235,19 +244,19 @@ module AIXM
235
244
 
236
245
  # @return [String] AIXM or OFMX markup
237
246
  def to_xml(delegate: true)
238
- return obstacle_group.to_xml if delegate && obstacle_group && AIXM.ofmx?
247
+ obstacle_group = self.obstacle_group || singleton_obstacle_group
248
+ return obstacle_group.to_xml if delegate && AIXM.ofmx?
239
249
  builder = Builder::XmlMarkup.new(indent: 2)
240
250
  builder.comment! "Obstacle: [#{type}] #{xy.to_s} #{name}".strip
241
251
  builder.Obs({ source: (source if AIXM.ofmx?) }.compact) do |obs|
242
252
  obs << to_uid.indent(2)
243
- obs << obstacle_group.to_uid.indent(2) if obstacle_group && AIXM.ofmx?
244
253
  obs.txtName(name) if name
245
254
  if AIXM.ofmx?
246
255
  obs.codeType(TYPES.key(type).to_s)
247
256
  else
248
257
  obs.txtDescrType(TYPES.key(type).to_s)
249
258
  end
250
- obs.codeGroup(obstacle_group ? 'Y' : 'N') if AIXM.aixm?
259
+ obs.codeGroup(grouped? ? 'Y' : 'N')
251
260
  if AIXM.ofmx?
252
261
  obs.codeLgt(lighting ? 'Y' : 'N') unless lighting.nil?
253
262
  obs.codeMarking(marking ? 'Y' : 'N') unless marking.nil?
@@ -257,14 +266,13 @@ module AIXM
257
266
  obs.txtDescrLgt(lighting_remarks) if lighting_remarks
258
267
  obs.txtDescrMarking(marking_remarks) if marking_remarks
259
268
  obs.codeDatum('WGE')
260
- if accuracy = (xy_accuracy || (obstacle_group&.xy_accuracy if AIXM.aixm?))
261
- obs.valGeoAccuracy(accuracy.dist.trim)
262
- obs.uomGeoAccuracy(accuracy.unit.upcase.to_s)
269
+ if AIXM.aixm? && obstacle_group.xy_accuracy
270
+ obs.valGeoAccuracy(obstacle_group.xy_accuracy.dist.trim)
271
+ obs.uomGeoAccuracy(obstacle_group.xy_accuracy.unit.upcase.to_s)
263
272
  end
264
273
  obs.valElev(z.alt)
265
- if accuracy = (z_accuracy || (obstacle_group&.z_accuracy if AIXM.aixm?))
266
- obs.valElevAccuracy(accuracy.to_ft.dist.round)
267
- obs.uomElevAccuracy('FT') if AIXM.ofmx?
274
+ if AIXM.aixm? && obstacle_group.z_accuracy
275
+ obs.valElevAccuracy(obstacle_group.z_accuracy.to_ft.dist.round)
268
276
  end
269
277
  obs.valHgt(height.to_ft.dist.round) if height
270
278
  obs.uomDistVer('FT')
@@ -276,7 +284,7 @@ module AIXM
276
284
  obs.valRadius(radius.dist.trim)
277
285
  obs.uomRadius(radius.unit.upcase.to_s)
278
286
  end
279
- if linked?
287
+ if grouped? && linked?
280
288
  obs << linked_to.to_uid(as: :ObsUidLink).indent(2)
281
289
  obs.codeLinkType(LINK_TYPES.key(link_type).to_s)
282
290
  end
@@ -287,6 +295,14 @@ module AIXM
287
295
  end
288
296
  end
289
297
 
298
+ private
299
+
300
+ # OFMX requires single, ungrouped obstacles to be the only member of a
301
+ # singleton obstacle group.
302
+ def singleton_obstacle_group
303
+ AIXM.obstacle_group(region: region).add_obstacle self
304
+ end
305
+
290
306
  end
291
307
  end
292
308
  end
@@ -6,11 +6,6 @@ module AIXM
6
6
  # Groups of obstacles which consist of either linked (e.g. power line
7
7
  # towers) or unlinked (e.g. wind turbines) members.
8
8
  #
9
- # Obstacle group should contain at least two obstacles. However, if the
10
- # details of each obstacle of the group are unknown, you may add only one
11
- # virtual obstacle to the group and mention the number of real obstacles
12
- # in it's remarks.
13
- #
14
9
  # ===Cheat Sheet in Pseudo Code:
15
10
  # obstacle_group = AIXM.obstacle_group(
16
11
  # source: String or nil # see remarks below
@@ -35,9 +30,11 @@ module AIXM
35
30
  # link_type: LINK_TYPES
36
31
  # )
37
32
  #
38
- # Please note: Accuracies (+xy_accuracy+ and +z_accuracy+) set on an
39
- # obstacle group are implicitly applied to all obstacles of the group
40
- # unless they have their own, different accuracies set.
33
+ # Please note: As soon as an obstacle is added to an obstacle group, the
34
+ # +xy_accuracy+ and +z_accuracy+ of the obstacle group overwrite whatever
35
+ # is set on the individual obstacles. On the other hand, if the obstacle
36
+ # group has no +source+ set, it will inherit this value from the first
37
+ # obstacle in the group.
41
38
  #
42
39
  # @see https://gitlab.com/openflightmaps/ofmx/wikis/Obstacle
43
40
  class ObstacleGroup < Feature
@@ -113,6 +110,7 @@ module AIXM
113
110
  def to_uid
114
111
  builder = Builder::XmlMarkup.new(indent: 2)
115
112
  builder.OgrUid({ region: (region if AIXM.ofmx?) }.compact) do |ogr_uid|
113
+ ogr_uid.txtName(name)
116
114
  ogr_uid.geoLat(obstacles.first.xy.lat(AIXM.schema))
117
115
  ogr_uid.geoLong(obstacles.first.xy.long(AIXM.schema))
118
116
  end
@@ -126,7 +124,6 @@ module AIXM
126
124
  builder.comment! "Obstacle group: #{name}".strip
127
125
  builder.Ogr({ source: (source if AIXM.ofmx?) }.compact) do |ogr|
128
126
  ogr << to_uid.indent(2)
129
- ogr.txtName(name)
130
127
  ogr.codeDatum('WGE')
131
128
  if xy_accuracy
132
129
  ogr.valGeoAccuracy(xy_accuracy.dist.trim)
data/lib/aixm/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module AIXM
2
- VERSION = "0.3.11".freeze
2
+ VERSION = "1.0.0".freeze
3
3
  end
data/lib/aixm/xy.rb CHANGED
@@ -4,6 +4,14 @@ module AIXM
4
4
 
5
5
  # Geographical coordinates
6
6
  #
7
+ # ===Warning!
8
+ # Coordinate tuples can be noted in mathematical order (XY = longitude first,
9
+ # latitude second) or in (more common) geographical order (YX = latitude
10
+ # first, longitude second). However you sort the attributes, make sure not
11
+ # to flip them by accident.
12
+ #
13
+ # See https://en.wikipedia.org/wiki/Geographic_coordinate_system
14
+ #
7
15
  # ===Recognized notations:
8
16
  # * DD - examples: 12.12345678 (north or east), -12.12345678 (south or west)
9
17
  # * DMS - examples: 11°22'33.44"N, 1112233.44W,
data/lib/aixm.rb CHANGED
@@ -36,9 +36,10 @@ require_relative 'aixm/component/service'
36
36
  require_relative 'aixm/component/frequency'
37
37
  require_relative 'aixm/component/geometry'
38
38
  require_relative 'aixm/component/geometry/point'
39
+ require_relative 'aixm/component/geometry/rhumb_line'
39
40
  require_relative 'aixm/component/geometry/arc'
40
- require_relative 'aixm/component/geometry/border'
41
41
  require_relative 'aixm/component/geometry/circle'
42
+ require_relative 'aixm/component/geometry/border'
42
43
  require_relative 'aixm/component/layer'
43
44
  require_relative 'aixm/component/vertical_limit'
44
45
  require_relative 'aixm/component/timetable'
File without changes
File without changes
@@ -1900,7 +1900,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
1900
1900
  <xsd:simpleType name="codeIdDesigPtBase">
1901
1901
  <xsd:restriction base="alphanumeric">
1902
1902
  <xsd:minLength value="1"/>
1903
- <xsd:maxLength value="5"/>
1903
+ <xsd:maxLength value="10"/>
1904
1904
  </xsd:restriction>
1905
1905
  </xsd:simpleType>
1906
1906
  <xsd:complexType name="codeIdDesigPt">
@@ -3403,7 +3403,11 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
3403
3403
  <xsd:enumeration value="VFR-RP"/>
3404
3404
  <xsd:enumeration value="VFR-MRP"/>
3405
3405
  <xsd:enumeration value="VFR-ENR"/>
3406
- <xsd:enumeration value="VFR-GLD"/>
3406
+ <xsd:enumeration value="VFR-GLDR"/>
3407
+ <xsd:enumeration value="VFR-HELI"/>
3408
+ <xsd:enumeration value="TOWN"/>
3409
+ <xsd:enumeration value="MOUNTAIN-TOP"/>
3410
+ <xsd:enumeration value="MOUNTAIN-PASS"/>
3407
3411
  <xsd:enumeration value="OTHER"/>
3408
3412
  </xsd:restriction>
3409
3413
  </xsd:simpleType>
@@ -4436,6 +4440,22 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
4436
4440
  </xsd:extension>
4437
4441
  </xsd:simpleContent>
4438
4442
  </xsd:complexType>
4443
+ <xsd:simpleType name="codeCodingModeBase">
4444
+ <xsd:restriction base="xsd:string">
4445
+ <xsd:enumeration value="CONST"/>
4446
+ <xsd:enumeration value="PARA"/>
4447
+ </xsd:restriction>
4448
+ </xsd:simpleType>
4449
+ <xsd:complexType name="codeCodingMode">
4450
+ <xsd:annotation>
4451
+ <xsd:documentation>A code for coding mode: Constant or Parametrized.</xsd:documentation>
4452
+ </xsd:annotation>
4453
+ <xsd:simpleContent>
4454
+ <xsd:extension base="codeCodingModeBase">
4455
+ <xsd:attributeGroup ref="Changes"/>
4456
+ </xsd:extension>
4457
+ </xsd:simpleContent>
4458
+ </xsd:complexType>
4439
4459
  <xsd:simpleType name="dateMonthDayBase">
4440
4460
  <xsd:restriction base="xsd:string">
4441
4461
  <xsd:pattern value="(((0[1-9])|(1[0-9])|(2[0-9]))\-((0[1-9])|10|11|12))|(30\-(01|03|04|05|06|07|08|09|10|11|12))|(31\-(01|03|05|07|08|10|12))|SDLST|EDLST"/>
@@ -4496,6 +4516,36 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
4496
4516
  </xsd:extension>
4497
4517
  </xsd:simpleContent>
4498
4518
  </xsd:complexType>
4519
+ <xsd:simpleType name="lineBase">
4520
+ <xsd:restriction base="xsd:string">
4521
+ <xsd:pattern value="-?((0\d|1[0-7])\d\.\d{8}|180\.0{8}),-?([0-8]\d\.\d{8}|90\.0{8})( -?((0\d|1[0-7])\d\.\d{8}|180\.0{8}),-?([0-8]\d\.\d{8}|90\.0{8}))+"/>
4522
+ </xsd:restriction>
4523
+ </xsd:simpleType>
4524
+ <xsd:complexType name="line">
4525
+ <xsd:annotation>
4526
+ <xsd:documentation>A line or polygon.</xsd:documentation>
4527
+ </xsd:annotation>
4528
+ <xsd:simpleContent>
4529
+ <xsd:extension base="lineBase">
4530
+ <xsd:attributeGroup ref="Changes"/>
4531
+ </xsd:extension>
4532
+ </xsd:simpleContent>
4533
+ </xsd:complexType>
4534
+ <xsd:simpleType name="bezierCurveBase">
4535
+ <xsd:restriction base="xsd:string">
4536
+ <xsd:pattern value="-?((0\d|1[0-7])\d\.\d{8}|180\.0{8}),-?([0-8]\d\.\d{8}|90\.0{8})(( -?((0\d|1[0-7])\d\.\d{8}|180\.0{8}),-?([0-8]\d\.\d{8}|90\.0{8})){3})+"/>
4537
+ </xsd:restriction>
4538
+ </xsd:simpleType>
4539
+ <xsd:complexType name="bezierCurve">
4540
+ <xsd:annotation>
4541
+ <xsd:documentation>An open or closed Bézier curve.</xsd:documentation>
4542
+ </xsd:annotation>
4543
+ <xsd:simpleContent>
4544
+ <xsd:extension base="bezierCurveBase">
4545
+ <xsd:attributeGroup ref="Changes"/>
4546
+ </xsd:extension>
4547
+ </xsd:simpleContent>
4548
+ </xsd:complexType>
4499
4549
  <xsd:simpleType name="noNumberBase">
4500
4550
  <xsd:restriction base="xsd:decimal">
4501
4551
  <xsd:pattern value="\d{1,4}"/>
@@ -1295,11 +1295,6 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
1295
1295
  <xsd:documentation>Airspace is requiring for FPL-MSG the use of Unit contact address</xsd:documentation>
1296
1296
  </xsd:annotation>
1297
1297
  </xsd:element>
1298
- <xsd:element name="txtLocalType" type="txtName" minOccurs="0">
1299
- <xsd:annotation>
1300
- <xsd:documentation>Local type designator</xsd:documentation>
1301
- </xsd:annotation>
1302
- </xsd:element>
1303
1298
  <xsd:element name="txtName" type="txtName" minOccurs="0">
1304
1299
  <xsd:annotation>
1305
1300
  <xsd:documentation>Name</xsd:documentation>
@@ -1423,6 +1418,11 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
1423
1418
  <xsd:documentation>Coded identifier</xsd:documentation>
1424
1419
  </xsd:annotation>
1425
1420
  </xsd:element>
1421
+ <xsd:element name="txtLocalType" type="txtName" minOccurs="0">
1422
+ <xsd:annotation>
1423
+ <xsd:documentation>Local type designator</xsd:documentation>
1424
+ </xsd:annotation>
1425
+ </xsd:element>
1426
1426
  </xsd:sequence>
1427
1427
  <xsd:attribute ref="mid"/>
1428
1428
  <xsd:attribute ref="region" use="required"/>
@@ -1877,6 +1877,26 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
1877
1877
  <xsd:documentation>Name</xsd:documentation>
1878
1878
  </xsd:annotation>
1879
1879
  </xsd:element>
1880
+ <xsd:element name="valElev" type="valDistVer" minOccurs="0">
1881
+ <xsd:annotation>
1882
+ <xsd:documentation>Elevation</xsd:documentation>
1883
+ </xsd:annotation>
1884
+ </xsd:element>
1885
+ <xsd:element name="uomElev" type="uomElev" minOccurs="0">
1886
+ <xsd:annotation>
1887
+ <xsd:documentation>Unit of measurement [elevation]</xsd:documentation>
1888
+ </xsd:annotation>
1889
+ </xsd:element>
1890
+ <xsd:element name="valTrueBrg" type="valAngleBrg" minOccurs="0">
1891
+ <xsd:annotation>
1892
+ <xsd:documentation>True bearing</xsd:documentation>
1893
+ </xsd:annotation>
1894
+ </xsd:element>
1895
+ <xsd:element name="valMagBrg" type="valAngleBrg" minOccurs="0">
1896
+ <xsd:annotation>
1897
+ <xsd:documentation>Magnetic bearing</xsd:documentation>
1898
+ </xsd:annotation>
1899
+ </xsd:element>
1880
1900
  <xsd:element name="txtRmk" type="txtRmk" minOccurs="0">
1881
1901
  <xsd:annotation>
1882
1902
  <xsd:documentation>Remark</xsd:documentation>
@@ -2648,6 +2668,56 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
2648
2668
  <xsd:documentation>Unit of measurement [minimum eye height over threshold]</xsd:documentation>
2649
2669
  </xsd:annotation>
2650
2670
  </xsd:element>
2671
+ <xsd:element name="codeRearTakeOffSectorAvbl" type="codeYesNo" minOccurs="0">
2672
+ <xsd:annotation>
2673
+ <xsd:documentation>Rear take-off sector available?</xsd:documentation>
2674
+ </xsd:annotation>
2675
+ </xsd:element>
2676
+ <xsd:element name="valRearTakeOffSectorTrueBrg" type="valAngleBrg" minOccurs="0">
2677
+ <xsd:annotation>
2678
+ <xsd:documentation>True bearing of rear take-off sector</xsd:documentation>
2679
+ </xsd:annotation>
2680
+ </xsd:element>
2681
+ <xsd:element name="valRearTakeOffSectorSlopeAngle" type="valAngle" minOccurs="0">
2682
+ <xsd:annotation>
2683
+ <xsd:documentation>Rear take-off sector slope angle</xsd:documentation>
2684
+ </xsd:annotation>
2685
+ </xsd:element>
2686
+ <xsd:element name="codeCodingMode" type="codeCodingMode" minOccurs="0">
2687
+ <xsd:annotation>
2688
+ <xsd:documentation>Coding mode</xsd:documentation>
2689
+ </xsd:annotation>
2690
+ </xsd:element>
2691
+ <xsd:element name="geoLatIap" type="geoLat" minOccurs="0">
2692
+ <xsd:annotation>
2693
+ <xsd:documentation>Initial approach point latitude</xsd:documentation>
2694
+ </xsd:annotation>
2695
+ </xsd:element>
2696
+ <xsd:element name="geoLongIap" type="geoLong" minOccurs="0">
2697
+ <xsd:annotation>
2698
+ <xsd:documentation>Initial approach point longitude</xsd:documentation>
2699
+ </xsd:annotation>
2700
+ </xsd:element>
2701
+ <xsd:element name="valAltIap" type="valDistVer" minOccurs="0">
2702
+ <xsd:annotation>
2703
+ <xsd:documentation>Initial approach point altitude</xsd:documentation>
2704
+ </xsd:annotation>
2705
+ </xsd:element>
2706
+ <xsd:element name="uomAltIap" type="uomDistVer" minOccurs="0">
2707
+ <xsd:annotation>
2708
+ <xsd:documentation>Unit of measurement [initial approach point altitude]</xsd:documentation>
2709
+ </xsd:annotation>
2710
+ </xsd:element>
2711
+ <xsd:element name="bezierSectorExtent" type="bezierCurve" minOccurs="0">
2712
+ <xsd:annotation>
2713
+ <xsd:documentation>Longitude</xsd:documentation>
2714
+ </xsd:annotation>
2715
+ </xsd:element>
2716
+ <xsd:element name="bezierSectorCentreLine" type="bezierCurve" minOccurs="0">
2717
+ <xsd:annotation>
2718
+ <xsd:documentation>Longitude</xsd:documentation>
2719
+ </xsd:annotation>
2720
+ </xsd:element>
2651
2721
  <xsd:element name="txtRmk" type="txtRmk" minOccurs="0">
2652
2722
  <xsd:annotation>
2653
2723
  <xsd:documentation>Remark</xsd:documentation>
@@ -3016,6 +3086,11 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
3016
3086
  <xsd:documentation>Width</xsd:documentation>
3017
3087
  </xsd:annotation>
3018
3088
  </xsd:element>
3089
+ <xsd:element name="valMaxDim" type="valDistHorz" minOccurs="0">
3090
+ <xsd:annotation>
3091
+ <xsd:documentation>Largest overall dimension as defined in ICAO annex 14</xsd:documentation>
3092
+ </xsd:annotation>
3093
+ </xsd:element>
3019
3094
  <xsd:element name="uomDim" type="uomDistHorz" minOccurs="0">
3020
3095
  <xsd:annotation>
3021
3096
  <xsd:documentation>Unit of measurement [horizontal dimension]</xsd:documentation>
@@ -5450,11 +5525,6 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
5450
5525
  <xsd:documentation>a version of Obstacle group</xsd:documentation>
5451
5526
  </xsd:annotation>
5452
5527
  </xsd:element>
5453
- <xsd:element name="txtName" type="txtName">
5454
- <xsd:annotation>
5455
- <xsd:documentation>Name</xsd:documentation>
5456
- </xsd:annotation>
5457
- </xsd:element>
5458
5528
  <xsd:element name="codeDatum" type="codeDatum">
5459
5529
  <xsd:annotation>
5460
5530
  <xsd:documentation>Datum</xsd:documentation>
@@ -5493,6 +5563,11 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
5493
5563
  <xsd:documentation>Obstacle group - UID</xsd:documentation>
5494
5564
  </xsd:annotation>
5495
5565
  <xsd:sequence>
5566
+ <xsd:element name="txtName" type="txtName">
5567
+ <xsd:annotation>
5568
+ <xsd:documentation>Name</xsd:documentation>
5569
+ </xsd:annotation>
5570
+ </xsd:element>
5496
5571
  <xsd:element name="geoLat" type="geoLat">
5497
5572
  <xsd:annotation>
5498
5573
  <xsd:documentation>Group reference point latitude</xsd:documentation>
@@ -5517,11 +5592,6 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
5517
5592
  <xsd:documentation>a version of Obstacle</xsd:documentation>
5518
5593
  </xsd:annotation>
5519
5594
  </xsd:element>
5520
- <xsd:element name="OgrUid" type="ObstacleGroupUidType" minOccurs="0">
5521
- <xsd:annotation>
5522
- <xsd:documentation>a version of Obstacle group</xsd:documentation>
5523
- </xsd:annotation>
5524
- </xsd:element>
5525
5595
  <xsd:element name="txtName" type="txtName" minOccurs="0">
5526
5596
  <xsd:annotation>
5527
5597
  <xsd:documentation>Name</xsd:documentation>
@@ -5537,6 +5607,11 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
5537
5607
  <xsd:documentation>Type details</xsd:documentation>
5538
5608
  </xsd:annotation>
5539
5609
  </xsd:element>
5610
+ <xsd:element name="codeGroup" type="codeYesNo" minOccurs="0">
5611
+ <xsd:annotation>
5612
+ <xsd:documentation>Group of obstacles</xsd:documentation>
5613
+ </xsd:annotation>
5614
+ </xsd:element>
5540
5615
  <xsd:element name="codeLgt" type="codeYesNo" minOccurs="0">
5541
5616
  <xsd:annotation>
5542
5617
  <xsd:documentation>Lighted</xsd:documentation>
@@ -5562,31 +5637,11 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
5562
5637
  <xsd:documentation>Datum</xsd:documentation>
5563
5638
  </xsd:annotation>
5564
5639
  </xsd:element>
5565
- <xsd:element name="valGeoAccuracy" type="valDistHorz" minOccurs="0">
5566
- <xsd:annotation>
5567
- <xsd:documentation>Geographical accuracy</xsd:documentation>
5568
- </xsd:annotation>
5569
- </xsd:element>
5570
- <xsd:element name="uomGeoAccuracy" type="uomDistHorz" minOccurs="0">
5571
- <xsd:annotation>
5572
- <xsd:documentation>Unit of measurement [geographical accuracy]</xsd:documentation>
5573
- </xsd:annotation>
5574
- </xsd:element>
5575
5640
  <xsd:element name="valElev" type="valDistVer">
5576
5641
  <xsd:annotation>
5577
5642
  <xsd:documentation>Elevation</xsd:documentation>
5578
5643
  </xsd:annotation>
5579
5644
  </xsd:element>
5580
- <xsd:element name="valElevAccuracy" type="valDistVer" minOccurs="0">
5581
- <xsd:annotation>
5582
- <xsd:documentation>Elevation accuracy</xsd:documentation>
5583
- </xsd:annotation>
5584
- </xsd:element>
5585
- <xsd:element name="uomElevAccuracy" type="uomElev" minOccurs="0">
5586
- <xsd:annotation>
5587
- <xsd:documentation>Unit of measurement [elevation accuracy]</xsd:documentation>
5588
- </xsd:annotation>
5589
- </xsd:element>
5590
5645
  <xsd:element name="valHgt" type="valDistVer" minOccurs="0">
5591
5646
  <xsd:annotation>
5592
5647
  <xsd:documentation>Height</xsd:documentation>
@@ -5660,6 +5715,11 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
5660
5715
  <xsd:documentation>Obstacle - UID</xsd:documentation>
5661
5716
  </xsd:annotation>
5662
5717
  <xsd:sequence>
5718
+ <xsd:element name="OgrUid" type="ObstacleGroupUidType">
5719
+ <xsd:annotation>
5720
+ <xsd:documentation>a version of Obstacle group</xsd:documentation>
5721
+ </xsd:annotation>
5722
+ </xsd:element>
5663
5723
  <xsd:element name="geoLat" type="geoLat">
5664
5724
  <xsd:annotation>
5665
5725
  <xsd:documentation>Latitude</xsd:documentation>
@@ -5672,7 +5732,6 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
5672
5732
  </xsd:element>
5673
5733
  </xsd:sequence>
5674
5734
  <xsd:attribute ref="mid"/>
5675
- <xsd:attribute ref="region" use="required"/>
5676
5735
  </xsd:complexType>
5677
5736
  <xsd:complexType name="OilType">
5678
5737
  <xsd:annotation>
@@ -8601,12 +8660,22 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
8601
8660
  </xsd:element>
8602
8661
  <xsd:element name="dateValidWef" type="dateMonthDay">
8603
8662
  <xsd:annotation>
8604
- <xsd:documentation>Yearly start date</xsd:documentation>
8663
+ <xsd:documentation>(Yearly) start date</xsd:documentation>
8664
+ </xsd:annotation>
8665
+ </xsd:element>
8666
+ <xsd:element name="dateYearValidWef" type="dateYear" minOccurs="0">
8667
+ <xsd:annotation>
8668
+ <xsd:documentation>Year of start date</xsd:documentation>
8605
8669
  </xsd:annotation>
8606
8670
  </xsd:element>
8607
8671
  <xsd:element name="dateValidTil" type="dateMonthDay">
8608
8672
  <xsd:annotation>
8609
- <xsd:documentation>Yearly end date</xsd:documentation>
8673
+ <xsd:documentation>(Yearly) end date</xsd:documentation>
8674
+ </xsd:annotation>
8675
+ </xsd:element>
8676
+ <xsd:element name="dateYearValidTil" type="dateYear" minOccurs="0">
8677
+ <xsd:annotation>
8678
+ <xsd:documentation>Year of end date</xsd:documentation>
8610
8679
  </xsd:annotation>
8611
8680
  </xsd:element>
8612
8681
  <xsd:element name="codeDay" type="codeDay">
@@ -8693,12 +8762,22 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
8693
8762
  </xsd:element>
8694
8763
  <xsd:element name="dateValidWef" type="dateMonthDay">
8695
8764
  <xsd:annotation>
8696
- <xsd:documentation>Yearly start date</xsd:documentation>
8765
+ <xsd:documentation>(Yearly) start date</xsd:documentation>
8766
+ </xsd:annotation>
8767
+ </xsd:element>
8768
+ <xsd:element name="dateYearValidWef" type="dateYear" minOccurs="0">
8769
+ <xsd:annotation>
8770
+ <xsd:documentation>Year of start date</xsd:documentation>
8697
8771
  </xsd:annotation>
8698
8772
  </xsd:element>
8699
8773
  <xsd:element name="dateValidTil" type="dateMonthDay">
8700
8774
  <xsd:annotation>
8701
- <xsd:documentation>Yearly end date</xsd:documentation>
8775
+ <xsd:documentation>(Yearly) end date</xsd:documentation>
8776
+ </xsd:annotation>
8777
+ </xsd:element>
8778
+ <xsd:element name="dateYearValidTil" type="dateYear" minOccurs="0">
8779
+ <xsd:annotation>
8780
+ <xsd:documentation>Year of end date</xsd:documentation>
8702
8781
  </xsd:annotation>
8703
8782
  </xsd:element>
8704
8783
  <xsd:element name="codeDay" type="codeDay">
File without changes
data.tar.gz.sig CHANGED
Binary file
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: aixm
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.11
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sven Schwyn
@@ -30,7 +30,7 @@ cert_chain:
30
30
  1+2Y1+i+4jd1B7qxIgOLxQTNIJiwE0sqU1itFfuesfgUACS7M0IV9u9Bp4hBGNEw
31
31
  5JcY2h7owdMxXIvgk1oakgldFJc=
32
32
  -----END CERTIFICATE-----
33
- date: 2021-11-08 00:00:00.000000000 Z
33
+ date: 2021-11-28 00:00:00.000000000 Z
34
34
  dependencies:
35
35
  - !ruby/object:Gem::Dependency
36
36
  name: builder
@@ -231,6 +231,7 @@ files:
231
231
  - lib/aixm/component/geometry/border.rb
232
232
  - lib/aixm/component/geometry/circle.rb
233
233
  - lib/aixm/component/geometry/point.rb
234
+ - lib/aixm/component/geometry/rhumb_line.rb
234
235
  - lib/aixm/component/helipad.rb
235
236
  - lib/aixm/component/layer.rb
236
237
  - lib/aixm/component/lighting.rb
@@ -274,11 +275,11 @@ files:
274
275
  - schemas/aixm/4.5/AIXM-DataTypes.xsd
275
276
  - schemas/aixm/4.5/AIXM-Features.xsd
276
277
  - schemas/aixm/4.5/AIXM-Snapshot.xsd
277
- - schemas/ofmx/0/OFMX-CSV-Obstacle.json
278
- - schemas/ofmx/0/OFMX-CSV.json
279
- - schemas/ofmx/0/OFMX-DataTypes.xsd
280
- - schemas/ofmx/0/OFMX-Features.xsd
281
- - schemas/ofmx/0/OFMX-Snapshot.xsd
278
+ - schemas/ofmx/0.1/OFMX-CSV-Obstacle.json
279
+ - schemas/ofmx/0.1/OFMX-CSV.json
280
+ - schemas/ofmx/0.1/OFMX-DataTypes.xsd
281
+ - schemas/ofmx/0.1/OFMX-Features.xsd
282
+ - schemas/ofmx/0.1/OFMX-Snapshot.xsd
282
283
  homepage: https://github.com/svoop/aixm
283
284
  licenses:
284
285
  - MIT
@@ -310,7 +311,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
310
311
  - !ruby/object:Gem::Version
311
312
  version: '0'
312
313
  requirements: []
313
- rubygems_version: 3.2.30
314
+ rubygems_version: 3.2.32
314
315
  signing_key:
315
316
  specification_version: 4
316
317
  summary: Builder for AIXM/OFMX aeronautical information
metadata.gz.sig CHANGED
Binary file