Class: AIXM::Feature::ObstacleGroup
Overview
Groups of obstacles which consist of either linked (e.g. power line towers) or unlinked (e.g. wind turbines) members.
Cheat Sheet in Pseudo Code:
obstacle_group = AIXM.obstacle_group(
source: String or nil
region: String or nil
name: String or nil
)
obstacle_group.xy_accuracy = AIXM.d or nil
obstacle_group.z_accuracy = AIXM.d or nil
obstacle_group. = String or nil
obstacle_group. = Object or nil
obstacle_group.add_obstacle(
AIXM.obstacle
)
obstacle_group.add_obstacle(
AIXM.obstacle,
linked_to: :previous,
link_type: LINK_TYPES
)
obstacle_group.add_obstacle(
AIXM.obstacle,
linked_to: AIXM.obstacle,
link_type: LINK_TYPES
)
Please note: As soon as an obstacle is added to an obstacle group, the xy_accuracy and z_accuracy of the obstacle group overwrite whatever is set on the individual obstacles. On the other hand, if the obstacle group has no source set, it will inherit this value from the first obstacle in the group.
Constant Summary
REGION_RE
Instance Attribute Summary
#remarks
#comment, #region
Attributes inherited from Component
#meta
Instance Method Summary
collapse
included
#==, #hash
#eql?, #hash
#build_fragment, #to_uid, #to_xml
included, method
Constructor Details
#initialize(source: nil, region: nil, name: nil) ⇒ ObstacleGroup
See the cheat sheet for examples on how to create instances of this class.
83
84
85
86
|
# File 'lib/aixm/feature/obstacle_group.rb', line 83
def initialize(source: nil, region: nil, name: nil)
super(source: source, region: region)
self.name = name
end
|
Instance Method Details
#add_obstacle(obstacle, linked_to: nil, link_type: nil) ⇒ self
57
58
59
60
61
62
|
# File 'lib/aixm/feature/obstacle_group.rb', line 57
has_many :obstacles do |obstacle, linked_to: nil, link_type: nil|
if linked_to
obstacle.send(:linked_to=, linked_to == :previous ? @obstacles.last : linked_to)
obstacle.send(:link_type=, (link_type || :other))
end
end
|
#inspect ⇒ String
89
90
91
|
# File 'lib/aixm/feature/obstacle_group.rb', line 89
def inspect
%Q(#<#{self.class} #{obstacles.count} obstacle(s)>)
end
|
#name ⇒ String
75
76
77
78
79
|
# File 'lib/aixm/feature/obstacle_group.rb', line 75
i(source name xy_accuracy z_accuracy).each do |method|
define_method method do
instance_variable_get(:"@#{method}") || obstacles.first&.send(method)
end
end
|
#name=(value) ⇒ Object
93
94
95
96
|
# File 'lib/aixm/feature/obstacle_group.rb', line 93
def name=(value)
fail(ArgumentError, "invalid name") unless value.nil? || value.is_a?(String)
@name = value&.uptrans
end
|
57
58
59
60
61
62
|
# File 'lib/aixm/feature/obstacle_group.rb', line 57
has_many :obstacles do |obstacle, linked_to: nil, link_type: nil|
if linked_to
obstacle.send(:linked_to=, linked_to == :previous ? @obstacles.last : linked_to)
obstacle.send(:link_type=, (link_type || :other))
end
end
|
#source ⇒ String
75
76
77
78
79
|
# File 'lib/aixm/feature/obstacle_group.rb', line 75
i(source name xy_accuracy z_accuracy).each do |method|
define_method method do
instance_variable_get(:"@#{method}") || obstacles.first&.send(method)
end
end
|
#xy_accuracy ⇒ AIXM::D?
75
76
77
78
79
|
# File 'lib/aixm/feature/obstacle_group.rb', line 75
i(source name xy_accuracy z_accuracy).each do |method|
define_method method do
instance_variable_get(:"@#{method}") || obstacles.first&.send(method)
end
end
|
#xy_accuracy=(value) ⇒ Object
98
99
100
101
|
# File 'lib/aixm/feature/obstacle_group.rb', line 98
def xy_accuracy=(value)
fail(ArgumentError, "invalid xy accuracy") unless value.nil? || value.is_a?(AIXM::D)
@xy_accuracy = value
end
|
#z_accuracy ⇒ AIXM::D?
75
76
77
78
79
|
# File 'lib/aixm/feature/obstacle_group.rb', line 75
i(source name xy_accuracy z_accuracy).each do |method|
define_method method do
instance_variable_get(:"@#{method}") || obstacles.first&.send(method)
end
end
|
#z_accuracy=(value) ⇒ Object
103
104
105
106
|
# File 'lib/aixm/feature/obstacle_group.rb', line 103
def z_accuracy=(value)
fail(ArgumentError, "invalid z accuracy") unless value.nil? || value.is_a?(AIXM::D)
@z_accuracy = value
end
|