Class: PavementConditionIndex::SampleUnitConditionSurvey::BaseSurvey
- Inherits:
-
Object
- Object
- PavementConditionIndex::SampleUnitConditionSurvey::BaseSurvey
show all
- Defined in:
- lib/pavement_condition_index/sample_unit_condition_survey/base_survey.rb
Instance Attribute Summary collapse
Instance Method Summary
collapse
Instance Attribute Details
#area ⇒ Object
Returns the value of attribute area.
5
6
7
|
# File 'lib/pavement_condition_index/sample_unit_condition_survey/base_survey.rb', line 5
def area
@area
end
|
#distresses ⇒ Object
Returns the value of attribute distresses.
5
6
7
|
# File 'lib/pavement_condition_index/sample_unit_condition_survey/base_survey.rb', line 5
def distresses
@distresses
end
|
#identifier ⇒ Object
Returns the value of attribute identifier.
5
6
7
|
# File 'lib/pavement_condition_index/sample_unit_condition_survey/base_survey.rb', line 5
def identifier
@identifier
end
|
#pavement_type ⇒ Object
Returns the value of attribute pavement_type.
5
6
7
|
# File 'lib/pavement_condition_index/sample_unit_condition_survey/base_survey.rb', line 5
def pavement_type
@pavement_type
end
|
#size_of_sample_unit ⇒ Object
Returns the value of attribute size_of_sample_unit.
5
6
7
|
# File 'lib/pavement_condition_index/sample_unit_condition_survey/base_survey.rb', line 5
def size_of_sample_unit
@size_of_sample_unit
end
|
Instance Method Details
#allowable_number_of_deduct_values ⇒ Object
37
38
39
40
41
42
|
# File 'lib/pavement_condition_index/sample_unit_condition_survey/base_survey.rb', line 37
def allowable_number_of_deduct_values
@allowable_number_of_deducts ||= begin
m = 1 + ((9/98.0) * (100-highest_deduct_value))
[m,10.0].min
end
end
|
#allowed_deduct_values ⇒ Object
28
29
30
31
32
33
34
35
|
# File 'lib/pavement_condition_index/sample_unit_condition_survey/base_survey.rb', line 28
def allowed_deduct_values
@allowed_deduct_values ||= begin
dvs = deduct_values.clone
adv = dvs.shift(allowable_number_of_deduct_values.floor)
adv << (allowable_number_of_deduct_values % 1).to_f * dvs[0].to_f if dvs.any?
adv
end
end
|
#cdv_iterations ⇒ Object
18
19
20
21
22
23
24
25
26
|
# File 'lib/pavement_condition_index/sample_unit_condition_survey/base_survey.rb', line 18
def cdv_iterations
@cdv_iterations ||= begin
r = []
(1..q).each do |q|
r << PavementConditionIndex::CdvIteration.new(deduct_values: deduct_values, pavement_type: @pavement_type, q: q)
end
r.reverse
end
end
|
#deduct_values ⇒ Object
48
49
50
51
52
53
54
55
|
# File 'lib/pavement_condition_index/sample_unit_condition_survey/base_survey.rb', line 48
def deduct_values
@deduct_values ||= begin
dvs = distress_groups.map(&:deduct_value).sort {|x,y| y <=> x}.take(10) a = dvs.shift(allowable_number_of_deduct_values.floor)
a << dvs.shift * (allowable_number_of_deduct_values%1) unless dvs.empty?
a
end
end
|
#distress_groups ⇒ Object
11
12
13
14
15
16
|
# File 'lib/pavement_condition_index/sample_unit_condition_survey/base_survey.rb', line 11
def distress_groups
@distress_groups ||= begin
grouped_distresses = @distresses.group_by{|distress| [distress[:type],distress[:severity]]}
grouped_distresses.map{|key,value| PavementConditionIndex::DistressGroup.new(type: key[0],severity: key[1],distresses: value,size_of_sample_unit: @size_of_sample_unit,pavement_type: @pavement_type)}
end
end
|
#highest_deduct_value ⇒ Object
44
45
46
|
# File 'lib/pavement_condition_index/sample_unit_condition_survey/base_survey.rb', line 44
def highest_deduct_value
@highest_deduct_value ||= distress_groups.map(&:deduct_value).max || 0
end
|
#maximum_corrected_deduct_value ⇒ Object
57
58
59
|
# File 'lib/pavement_condition_index/sample_unit_condition_survey/base_survey.rb', line 57
def maximum_corrected_deduct_value
@maximum_corrected_deduct_value ||= cdv_iterations.map(&:corrected_deduct_value).max|| 0
end
|
#pavement_condition_index ⇒ Object
Also known as:
pci
61
62
63
64
65
66
|
# File 'lib/pavement_condition_index/sample_unit_condition_survey/base_survey.rb', line 61
def pavement_condition_index
@pavement_condition_index ||= begin
pci_score = 100 - maximum_corrected_deduct_value
PavementConditionIndex::PCI.new(score: pci_score)
end
end
|
#q ⇒ Object
7
8
9
|
# File 'lib/pavement_condition_index/sample_unit_condition_survey/base_survey.rb', line 7
def q
deduct_values.select {|dv| dv > 2.0}.length
end
|