Module: Cdss::Analysis

Includes:
Utils
Included in:
Client
Defined in:
lib/cdss/analysis.rb

Overview

Provides methods for accessing analysis services from the CDSS API including call analysis and water source route frameworks.

Instance Method Summary collapse

Methods included from Utils

#batch_dates, #build_query, #fetch_paginated_data, #format_date, #format_query_param, #parse_timestamp, #safe_float, #safe_integer

Instance Method Details

#get_call_analysis_gnisid(gnis_id:, admin_no:, stream_mile:, start_date: nil, end_date: nil, batch: false) ⇒ Array<CallAnalysis>

Performs call analysis by GNIS ID, showing daily priority percentages.

Parameters:

  • gnis_id (String)

    GNIS ID to analyze.

  • admin_no (String, Integer)

    Water Right Administration Number.

  • stream_mile (Float)

    Stream mile for the analysis point.

  • start_date (Date, nil) (defaults to: nil)

    Start date for analysis data.

  • end_date (Date, nil) (defaults to: nil)

    End date for analysis data.

  • batch (Boolean) (defaults to: false)

    Whether to break date range into yearly batches. Defaults to false.

Returns:

  • (Array<CallAnalysis>)

    Array of call analysis records.



57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
# File 'lib/cdss/analysis.rb', line 57

def get_call_analysis_gnisid(gnis_id:, admin_no:, stream_mile:, start_date: nil, end_date: nil, batch: false)
  admin_no = admin_no.to_s

  if batch
    results = []
    date_ranges = batch_dates(start_date, end_date)

    date_ranges.each_with_index do |range, _index|
      results.concat(
        fetch_call_analysis_gnisid(
          gnis_id: gnis_id,
          admin_no: admin_no,
          stream_mile: stream_mile,
          start_date: range[0],
          end_date: range[1]
        )
      )
    end

    results
  else
    fetch_call_analysis_gnisid(
      gnis_id: gnis_id,
      admin_no: admin_no,
      stream_mile: stream_mile,
      start_date: start_date,
      end_date: end_date
    )
  end
end

#get_call_analysis_wdid(wdid:, admin_no:, start_date: nil, end_date: nil, batch: false) ⇒ Array<CallAnalysis>

Performs call analysis by WDID, showing daily priority percentages.

Examples:

Analyze calls for a specific WDID

get_call_analysis_wdid(wdid: "0301234", admin_no: "12345.00000")

Parameters:

  • wdid (String)

    DWR WDID unique structure identifier code.

  • admin_no (String, Integer)

    Water Right Administration Number.

  • start_date (Date, nil) (defaults to: nil)

    Start date for analysis data.

  • end_date (Date, nil) (defaults to: nil)

    End date for analysis data.

  • batch (Boolean) (defaults to: false)

    Whether to break date range into yearly batches. Defaults to false.

Returns:

  • (Array<CallAnalysis>)

    Array of call analysis records.



19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
# File 'lib/cdss/analysis.rb', line 19

def get_call_analysis_wdid(wdid:, admin_no:, start_date: nil, end_date: nil, batch: false)
  admin_no = admin_no.to_s

  if batch
    results = []
    date_ranges = batch_dates(start_date, end_date)

    date_ranges.each_with_index do |range, _index|
      results.concat(
        fetch_call_analysis_wdid(
          wdid: wdid,
          admin_no: admin_no,
          start_date: range[0],
          end_date: range[1]
        )
      )
    end

    results
  else
    fetch_call_analysis_wdid(
      wdid: wdid,
      admin_no: admin_no,
      start_date: start_date,
      end_date: end_date
    )
  end
end

#get_source_route_analysis(lt_gnis_id:, lt_stream_mile:, ut_gnis_id:, ut_stream_mile:) ⇒ Array<RouteAnalysis>

Analyzes water source routes between two points.

Parameters:

  • lt_gnis_id (String)

    Lower terminus GNIS ID.

  • lt_stream_mile (Float)

    Lower terminus stream mile.

  • ut_gnis_id (String)

    Upper terminus GNIS ID.

  • ut_stream_mile (Float)

    Upper terminus stream mile.

Returns:

  • (Array<RouteAnalysis>)

    Array of route analysis records.



117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
# File 'lib/cdss/analysis.rb', line 117

def get_source_route_analysis(lt_gnis_id:, lt_stream_mile:, ut_gnis_id:, ut_stream_mile:)
  query = build_query(
    {
      ltGnisId: lt_gnis_id,
      ltStreamMile: lt_stream_mile,
      utGnisId: ut_gnis_id,
      utStreamMile: ut_stream_mile
    }
  )

  fetch_paginated_data(
    endpoint: "/analysisservices/watersourcerouteanalysis/",
    query: query
  ) { |data| Parser.parse_route_analyses(data) }
end

#get_source_route_framework(division: nil, gnis_name: nil, water_district: nil) ⇒ Array<SourceRoute>

Retrieves the DWR source route framework reference data.

Parameters:

  • division (Integer, nil) (defaults to: nil)

    Water division to filter by.

  • gnis_name (String, nil) (defaults to: nil)

    GNIS Name to filter by.

  • water_district (Integer, nil) (defaults to: nil)

    Water district to filter by.

Returns:

  • (Array<SourceRoute>)

    Array of source route framework records.



94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
# File 'lib/cdss/analysis.rb', line 94

def get_source_route_framework(division: nil, gnis_name: nil, water_district: nil)
  query = build_query(
    {
      dateFormat: "spaceSepToSeconds",
      division: division,
      gnisName: gnis_name,
      waterDistrict: water_district
    }
  )

  fetch_paginated_data(
    endpoint: "/analysisservices/watersourcerouteframework/",
    query: query
  ) { |data| Parser.parse_source_routes(data) }
end