def home(cell_path=None):
    import sys
    logging.info("Version python: "+sys.version);
    
    maps = memcache.get('default_maps')

    if maps:
        maps = json.loads(maps)
    else:
        maps = default_maps()
        memcache.add(key='default_maps', value=json.dumps(maps), time=60*10)

    # send only the active report
    reports = json.dumps([Report.current().as_dict()])
    report_base = json.dumps([Report.current().previous().as_dict()])
    logging.info("Reports: "+str(reports))
    logging.info("Maps: "+str(maps))
    u = get_or_create_user()
    if not u:
        abort(403)


    logout_url = users.create_logout_url('/')
    return render_template('home.html',
            reports_json=reports,
            report_base_json=report_base,
            user=u,
            maps=maps,
            polygons_table=settings.FT_TABLE_ID,
            logout_url=logout_url)
def default_maps():
    maps = []
    r = Report.current() 
    logging.info("report " + unicode(r))
    ee_resource = 'MOD09GA'
    landsat = EELandsat('LANDSAT/L7_L1T')
    ndfi = NDFI(ee_resource,
        past_month_range(r.start),
        r.range())

    d = landsat.mapid(*r.range())
    if 'data' in d:
        maps.append({'data' :d['data'], 'info': 'LANDSAT/L7_L1T'})
    """
    d = landsat.mapid(*past_month_range(r.start))
    if 'data' in d:
        maps.append({'data' :d['data'], 'info': 'LANDSAT/L7_L1T-old'})
    """
    #d = ndfi.mapid2()
    #if 'data' in d:
        #maps.append({'data' :d['data'], 'info': 'ndfi difference'})
    d = ndfi.smaid()
    if 'data' in d:
        maps.append({'data': d['data'], 'info': 'SMA'})
    d = ndfi.rgbid()
    if 'data' in d:
        maps.append({'data': d['data'], 'info': 'RGB'})
    d = ndfi.ndfi0id()
    if 'data' in d:
        maps.append({'data': d['data'], 'info': 'NDFI T0'})
    d = ndfi.ndfi1id()
    if 'data' in d:
        maps.append({'data' :d['data'], 'info': 'NDFI T1'})
    return maps
def default_maps():
    maps = []
    r = Report.current() 
    logging.info("report " + unicode(r))
    ee_resource = 'MOD09GA'
    landsat = EELandsat('LANDSAT/L7_L1T')
    ndfi = NDFI(ee_resource,
        past_month_range(r.start),
        r.range())

    d = landsat.mapid(*r.range())
    if 'data' in d:
        maps.append({'data' :d['data'], 'info': 'LANDSAT/L7_L1T'})
    """
    d = landsat.mapid(*past_month_range(r.start))
    if 'data' in d:
        maps.append({'data' :d['data'], 'info': 'LANDSAT/L7_L1T-old'})
    """
    #d = ndfi.mapid2()
    #if 'data' in d:
        #maps.append({'data' :d['data'], 'info': 'ndfi difference'})
    d = ndfi.smaid()
    if 'data' in d:
        maps.append({'data': d['data'], 'info': 'SMA'})
    d = ndfi.rgbid()
    if 'data' in d:
        maps.append({'data': d['data'], 'info': 'RGB'})
    d = ndfi.ndfi0id()
    if 'data' in d:
        maps.append({'data': d['data'], 'info': 'NDFI t0'})
    d = ndfi.ndfi1id()
    if 'data' in d:
        maps.append({'data' :d['data'], 'info': 'NDFI t1'})
    return maps
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 tiles_sensor(sensor=None):
    tile_array = []
    if request.method == 'POST':
        return jsonify({'result': 'post method'})
    else:
        if sensor == 'modis':
            tile_array = [
                          { 'name': 'h10v09', 'value': 'h10v09'},
                          { 'name': 'h11v08', 'value': 'h11v08'},
                          { 'name': 'h11v09', 'value': 'h11v09'},
                          { 'name': 'h11v10', 'value': 'h11v10'}, 
                          { 'name': 'h12v08', 'value': 'h12v08'},
                          { 'name': 'h12v09', 'value': 'h12v09'},                       
                          { 'name': 'h12v10', 'value': 'h12v10'},
                          { 'name': 'h13v09', 'value': 'h13v09'},
                          { 'name': 'h13v10', 'value': 'h13v10'}
                        ]
            
            r = Report.current()
            start_date = r.start
            end_date = r.end
            #compounddate = '%04d%02d' % (start_date.year, start_date.month) 
            
            for i in range(len(tile_array)):
                image_picker = ImagePicker.find_by_period_and_cell(start_date, end_date, tile_array[i]['name'])
                if image_picker:
                    tile_array[i]['done'] = True
                else:
                    tile_array[i]['done'] = False
                

    return jsonify({'result': tile_array})
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 home(cell_path=None):
    maps = memcache.get('default_maps')
    if maps:
        maps = json.loads(maps)
    else:
        maps = default_maps()
        memcache.add(key='default_maps', value=json.dumps(maps), time=3600*24)

    # send only the active report
    reports = json.dumps([Report.current().as_dict()])
    user = users.get_current_user()
    u = User.get_user(user)
    if not u and users.is_current_user_admin():
        u = User(user=user, role='admin')
        u.put()

    if not u:
        abort(403)

    logout_url = users.create_logout_url('/')
    return render_template('home.html',
            reports_json=reports,
            user=u,
            maps=maps,
            logout_url=logout_url)
def default_maps():
    maps = []
    r = Report.current()
    logging.info("report " + unicode(r))
    ee_resource = "MOD09GA"
    landsat = EELandsat("LANDSAT/L7_L1T")
    ndfi = NDFI(ee_resource, past_month_range(r.start), r.range())

    d = landsat.mapid(*r.range())
    if "data" in d:
        maps.append({"data": d["data"], "info": "LANDSAT/L7_L1T"})
    """
    d = landsat.mapid(*past_month_range(r.start))
    if 'data' in d:
        maps.append({'data' :d['data'], 'info': 'LANDSAT/L7_L1T-old'})
    """
    # d = ndfi.mapid2()
    # if 'data' in d:
    # maps.append({'data' :d['data'], 'info': 'ndfi difference'})
    d = ndfi.smaid()
    if "data" in d:
        maps.append({"data": d["data"], "info": "SMA"})
    d = ndfi.rgbid()
    if "data" in d:
        maps.append({"data": d["data"], "info": "RGB"})
    d = ndfi.ndfi0id()
    if "data" in d:
        maps.append({"data": d["data"], "info": "NDFI t0"})
    d = ndfi.ndfi1id()
    if "data" in d:
        maps.append({"data": d["data"], "info": "NDFI t1"})
    return maps
def imagepicker_tile():    
       
    if request.method == 'POST' and request.form.get('list_cloud_percent') and request.form.get('date_start') and request.form.get('date_end'):
        

        date_start         = request.form.get('date_start')
        date_end           = request.form.get('date_end')
        date_start = datetime.datetime.strptime(date_start,"%d/%b/%Y")
        date_end = datetime.datetime.strptime(date_end,"%d/%b/%Y")
        
        list_cloud_percent = request.form.get('list_cloud_percent')
        list_cloud_percent = json.loads(list_cloud_percent)
        
        landstat = EELandsat(date_start, date_end)
        result = landstat.get_thumbs(list_cloud_percent)
                
        return jsonify({'result': result})
    elif request.method == 'POST' and request.form.get('thumbs_tile'):
        
        logging.info(request.form.get('thumbs_tile'))
        thumbs_tile = request.form.get('thumbs_tile')        
        thumbs_tile = thumbs_tile.split(',')
        
        date_start  = request.form.get('date_start')
        date_end    = request.form.get('date_end')
        date_start = datetime.datetime.strptime(date_start,"%d/%b/%Y")
        date_end = datetime.datetime.strptime(date_end,"%d/%b/%Y")
        
        result = ""
        sensor_date = {}
        
        for i in range(len(thumbs_tile)):
            date, tile, sensor = thumbs_tile[i].split('__')
            
            if tile not in sensor_date.keys():
                sensor_date[tile]                = {}
                sensor_date[tile]['location']    = Tile.find_geo_region(tile.replace("_", "/"))
                sensor_date[tile]['sensor_date'] = []
                sensor_date[tile]['sensor_date'].append(sensor+'__'+date)
            else:
                sensor_date[tile]['sensor_date'].append(sensor+'__'+date)
                
            

        report = Report.current()
        
        logging.info("===== sensor_date =====")
        logging.info(sensor_date)
        
        for key in sensor_date:
            imagePicker = ImagePicker(report=report, added_by= users.get_current_user(), cell=str(key.replace("_", "/")),  location=str(sensor_date[key]['location']), sensor_dates=sensor_date[key]['sensor_date'], start=date_start, end=date_end)
            result = result + imagePicker.save()
        
        return jsonify({'result': result})
    else:     
        return jsonify({'result': None})
def testing():
    r = Report.current()
    r = Report.get(Key('ahBpbWF6b24tcHJvdG90eXBlcg4LEgZSZXBvcnQYiaECDA'))
    logging.info("report " + unicode(r))
    ee_resource = 'MOD09GA'
    ndfi = NDFI(ee_resource,
            r.comparation_range(),
            r.range())
    #return str(ndfi.mapid2())
    return str(ndfi.freeze_map(1089491, r.key().id()))
def picker(tile=None):
    
    if request.method == 'POST':
        logging.info(request.form.get('thumb'))

        cell   = request.form.get('tile')
        p      = re.compile('\d+')
        p      = p.findall(cell)
        cell   = 'h' + p[0] + 'v' + p[1]

        thumbs = request.form.get('thumb').split(',')
        sensor_dates = []
        for i in range(len(thumbs)):
            day, month, year = thumbs[i].split('-')
            sensor_dates.append('modis__' + year +'-'+ month +'-'+ day)

        location = get_modis_location(cell)

        report = Report.current()
        
        date_start = datetime.datetime.combine(report.start, datetime.time())
        date_end = datetime.datetime.combine(report.end, datetime.time())
        
        imagePicker = ImagePicker(report=report, added_by= users.get_current_user(), cell=str(cell),  location=location, sensor_dates=sensor_dates, start=date_start, end=date_end)
        return jsonify({'result': imagePicker.save()})

    else:
        #cell = request.args.get('cell', '')
        reports = Report.current().as_dict()
        date = time.gmtime(reports['start'] / 1000)
        year = time.strftime("%Y", date)
        month = time.strftime("%m", date)

        if tile:
            bands = 'sur_refl_b01,sur_refl_b04,sur_refl_b03'
            gain = 0.1
            results = get_modis_thumbnails_list(year, month, tile, bands, gain)
            return jsonify({'result': results})
        else:
            return jsonify({'result': []})
def home(cell_path=None):
    maps = memcache.get("default_maps")
    if maps:
        maps = json.loads(maps)
    else:
        maps = default_maps()
        memcache.add(key="default_maps", value=json.dumps(maps), time=60 * 10)

    # send only the active report
    reports = json.dumps([Report.current().as_dict()])
    u = get_or_create_user()
    if not u:
        abort(403)

    logout_url = users.create_logout_url("/")
    return render_template(
        "home.html", reports_json=reports, user=u, maps=maps, polygons_table=settings.FT_TABLE_ID, logout_url=logout_url
    )
def home(cell_path=None):
    maps = memcache.get('default_maps')
    if maps:
        maps = json.loads(maps)
    else:
        maps = default_maps()
        memcache.add(key='default_maps', value=json.dumps(maps), time=60*10)

    # send only the active report
    reports = json.dumps([Report.current().as_dict()])
    u = get_or_create_user()
    if not u:
        abort(403)

    logout_url = users.create_logout_url('/')
    return render_template('home.html',
            reports_json=reports,
            user=u,
            maps=maps,
            polygons_table=settings.FT_TABLE_ID,
            logout_url=logout_url)
Exemple #14
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
def downscalling(tile=None):

    if request.method == 'POST':
        range3 = request.form.get('range3')
        range4 = request.form.get('range4')
        range6 = request.form.get('range6')
        range7 = request.form.get('range7')

        sill3 = request.form.get('sill3') 
        sill4 = request.form.get('sill4')
        sill6 = request.form.get('sill6')
        sill7 = request.form.get('sill7')

        nugget3 = request.form.get('nugget3')
        nugget4 = request.form.get('nugget4')
        nugget6 = request.form.get('nugget6')
        nugget7 = request.form.get('nugget7')

        cell = request.form.get('tile')
        cell = cell.upper()

        location = get_modis_location(cell.lower())

        compounddate = request.form.get('compounddate')

        report = Report.current()

        model = 'exponential'

        downscalling3 = Downscalling(report=report,
                                 added_by= users.get_current_user(),
                                 cell=str(cell),
                                 region=location,
                                 compounddate=str(compounddate),
                                 band=3,
                                 model=model,
                                 sill=long(sill3),
                                 range=long(range3),
                                 nugget=long(nugget3)
                                 )
        message1 = downscalling3.save()

        downscalling4 = Downscalling(report=report,
                                 added_by= users.get_current_user(),
                                 cell=str(cell),
                                 region=location,
                                 compounddate=str(compounddate),
                                 band=4,
                                 model=model,
                                 sill=long(sill4),
                                 range=long(range4),
                                 nugget=long(nugget4)
                                 )
        message2 = downscalling4.save()

        downscalling6 = Downscalling(report=report,
                                 added_by= users.get_current_user(),
                                 cell=str(cell),
                                 region=location,
                                 compounddate=str(compounddate),
                                 band=6,
                                 model=model,
                                 sill=long(sill6),
                                 range=long(range6),
                                 nugget=long(nugget6)
                                 )
        message3 = downscalling6.save()

        downscalling7 = Downscalling(report=report,
                                 added_by= users.get_current_user(),
                                 cell=str(cell),
                                 region=location,
                                 compounddate=str(compounddate),
                                 band=7,
                                 model=model,
                                 sill=long(sill7),
                                 range=long(range7),
                                 nugget=long(nugget7)
                                 )
        message4 = downscalling7.save()

        if message1 == message2 == message3 == message4:
            return jsonify({'result': message1})
        else:
            return jsonify({'result': 'Could not save values.'})

    else:
        result = []
        if tile:
            filter_fc = ee.Filter.eq('Cell', tile.upper())
            fc        = ee.FeatureCollection('ft:17Qn-29xy2JwFFeBam5YL_EjsvWo40zxkkOEq1Eo').filter(filter_fc)
            logging.info("==================  Aqui ================")
            logging.info(fc.getInfo())
            for feature in fc.getInfo().get('features'):
                result.append({'Band':  feature.get('properties').get('Band'),
                            'Sill':  feature.get('properties').get('Sill'),
                            'Range': feature.get('properties').get('Range'),
                            'Nugget': feature.get('properties').get('Nugget')
                            })
                logging.info(feature);

            return jsonify({'result': result})

    return jsonify({'result': 'success'});