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
Example #2
0
    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
Example #3
0
    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
Example #4
0
    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