mc-po / app_paused.py
fromcarlostocosta's picture
Leaflet maps
5d1ac9e
import streamlit as st
import pandas as pd
import random
import plotly.express as px
from geopy.distance import geodesic
from PIL import Image
# Define the DMO names
dmo_names = ["DMO" + str(i) for i in range(1, 31)]
# Dictionary of large European cities with their coordinates
cities = {
"London": (51.5074, -0.1278),
"Paris": (48.8566, 2.3522),
"Berlin": (52.5200, 13.4050),
"Madrid": (40.4168, -3.7038),
"Rome": (41.9028, 12.4964),
"Vienna": (48.2082, 16.3738),
"Amsterdam": (52.3667, 4.8945),
"Athens": (37.9838, 23.7275),
"Stockholm": (59.3293, 18.0686),
"Brussels": (50.8503, 4.3517),
"Helsinki": (60.1699, 24.9384),
"Warsaw": (52.2297, 21.0122),
"Copenhagen": (55.6761, 12.5683),
"Lisbon": (38.7223, -9.1393),
"Dublin": (53.3498, -6.2603),
"Budapest": (47.4979, 19.0402),
"Prague": (50.0755, 14.4378),
"Sofia": (42.6977, 23.3219),
"Bucharest": (44.4396, 26.0963),
"Luxembourg": (49.6116, 6.1319),
"Riga": (56.9496, 24.1052),
"Valletta": (35.8989, 14.5146),
"Vilnius": (54.6872, 25.2797),
"Bratislava": (48.1486, 17.1077),
"Ljubljana": (46.0569, 14.5058),
"Nicosia": (35.1856, 33.3823),
"Tallinn": (59.4370, 24.7536),
"Zagreb": (45.8150, 15.9819),
"Nicosia": (35.1856, 33.3823),
"Valletta": (35.8989, 14.5146)
}
# Coordinates of beach and mountain areas
beach_coordinates = (45.0, 10.0) # Example beach coordinates
mountain_coordinates = (48.0, 10.0) # Example mountain coordinates
# Function to determine the area based on proximity to beach or mountain
def determine_area(latitude, longitude):
city_coordinates = (latitude, longitude)
beach_distance = geodesic(city_coordinates, beach_coordinates).km
mountain_distance = geodesic(city_coordinates, mountain_coordinates).km
if beach_distance <= 200:
return "Beach"
elif mountain_distance <= 200:
return "Mountain"
else:
return "City"
# Create an empty DataFrame
df = pd.DataFrame(columns=["DMO", "City", "Latitude", "Longitude", "Area", "Environmental", "Cultural",
"Community", "Socio-economic", "Infrastructure", "Stakeholder",
"Visitor_education", "Monitoring"])
# Populate the DataFrame
for i in range(30):
dmo = dmo_names[i]
city = random.choice(list(cities.keys()))
latitude, longitude = cities[city]
area = determine_area(latitude, longitude)
environmental = round(random.uniform(0, 10), 2)
cultural = round(random.uniform(0, 10), 2)
community = round(random.uniform(0, 10), 2)
socio_economic = round(random.uniform(0, 10), 2)
infrastructure = round(random.uniform(0, 10), 2)
stakeholder = round(random.uniform(0, 10), 2)
visitor_education = round(random.uniform(0, 10), 2)
monitoring = round(random.uniform(0, 10), 2)
df.loc[i] = [dmo, city, latitude, longitude, area, environmental, cultural, community,
socio_economic, infrastructure, stakeholder, visitor_education, monitoring]
df.loc[df['DMO'].isin(['DMO14', 'DMO19', 'DMO27', 'DMO15', 'DMO20', 'DMO21']), 'Area'] = 'Beach'
df.loc[df['DMO'].isin(['DMO4', 'DMO23', 'DMO8']), 'Area'] = 'Mountain'
fig = px.scatter_mapbox(df, lat="Latitude", lon="Longitude", hover_name="DMO", hover_data=["Environmental", "Cultural",
"Community", "Socio-economic",
"Infrastructure", "Stakeholder",
"Visitor_education", "Monitoring"],
color="Area", color_discrete_sequence=["blue", "green", "red"], zoom=3)
fig.update_layout(mapbox_style="open-street-map")
fig.update_layout(margin={"r":0,"t":0,"l":0,"b":0})
st.plotly_chart(fig, use_container_width=True)
img = Image.open('mastercard_logo.png')
col1, col2, col3 = st.columns([1,6,1])
with col1:
st.write("")
with col2:
st.write("")
with col3:
st.image(img)