lat='na';lon='na';area='na';link='na' for each in sep: if 'Latitude' in each: line = each line = line.replace('°','') line = line.replace(';',',') line = line.replace("\'",',') line = line.replace('<dd>','') line = line.replace('Latitude','') line = line.replace('Longitude','') line = line.replace(' ','') line = line.replace('"','') nums = line.split(',') sys.path.append(os.getcwd() + os.sep + 'python' + os.sep + 'modules') import conversions lat = conversions.dms_to_dd(float(nums[0]),float(nums[1]),float(nums[2]),'N') lon = conversions.dms_to_dd(float(nums[4]),float(nums[5]),float(nums[6]),'W') link = 'http://waterdata.usgs.gov/nwis/inventory/?site_no='+ gage_id +'&agency_cd=USGS' print lat print long if 'Drainage area' in each: line = each line = line.replace('<dd>','') line = line.replace('</dd>','\t') line = line.replace(',','') line = line.replace('Drainage area: ','') line = line.replace(' square miles','') area = line.split('\t')[0] summary.write(str(lat)+','+str(lon) + ',' + str(area) + ',na,na,na,na,' + link + '\n') else: print 'QME data download successful!'
# parse DMS in header line if count_all == 2: sep2 = line[1].replace('\xc2\xb0',',') sep2 = line[1].replace('\xb0',',') sep2 = sep2.replace("'",',') sep2 = sep2.replace(")",'') sep2 = sep2.split(',') sep2 = filter(None,sep2) sep3 = line[3].replace('\xc2\xb0',',') sep3 = line[3].replace('\xb0',',') sep3 = sep3.replace("'",',') sep3 = sep3.replace(")",'') sep3 = sep3.split(',') sep3 = filter(None,sep3) # use conversion module for dms to dd lon = str("%.3f" % (conversions.dms_to_dd(sep2[0],sep2[1],sep2[2],'W'))) lat = str("%.3f" % (conversions.dms_to_dd(sep3[0],sep3[1],sep3[2],'N'))) station_summary[site_id] = [name,lat,lon,elev_summary[site_id]] if count_all >= 5: data = line[6] date_time = parser.parse(line[1]) if str(data) != '' and str(data) != '\n': # ignore missing data -> filled in below (-999) if variable == 'ptpx': if float(data) < thresh and float(data) >= 0.0: # QA/QC bad precip values if date_time.date() not in set_miss_dates: site_data[date_time]=[float(data)/25.4] else: if float(data) == 0.00: site_data[date_time]=[float(data)] if float(data) >= thresh: bad_ptpx_summary.write(str(site_id) + ' ' + str(date_time) + ' ' + str(data) + '\n')
if count_all == 2: sep2 = line[1].replace('\xc2\xb0', ',') sep2 = line[1].replace('\xb0', ',') sep2 = sep2.replace("'", ',') sep2 = sep2.replace(")", '') sep2 = sep2.split(',') sep2 = filter(None, sep2) sep3 = line[3].replace('\xc2\xb0', ',') sep3 = line[3].replace('\xb0', ',') sep3 = sep3.replace("'", ',') sep3 = sep3.replace(")", '') sep3 = sep3.split(',') sep3 = filter(None, sep3) # use conversion module for dms to dd lon = str("%.3f" % (conversions.dms_to_dd(sep2[0], sep2[1], sep2[2], 'W'))) lat = str("%.3f" % (conversions.dms_to_dd(sep3[0], sep3[1], sep3[2], 'N'))) station_summary[site_id] = [name, lat, lon, elev_summary[site_id]] if count_all >= 5: data = line[6] date_time = parser.parse(line[1]) if str(data) != '' and str( data ) != '\n': # ignore missing data -> filled in below (-999) if variable == 'ptpx': if float(data) < thresh and float( data) >= 0.0: # QA/QC bad precip values if date_time.date() not in set_miss_dates: site_data[date_time] = [float(data) / 25.4] else:
for each in read_data: count_all += 1 line = each.split(',') if count_all == 1: # header 1st line sep1 = line[0].split('(') name = (sep1[0].rstrip()).strip('"') # station name in header site_id = sep1[1][:5].upper() print site_id # parse DMS in header line sep2 = sep1[2].replace('\xb0',',') sep2 = sep2.replace("'",',') sep2 = sep2.replace(")",'') sep2 = sep2.split(',') sep2 = filter(None,sep2) # use conversion module for dms to dd lat = str("%.3f" % (conversions.dms_to_dd(sep2[0],sep2[1],sep2[2],'N'))) lon = str("%.3f" % (conversions.dms_to_dd(sep2[3],sep2[4],sep2[5],'W'))) if mx_state == 'Coahuila': elev_summary[site_id] = str("%.0f" % (int(line[1].strip('"'))*3.28084)) station_summary[site_id] = [name,lat,lon,elev_summary[site_id]] if count_all >= 3: data = line[1] date_time = datetime.strptime(line[0],'%d/%m/%Y') if str(data) != '' and str(data) != '\n': # ignore missing data -> filled in below (-999) if variable == 'ptpx': if float(data) < thresh and float(data) >= 0.0: # QA/QC bad precip values if date_time.date() not in set_miss_dates: site_data[date_time]=[float(data)/25.4] else: if float(data) == 0.00:
lat = sep[7].strip(); lon = sep[8].strip() if '"' in lat: import conversions lat = lat.replace('\xc2\xb0',',') lat = lat.replace('\xb0',',') lat = lat.replace("'",',') lat = lat.replace('"',',') lat = lat.split(',') lat = filter(None,lat) lon = lon.replace('\xc2\xb0',',') lon = lon.replace('\xb0',',') lon = lon.replace("'",',') lon = lon.replace('"',',') lon = lon.split(',') lon = filter(None,lon) lon = str("%.3f" % (conversions.dms_to_dd(float(lon[0]),float(lon[1]),float(lon[2]),'W'))) lat = str("%.3f" % (conversions.dms_to_dd(float(lat[0]),float(lat[1]),float(lat[2]),'N'))) elev = sep[9].strip() station_summary[site_id] = [name,number,lat,lon,elev] all_elev.append(float(elev)) read_stations.close() ### define temp and precip variable info ### if variable == 'temp': data_type = {'.tmx':'TAMX','.tmn':'TAMN','.tpt':'TEMP'}; dim = 'TEMP'; unit = 'DEGF'; inter = '1'; exts = ['.tmx','.tmn','.tpt'] card_label = '@A'; unit_type = 'ENGL'; info_header = "'NW-AK BASINS APRFC'"; max_elev = max(all_elev); min_elev = min(all_elev) weighting_factor = 20.; obs_time = 24 # obs time set to noon (using 24 hours of data) if len(station_summary) <= 24: num_stations = len(station_summary) else: num_stations = 26