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