Esmaeilkiani commited on
Commit
1a297af
·
verified ·
1 Parent(s): bc2a95a

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +16 -21
app.py CHANGED
@@ -1,6 +1,5 @@
1
  import streamlit as st
2
  import pandas as pd
3
- import geopy.distance
4
  import folium
5
  from streamlit_folium import st_folium
6
  import ee
@@ -45,11 +44,6 @@ query_params = st.query_params
45
  user_lat = query_params.get("latitude", [None])[0]
46
  user_lon = query_params.get("longitude", [None])[0]
47
 
48
- if user_lat and user_lon:
49
- user_lat = float(user_lat)
50
- user_lon = float(user_lon)
51
- st.success(f"Your location: {user_lat}, {user_lon}")
52
-
53
  # Sidebar input for farm name
54
  farm_name = st.sidebar.text_input("Enter farm name:")
55
 
@@ -67,31 +61,29 @@ if farm_name:
67
  farm_lon = farm.iloc[0]["longitude"]
68
 
69
  if user_lat and user_lon:
70
- # Calculate distance
71
- user_location = (user_lat, user_lon)
72
- farm_location = (farm_lat, farm_lon)
73
- distance = geopy.distance.geodesic(user_location, farm_location).km
74
- st.write(f"Distance to farm: {distance:.2f} km")
75
 
76
  # Google Earth Engine Map Display
77
  st.subheader(f"Path to {farm_name} on Map")
78
 
79
- # Define region
80
- farm_point = ee.Geometry.Point([farm_lon, farm_lat])
81
  user_point = ee.Geometry.Point([user_lon, user_lat])
82
- region = ee.Geometry.LineString([user_point.coordinates().getInfo(), farm_point.coordinates().getInfo()])
 
83
 
84
- # Get Satellite Map
85
- satellite_image = ee.ImageCollection("COPERNICUS/S2_SR") \
86
- .filterBounds(region) \
87
  .sort("CLOUD_COVER") \
88
  .first()
89
 
90
- map_id_dict = ee.Image(satellite_image).getMapId({"bands": ["B4", "B3", "B2"], "min": 0, "max": 3000})
91
 
92
- # Add Earth Engine map with Folium
93
  m = folium.Map(location=[(user_lat + farm_lat) / 2, (user_lon + farm_lon) / 2], zoom_start=12)
94
 
 
95
  folium.TileLayer(
96
  tiles=map_id_dict["tile_fetcher"].url_format,
97
  attr="Google Earth Engine",
@@ -100,12 +92,15 @@ if farm_name:
100
  control=True,
101
  ).add_to(m)
102
 
103
- # Add markers and route
104
  folium.Marker([farm_lat, farm_lon], popup=f"Farm: {farm_name}", icon=folium.Icon(color="green")).add_to(m)
105
  folium.Marker([user_lat, user_lon], popup="Your Location", icon=folium.Icon(color="blue")).add_to(m)
106
- folium.PolyLine([(user_lat, user_lon), (farm_lat, farm_lon)], color="red", weight=2.5, opacity=1).add_to(m)
107
 
 
108
  st_folium(m, width=800, height=600)
 
 
109
  else:
110
  st.error("Farm not found in the dataset!")
111
  else:
 
1
  import streamlit as st
2
  import pandas as pd
 
3
  import folium
4
  from streamlit_folium import st_folium
5
  import ee
 
44
  user_lat = query_params.get("latitude", [None])[0]
45
  user_lon = query_params.get("longitude", [None])[0]
46
 
 
 
 
 
 
47
  # Sidebar input for farm name
48
  farm_name = st.sidebar.text_input("Enter farm name:")
49
 
 
61
  farm_lon = farm.iloc[0]["longitude"]
62
 
63
  if user_lat and user_lon:
64
+ user_lat = float(user_lat)
65
+ user_lon = float(user_lon)
 
 
 
66
 
67
  # Google Earth Engine Map Display
68
  st.subheader(f"Path to {farm_name} on Map")
69
 
70
+ # Create a line connecting user location to farm location
 
71
  user_point = ee.Geometry.Point([user_lon, user_lat])
72
+ farm_point = ee.Geometry.Point([farm_lon, farm_lat])
73
+ path = ee.Geometry.LineString([user_point.coordinates().getInfo(), farm_point.coordinates().getInfo()])
74
 
75
+ # Satellite map using Sentinel-2
76
+ satellite_image = ee.ImageCollection("COPERNICUS/S2") \
77
+ .filterBounds(path) \
78
  .sort("CLOUD_COVER") \
79
  .first()
80
 
81
+ map_id_dict = satellite_image.getMapId({"bands": ["B4", "B3", "B2"], "min": 0, "max": 3000})
82
 
83
+ # Create Folium map
84
  m = folium.Map(location=[(user_lat + farm_lat) / 2, (user_lon + farm_lon) / 2], zoom_start=12)
85
 
86
+ # Add Satellite Layer
87
  folium.TileLayer(
88
  tiles=map_id_dict["tile_fetcher"].url_format,
89
  attr="Google Earth Engine",
 
92
  control=True,
93
  ).add_to(m)
94
 
95
+ # Add markers and path
96
  folium.Marker([farm_lat, farm_lon], popup=f"Farm: {farm_name}", icon=folium.Icon(color="green")).add_to(m)
97
  folium.Marker([user_lat, user_lon], popup="Your Location", icon=folium.Icon(color="blue")).add_to(m)
98
+ folium.PolyLine([(user_lat, user_lon), (farm_lat, farm_lon)], color="red", weight=3, opacity=1).add_to(m)
99
 
100
+ # Display map
101
  st_folium(m, width=800, height=600)
102
+ else:
103
+ st.warning("Please allow location access for map functionality.")
104
  else:
105
  st.error("Farm not found in the dataset!")
106
  else: