Class: PavementConditionIndex::SampleUnitConditionSurvey::BaseSurvey

Inherits:
Object
  • Object
show all
Defined in:
lib/pavement_condition_index/sample_unit_condition_survey/base_survey.rb

Direct Known Subclasses

AsphaltSurvey, ConcreteSurvey

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#areaObject (readonly)

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

#distressesObject (readonly)

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

#identifierObject (readonly)

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_typeObject (readonly)

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_unitObject (readonly)

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_valuesObject



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_valuesObject



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_iterationsObject



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_valuesObject



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) # Max of 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_groupsObject



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_valueObject



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_valueObject



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_indexObject 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

#qObject



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