Spaces:
Sleeping
Sleeping
Update app.py
Browse files
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 |
-
|
71 |
-
|
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 |
-
#
|
80 |
-
farm_point = ee.Geometry.Point([farm_lon, farm_lat])
|
81 |
user_point = ee.Geometry.Point([user_lon, user_lat])
|
82 |
-
|
|
|
83 |
|
84 |
-
#
|
85 |
-
satellite_image = ee.ImageCollection("COPERNICUS/
|
86 |
-
.filterBounds(
|
87 |
.sort("CLOUD_COVER") \
|
88 |
.first()
|
89 |
|
90 |
-
map_id_dict =
|
91 |
|
92 |
-
#
|
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
|
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=
|
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:
|