def calc(self, request, **args): min_lat, max_lat, min_lon, max_lon = request.get_min_lat( ), request.get_max_lat(), request.get_min_lon(), request.get_max_lon() dataset1 = request.get_argument("ds1", None) dataset2 = request.get_argument("ds2", None) start_time = request.get_start_time() end_time = request.get_end_time() simple = request.get_argument("simple", None) is not None averagebyday = self.get_daily_difference_average_for_box( min_lat, max_lat, min_lon, max_lon, dataset1, dataset2, start_time, end_time) averagebyday = sorted(averagebyday, key=lambda dayavg: dayavg[0]) if simple: import matplotlib.pyplot as plt from matplotlib.dates import date2num times = [ date2num(self.date_from_ms(dayavg[0])) for dayavg in averagebyday ] means = [dayavg[1] for dayavg in averagebyday] plt.plot_date(times, means, ls='solid') plt.xlabel('Date') plt.xticks(rotation=70) plt.ylabel(u'Difference from 5-Day mean (\u00B0C)') plt.title('Sea Surface Temperature (SST) Anomalies') plt.grid(True) plt.tight_layout() plt.savefig("test.png") return averagebyday, None, None else: result = NexusResults(results=[[{ 'time': dayms, 'mean': avg, 'ds': 0 }] for dayms, avg in averagebyday], stats={}, meta=self.get_meta()) result.extendMeta(min_lat, max_lat, min_lon, max_lon, "", start_time, end_time) result.meta()['label'] = u'Difference from 5-Day mean (\u00B0C)' return result
def calc(self, computeOptions, **args): minLat = computeOptions.get_min_lat() maxLat = computeOptions.get_max_lat() minLon = computeOptions.get_min_lon() maxLon = computeOptions.get_max_lon() ds = computeOptions.get_dataset()[0] startTime = computeOptions.get_start_time() endTime = computeOptions.get_end_time() res = self._tile_service.find_tiles_in_box(minLat, maxLat, minLon, maxLon, ds, startTime, endTime, fetch_data=False) res = NexusResults(results=res) res.extendMeta(minLat, maxLat, minLon, maxLon, ds, startTime, endTime) return res
def calc(self, compute_options, **args): min_lat = compute_options.get_min_lat() max_lat = compute_options.get_max_lat() min_lon = compute_options.get_min_lon() max_lon = compute_options.get_max_lon() ds = compute_options.get_dataset()[0] start_time = compute_options.get_start_time() end_time = compute_options.get_end_time() includemeta = compute_options.get_include_meta() tiles = self._tile_service.get_tiles_bounded_by_box( min_lat, max_lat, min_lon, max_lon, ds, start_time, end_time) data = [] for tile in tiles: for nexus_point in tile.nexus_point_generator(): data.append({ 'latitude': nexus_point.latitude, 'longitude': nexus_point.longitude, 'time': nexus_point.time, 'data': [{ 'id': tile.tile_id, 'value': nexus_point.data_val }] }) if includemeta and len(tiles) > 0: meta = [tile.get_summary() for tile in tiles] else: meta = None result = NexusResults(results=data, stats={}, meta=meta) result.extendMeta(min_lat, max_lat, min_lon, max_lon, "", start_time, end_time) return result
def calc(self, computeOptions, **args): minLat = computeOptions.get_min_lat() maxLat = computeOptions.get_max_lat() minLon = computeOptions.get_min_lon() maxLon = computeOptions.get_max_lon() ds = computeOptions.get_dataset()[0] startTime = computeOptions.get_start_time() endTime = computeOptions.get_end_time() # TODO update to expect tile objects back res = [ tile.get_summary() for tile in self._tile_service.find_tiles_in_box(minLat, maxLat, minLon, maxLon, ds, startTime, endTime, fetch_data=False) ] res = NexusResults(results=res) res.extendMeta(minLat, maxLat, minLon, maxLon, ds, startTime, endTime) return res