@@ -485,32 +485,27 @@ |
for x, y in [(d['x'], d['y']) for d in results]: |
cells.append([x, y]) |
#assert len(cells) == 1, 'No PRISM data for cell {0}'.format(tile) |
+ |
+ # PRISM return datetime dates |
+ start_date = datetime.datetime(start_date.year, start_date.month, start_date.day) |
+ end_date = datetime.datetime(end_date.year, end_date.month, end_date.day) |
|
# get data for multiple cells and multiple years |
for cell in cells: |
- data_results = db.prism_data.find({'_id': {'$in': ['{0}_{1}_{2}'.format(cell[0], cell[1], y) for y in range(start_date.year, end_date.year+1)]}}) |
- |
- # sort data |
+ data_results = db.prism.find({'_id': {'$in': ['{0}_{1}_{2}'.format(cell[0], cell[1], y) for y in range(start_date.year, end_date.year+1)]}}) |
data_results = sorted(data_results, key=lambda d: d['year']) |
|
- # cap start and end dates |
- if start_date.year < data_results[0]['year']: |
- start_date = datetime.datetime(data_results[0]['year'], 1, 1) |
+ for i in range(len(data_results)): |
+ data = data_results[i]['data'] |
+ data = sorted(data, key=lambda d: d['date']) |
|
- # build precip |
- ppt = [v for d in data_results for v in d['data']['ppt']] |
+ for j in range(len(data)): |
+ row = data[j] |
+ if row['date'] >= start_date and row['date'] <= end_date: |
+ |
+ # convert precip from mm to cm |
+ ret.append([names[itile], row['date'].strftime('%Y-%m-%d'), conv_dict['tmp'](row['tmin']), conv_dict['tmp'](row['tmax']), conv_dict['apcp'](row['ppt'])]) |
|
- # build tmin |
- tmin = [v for d in data_results for v in d['data']['tmin']] |
- |
- # build tmax |
- tmax = [v for d in data_results for v in d['data']['tmax']] |
- |
- dt = start_date |
- for i in range(len(tmax)): |
- # convert precip from mm to cm |
- ret.append([names[itile], dt.strftime('%Y-%m-%d'), conv_dict['tmp'](tmin[i]), conv_dict['tmp'](tmax[i]), conv_dict['apcp'](ppt[i])]) |
- dt += datetime.timedelta(days=1) |
return ret, cell_defs, cell_extents |
|
def WEgetDataGHCND(self, input_zone_file_or_station_list, units, start_date, end_date, generate_average=False, IDW_center=False): |