File size: 3,187 Bytes
1e932e0
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
from django.shortcuts import render
import geopandas as gpd
from folium import GeoJson
import json
import geemap
import folium
import ee

# Generic base view
from django.views.generic import TemplateView

ee.Initialize()

# Frontend
# Home
class Home(TemplateView):
    template_name = 'index.html'

    def get_context_data(self, **kwargs):
        figure = folium.Figure()

        m = folium.Map(
            location=[25.5973518, 65.54495724],
            zoom_start=7,
        )
        m.add_to(figure)

        style_roi = {'fillColor': '#228B22', 'color': '#228B22'}
        roi_gdf = gpd.read_file(r'C:\Users\piv\Desktop\y\media\shp')
        roi_geojson = roi_gdf.to_crs("EPSG:4326").to_json()

        # Create a folium GeoJson layer for visualization
        roi_geojson_layer = GeoJson(roi_geojson, name='ROI GeoJSON')
        roi_geojson_layer.add_to(m)

        # Convert the GeoJSON content to an Earth Engine object
        ee_object = geemap.geojson_to_ee(json.loads(roi_geojson))

        # Get the selected dataset and year from the request
        selected_dataset = self.request.GET.get('dataset', 'landsat8')
        selected_year = self.request.GET.get('year', '2022')

        # Define date range based on the selected year
        date_start = selected_year + '-01-01'
        date_end = selected_year + '-12-31'
        date_range = ee.DateRange(ee.Date(date_start), ee.Date(date_end))

        if selected_dataset == 'landsat8':
            # Add your logic to handle Landsat 8 data
            # Example:
            dataset = ee.ImageCollection('LANDSAT/LC08/C01/T1_TOA').filterDate(date_range)
            # Clip the Landsat layer to the region defined by ee_object
            dataset_clipped = dataset.map(lambda image: image.clip(ee_object))
            # Add the Landsat layer to the map
            map_info = dataset_clipped.first().getMapId({'bands': ['B4', 'B3', 'B2'], 'min': 0, 'max': 0.3})
            tms_url = map_info['tile_fetcher']['url_format']  # Updated line
            folium.raster_layers.TileLayer(
                tiles=tms_url,
                attr='Google Earth Engine',
                name='Landsat 8',
                overlay=True,
                control=True
            ).add_to(m)
        
        elif selected_dataset == 'sentinel2':
            # Add your logic to handle Sentinel 2 data
            # Example:
            dataset = ee.ImageCollection('COPERNICUS/S2').filterDate(date_range)
            # Clip the Sentinel 2 layer to the region defined by ee_object
            dataset_clipped = dataset.map(lambda image: image.clip(ee_object))
            # Add the Sentinel 2 layer to the map
            map_info = dataset_clipped.first().getMapId({'bands': ['B4', 'B3', 'B2'], 'min': 0, 'max': 3000})
            tms_url = map_info['tile_fetcher']['url_format']  # Updated line
            folium.raster_layers.TileLayer(
                tiles=tms_url,
                attr='Google Earth Engine',
                name='Sentinel 2',
                overlay=True,
                control=True
            ).add_to(m)

        m.add_child(folium.LayerControl())
        figure.render()

        return {"map": figure}