#!/usr/bin/env python ############################################################################### # Module name: Canadian_Sites # # # # Author : Zhengtao Cui (Zhengtao.Cui@noaa.gov) # # # # Initial version date: # # # # Last modification date: 12/01/2023 # # # # Description: manage the Canadian sites in CSV format # # # ############################################################################### import csv class Canadian_Sites: """ Store Canadian site information """ def __init__(self, csvSitefile ): """ Initialize the Canadian_Sites object with a given filename """ self.source = csvSitefile self._siteid_to_index = dict() with open( csvSitefile, mode='r') as csvsite_file: csvsite_reader = csv.DictReader( csvsite_file ) line_count = 0 for row in csvsite_reader: if line_count == 0: print('Column names are ' + ", ".join(row)) else: self._siteid_to_index[ row["ID"] ] = \ row[ "OBJECTID" ] line_count += 1 print('Processed ' + str( line_count ) + ' lines.') self.siteid_to_index = self._siteid_to_index @property def source(self): return self._source @source.setter def source(self, s): self._source = s @property def siteid_to_index(self): return self._siteid_to_index @siteid_to_index.setter def siteid_to_index(self, o): self._siteid_to_index=o def getIndex(self, id ): if ( not id in self.siteid_to_index.keys() ): raise KeyError( "Cannot find station for " + id + ' ' + \ " in the site file: " + \ self.source + '.' ) print( "Found station: " + id ) return self.siteid_to_index[ id ] def getStationIds(self ): return self.siteid_to_index.keys()