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)