File size: 2,438 Bytes
017190b
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
import streamlit as st
import leafmap.foliumap as leafmap

def create_marker(bird):
    species = bird['species']
    lat = bird['lat']
    lon = bird['lon']
    start_month = bird['start_month']
    end_month = bird['end_month']
    popup_msg = f"{species}: {start_month} - {end_month}"
    icon_text = f"{species} ({start_month} - {end_month})"
    marker = leafmap.Marker(location=[lat, lon], popup=popup_msg)
    marker.add_child(leafmap.Popup(icon_text))
    return marker

def create_map(center, zoom, markers):
    m = leafmap.Map(center=center, zoom=zoom)
    for marker in markers:
        marker.add_to(m)
    return m

birds = [
    {'species': 'Canada Goose', 'lat': 44.9778, 'lon': -93.2650, 'start_month': 'September', 'end_month': 'April'},
    {'species': 'Mallard Duck', 'lat': 44.8835, 'lon': -93.2273, 'start_month': 'August', 'end_month': 'May'},
    {'species': 'Wood Duck', 'lat': 44.9778, 'lon': -93.2650, 'start_month': 'March', 'end_month': 'November'},
    {'species': 'Trumpeter Swan', 'lat': 45.0941, 'lon': -94.2392, 'start_month': 'October', 'end_month': 'April'},
    {'species': 'Tundra Swan', 'lat': 44.9358, 'lon': -93.1553, 'start_month': 'November', 'end_month': 'April'},
    {'species': 'Canvasback', 'lat': 44.8835, 'lon': -93.2273, 'start_month': 'September', 'end_month': 'May'},
    {'species': 'Redhead', 'lat': 44.9778, 'lon': -93.2650, 'start_month': 'September', 'end_month': 'May'},
    {'species': 'Greater Scaup', 'lat': 44.8835, 'lon': -93.2273, 'start_month': 'September', 'end_month': 'May'},
    {'species': 'Lesser Scaup', 'lat': 44.9778, 'lon': -93.2650, 'start_month': 'September', 'end_month': 'May'},
    {'species': 'Hooded Merganser', 'lat': 44.8835, 'lon': -93.2273, 'start_month': 'October', 'end_month': 'April'}
]

# Create list of markers for each bird species
markers = [create_marker(bird) for bird in birds]

# Define the center and zoom of the map
center = [44.9778, -93.2650]
zoom = 8

# Create the Streamlit app
st.title("Bird Migration Map")
month = st.slider("Select a month", 1, 12, 1)

# Filter the markers by the selected month
selected_markers = [marker for marker in markers if month >= list(calendar.month_abbr).index(marker['start_month'][:3]) and month <= list(calendar.month_abbr).index(marker['end_month'][:3])]

# Create the map with the filtered markers
m = create_map(center, zoom, selected_markers)

# Display the map on the Streamlit app
st.write(m)