Exemple #1
0
 def setUp(self):
     # create resources
     self.polygon = [[[-63.154907226557498, -4.8118385341739005],
                      [-64.143676757807498, -4.8118385341739005],
                      [-64.132690429682498, -6.2879986723276584],
                      [-62.814331054682498, -6.3535159310087908]]]
     self.inv_polygon = [[[y, x] for x, y in self.polygon[0]]]
     self.r = Report(start=date(year=2011, month=2, day=1),
                     end=date(year=2011, month=3, day=1),
                     finished=True)
     self.r.put()
     self.cell = Cell(x=0,
                      y=0,
                      z=2,
                      report=self.r,
                      ndfi_high=1.0,
                      ndfi_low=0.0)
     self.cell.put()
     self.area = Area(geo=json.dumps(self.inv_polygon),
                      added_by=None,
                      type=1,
                      cell=self.cell)
     self.area.put()
     self.area.create_fusion_tables()
     self.ndfi = NDFI(self.r.comparation_range(), self.r.range())
     self.stats = Stats()
 def rgb_mapid(self, report_id, operation, id, r, g, b, sensor):
     report = Report.get(Key(report_id))
     z, x, y = Cell.cell_id(id)
     cell = Cell.get_or_default(report, operation, x, y, z)
     ndfi = NDFI(report.comparation_range(), report.range())
     poly = cell.bbox_polygon(amazon_bounds)
     mapid = ndfi.rgb_stretch(poly, sensor, tuple(map(int, (r, g, b))))
     if not mapid:
         abort(404)
     return Response(json.dumps(mapid), mimetype='application/json')
Exemple #3
0
 def rgb_mapid(self, report_id, id, r, g, b, sensor):
     report = Report.get(Key(report_id))
     z, x, y = Cell.cell_id(id)
     cell = Cell.get_or_default(report, x, y, z)
     ndfi = NDFI(report.comparation_range(), report.range())
     poly = cell.bbox_polygon(amazon_bounds)
     mapid = ndfi.rgb_stretch(poly, sensor, tuple(map(int, (r, g, b))))
     if not mapid:
         abort(404)
     return Response(json.dumps(mapid), mimetype='application/json')
Exemple #4
0
 def list(self, report_id):
     cache_key = self._cache_key(report_id)
     data = memcache.get(cache_key)
     if not data:
         r = Report.get(Key(report_id))
         ndfi = NDFI(r.comparation_range(), r.range())
         data = ndfi.mapid2(r.base_map())
         if not data:
             abort(404)
         memcache.add(key=cache_key, value=data, time=3600)
     return jsonify(data)
 def list(self, report_id):
     cache_key = self._cache_key(report_id)
     data = memcache.get(cache_key)
     if not data:
         r = Report.get(Key(report_id))
         ndfi = NDFI(r.comparation_range(), r.range())
         data = ndfi.mapid2(r.base_map())
         if not data:
             abort(404)
         memcache.add(key=cache_key, value=data, time=3600)
     return jsonify(data)
 def list(self, report_id, sensor):
     cache_key = self._cache_key(report_id, sensor)
     data = memcache.get(cache_key)
     if not data:
         r = Report.get(Key(report_id))
         ndfi = NDFI(r.comparation_range(), r.range())
         logging.info('((((( Report Id: ' + str(report_id) +', Sensor:'+ str(sensor) +' )))))')
         data = ndfi.mapid2(r.base_map(), sensor)
         if not data:
             abort(404)
         memcache.add(key=cache_key, value=data, time=3600)
     return jsonify(data)
def default_maps():
    maps = []
    r = Report.current()
    logging.info("report " + unicode(r))
    landsat = EELandsat(timestamp(r.start), datetime.datetime.now())
    ndfi = NDFI(past_month_range(r.start), r.range())

    logging.info('Past_month_range: '+str(past_month_range(r.start))+', Range: '+str(r.range)+', Timestamp: '+str(timestamp(r.start))+', Datetime: '+str(datetime.datetime.now()) )

    d = landsat.mapid(timestamp(r.start), datetime.datetime.now())
    maps.append({'data' :d, 'info': 'LANDSAT/LE7_L1T'})

    d = landsat.mapid_landsat8(timestamp(r.start), datetime.datetime.now())
    maps.append({'data':d, 'info': 'LANDSAT/LC8_L1T'})

    assetid = r.previous().as_dict().get('assetid')
    logging.info("Assetid :"+str(assetid))
    d = ndfi.smaid()
    if d: maps.append({'data': d, 'info': 'SMA'})    
    d = ndfi.rgb1id()
    if d: maps.append({'data': d, 'info': 'RGB'})
    d = ndfi.ndfi0id('modis')
    if d: maps.append({'data': d, 'info': 'NDFI T0 (MODIS)'})
    d = ndfi.ndfi1id('modis')
    if d: maps.append({'data' :d, 'info': 'NDFI T1 (MODIS)'})
    d = ndfi.baseline(r.base_map())
    if d: maps.append({'data' :d, 'info': 'Baseline'})
    d = ndfi.rgb0id()
    if d: maps.append({'data': d, 'info': 'Previous RGB'})
    return maps
    
    """
def default_maps():
    maps = []
    r = Report.current() 
    logging.info("report " + unicode(r))
    landsat = EELandsat()
    ndfi = NDFI(past_month_range(r.start), r.range())

    d = landsat.mapid(*r.range())
    maps.append({'data' :d, 'info': 'LANDSAT/L7_L1T'})
    """
    d = landsat.mapid(*past_month_range(r.start))
    maps.append({'data' :d, 'info': 'LANDSAT/L7_L1T-old'})
    """
    #d = ndfi.mapid2()
    #if d: maps.append({'data' :d, 'info': 'ndfi difference'})
    d = ndfi.smaid()
    if d: maps.append({'data': d, 'info': 'SMA'})
    d = ndfi.rgb1id()
    if d: maps.append({'data': d, 'info': 'RGB'})
    d = ndfi.ndfi0id()
    if d: maps.append({'data': d, 'info': 'NDFI T0'})
    d = ndfi.ndfi1id()
    if d: maps.append({'data' :d, 'info': 'NDFI T1'})
    d = ndfi.baseline(r.base_map())
    if d: maps.append({'data' :d, 'info': 'Baseline'})
    d = ndfi.rgb0id()
    if d: maps.append({'data': d, 'info': 'Previous RGB'})
    return maps
 def close(self, report_id):
     """ close current and create new one """
     r = Report.get(Key(report_id))
     if not r.finished:
         ndfi = NDFI(r.comparation_range(), r.range())
         data = ndfi.freeze_map(r.base_map(), int(settings.FT_TABLE_ID), r.key().id())
         logging.info(data)
         if 'data' not in data:
             abort(400)
         data = data['data']['id']
         r.close(data)
         cache_key = NDFIMapApi._cache_key(report_id)
         memcache.delete(cache_key)
         # open new report
         new_report = Report(start=date.today())
         new_report.put()
         return str(new_report.key())
     return "already finished"
Exemple #10
0
 def close(self, report_id):
     """ close current and create new one """
     r = Report.get(Key(report_id))
     if not r.finished:
         ndfi = NDFI(r.comparation_range(), r.range())
         data = ndfi.freeze_map(r.base_map(), int(settings.FT_TABLE_ID),
                                r.key().id())
         logging.info(data)
         if 'data' not in data:
             abort(400)
         data = data['data']['id']
         r.close(data)
         cache_key = NDFIMapApi._cache_key(report_id)
         memcache.delete(cache_key)
         # open new report
         new_report = Report(start=date.today())
         new_report.put()
         return str(new_report.key())
     return "already finished"
 def setUp(self):
     # create resources
     self.polygon = [[[-63.154907226557498, -4.8118385341739005], [-64.143676757807498, -4.8118385341739005], [-64.132690429682498, -6.2879986723276584], [-62.814331054682498, -6.3535159310087908]]]
     self.inv_polygon = [[[y, x] for x, y in self.polygon[0]]]
     self.r = Report(start=date(year=2011, month=2, day=1),
                     end=date(year=2011, month=3, day=1),
                     finished=True)
     self.r.put()
     self.cell = Cell(x=0, y=0, z=2, report=self.r, ndfi_high=1.0, ndfi_low=0.0)
     self.cell.put()
     self.area = Area(geo=json.dumps(self.inv_polygon), added_by=None, type=1, cell=self.cell)
     self.area.put()
     self.area.create_fusion_tables()
     self.ndfi = NDFI(self.r.comparation_range(), self.r.range())
     self.stats = Stats()
Exemple #12
0
def default_maps():
    maps = []
    r = Report.current()
    logging.info("report " + unicode(r))
    landsat = EELandsat()
    ndfi = NDFI(past_month_range(r.start), r.range())

    d = landsat.mapid(timestamp(r.start), datetime.datetime.now())
    maps.append({'data': d, 'info': 'LANDSAT/LE7_L1T'})
    #d = ndfi.mapid2()
    #if d: maps.append({'data' :d, 'info': 'ndfi difference'})
    d = ndfi.smaid()
    if d: maps.append({'data': d, 'info': 'SMA'})
    d = ndfi.rgb1id()
    if d: maps.append({'data': d, 'info': 'RGB'})
    d = ndfi.ndfi0id()
    if d: maps.append({'data': d, 'info': 'NDFI T0'})
    d = ndfi.ndfi1id()
    if d: maps.append({'data': d, 'info': 'NDFI T1'})
    d = ndfi.baseline(r.base_map())
    if d: maps.append({'data': d, 'info': 'Baseline'})
    d = ndfi.rgb0id()
    if d: maps.append({'data': d, 'info': 'Previous RGB'})
    return maps
Exemple #13
0
    def ndfi_change(self, report_id, id):
        r = Report.get(Key(report_id))
        z, x, y = Cell.cell_id(id)
        cell = Cell.get_or_default(r, x, y, z)
        ee = ndfi = NDFI(r.comparation_range(), r.range())

        bounds = cell.bounds(amazon_bounds)
        ne = bounds[0]
        sw = bounds[1]
        # spcify lon, lat
        polygons = [(sw[1], sw[0]), (sw[1], ne[0]), (ne[1], ne[0]),
                    (ne[1], sw[0])]
        cols = 1
        rows = 1
        if z < 2:
            cols = rows = 5
        data = ndfi.ndfi_change_value(r.base_map(), {
            "type": "Polygon",
            "coordinates": [polygons]
        }, rows, cols)
        logging.info(data)
        ndfi = data  #data['properties']['ndfiSum']['values']
        return Response(json.dumps(ndfi), mimetype='application/json')
Exemple #14
0
class StatsTest(unittest.TestCase):
    """ test for reporting api 
    """
    def setUp(self):
        # create resources
        self.polygon = [[[-63.154907226557498, -4.8118385341739005],
                         [-64.143676757807498, -4.8118385341739005],
                         [-64.132690429682498, -6.2879986723276584],
                         [-62.814331054682498, -6.3535159310087908]]]
        self.inv_polygon = [[[y, x] for x, y in self.polygon[0]]]
        self.r = Report(start=date(year=2011, month=2, day=1),
                        end=date(year=2011, month=3, day=1),
                        finished=True)
        self.r.put()
        self.cell = Cell(x=0,
                         y=0,
                         z=2,
                         report=self.r,
                         ndfi_high=1.0,
                         ndfi_low=0.0)
        self.cell.put()
        self.area = Area(geo=json.dumps(self.inv_polygon),
                         added_by=None,
                         type=1,
                         cell=self.cell)
        self.area.put()
        self.area.create_fusion_tables()
        self.ndfi = NDFI(self.r.comparation_range(), self.r.range())
        self.stats = Stats()

    def test_stats(self):
        """
        """
        # freeze map with on area
        report_id = self.r.key().id()
        data = self.ndfi.freeze_map(self.r.base_map(),
                                    int(settings.FT_TABLE_ID),
                                    self.r.key().id())
        self.assertTrue('data' in data)
        self.assertTrue('id' in data['data'])
        self.assertTrue(len(data['data']['id']) > 0)

        asset_id = data['data']['id']
        print "report id: ", asset_id

        # get stats for this area
        st = self.stats.get_stats_for_polygon(report_id, asset_id,
                                              self.polygon)

        self.assertTrue(st is not None)
        polygon_stats = st[0]
        print polygon_stats
        self.assertTrue(float(polygon_stats['def']) > 0.0)
        self.assertAlmostEquals(0.0, float(polygon_stats['deg']))
        def_area = float(polygon_stats['def'])
        print "deforested area: ", def_area

        # get stats for this area
        # move the polygon a little bit
        p = [[[x, y + 1.0] for x, y in self.polygon[0]]]
        st = self.stats.get_stats_for_polygon(report_id, asset_id, p)
        self.assertTrue(st is not None)
        print st[0]
        polygon_stats = st['data']['properties']['classHistogram']['values'][
            'null']['values']
        self.assertTrue(float(polygon_stats['def']) > 0.0)
        self.assertTrue(float(polygon_stats['def']) < def_area)
        print "new deforested area: ", float(polygon_stats['def'])

        # search in area whiout deforesation
        p = [[[x + 4.0, y] for x, y in self.polygon[0]]]
        st = self.stats.get_stats_for_polygon(report_id, asset_id, p)
        self.assertTrue(st is not None)
        polygon_stats = st[0]
        self.assertAlmostEquals(0.0, float(polygon_stats['def']))
        self.assertAlmostEquals(0.0, float(polygon_stats['deg']))
class StatsTest(unittest.TestCase):
    """ test for reporting api 
    """

    def setUp(self):
        # create resources
        self.polygon = [[[-63.154907226557498, -4.8118385341739005], [-64.143676757807498, -4.8118385341739005], [-64.132690429682498, -6.2879986723276584], [-62.814331054682498, -6.3535159310087908]]]
        self.inv_polygon = [[[y, x] for x, y in self.polygon[0]]]
        self.r = Report(start=date(year=2011, month=2, day=1),
                        end=date(year=2011, month=3, day=1),
                        finished=True)
        self.r.put()
        self.cell = Cell(x=0, y=0, z=2, report=self.r, ndfi_high=1.0, ndfi_low=0.0)
        self.cell.put()
        self.area = Area(geo=json.dumps(self.inv_polygon), added_by=None, type=1, cell=self.cell)
        self.area.put()
        self.area.create_fusion_tables()
        self.ndfi = NDFI(self.r.comparation_range(), self.r.range())
        self.stats = Stats()

    def test_stats(self):
        """
        """
        # freeze map with on area
        report_id = self.r.key().id()
        data = self.ndfi.freeze_map(self.r.base_map(), 
                             int(settings.FT_TABLE_ID),
                             self.r.key().id())
        self.assertTrue('data' in data)
        self.assertTrue('id' in data['data'])
        self.assertTrue(len(data['data']['id']) > 0)
    
        asset_id = data['data']['id']
        print "report id: ", asset_id

        # get stats for this area
        st = self.stats.get_stats_for_polygon(report_id, asset_id, self.polygon)
        
        self.assertTrue(st is not None)
        polygon_stats = st[0]
        print polygon_stats
        self.assertTrue(float(polygon_stats['def']) > 0.0)
        self.assertAlmostEquals(0.0, float(polygon_stats['deg']))
        def_area = float(polygon_stats['def'])
        print "deforested area: ", def_area

        # get stats for this area
        # move the polygon a little bit
        p = [[[x, y + 1.0] for x, y in self.polygon[0]]]
        st = self.stats.get_stats_for_polygon(report_id, asset_id, p)
        self.assertTrue(st is not None)
        print st[0]
        polygon_stats = st['data']['properties']['classHistogram']['values']['null']['values']
        self.assertTrue(float(polygon_stats['def']) > 0.0)
        self.assertTrue(float(polygon_stats['def']) < def_area)
        print "new deforested area: ", float(polygon_stats['def'])

        # search in area whiout deforesation
        p = [[[x+4.0, y] for x, y in self.polygon[0]]]
        st = self.stats.get_stats_for_polygon(report_id, asset_id, p)
        self.assertTrue(st is not None)
        polygon_stats = st[0]
        self.assertAlmostEquals(0.0, float(polygon_stats['def']))
        self.assertAlmostEquals(0.0, float(polygon_stats['deg']))