Class: PavementConditionIndex::SectionConditionSurvey

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

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(sample_unit_condition_surveys:, total_number_of_sample_units: nil, acceptable_error: 5, pci_standard_deviation: 10) ⇒ SectionConditionSurvey

Returns a new instance of SectionConditionSurvey.



6
7
8
9
10
11
12
# File 'lib/pavement_condition_index/section_condition_survey.rb', line 6

def initialize(sample_unit_condition_surveys:,total_number_of_sample_units:nil,acceptable_error:5,pci_standard_deviation:10)
  @sample_unit_condition_surveys = sample_unit_condition_surveys
  @total_number_of_sample_units = total_number_of_sample_units
  @acceptable_error = acceptable_error
  @pci_standard_deviation = pci_standard_deviation
  @number_of_sample_units = @sample_unit_condition_surveys.length
end

Instance Attribute Details

#acceptable_errorObject (readonly)

Returns the value of attribute acceptable_error.



4
5
6
# File 'lib/pavement_condition_index/section_condition_survey.rb', line 4

def acceptable_error
  @acceptable_error
end

#pci_standard_deviationObject (readonly)

Returns the value of attribute pci_standard_deviation.



4
5
6
# File 'lib/pavement_condition_index/section_condition_survey.rb', line 4

def pci_standard_deviation
  @pci_standard_deviation
end

#sample_unit_condition_surveysObject (readonly)

Returns the value of attribute sample_unit_condition_surveys.



4
5
6
# File 'lib/pavement_condition_index/section_condition_survey.rb', line 4

def sample_unit_condition_surveys
  @sample_unit_condition_surveys
end

#total_number_of_sample_unitsObject (readonly)

Returns the value of attribute total_number_of_sample_units.



4
5
6
# File 'lib/pavement_condition_index/section_condition_survey.rb', line 4

def total_number_of_sample_units
  @total_number_of_sample_units
end

Instance Method Details

#pavement_condition_indexObject Also known as: pci



42
43
44
45
46
47
# File 'lib/pavement_condition_index/section_condition_survey.rb', line 42

def pavement_condition_index
  @pavement_condition_index ||= begin
    pci_score = weighted_pci_scores / sum_of_sample_unit_condition_survey_areas
    PavementConditionIndex::PCI.new(score: pci_score)
  end
end

#required_number_of_sample_unit_condition_surveysObject



14
15
16
17
18
19
20
21
22
23
24
# File 'lib/pavement_condition_index/section_condition_survey.rb', line 14

def required_number_of_sample_unit_condition_surveys
  @required_number_of_sample_unit_condition_surveys ||= begin
    if @total_number_of_sample_units
      t = (@total_number_of_sample_units * @pci_standard_deviation**2)
      b = (@acceptable_error**2/4) * (@total_number_of_sample_units - 1) + @pci_standard_deviation**2
      (t/b.to_f).ceil
    else
      1
    end
  end
end

#sample_is_statistically_significantObject



26
27
28
# File 'lib/pavement_condition_index/section_condition_survey.rb', line 26

def sample_is_statistically_significant
  @sample_is_statistically_significant ||= @number_of_sample_units >= required_number_of_sample_unit_condition_surveys
end

#sample_spacing_intervalObject



30
31
32
# File 'lib/pavement_condition_index/section_condition_survey.rb', line 30

def sample_spacing_interval
  @sample_spacing_interval ||= (@number_of_sample_units/required_number_of_sample_unit_condition_surveys.to_f).floor
end

#sum_of_sample_unit_condition_survey_areasObject



38
39
40
# File 'lib/pavement_condition_index/section_condition_survey.rb', line 38

def sum_of_sample_unit_condition_survey_areas
  @sum_of_sample_unit_condition_survey_areas ||= @sample_unit_condition_surveys.map{|sample_unit_condition_survey| sample_unit_condition_survey.area}.reduce(:+).to_f
end

#weighted_pci_scoresObject



34
35
36
# File 'lib/pavement_condition_index/section_condition_survey.rb', line 34

def weighted_pci_scores
  @weighted_pci_scores ||= @sample_unit_condition_surveys.map{|sample_unit_condition_survey| sample_unit_condition_survey.pavement_condition_index.score * sample_unit_condition_survey.area}.reduce(:+)
end