Class: AIXM::Component::Layer

Inherits:
AIXM::Component show all
Includes:
AIXM::Concerns::Association, AIXM::Concerns::Remarks, AIXM::Concerns::Timetable
Defined in:
lib/aixm/component/layer.rb

Overview

Each airspace has one or more layers with optional airspace class and mandatory vertical limit.

Cheat Sheet in Pseudo Code:

layer = AIXM.layer(
  class: String or nil
  location_indicator: String or nil
  vertical_limit: AIXM.vertical_limit
)
layer.activity = String or nil
layer.timetable = AIXM.timetable or nil
layer.selective = true or false (default)
layer.remarks = String or nil
layer.add_service(AIXM.service)

Constant Summary collapse

CLASSES =
(:A..:G).freeze
ACTIVITIES =
{
  ACCIDENT: :accident_investigation,
  ACROBAT: :acrobatics,
  AIRGUN: :aerial_gunnery,
  AIRMODEL: :aeromodelling,
  AIRSHOW: :air_show,
  ANTIHAIL: :anti_hail_rocket,
  ARTILERY: :artillary_firing,
  ASCENT: :probe,
  ATS: :air_traffic_services,
  BALLOON: :balloon,
  BIRD: :bird_hazard,
  'BIRD-MGR': :bird_migration,
  BLAST: :blasting_operation,
  DROP: :dropping,
  DUSTING: :crop_dusting,
  EQUIPMENT: :special_equipment_required,
  'EQUIPMENT-833': :radio_8_33_required,
  'EQUIPMENT-RNAV': :rnav_equipment_required,
  'EQUIPMENT-RSVM': :rsvm_equipment_required,
  EXERCISE: :combat_exercise,
  FAUNA: :sensitive_fauna,
  FIRE: :fire_suppression,
  FIREWORK: :fireworks,
  GAZ: :gaz_field,
  GLIDER: :gliding,
  HANGGLIDER: :hanggliding,
  'HI-LIGHT': :high_intensity_light,
  'HI-RADIO': :high_intensity_radio,
  'IND-CHEM': :chemical_plant,
  'IND-NUCLEAR': :nuclear_activity,
  'IND-OIL': :oil_refinery,
  JETCLIMB: :jet_climb,
  LASER: :laser_light,
  MILOPS: :military_operation,
  MISSILES: :guided_missiles,
  NATURE: :natural_reserve,
  NAVAL: :ship_exercise,
  'NO-NOISE': :noise_abatement,
  OIL: :oil_field,
  PARACHUTE: :parachuting,
  PARAGLIDER: :paragliding,
  POPULATION: :highly_populated,
  PROCEDURE: :special_procedure,
  REFUEL: :refuelling,
  SHOOT: :shooting_from_ground,
  SPACEFLT: :space_flight,
  SPORT: :sport,
  TECHNICAL:  :technical_activity,
  'TFC-AD': :aerodrome_traffic,
  'TFC-HELI': :helicopter_traffic,
  TOWING: :towing_traffic,
  TRG: :training,
  UAV: :drone,
  ULM: :ultra_light_flight,
  VIP: :vip,
  'VIP-PRES': :president,
  'VIP-VICE': :vice_president,
  WATERBLAST: :underwater_explosion,
  WINCH: :glider_winch,
  WORK: :aerial_work,
  OTHER: :other
}.freeze

Instance Attribute Summary collapse

Attributes included from AIXM::Concerns::Remarks

#remarks

Attributes included from AIXM::Concerns::Timetable

#timetable

Attributes inherited from AIXM::Component

#meta

Instance Method Summary collapse

Methods included from AIXM::Concerns::Association

included

Methods included from AIXM::Concerns::HashEquality

#eql?, #hash

Methods included from AIXM::Concerns::XMLBuilder

#build_fragment, #to_uid, #to_xml

Methods included from AIXM::Concerns::Memoize

included, method

Constructor Details

#initialize(class: nil, location_indicator: nil, vertical_limit:) ⇒ Layer

See the cheat sheet for examples on how to create instances of this class.


129
130
131
132
133
# File 'lib/aixm/component/layer.rb', line 129

def initialize(class: nil, location_indicator: nil, vertical_limit:)
  self.class = binding.local_variable_get(:class)
  self.location_indicator, self.vertical_limit = location_indicator, vertical_limit
  self.selective = false
end

Instance Attribute Details

#activitySymbol? #activity=(value) ⇒ Object

Primary activity

Overloads:


125
126
127
# File 'lib/aixm/component/layer.rb', line 125

def activity
  @activity
end

#classSymbol #class=(value) ⇒ Object

Note:

Use Object#__class__ alias to query the Ruby object class.

Class of layer.

Overloads:

  • #classSymbol

    Returns any of CLASSES.

    Returns:

  • #class=(value) ⇒ Object

    Parameters:

    • value (Symbol)

      any of CLASSES


149
150
151
# File 'lib/aixm/component/layer.rb', line 149

def class
  @klass
end

#location_indicatorString? #location_indicator=(value) ⇒ Object

Four letter location identifier as published in the ICAO DOC 7910

Overloads:

  • #location_indicatorString?

    Returns:

    • (String, nil)
  • #location_indicator=(value) ⇒ Object

    Parameters:

    • value (String, nil)

117
118
119
# File 'lib/aixm/component/layer.rb', line 117

def location_indicator
  @location_indicator
end

#selective?Boolean #selective=(value) ⇒ Object

Whether the layer may be activated selectively.

Overloads:

  • #selective?Boolean

    Returns:

    • (Boolean)
  • #selective=(value) ⇒ Object

    Parameters:

    • value (Boolean)

174
175
176
# File 'lib/aixm/component/layer.rb', line 174

def selective?
  @selective
end

Instance Method Details

#add_service(service) ⇒ Object

Parameters:


105
# File 'lib/aixm/component/layer.rb', line 105

has_many :services

#airspaceAIXM::Feature::Airspace

Returns airspace the layer defines.

Returns:


109
# File 'lib/aixm/component/layer.rb', line 109

belongs_to :airspace

#inspectString

Returns:

  • (String)

136
137
138
# File 'lib/aixm/component/layer.rb', line 136

def inspect
  %Q(#<#{__class__} class=#{@klass.inspect}>)
end

#selective?Boolean #selective=(value) ⇒ Object

Whether the layer may be activated selectively.

Overloads:

  • #selective?Boolean

    Returns:

    • (Boolean)
  • #selective=(value) ⇒ Object

    Parameters:

    • value (Boolean)

174
175
176
# File 'lib/aixm/component/layer.rb', line 174

def selective?
  @selective
end

#servicesArray<AIXM::Component::Service>

Returns services.

Returns:


105
# File 'lib/aixm/component/layer.rb', line 105

has_many :services

#vertical_limitAIXM::Component::VerticalLimit

Returns vertical limit of this layer.

Returns:


98
# File 'lib/aixm/component/layer.rb', line 98

has_one :vertical_limit

#vertical_limit=(vertical_limit) ⇒ Object

Parameters:


98
# File 'lib/aixm/component/layer.rb', line 98

has_one :vertical_limit