Spaces:
Sleeping
Sleeping
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) | |