File size: 5,460 Bytes
f63cb2d
 
 
50cb32e
628c5fb
 
e81552f
 
628c5fb
 
 
0047175
 
 
 
 
 
 
 
e81552f
f63cb2d
 
 
 
 
 
a43ae41
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
f63cb2d
50cb32e
 
f63cb2d
 
 
 
 
 
 
 
 
a43ae41
f63cb2d
 
 
 
 
a43ae41
f63cb2d
 
f598d77
34ddbbd
f63cb2d
 
2edea2c
 
0047175
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
f63cb2d
 
a43ae41
f63cb2d
34ddbbd
 
f63cb2d
 
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
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
import streamlit as st
import json
import matplotlib.pyplot as plt
import time


st.set_page_config(layout="wide")




# HIN Number +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
from SPARQLWrapper import SPARQLWrapper, JSON
from streamlit_agraph import agraph, TripleStore, Node, Edge, Config
import json


# Green Village ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++


# Function to load and parse the JSON data
def load_data(filename):
    with open(filename, 'r') as file:
        data = json.load(file)
    return data

# Color codes updated with hexadecimal values for compatibility
color_codes = {
    "residential": "#ADD8E6",  # Light Blue
    "commercial": "#90EE90",  # Light Green
    "community_facilities": "#FFFF00",  # Yellow
    "school": "#FFFF00",  # Yellow
    "healthcare_facility": "#FFFF00",  # Yellow
    "green_space": "#90EE90",  # Light Green
    "utility_infrastructure": "#90EE90",  # Light Green
    "emergency_services": "#FF0000",  # Red
    "cultural_facilities": "#D8BFD8",  # Light Purple
    "recreational_facilities": "#D8BFD8",  # Light Purple
    "innovation_center": "#90EE90",  # Light Green
    "elderly_care_home": "#FFFF00",  # Yellow
    "childcare_centers": "#FFFF00",  # Yellow
    "places_of_worship": "#D8BFD8",  # Light Purple
    "event_spaces": "#D8BFD8",  # Light Purple
    "guest_housing": "#FFA500",  # Orange
    "pet_care_facilities": "#FFA500",  # Orange
    "public_sanitation_facilities": "#A0A0A0",  # Grey
    "environmental_monitoring_stations": "#90EE90",  # Light Green
    "disaster_preparedness_center": "#A0A0A0",  # Grey
    "outdoor_community_spaces": "#90EE90"  # Light Green
}

# Function to draw the grid layout with color coding
def draw_grid(data):
    # Create a figure and a grid of subplots
    fig, ax = plt.subplots(figsize=(12, 12))
    
    # Setting the grid size
    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)
    
    # Plotting each building with its assigned color from the color_codes dictionary
    for building in data['buildings']:
        # Extracting the building details
        coords = building['coords']
        b_type = building['type']
        size = building['size']
        color = color_codes.get(b_type, '#FFFFFF')  # Default color is white if not specified
        
        # Plotting the building on the grid with color
        ax.add_patch(plt.Rectangle((coords[1], nrows-coords[0]-size), size, size, color=color, edgecolor='black', linewidth=1))
        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', []):  # Check for roads in the data, default to empty list if not found
        start, end = road['start'], road['end']
        # Determine if the road is vertical or horizontal based on start and end coordinates
        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']))
        
    # Setting labels and title
    ax.set_xlabel('Columns')
    ax.set_ylabel('Rows')
    ax.set_title('Village Layout with Color Coding')
    
    return fig



# Streamlit application starts here
def main():
    st.title('Green Smart Village Application')
    
    # Creating three columns
    col1, col2, col3 = st.columns(3)
    
    with col1:
        st.header("Today's Agenda")
        # Example content for Today's Agenda
        st.write("1. Morning Meeting\n2. Review Project Plans\n3. Lunch Break\n4. Site Visit\n5. Evening Wrap-up")
    
    with col2:
        st.header("Green Smart Village Layout")
        # Load and display the data with color coding
        data = load_data('grid.json')  # Ensure this path is correct
        fig = draw_grid(data)
        st.pyplot(fig)


    with col3:
        st.header("Check Your HIN Number")
        config = Config(height=400, width=400, nodeHighlightBehavior=True, highlightColor="#F7A7A6", directed=True,
                  collapsible=True)

        #based on Insurance Fraud
        with open("data/fraud.json", encoding="utf8") as f:
          fraud_file = json.loads(f.read())
          st.session_state['fraud_topic'] = fraud_file
          fraud_store = TripleStore()
          for sub_graph in fraud_file["children"]:
            fraud_store.add_triple(fraud_file["name"], "has_subgroup", sub_graph["name"], picture=fraud_file["img"])
            for node in sub_graph["children"]:
              node1 = node["role"]
              link = "blongs_to"
              node2 = sub_graph["name"]
              pic = node["img"]
              fraud_store.add_triple(node1, link, node2, picture=pic)
          agraph(list(fraud_store.getNodes()), (fraud_store.getEdges()), config)


        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()