Spaces:
Runtime error
Runtime error
File size: 4,953 Bytes
ab2028a a3ff20d 55b6a72 ff28ea7 06a38bb a3ff20d ff28ea7 06a38bb ff28ea7 854c655 a3ff20d 654556e a3ff20d 854c655 a3ff20d 854c655 ca883bf 854c655 662683c a3ff20d 854c655 ff28ea7 a3ff20d 06a38bb ff28ea7 a3ff20d ff28ea7 a3ff20d ff28ea7 a3ff20d 06a38bb ff28ea7 a3ff20d ff28ea7 a3ff20d ff28ea7 06a38bb ff28ea7 7d98fee ff28ea7 55b6a72 ff28ea7 a3ff20d ff28ea7 a3ff20d ff28ea7 55b6a72 a3ff20d 06a38bb |
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 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 |
import streamlit as st
import json
import matplotlib.pyplot as plt
# Set Streamlit page configuration
st.set_page_config(layout="wide")
# Function to load JSON data
def load_data(filename):
with open(filename, 'r') as file:
data = json.load(file)
return data
# Dictionary for color codes
color_codes = {
"residential": "#ADD8E6",
"commercial": "#90EE90",
"community_facilities": "#FFFF00",
"school": "#FFFF00",
"healthcare_facility": "#FFFF00",
"green_space": "#90EE90",
"utility_infrastructure": "#90EE90",
"emergency_services": "#FF0000",
"cultural_facilities": "#D8BFD8",
"recreational_facilities": "#D8BFD8",
"innovation_center": "#90EE90",
"elderly_care_home": "#FFFF00",
"childcare_centers": "#FFFF00",
"places_of_worship": "#D8BFD8",
"event_spaces": "#D8BFD8",
"guest_housing": "#FFA500",
"pet_care_facilities": "#FFA500",
"public_sanitation_facilities": "#A0A0A0",
"environmental_monitoring_stations": "#90EE90",
"disaster_preparedness_center": "#A0A0A0",
"outdoor_community_spaces": "#90EE90",
# Add other types with their corresponding colors
}
# Function to draw the grid with optional highlighting
def draw_grid(data, highlight=None):
fig, ax = plt.subplots(figsize=(12, 12))
nrows, ncols = data['size']['rows'], data['size']['columns']
ax.set_xlim(0, ncols)
ax.set_ylim(0, nrows)
ax.set_xticks(range(ncols+1))
ax.set_yticks(range(nrows+1))
ax.grid(True)
for building in data['buildings']:
coords = building['coords']
b_type = building['type']
size = building['size']
color = color_codes.get(b_type, '#FFFFFF') # Use default color if type is not found
# Highlight the selected building
if coords == highlight:
edgecolor = 'red' # Highlight color
linewidth = 3 # Make the border thicker for the selected building
else:
edgecolor = 'black'
linewidth = 1
ax.add_patch(plt.Rectangle((coords[1], nrows-coords[0]-size), size, size, color=color, edgecolor=edgecolor, linewidth=linewidth))
ax.text(coords[1]+0.5*size, nrows-coords[0]-0.5*size, b_type, ha='center', va='center', fontsize=8, color='black')
# Draw roads
for road in data.get('roads', []):
start, end = road['start'], road['end']
road_color = road.get('color', '#000000') # Default road color is black
# Determine if the road is vertical or horizontal and draw it
if start[0] == end[0]: # Vertical road
for y in range(min(start[1], end[1]), max(start[1], end[1]) + 1):
ax.add_patch(plt.Rectangle((start[0], nrows-y-1), 1, 1, color=road_color))
else: # Horizontal road
for x in range(min(start[0], end[0]), max(start[0], end[0]) + 1):
ax.add_patch(plt.Rectangle((x, nrows-start[1]-1), 1, 1, color=road_color))
ax.set_xlabel('Columns')
ax.set_ylabel('Rows')
ax.set_title('Village Layout with Color Coding')
return fig
# Main Streamlit app function
def main():
st.title('Green Smart Village Application')
# Divide the page into three columns
col1, col2, col3 = st.columns(3)
with col1:
st.header("Today's Agenda")
st.write("1. Morning Meeting\n2. Review Project Plans\n3. Lunch Break\n4. Site Visit\n5. Evening Wrap-up")
st.header("Agent Advisors")
st.write("Would you like to optimize your HIN number?")
st.header("My Incentive")
st.write("Total incentive for HIN optimization")
with col2:
st.header("Green Smart Village Layout")
data = load_data('grid.json') # Ensure this path is correct
# Dropdown for selecting a building
building_options = [f"{bld['type']} at ({bld['coords'][0]}, {bld['coords'][1]})" for bld in data['buildings']]
selected_building = st.selectbox("Select a building to highlight:", options=building_options)
selected_index = building_options.index(selected_building)
selected_building_coords = data['buildings'][selected_index]['coords']
# Draw the grid with the selected building highlighted
fig = draw_grid(data, highlight_coords=selected_building_coords)
st.pyplot(fig)
# Assuming sensors are defined in your data, display them
sensors = data['buildings'][selected_index].get('sensors', [])
st.write(f"Sensors in selected building: {', '.join(sensors)}")
with col3:
st.header("Check Your HIN Number")
# Placeholder for HIN number functionality
st.write("Enter your HIN number to check details...")
hin_number = st.text_input("Enter your HIN number:")
if hin_number:
st.write("HIN number details...") # Placeholder for actual HIN number check
if __name__ == "__main__":
main() |