lat='na';lon='na';area='na';link='na'
     for each in sep:
         if 'Latitude' in each:
             line = each
             line = line.replace('&#176','')
             line = line.replace(';',',')
             line = line.replace("\'",',')
             line = line.replace('<dd>','')
             line = line.replace('Latitude','')
             line = line.replace('Longitude','')
             line = line.replace('&nbsp','')
             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')
     lat='na';lon='na';area='na';link='na'
     for each in sep:
         if 'Latitude' in each:
             line = each
             line = line.replace('&#176','')
             line = line.replace(';',',')
             line = line.replace("\'",',')
             line = line.replace('<dd>','')
             line = line.replace('Latitude','')
             line = line.replace('Longitude','')
             line = line.replace('&nbsp','')
             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!'
示例#4
0
 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:
示例#6
0
        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