project / y /gee /viewsN.py
aassiiyAA123's picture
Upload 469 files
1e932e0 verified
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}