Spaces:
Sleeping
Sleeping
Upload 23 files
Browse files- FUTURE_AQI_v1.json +1 -0
- FUTURE_AQI_v1.weights.h5 +3 -0
- app.py +244 -0
- app3.py +248 -0
- app_map.py +246 -0
- app_test.py +340 -0
- aqi_data.csv +15 -0
- aqi_data_actual_api.csv +15 -0
- requirement.txt +116 -0
- scaler_X_cpcb_4.pkl +3 -0
- scaler_y_cpcb_4.pkl +3 -0
- static/aqi_forecast_map.html +177 -0
- static/aqi_forecast_vs_actual_map.html +0 -0
- static/aqi_forecast_vs_actual_map_horizontal_bars.html +0 -0
- static/aqi_forecast_with_legend.html +203 -0
- static/aqi_map_with_legend.html +222 -0
- static/multiple_wind_speed_map.html +101 -0
- surat_AQI_testing_2024.csv +0 -0
- surat_sample_test.csv +204 -0
- templates/aqi_forecast_with_legend.html +187 -0
- templates/index.html +134 -0
- templates/multiple_wind_speed_map.html +101 -0
- templates/results.html +45 -0
FUTURE_AQI_v1.json
ADDED
@@ -0,0 +1 @@
|
|
|
|
|
1 |
+
{"module": "keras", "class_name": "Sequential", "config": {"name": "sequential_1", "trainable": true, "dtype": {"module": "keras", "class_name": "DTypePolicy", "config": {"name": "float32"}, "registered_name": null}, "layers": [{"module": "keras.layers", "class_name": "InputLayer", "config": {"batch_shape": [null, 22], "dtype": "float32", "sparse": false, "name": "input_layer_1"}, "registered_name": null}, {"module": "keras.layers", "class_name": "Dense", "config": {"name": "dense_4", "trainable": true, "dtype": {"module": "keras", "class_name": "DTypePolicy", "config": {"name": "float32"}, "registered_name": null}, "units": 128, "activation": "relu", "use_bias": true, "kernel_initializer": {"module": "keras.initializers", "class_name": "GlorotUniform", "config": {"seed": null}, "registered_name": null}, "bias_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "kernel_regularizer": null, "bias_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "registered_name": null, "build_config": {"input_shape": [null, 22]}}, {"module": "keras.layers", "class_name": "Dense", "config": {"name": "dense_5", "trainable": true, "dtype": {"module": "keras", "class_name": "DTypePolicy", "config": {"name": "float32"}, "registered_name": null}, "units": 256, "activation": "relu", "use_bias": true, "kernel_initializer": {"module": "keras.initializers", "class_name": "GlorotUniform", "config": {"seed": null}, "registered_name": null}, "bias_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "kernel_regularizer": {"module": "keras.regularizers", "class_name": "L2", "config": {"l2": 0.001}, "registered_name": null}, "bias_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "registered_name": null, "build_config": {"input_shape": [null, 128]}}, {"module": "keras.layers", "class_name": "Dropout", "config": {"name": "dropout_1", "trainable": true, "dtype": {"module": "keras", "class_name": "DTypePolicy", "config": {"name": "float32"}, "registered_name": null}, "rate": 0.3, "seed": null, "noise_shape": null}, "registered_name": null}, {"module": "keras.layers", "class_name": "Dense", "config": {"name": "dense_6", "trainable": true, "dtype": {"module": "keras", "class_name": "DTypePolicy", "config": {"name": "float32"}, "registered_name": null}, "units": 128, "activation": "relu", "use_bias": true, "kernel_initializer": {"module": "keras.initializers", "class_name": "GlorotUniform", "config": {"seed": null}, "registered_name": null}, "bias_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "kernel_regularizer": {"module": "keras.regularizers", "class_name": "L2", "config": {"l2": 0.001}, "registered_name": null}, "bias_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "registered_name": null, "build_config": {"input_shape": [null, 256]}}, {"module": "keras.layers", "class_name": "Dense", "config": {"name": "dense_7", "trainable": true, "dtype": {"module": "keras", "class_name": "DTypePolicy", "config": {"name": "float32"}, "registered_name": null}, "units": 3, "activation": "linear", "use_bias": true, "kernel_initializer": {"module": "keras.initializers", "class_name": "GlorotUniform", "config": {"seed": null}, "registered_name": null}, "bias_initializer": {"module": "keras.initializers", "class_name": "Zeros", "config": {}, "registered_name": null}, "kernel_regularizer": null, "bias_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "registered_name": null, "build_config": {"input_shape": [null, 128]}}], "build_input_shape": [null, 22]}, "registered_name": null, "build_config": {"input_shape": [null, 22]}, "compile_config": {"optimizer": {"module": "keras.optimizers", "class_name": "Adam", "config": {"name": "adam", "learning_rate": 0.00010000000474974513, "weight_decay": null, "clipnorm": null, "global_clipnorm": null, "clipvalue": null, "use_ema": false, "ema_momentum": 0.99, "ema_overwrite_frequency": null, "loss_scale_factor": null, "gradient_accumulation_steps": null, "beta_1": 0.9, "beta_2": 0.999, "epsilon": 1e-07, "amsgrad": false}, "registered_name": null}, "loss": "mae", "loss_weights": null, "metrics": ["mae"], "weighted_metrics": null, "run_eagerly": false, "steps_per_execution": 1, "jit_compile": false}}
|
FUTURE_AQI_v1.weights.h5
ADDED
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
1 |
+
version https://git-lfs.github.com/spec/v1
|
2 |
+
oid sha256:73a4b6288d471be366832d6337e25ac55798beb7025943c025ed3b3c5f7e347d
|
3 |
+
size 860320
|
app.py
ADDED
@@ -0,0 +1,244 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import matplotlib
|
2 |
+
matplotlib.use('Agg') # Set non-GUI backend for Matplotlib
|
3 |
+
|
4 |
+
import tensorflow as tf
|
5 |
+
import numpy as np
|
6 |
+
import pandas as pd
|
7 |
+
import matplotlib.pyplot as plt
|
8 |
+
from flask import Flask, render_template, request
|
9 |
+
from keras.models import model_from_json
|
10 |
+
import folium
|
11 |
+
import json
|
12 |
+
import requests
|
13 |
+
from pathlib import Path
|
14 |
+
from io import BytesIO
|
15 |
+
import base64
|
16 |
+
|
17 |
+
app = Flask(__name__)
|
18 |
+
|
19 |
+
# Load the model
|
20 |
+
def load_model(name):
|
21 |
+
with open(f"{name}.json", "r") as json_file:
|
22 |
+
loaded_model_json = json_file.read()
|
23 |
+
loaded_model = model_from_json(loaded_model_json)
|
24 |
+
|
25 |
+
weights_file = f"{name}.weights.h5"
|
26 |
+
if not Path(weights_file).is_file():
|
27 |
+
raise FileNotFoundError(f"Weight file {weights_file} not found.")
|
28 |
+
|
29 |
+
loaded_model.load_weights(weights_file)
|
30 |
+
print("Loaded model from disk")
|
31 |
+
return loaded_model
|
32 |
+
|
33 |
+
#MAP CREATING
|
34 |
+
# Function to create map
|
35 |
+
def create_map(df, predicted_wind_speed, map_file):
|
36 |
+
# Extract latitude, longitude, and actual wind speed
|
37 |
+
latitude = df['lat'].iloc[0]
|
38 |
+
longitude = df['lon'].iloc[0]
|
39 |
+
actual_wind_speed = df['wind_kph'].iloc[0]
|
40 |
+
|
41 |
+
# Ensure single numeric values for plotting
|
42 |
+
if isinstance(actual_wind_speed, (list, np.ndarray)):
|
43 |
+
actual_wind_speed = actual_wind_speed[0]
|
44 |
+
if isinstance(predicted_wind_speed, (list, np.ndarray)):
|
45 |
+
predicted_wind_speed = predicted_wind_speed[0]
|
46 |
+
|
47 |
+
# Create folium map
|
48 |
+
m = folium.Map(location=[latitude, longitude], zoom_start=10)
|
49 |
+
|
50 |
+
# Create a bar chart comparing actual and predicted wind speeds
|
51 |
+
fig, ax = plt.subplots(figsize=(3, 3))
|
52 |
+
bars = ax.bar(['Actual', 'Predicted'], [actual_wind_speed, predicted_wind_speed], color=['blue', 'green'])
|
53 |
+
ax.set_ylabel('Wind Speed (km/h)')
|
54 |
+
ax.set_title('Wind Speed Comparison')
|
55 |
+
|
56 |
+
# Add labels inside each bar
|
57 |
+
for bar in bars:
|
58 |
+
yval = bar.get_height() # Get the height of each bar (wind speed value)
|
59 |
+
# Position the label inside the bar, slightly adjusted to avoid overlap with the top
|
60 |
+
ax.text(bar.get_x() + bar.get_width() / 2, yval / 2, round(yval, 2), ha='center', va='center', color='white')
|
61 |
+
|
62 |
+
# Adjust layout
|
63 |
+
plt.tight_layout()
|
64 |
+
|
65 |
+
# Save chart to a BytesIO buffer in PNG format and encode to base64
|
66 |
+
buffer = BytesIO()
|
67 |
+
plt.savefig(buffer, format="png")
|
68 |
+
plt.close(fig)
|
69 |
+
buffer.seek(0)
|
70 |
+
image_base64 = base64.b64encode(buffer.read()).decode('utf-8')
|
71 |
+
|
72 |
+
# HTML for the popup with base64 image
|
73 |
+
popup_html = f'<img src="data:image/png;base64,{image_base64}" alt="Wind Speed Comparison">'
|
74 |
+
popup = folium.Popup(html=popup_html, max_width=300)
|
75 |
+
|
76 |
+
# Add a marker to the map with popup containing the chart
|
77 |
+
folium.Marker(
|
78 |
+
location=[latitude, longitude],
|
79 |
+
popup=popup,
|
80 |
+
tooltip=df['location'].iloc[0]
|
81 |
+
).add_to(m)
|
82 |
+
|
83 |
+
# Save the folium map as an HTML file
|
84 |
+
m.save(map_file)
|
85 |
+
|
86 |
+
model = load_model('Wind_Model_New_v1')
|
87 |
+
|
88 |
+
# Route to input form
|
89 |
+
@app.route('/')
|
90 |
+
def index():
|
91 |
+
return render_template('index.html')
|
92 |
+
|
93 |
+
# Prediction route
|
94 |
+
@app.route('/predict', methods=['POST'])
|
95 |
+
def predict():
|
96 |
+
latitude = float(request.form['latitude'])
|
97 |
+
longitude = float(request.form['longitude'])
|
98 |
+
|
99 |
+
api_key = "846ca0bb2fa144cdb7195352240711"
|
100 |
+
base_url = "http://api.weatherapi.com/v1/current.json"
|
101 |
+
params = {"key": api_key, "q": f"{latitude},{longitude}"}
|
102 |
+
response = requests.get(base_url, params=params)
|
103 |
+
|
104 |
+
if response.status_code == 200:
|
105 |
+
current_weather = response.json()
|
106 |
+
extracted_data = {
|
107 |
+
'location': current_weather['location']['name'],
|
108 |
+
'lat': latitude,
|
109 |
+
'lon': longitude,
|
110 |
+
'date': current_weather['location']['localtime'].split()[0],
|
111 |
+
'time': current_weather['location']['localtime'],
|
112 |
+
'temp_c': current_weather['current']['temp_c'],
|
113 |
+
'temp_f': current_weather['current']['temp_f'],
|
114 |
+
'is_day': current_weather['current']['is_day'],
|
115 |
+
'condition': current_weather['current']['condition']['text'],
|
116 |
+
'wind_mph': current_weather['current']['wind_mph'],
|
117 |
+
'wind_kph': current_weather['current']['wind_kph'],
|
118 |
+
'humidity': current_weather['current']['humidity'],
|
119 |
+
'cloud': current_weather['current']['cloud'],
|
120 |
+
'feelslike_c': current_weather['current']['feelslike_c'],
|
121 |
+
'feelslike_f': current_weather['current']['feelslike_f'],
|
122 |
+
'windchill_c': current_weather['current']['windchill_c'],
|
123 |
+
'windchill_f': current_weather['current']['windchill_f'],
|
124 |
+
'heatindex_c': current_weather['current']['heatindex_c'],
|
125 |
+
'heatindex_f': current_weather['current']['heatindex_f'],
|
126 |
+
'dewpoint_c': current_weather['current']['dewpoint_c'],
|
127 |
+
'dewpoint_f': current_weather['current']['dewpoint_f'],
|
128 |
+
'vis_km': current_weather['current']['vis_km'],
|
129 |
+
'vis_miles': current_weather['current']['vis_miles'],
|
130 |
+
'gust_mph': current_weather['current']['gust_mph'],
|
131 |
+
'gust_kph': current_weather['current']['gust_kph'],
|
132 |
+
'uv': current_weather['current']['uv']
|
133 |
+
}
|
134 |
+
df = pd.DataFrame([extracted_data])
|
135 |
+
print("dataframe",df)
|
136 |
+
df['time'] = pd.to_datetime(df['time'])
|
137 |
+
df['day'] = df['time'].dt.day
|
138 |
+
df['month'] = df['time'].dt.month
|
139 |
+
df['hour'] = df['time'].dt.hour
|
140 |
+
|
141 |
+
dx=df[['temp_c', 'temp_f', 'is_day','wind_mph', 'wind_kph', 'humidity', 'cloud', 'feelslike_c',
|
142 |
+
'feelslike_f', 'windchill_c', 'windchill_f', 'heatindex_c','heatindex_f', 'dewpoint_c',
|
143 |
+
'dewpoint_f', 'vis_km', 'vis_miles','gust_mph', 'gust_kph', 'uv', 'day', 'month', 'hour']]
|
144 |
+
x=dx.drop(['wind_mph', 'wind_kph'],axis=1)
|
145 |
+
x_unk = np.array(x)
|
146 |
+
x_unk = x_unk / 100
|
147 |
+
predictions = model.predict(x_unk)
|
148 |
+
predicted_wind_speed = predictions[0][0]
|
149 |
+
print("predictions",predictions)
|
150 |
+
map_file = "static/multiple_wind_speed_map.html"
|
151 |
+
create_map(df, predicted_wind_speed, map_file)
|
152 |
+
|
153 |
+
return render_template('results.html',
|
154 |
+
actual=df['wind_kph'][0],
|
155 |
+
predicted=predicted_wind_speed,
|
156 |
+
map_file='multiple_wind_speed_map.html')
|
157 |
+
else:
|
158 |
+
return "Failed to retrieve weather data."
|
159 |
+
|
160 |
+
# forcast
|
161 |
+
@app.route('/forcast', methods=['POST'])
|
162 |
+
def forcast():
|
163 |
+
latitude = float(request.form['latitude'])
|
164 |
+
longitude = float(request.form['longitude'])
|
165 |
+
|
166 |
+
api_key = "846ca0bb2fa144cdb7195352240711"
|
167 |
+
base_url = "http://api.weatherapi.com/v1/forecast.json"
|
168 |
+
params = {
|
169 |
+
"key": api_key,
|
170 |
+
"q": f"{latitude},{longitude}",
|
171 |
+
"days": 1 # Fetch forecast for 1 day
|
172 |
+
}
|
173 |
+
response = requests.get(base_url, params=params)
|
174 |
+
extracted_data = {}
|
175 |
+
if response.status_code == 200:
|
176 |
+
data = response.json()
|
177 |
+
for location in data:
|
178 |
+
location_name = data['location']['name']
|
179 |
+
forecast_days = data['forecast']['forecastday']
|
180 |
+
# Loop through each day in forecastdays
|
181 |
+
for day in forecast_days:
|
182 |
+
date = day['date']
|
183 |
+
hours = day['hour']
|
184 |
+
# Extract hourly data for each hour
|
185 |
+
for hour_data in hours:
|
186 |
+
# Add extra details (date, location) for each hourly data
|
187 |
+
extracted_data={
|
188 |
+
"location": location_name,
|
189 |
+
"lat": latitude,
|
190 |
+
"lon": longitude,
|
191 |
+
"date": date,
|
192 |
+
"time": hour_data["time"],
|
193 |
+
"temp_c": hour_data["temp_c"],
|
194 |
+
"temp_f": hour_data["temp_f"],
|
195 |
+
"is_day": hour_data["is_day"],
|
196 |
+
"condition": hour_data["condition"]["text"],
|
197 |
+
"wind_mph": hour_data["wind_mph"],
|
198 |
+
"wind_kph": hour_data["wind_kph"],
|
199 |
+
"humidity": hour_data["humidity"],
|
200 |
+
"cloud": hour_data["cloud"],
|
201 |
+
"feelslike_c": hour_data["feelslike_c"],
|
202 |
+
"feelslike_f": hour_data["feelslike_f"],
|
203 |
+
"windchill_c": hour_data["windchill_c"],
|
204 |
+
"windchill_f": hour_data["windchill_f"],
|
205 |
+
"heatindex_c": hour_data["heatindex_c"],
|
206 |
+
"heatindex_f": hour_data["heatindex_f"],
|
207 |
+
"dewpoint_c": hour_data["dewpoint_c"],
|
208 |
+
"dewpoint_f": hour_data["dewpoint_f"],
|
209 |
+
"vis_km": hour_data["vis_km"],
|
210 |
+
"vis_miles": hour_data["vis_miles"],
|
211 |
+
"gust_mph": hour_data["gust_mph"],
|
212 |
+
"gust_kph": hour_data["gust_kph"],
|
213 |
+
"uv": hour_data["uv"]
|
214 |
+
}
|
215 |
+
|
216 |
+
# Convert extracted data into a DataFrame
|
217 |
+
df = pd.DataFrame([extracted_data])
|
218 |
+
print("dataframe", df)
|
219 |
+
# Extracting additional date/time features
|
220 |
+
df['time']=pd.to_datetime(df['time'])
|
221 |
+
df['datetime']=pd.to_datetime(df['time'])
|
222 |
+
df['day'] = df['datetime'].dt.day # Extracts day of the month
|
223 |
+
df['month'] = df['datetime'].dt.month # Extracts month
|
224 |
+
df['hour'] = df['datetime'].dt.hour
|
225 |
+
# Prepare features for prediction
|
226 |
+
dx=df[['temp_c', 'temp_f', 'is_day','wind_mph', 'wind_kph', 'humidity', 'cloud', 'feelslike_c','feelslike_f', 'windchill_c', 'windchill_f', 'heatindex_c','heatindex_f', 'dewpoint_c', 'dewpoint_f', 'vis_km', 'vis_miles','gust_mph', 'gust_kph', 'uv', 'day', 'month', 'hour']]
|
227 |
+
x = dx.drop(['wind_mph', 'wind_kph'], axis=1)
|
228 |
+
x_unk = np.array(x)
|
229 |
+
x_unk = x_unk / 110
|
230 |
+
predictions = model.predict(x_unk)
|
231 |
+
predicted_wind_speed = predictions[0][0]
|
232 |
+
print("predictions",predictions)
|
233 |
+
map_file = "static/multiple_wind_speed_map.html"
|
234 |
+
create_map(df, predicted_wind_speed, map_file)
|
235 |
+
|
236 |
+
return render_template('results.html',
|
237 |
+
actual=df['wind_kph'][0],
|
238 |
+
predicted=predicted_wind_speed,
|
239 |
+
map_file='multiple_wind_speed_map.html')
|
240 |
+
else:
|
241 |
+
return "Failed to retrieve weather data."
|
242 |
+
|
243 |
+
if __name__ == '__main__':
|
244 |
+
app.run(debug=True)
|
app3.py
ADDED
@@ -0,0 +1,248 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
from flask import Flask, render_template, request, redirect, url_for
|
2 |
+
import pandas as pd
|
3 |
+
import numpy as np
|
4 |
+
import joblib
|
5 |
+
import requests
|
6 |
+
from keras.models import model_from_json
|
7 |
+
import folium
|
8 |
+
import matplotlib.pyplot as plt
|
9 |
+
from io import BytesIO
|
10 |
+
import base64
|
11 |
+
import os
|
12 |
+
from collections import defaultdict
|
13 |
+
|
14 |
+
app = Flask(__name__)
|
15 |
+
|
16 |
+
# Load model and scalers
|
17 |
+
def load_model(name):
|
18 |
+
with open(f"{name}.json", "r") as json_file:
|
19 |
+
loaded_model_json = json_file.read()
|
20 |
+
model = model_from_json(loaded_model_json)
|
21 |
+
model.load_weights(f"{name}.weights.h5")
|
22 |
+
return model
|
23 |
+
|
24 |
+
model = load_model("FUTURE_AQI_v1")
|
25 |
+
scaler_X = joblib.load('scaler_X_cpcb_4.pkl')
|
26 |
+
scaler_y = joblib.load('scaler_y_cpcb_4.pkl')
|
27 |
+
|
28 |
+
API_KEY = "26daca1b78f44099a755b921be4bfcf1"
|
29 |
+
|
30 |
+
@app.route('/')
|
31 |
+
def index():
|
32 |
+
return render_template('index.html')
|
33 |
+
|
34 |
+
@app.route('/forecast', methods=['POST'])
|
35 |
+
def forecast():
|
36 |
+
# Get user input
|
37 |
+
latitude = float(request.form['latitude'])
|
38 |
+
longitude = float(request.form['longitude'])
|
39 |
+
|
40 |
+
# Fetch current AQI from API
|
41 |
+
current_url = f"https://api.weatherbit.io/v2.0/current/airquality?lat={latitude}&lon={longitude}&key={API_KEY}"
|
42 |
+
response = requests.get(current_url)
|
43 |
+
if response.status_code == 200:
|
44 |
+
current_data = response.json()['data'][0]
|
45 |
+
|
46 |
+
# Prepare input for the model
|
47 |
+
now = pd.to_datetime("now")
|
48 |
+
input_data = pd.DataFrame([{
|
49 |
+
'PM2.5': current_data['pm25'],
|
50 |
+
'PM10': current_data['pm10'],
|
51 |
+
'NO2': current_data['no2'],
|
52 |
+
'SO2': current_data['so2'],
|
53 |
+
'CO': current_data['co'],
|
54 |
+
'AQI': current_data['aqi'],
|
55 |
+
'Day': now.day,
|
56 |
+
'Month': now.month,
|
57 |
+
'Hour': now.hour
|
58 |
+
}])
|
59 |
+
|
60 |
+
# Scale and predict
|
61 |
+
input_scaled = scaler_X.transform(input_data)
|
62 |
+
predictions = model.predict(input_scaled)
|
63 |
+
predictions_actual = scaler_y.inverse_transform(predictions)
|
64 |
+
|
65 |
+
# Fetch forecasted AQI from API
|
66 |
+
forecast_url = f"https://api.weatherbit.io/v2.0/forecast/airquality?lat={latitude}&lon={longitude}&key={API_KEY}"
|
67 |
+
response = requests.get(forecast_url)
|
68 |
+
forecast_data = response.json()['data']
|
69 |
+
|
70 |
+
grouped_aqi = defaultdict(list)
|
71 |
+
for entry in forecast_data:
|
72 |
+
date = entry['datetime'].split(':')[0]
|
73 |
+
grouped_aqi[date].append(entry['aqi'])
|
74 |
+
|
75 |
+
api_predictions = {date: max(values) for date, values in grouped_aqi.items()}
|
76 |
+
|
77 |
+
# Save results to CSV
|
78 |
+
forecast_df = pd.DataFrame([{
|
79 |
+
**input_data.iloc[0],
|
80 |
+
'lat': latitude,
|
81 |
+
'lon': longitude,
|
82 |
+
'AQI_step_1': predictions_actual[0, 0],
|
83 |
+
'AQI_step_2': predictions_actual[0, 1],
|
84 |
+
'AQI_step_3': predictions_actual[0, 2]
|
85 |
+
}])
|
86 |
+
forecast_df.to_csv('aqi_data.csv', mode='a', header=False, index=False)
|
87 |
+
|
88 |
+
api_df = pd.DataFrame([{
|
89 |
+
'AQI_currrent_API': current_data['aqi'],
|
90 |
+
'AQI_step_1_API': api_predictions.get(list(api_predictions.keys())[0], None),
|
91 |
+
'AQI_step_2_API': api_predictions.get(list(api_predictions.keys())[1], None),
|
92 |
+
'AQI_step_3_API': api_predictions.get(list(api_predictions.keys())[2], None)
|
93 |
+
}])
|
94 |
+
api_df.to_csv('aqi_data_actual_api.csv', mode='a', header=False, index=False)
|
95 |
+
|
96 |
+
# Generate updated map and return
|
97 |
+
generate_map()
|
98 |
+
return redirect(url_for('result'))
|
99 |
+
|
100 |
+
@app.route('/result')
|
101 |
+
def result():
|
102 |
+
return render_template('result.html')
|
103 |
+
|
104 |
+
def generate_map():
|
105 |
+
# Load data
|
106 |
+
df1 = pd.read_csv('aqi_data.csv')
|
107 |
+
df2 = pd.read_csv('aqi_data_actual_api.csv')
|
108 |
+
data = pd.concat([df1, df2], axis=1)
|
109 |
+
|
110 |
+
# Create Folium map
|
111 |
+
# Create the Folium map
|
112 |
+
map_center = [data['lat'].mean(), data['lon'].mean()]
|
113 |
+
m = folium.Map(location=map_center, zoom_start=10)
|
114 |
+
|
115 |
+
# AQI Color Legend
|
116 |
+
legend_html = """
|
117 |
+
<div style="
|
118 |
+
position: fixed;
|
119 |
+
bottom: 20px; left: 20px; width: 350px; height: 225px;
|
120 |
+
background-color: white;
|
121 |
+
z-index:9999; font-size:14px; border:2px solid grey;
|
122 |
+
padding: 10px; overflow-y: auto;">
|
123 |
+
<b>AQI Color Legend</b>
|
124 |
+
<table style="width: 100%; border-collapse: collapse; text-align: left;">
|
125 |
+
<thead>
|
126 |
+
<tr style="border-bottom: 2px solid grey;">
|
127 |
+
<th style="padding: 5px;">Color</th>
|
128 |
+
<th style="padding: 5px;">Remark</th>
|
129 |
+
<th style="padding: 5px;">Range</th>
|
130 |
+
</tr>
|
131 |
+
</thead>
|
132 |
+
<tbody>
|
133 |
+
<tr>
|
134 |
+
<td><i style="background:green; width:15px; height:15px; display:inline-block; border:1px solid black;"></i></td>
|
135 |
+
<td>Good</td>
|
136 |
+
<td>0-50</td>
|
137 |
+
</tr>
|
138 |
+
<tr>
|
139 |
+
<td><i style="background:yellow; width:15px; height:15px; display:inline-block; border:1px solid black;"></i></td>
|
140 |
+
<td>Moderate</td>
|
141 |
+
<td>51-100</td>
|
142 |
+
</tr>
|
143 |
+
<tr>
|
144 |
+
<td><i style="background:orange; width:15px; height:15px; display:inline-block; border:1px solid black;"></i></td>
|
145 |
+
<td>Unhealthy for Sensitive Groups</td>
|
146 |
+
<td>101-150</td>
|
147 |
+
</tr>
|
148 |
+
<tr>
|
149 |
+
<td><i style="background:red; width:15px; height:15px; display:inline-block; border:1px solid black;"></i></td>
|
150 |
+
<td>Unhealthy</td>
|
151 |
+
<td>151-200</td>
|
152 |
+
</tr>
|
153 |
+
<tr>
|
154 |
+
<td><i style="background:purple; width:15px; height:15px; display:inline-block; border:1px solid black;"></i></td>
|
155 |
+
<td>Very Unhealthy</td>
|
156 |
+
<td>201-300</td>
|
157 |
+
</tr>
|
158 |
+
<tr>
|
159 |
+
<td><i style="background:maroon; width:15px; height:15px; display:inline-block; border:1px solid black;"></i></td>
|
160 |
+
<td>Hazardous</td>
|
161 |
+
<td>301+</td>
|
162 |
+
</tr>
|
163 |
+
</tbody>
|
164 |
+
</table>
|
165 |
+
</div>
|
166 |
+
"""
|
167 |
+
m.get_root().html.add_child(folium.Element(legend_html))
|
168 |
+
|
169 |
+
for _, row in data.iterrows():
|
170 |
+
popup_html = create_plot(row)
|
171 |
+
color = get_color_for_aqi(row['AQI_step_1'])
|
172 |
+
folium.Marker(
|
173 |
+
location=[row["lat"], row["lon"]],
|
174 |
+
popup=folium.Popup(html=popup_html, max_width=500),
|
175 |
+
icon=folium.Icon(color=color)
|
176 |
+
).add_to(m)
|
177 |
+
|
178 |
+
# Save the map
|
179 |
+
m.save('static/aqi_forecast_with_legend.html')
|
180 |
+
|
181 |
+
def create_plot(data):
|
182 |
+
# Bar plot generation logic (same as before)
|
183 |
+
fig, ax = plt.subplots(figsize=(5, 2))
|
184 |
+
categories = ['DAY 1', 'DAY 2', 'DAY 3']
|
185 |
+
actual_values = [data['AQI_step_1'], data['AQI_step_2'], data['AQI_step_3']]
|
186 |
+
api_values = [data['AQI_step_1_API'], data['AQI_step_2_API'], data['AQI_step_3_API']]
|
187 |
+
|
188 |
+
bar_width = 0.35
|
189 |
+
index = range(len(categories))
|
190 |
+
|
191 |
+
# Plot horizontal bars
|
192 |
+
bars_actual = ax.barh(index, actual_values, bar_width, label="Model AQI", color='blue')
|
193 |
+
bars_api = ax.barh([i + bar_width for i in index], api_values, bar_width, label="API AQI", color='green')
|
194 |
+
|
195 |
+
# Add values to each bar
|
196 |
+
max_value = 0 # Track the maximum value for axis limit adjustment
|
197 |
+
for bar in bars_actual:
|
198 |
+
value = bar.get_width()
|
199 |
+
ax.text(value + 2, bar.get_y() + bar.get_height() / 2,
|
200 |
+
f'{value:.1f}', va='center', fontsize=10)
|
201 |
+
max_value = max(max_value, value)
|
202 |
+
for bar in bars_api:
|
203 |
+
value = bar.get_width()
|
204 |
+
ax.text(value + 2, bar.get_y() + bar.get_height() / 2,
|
205 |
+
f'{value:.1f}', va='center', fontsize=10)
|
206 |
+
max_value = max(max_value, value)
|
207 |
+
|
208 |
+
# Adjust x-axis limits to accommodate annotations
|
209 |
+
ax.set_xlim(0, max_value * 1.2)
|
210 |
+
|
211 |
+
# Customize y-ticks and labels
|
212 |
+
ax.set_yticks([i + bar_width / 2 for i in index])
|
213 |
+
ax.set_yticklabels(categories)
|
214 |
+
ax.set_xlabel('AQI')
|
215 |
+
ax.set_title('AQI Comparison')
|
216 |
+
|
217 |
+
# Place legend outside the plot area
|
218 |
+
ax.legend(loc='center left', bbox_to_anchor=(1, 0.5), frameon=False)
|
219 |
+
|
220 |
+
plt.tight_layout()
|
221 |
+
|
222 |
+
# Save the plot to a PNG image in memory
|
223 |
+
buffer = BytesIO()
|
224 |
+
plt.savefig(buffer, format="png", bbox_inches='tight')
|
225 |
+
plt.close(fig)
|
226 |
+
buffer.seek(0)
|
227 |
+
|
228 |
+
# Encode the image to base64 to embed it in the HTML
|
229 |
+
image_base64 = base64.b64encode(buffer.read()).decode()
|
230 |
+
return f'<img src="data:image/png;base64,{image_base64}">'
|
231 |
+
|
232 |
+
def get_color_for_aqi(aqi_value):
|
233 |
+
# Color logic (same as before)
|
234 |
+
if aqi_value <= 50:
|
235 |
+
return 'green'
|
236 |
+
elif aqi_value <= 100:
|
237 |
+
return 'yellow'
|
238 |
+
elif aqi_value <= 150:
|
239 |
+
return 'orange'
|
240 |
+
elif aqi_value <= 200:
|
241 |
+
return 'red'
|
242 |
+
elif aqi_value <= 300:
|
243 |
+
return 'purple'
|
244 |
+
else:
|
245 |
+
return 'maroon'
|
246 |
+
|
247 |
+
if __name__ == '__main__':
|
248 |
+
app.run(debug=True)
|
app_map.py
ADDED
@@ -0,0 +1,246 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
from flask import Flask, render_template, request, redirect, url_for
|
2 |
+
import pandas as pd
|
3 |
+
import numpy as np
|
4 |
+
import joblib
|
5 |
+
import requests
|
6 |
+
from keras.models import model_from_json
|
7 |
+
import folium
|
8 |
+
from collections import defaultdict
|
9 |
+
import matplotlib
|
10 |
+
matplotlib.use('Agg') # Use non-GUI backend
|
11 |
+
import matplotlib.pyplot as plt
|
12 |
+
from io import BytesIO
|
13 |
+
import base64
|
14 |
+
import branca
|
15 |
+
|
16 |
+
app = Flask(__name__)
|
17 |
+
|
18 |
+
# Load model and scalers
|
19 |
+
def load_model(name):
|
20 |
+
with open(f"{name}.json", "r") as json_file:
|
21 |
+
loaded_model_json = json_file.read()
|
22 |
+
model = model_from_json(loaded_model_json)
|
23 |
+
model.load_weights(f"{name}.weights.h5")
|
24 |
+
return model
|
25 |
+
|
26 |
+
model = load_model("FUTURE_AQI_v1")
|
27 |
+
scaler_X = joblib.load('scaler_X_cpcb_4.pkl')
|
28 |
+
scaler_y = joblib.load('scaler_y_cpcb_4.pkl')
|
29 |
+
|
30 |
+
API_KEY = "26daca1b78f44099a755b921be4bfcf1"
|
31 |
+
|
32 |
+
# Route to display the form and the map
|
33 |
+
@app.route('/', methods=['GET', 'POST'])
|
34 |
+
def index():
|
35 |
+
map_html = generate_map()
|
36 |
+
if request.method == 'POST':
|
37 |
+
# Get user input from form
|
38 |
+
latitude = float(request.form['latitude'])
|
39 |
+
longitude = float(request.form['longitude'])
|
40 |
+
|
41 |
+
# Fetch current AQI from API
|
42 |
+
current_url = f"https://api.weatherbit.io/v2.0/current/airquality?lat={latitude}&lon={longitude}&key={API_KEY}"
|
43 |
+
response = requests.get(current_url)
|
44 |
+
if response.status_code == 200:
|
45 |
+
current_data = response.json()['data'][0]
|
46 |
+
|
47 |
+
# Prepare input for the model
|
48 |
+
now = pd.to_datetime("now")
|
49 |
+
input_data = pd.DataFrame([{
|
50 |
+
'PM2.5': current_data['pm25'],
|
51 |
+
'PM10': current_data['pm10'],
|
52 |
+
'NO2': current_data['no2'],
|
53 |
+
'SO2': current_data['so2'],
|
54 |
+
'CO': current_data['co'],
|
55 |
+
'AQI': current_data['aqi'],
|
56 |
+
'Day': now.day,
|
57 |
+
'Month': now.month,
|
58 |
+
'Hour': now.hour
|
59 |
+
}])
|
60 |
+
|
61 |
+
# Scale and predict
|
62 |
+
input_scaled = scaler_X.transform(input_data)
|
63 |
+
predictions = model.predict(input_scaled)
|
64 |
+
predictions_actual = scaler_y.inverse_transform(predictions)
|
65 |
+
|
66 |
+
# Save results to CSV
|
67 |
+
forecast_df = pd.DataFrame([{
|
68 |
+
**input_data.iloc[0],
|
69 |
+
'lat': latitude,
|
70 |
+
'lon': longitude,
|
71 |
+
'AQI_step_1': predictions_actual[0, 0],
|
72 |
+
'AQI_step_2': predictions_actual[0, 1],
|
73 |
+
'AQI_step_3': predictions_actual[0, 2]
|
74 |
+
}])
|
75 |
+
forecast_df.to_csv('aqi_data.csv', mode='a', header=False, index=False)
|
76 |
+
|
77 |
+
# Generate the updated map
|
78 |
+
map_html = generate_map()
|
79 |
+
|
80 |
+
return render_template('aqi_forecast_with_legend.html', map_html=map_html)
|
81 |
+
|
82 |
+
# Route to handle the forecast data submission and AQI prediction
|
83 |
+
@app.route('/forecast', methods=['POST'])
|
84 |
+
def forecast():
|
85 |
+
# Get user input from form
|
86 |
+
latitude = float(request.form['latitude'])
|
87 |
+
longitude = float(request.form['longitude'])
|
88 |
+
|
89 |
+
# Fetch current AQI from API
|
90 |
+
current_url = f"https://api.weatherbit.io/v2.0/current/airquality?lat={latitude}&lon={longitude}&key={API_KEY}"
|
91 |
+
response = requests.get(current_url)
|
92 |
+
if response.status_code == 200:
|
93 |
+
current_data = response.json()['data'][0]
|
94 |
+
|
95 |
+
# Prepare input for the model
|
96 |
+
now = pd.to_datetime("now")
|
97 |
+
input_data = pd.DataFrame([{
|
98 |
+
'PM2.5': current_data['pm25'],
|
99 |
+
'PM10': current_data['pm10'],
|
100 |
+
'NO2': current_data['no2'],
|
101 |
+
'SO2': current_data['so2'],
|
102 |
+
'CO': current_data['co'],
|
103 |
+
'AQI': current_data['aqi'],
|
104 |
+
'Day': now.day,
|
105 |
+
'Month': now.month,
|
106 |
+
'Hour': now.hour
|
107 |
+
}])
|
108 |
+
|
109 |
+
# Scale and predict
|
110 |
+
input_scaled = scaler_X.transform(input_data)
|
111 |
+
predictions = model.predict(input_scaled)
|
112 |
+
predictions_actual = scaler_y.inverse_transform(predictions)
|
113 |
+
|
114 |
+
# Fetch forecasted AQI from API
|
115 |
+
forecast_url = f"https://api.weatherbit.io/v2.0/forecast/airquality?lat={latitude}&lon={longitude}&key={API_KEY}"
|
116 |
+
response = requests.get(forecast_url)
|
117 |
+
forecast_data = response.json()['data']
|
118 |
+
|
119 |
+
# Group AQI data by date
|
120 |
+
grouped_aqi = defaultdict(list)
|
121 |
+
for entry in forecast_data:
|
122 |
+
date = entry['datetime'].split(':')[0]
|
123 |
+
grouped_aqi[date].append(entry['aqi'])
|
124 |
+
|
125 |
+
# Get the maximum AQI forecasted for the next days
|
126 |
+
api_predictions = {date: max(values) for date, values in grouped_aqi.items()}
|
127 |
+
|
128 |
+
# Save the forecasted AQI results to CSV
|
129 |
+
api_df = pd.DataFrame([{
|
130 |
+
'AQI_currrent_API': current_data['aqi'],
|
131 |
+
'AQI_step_1_API': api_predictions.get(list(api_predictions.keys())[0], None),
|
132 |
+
'AQI_step_2_API': api_predictions.get(list(api_predictions.keys())[1], None),
|
133 |
+
'AQI_step_3_API': api_predictions.get(list(api_predictions.keys())[2], None)
|
134 |
+
}])
|
135 |
+
api_df.to_csv('aqi_data_actual_api.csv', mode='a', header=False, index=False)
|
136 |
+
|
137 |
+
# Save the predicted results to CSV
|
138 |
+
forecast_df = pd.DataFrame([{
|
139 |
+
**input_data.iloc[0],
|
140 |
+
'lat': latitude,
|
141 |
+
'lon': longitude,
|
142 |
+
'AQI_step_1': predictions_actual[0, 0],
|
143 |
+
'AQI_step_2': predictions_actual[0, 1],
|
144 |
+
'AQI_step_3': predictions_actual[0, 2]
|
145 |
+
}])
|
146 |
+
forecast_df.to_csv('aqi_data.csv', mode='a', header=False, index=False)
|
147 |
+
|
148 |
+
# Generate the updated map
|
149 |
+
map_html = generate_map()
|
150 |
+
|
151 |
+
return render_template('aqi_forecast_with_legend.html', map_html=map_html)
|
152 |
+
|
153 |
+
def generate_map(output_file='templates/aqi_forecast_with_legend.html'):
|
154 |
+
# Load data
|
155 |
+
df1 = pd.read_csv('aqi_data.csv', on_bad_lines='skip')
|
156 |
+
df2 = pd.read_csv('aqi_data_actual_api.csv', on_bad_lines='skip')
|
157 |
+
data = pd.concat([df1, df2], axis=1)
|
158 |
+
|
159 |
+
# Create Folium map
|
160 |
+
map_center = [data['lat'].mean(), data['lon'].mean()]
|
161 |
+
m = folium.Map(location=map_center, zoom_start=10)
|
162 |
+
|
163 |
+
# Add AQI data points
|
164 |
+
for _, row in data.iterrows():
|
165 |
+
popup_html = create_plot(row)
|
166 |
+
color = get_color_for_aqi(row['AQI_step_1'])
|
167 |
+
if color: # Ensure a valid color is returned
|
168 |
+
folium.Marker(
|
169 |
+
location=[row["lat"], row["lon"]],
|
170 |
+
popup=folium.Popup(html=popup_html, max_width=500),
|
171 |
+
icon=folium.Icon(color=color)
|
172 |
+
).add_to(m)
|
173 |
+
|
174 |
+
# Return map as an HTML string
|
175 |
+
map_html = m._repr_html_()
|
176 |
+
|
177 |
+
# Save the map
|
178 |
+
#m.save(output_file)
|
179 |
+
return map_html
|
180 |
+
|
181 |
+
def get_color_for_aqi(aqi_value):
|
182 |
+
if aqi_value <= 50:
|
183 |
+
return 'green'
|
184 |
+
elif aqi_value <= 100:
|
185 |
+
return 'lightgreen'
|
186 |
+
elif aqi_value <= 150:
|
187 |
+
return 'orange'
|
188 |
+
elif aqi_value <= 200:
|
189 |
+
return 'red'
|
190 |
+
elif aqi_value <= 300:
|
191 |
+
return 'purple'
|
192 |
+
else:
|
193 |
+
return 'gray' # Supported Folium color
|
194 |
+
|
195 |
+
def create_plot(data):
|
196 |
+
fig, ax = plt.subplots(figsize=(5, 2))
|
197 |
+
categories = ['DAY 1', 'DAY 2', 'DAY 3']
|
198 |
+
actual_values = [data['AQI_step_1'], data['AQI_step_2'], data['AQI_step_3']]
|
199 |
+
api_values = [data['AQI_step_1_API'], data['AQI_step_2_API'], data['AQI_step_3_API']]
|
200 |
+
|
201 |
+
bar_width = 0.35
|
202 |
+
index = range(len(categories))
|
203 |
+
|
204 |
+
# Plot horizontal bars
|
205 |
+
bars_actual = ax.barh(index, actual_values, bar_width, label="Model AQI", color='blue')
|
206 |
+
bars_api = ax.barh([i + bar_width for i in index], api_values, bar_width, label="API AQI", color='green')
|
207 |
+
|
208 |
+
# Add values to each bar
|
209 |
+
max_value = 0 # Track the maximum value for axis limit adjustment
|
210 |
+
for bar in bars_actual:
|
211 |
+
value = bar.get_width()
|
212 |
+
ax.text(value + 2, bar.get_y() + bar.get_height() / 2,
|
213 |
+
f'{value:.1f}', va='center', fontsize=10)
|
214 |
+
max_value = max(max_value, value)
|
215 |
+
for bar in bars_api:
|
216 |
+
value = bar.get_width()
|
217 |
+
ax.text(value + 2, bar.get_y() + bar.get_height() / 2,
|
218 |
+
f'{value:.1f}', va='center', fontsize=10)
|
219 |
+
max_value = max(max_value, value)
|
220 |
+
|
221 |
+
# Adjust x-axis limits to accommodate annotations
|
222 |
+
ax.set_xlim(0, max_value * 1.2)
|
223 |
+
|
224 |
+
# Customize y-ticks and labels
|
225 |
+
ax.set_yticks([i + bar_width / 2 for i in index])
|
226 |
+
ax.set_yticklabels(categories)
|
227 |
+
ax.set_xlabel('AQI')
|
228 |
+
ax.set_title('AQI Comparison')
|
229 |
+
|
230 |
+
# Place legend outside the plot area
|
231 |
+
ax.legend(loc='center left', bbox_to_anchor=(1, 0.5), frameon=False)
|
232 |
+
|
233 |
+
plt.tight_layout()
|
234 |
+
|
235 |
+
# Save the plot to a PNG image in memory
|
236 |
+
buffer = BytesIO()
|
237 |
+
plt.savefig(buffer, format="png", bbox_inches='tight')
|
238 |
+
plt.close(fig)
|
239 |
+
buffer.seek(0)
|
240 |
+
|
241 |
+
# Encode the image to base64 to embed it in the HTML
|
242 |
+
image_base64 = base64.b64encode(buffer.read()).decode()
|
243 |
+
return f'<img src="data:image/png;base64,{image_base64}">'
|
244 |
+
|
245 |
+
if __name__ == '__main__':
|
246 |
+
app.run(debug=True)
|
app_test.py
ADDED
@@ -0,0 +1,340 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import tensorflow as tf
|
2 |
+
import numpy as np
|
3 |
+
import pandas as pd
|
4 |
+
import matplotlib.pyplot as plt
|
5 |
+
from pathlib import Path
|
6 |
+
from keras.models import model_from_json
|
7 |
+
import tensorflow as tf
|
8 |
+
import matplotlib.pyplot as plt
|
9 |
+
import joblib
|
10 |
+
import requests
|
11 |
+
import json
|
12 |
+
from datetime import datetime
|
13 |
+
|
14 |
+
def load_model(name):
|
15 |
+
# Load JSON and create model
|
16 |
+
json_file = open("%s.json" % name, "r")
|
17 |
+
loaded_model_json = json_file.read()
|
18 |
+
json_file.close()
|
19 |
+
loaded_model = model_from_json(loaded_model_json)
|
20 |
+
|
21 |
+
# Check if the weights file exists before loading
|
22 |
+
weights_file = f"{name}.weights.h5"
|
23 |
+
if not Path(weights_file).is_file():
|
24 |
+
raise FileNotFoundError(f"Weight file {weights_file} not found.")
|
25 |
+
|
26 |
+
# Load weights into the new model
|
27 |
+
loaded_model.load_weights(weights_file)
|
28 |
+
print("Loaded model from disk")
|
29 |
+
return loaded_model
|
30 |
+
|
31 |
+
model = load_model("3_day_forecast_AQI_v5")
|
32 |
+
|
33 |
+
####################################
|
34 |
+
|
35 |
+
# Load the scalers
|
36 |
+
scaler_X = joblib.load('scaler_X_AQI.pkl')
|
37 |
+
scaler_y = joblib.load('scaler_y_AQI.pkl')
|
38 |
+
|
39 |
+
import requests
|
40 |
+
import pandas as pd
|
41 |
+
import joblib
|
42 |
+
import os
|
43 |
+
from datetime import datetime
|
44 |
+
# delhi 28.639638713652012, 77.19002000205269
|
45 |
+
# bhopal 23.23731292701139, 77.44433463788636
|
46 |
+
# ahemdabad 23.0364012974141, 72.58238347964425
|
47 |
+
# ankleshwar 21.62880896774956, 73.0043990197163
|
48 |
+
# jamnagar 22.3033564155508, 70.8012921707898
|
49 |
+
# 21.22050672027795 72.83355967457062#
|
50 |
+
# 21.236796371788703, 72.8665479925569
|
51 |
+
|
52 |
+
# Define API parameters
|
53 |
+
api_key = "26daca1b78f44099a755b921be4bfcf1" # Your WeatherAPI key
|
54 |
+
latitude = 21.236796371788703 # Example latitude
|
55 |
+
longitude = 72.8665479925569 # # Example longitude
|
56 |
+
base_url = f"https://api.weatherbit.io/v2.0/current/airquality?lat={latitude}&lon={longitude}&key={api_key}"
|
57 |
+
|
58 |
+
# Make the API request
|
59 |
+
response = requests.get(base_url)
|
60 |
+
if response.status_code == 200:
|
61 |
+
data = response.json()
|
62 |
+
|
63 |
+
# Extract forecast data
|
64 |
+
dx = [data['data'][0]]
|
65 |
+
test = pd.DataFrame(dx)
|
66 |
+
|
67 |
+
# Add time-based features
|
68 |
+
now = datetime.now()
|
69 |
+
current_time = now.strftime("%Y-%m-%d %H:%M:%S")
|
70 |
+
test = test[['pm25', 'pm10', 'no2', 'so2', 'co', 'aqi']]
|
71 |
+
test['Date'] = pd.to_datetime(current_time)
|
72 |
+
test['Day'] = test['Date'].dt.day
|
73 |
+
test['Month'] = test['Date'].dt.month
|
74 |
+
test['Hour'] = test['Date'].dt.hour
|
75 |
+
test = test[['pm25', 'pm10', 'no2', 'so2', 'co', 'aqi', 'Day', 'Month', 'Hour']]
|
76 |
+
test.columns = ['PM2.5', 'PM10', 'NO2', 'SO2', 'CO', 'AQI', 'Day', 'Month', 'Hour']
|
77 |
+
|
78 |
+
# Load scalers
|
79 |
+
scaler_X = joblib.load('scaler_X_AQI.pkl')
|
80 |
+
scaler_y = joblib.load('scaler_y_AQI.pkl')
|
81 |
+
|
82 |
+
# Standardize data and make predictions
|
83 |
+
data_normalized = scaler_X.transform(test)
|
84 |
+
prediction_Test = model.predict(data_normalized)
|
85 |
+
predictions_actual = scaler_y.inverse_transform(prediction_Test)
|
86 |
+
test['lat']= latitude
|
87 |
+
test['lon']= longitude
|
88 |
+
# Create a DataFrame for predictions
|
89 |
+
pred = pd.DataFrame(predictions_actual, columns=['AQI_step_1', 'AQI_step_2', 'AQI_step_3'])
|
90 |
+
df = pd.concat([test, pred], axis=1)
|
91 |
+
|
92 |
+
# Define the CSV file path
|
93 |
+
csv_file_path = "aqi_data.csv"
|
94 |
+
|
95 |
+
# Create the CSV file with headers if it doesn't exist
|
96 |
+
if not os.path.exists(csv_file_path):
|
97 |
+
columns = ['PM2.5', 'PM10', 'NO2', 'SO2', 'CO', 'AQI', 'Day', 'Month', 'Hour', 'lat', 'lon', 'AQI_step_1', 'AQI_step_2', 'AQI_step_3']
|
98 |
+
df_empty = pd.DataFrame(columns=columns)
|
99 |
+
df_empty.to_csv(csv_file_path, index=False)
|
100 |
+
|
101 |
+
# Append new data to the existing CSV
|
102 |
+
df.to_csv(csv_file_path, mode='a', index=False, header=False)
|
103 |
+
|
104 |
+
print(f"Data appended to {csv_file_path}")
|
105 |
+
|
106 |
+
|
107 |
+
####################################
|
108 |
+
|
109 |
+
|
110 |
+
import requests
|
111 |
+
import json
|
112 |
+
from datetime import datetime
|
113 |
+
|
114 |
+
# Define API parameters
|
115 |
+
api_key = "26daca1b78f44099a755b921be4bfcf1" # Your WeatherAPI key
|
116 |
+
# 21.195069775800516,72.79324648126439
|
117 |
+
# 21.22050672027795, 72.83355967457062
|
118 |
+
# 28.639638713652012,77.19002000205269
|
119 |
+
# 23.23731292701139,77.44433463788636,
|
120 |
+
# 23.0364012974141,72.58238347964425,
|
121 |
+
# 21.62880896774956,73.0043990197163,
|
122 |
+
# jamnagar 22.3033564155508, 70.8012921707898
|
123 |
+
# new delhi 28.619913380208967, 77.20633325621425
|
124 |
+
|
125 |
+
latitude = 21.236796371788703 # Example latitude
|
126 |
+
longitude = 72.8665479925569 # # Example longitude
|
127 |
+
|
128 |
+
base_url = f"https://api.weatherbit.io/v2.0/forecast/airquality?lat={latitude}&lon={longitude}&key={api_key}"
|
129 |
+
|
130 |
+
# Make the API request
|
131 |
+
response = requests.get(base_url)
|
132 |
+
|
133 |
+
if response.status_code == 200:
|
134 |
+
# Parse the returned JSON data
|
135 |
+
data = response.json()
|
136 |
+
|
137 |
+
data
|
138 |
+
|
139 |
+
data=data['data']
|
140 |
+
|
141 |
+
from collections import defaultdict
|
142 |
+
|
143 |
+
# Group AQI values by date (ignoring the hour)
|
144 |
+
grouped_aqi = defaultdict(list)
|
145 |
+
|
146 |
+
for entry in data:
|
147 |
+
# Extract date part only from the datetime (before the colon)
|
148 |
+
date = entry['datetime'].split(':')[0]
|
149 |
+
aqi = entry['aqi']
|
150 |
+
grouped_aqi[date].append(aqi)
|
151 |
+
|
152 |
+
# Convert defaultdict to a regular dictionary
|
153 |
+
grouped_aqi = dict(grouped_aqi)
|
154 |
+
|
155 |
+
# Display the result
|
156 |
+
print(grouped_aqi)
|
157 |
+
index=11
|
158 |
+
key= grouped_aqi.keys()
|
159 |
+
samp={}
|
160 |
+
samp.clear()
|
161 |
+
for i in key:
|
162 |
+
print(i)
|
163 |
+
ls=grouped_aqi[i]
|
164 |
+
if index<len(ls):
|
165 |
+
print(ls[11])
|
166 |
+
samp[i]=ls[11]
|
167 |
+
else:
|
168 |
+
print(ls[-1])
|
169 |
+
samp[i]=ls[-1]
|
170 |
+
print(samp)
|
171 |
+
df = pd.DataFrame([samp])
|
172 |
+
df.columns=['AQI_currrent','AQI_step_1', 'AQI_step_2', 'AQI_step_3']
|
173 |
+
print(df)
|
174 |
+
# Define the CSV file path
|
175 |
+
csv_file_path = "aqi_data_actual_api.csv"
|
176 |
+
|
177 |
+
# Create the CSV file with headers if it doesn't exist
|
178 |
+
if not os.path.exists(csv_file_path):
|
179 |
+
columns = ['AQI_currrent_API','AQI_step_1_API', 'AQI_step_2_API', 'AQI_step_3_API']
|
180 |
+
df_empty = pd.DataFrame(columns=columns)
|
181 |
+
df_empty.to_csv(csv_file_path, index=False)
|
182 |
+
|
183 |
+
# Append new data to the existing CSV
|
184 |
+
df.to_csv(csv_file_path, mode='a', index=False, header=False)
|
185 |
+
|
186 |
+
|
187 |
+
##########################################################
|
188 |
+
|
189 |
+
|
190 |
+
import folium
|
191 |
+
import matplotlib.pyplot as plt
|
192 |
+
from io import BytesIO
|
193 |
+
import base64
|
194 |
+
import pandas as pd
|
195 |
+
|
196 |
+
|
197 |
+
df1= pd.read_csv('aqi_data.csv')
|
198 |
+
df2= pd.read_csv('aqi_data_actual_api.csv')
|
199 |
+
data = pd.concat([df1,df2],axis=1)
|
200 |
+
data = data.head(3)
|
201 |
+
# Create the Folium map
|
202 |
+
map_center = [data['lat'].mean(), data['lon'].mean()]
|
203 |
+
m = folium.Map(location=map_center, zoom_start=10)
|
204 |
+
|
205 |
+
# AQI Color Legend
|
206 |
+
legend_html = """
|
207 |
+
<div style="
|
208 |
+
position: fixed;
|
209 |
+
bottom: 20px; left: 20px; width: 350px; height: 225px;
|
210 |
+
background-color: white;
|
211 |
+
z-index:9999; font-size:14px; border:2px solid grey;
|
212 |
+
padding: 10px; overflow-y: auto;">
|
213 |
+
<b>AQI Color Legend</b>
|
214 |
+
<table style="width: 100%; border-collapse: collapse; text-align: left;">
|
215 |
+
<thead>
|
216 |
+
<tr style="border-bottom: 2px solid grey;">
|
217 |
+
<th style="padding: 5px;">Color</th>
|
218 |
+
<th style="padding: 5px;">Remark</th>
|
219 |
+
<th style="padding: 5px;">Range</th>
|
220 |
+
</tr>
|
221 |
+
</thead>
|
222 |
+
<tbody>
|
223 |
+
<tr>
|
224 |
+
<td><i style="background:green; width:15px; height:15px; display:inline-block; border:1px solid black;"></i></td>
|
225 |
+
<td>Good</td>
|
226 |
+
<td>0-50</td>
|
227 |
+
</tr>
|
228 |
+
<tr>
|
229 |
+
<td><i style="background:yellow; width:15px; height:15px; display:inline-block; border:1px solid black;"></i></td>
|
230 |
+
<td>Moderate</td>
|
231 |
+
<td>51-100</td>
|
232 |
+
</tr>
|
233 |
+
<tr>
|
234 |
+
<td><i style="background:orange; width:15px; height:15px; display:inline-block; border:1px solid black;"></i></td>
|
235 |
+
<td>Unhealthy for Sensitive Groups</td>
|
236 |
+
<td>101-150</td>
|
237 |
+
</tr>
|
238 |
+
<tr>
|
239 |
+
<td><i style="background:red; width:15px; height:15px; display:inline-block; border:1px solid black;"></i></td>
|
240 |
+
<td>Unhealthy</td>
|
241 |
+
<td>151-200</td>
|
242 |
+
</tr>
|
243 |
+
<tr>
|
244 |
+
<td><i style="background:purple; width:15px; height:15px; display:inline-block; border:1px solid black;"></i></td>
|
245 |
+
<td>Very Unhealthy</td>
|
246 |
+
<td>201-300</td>
|
247 |
+
</tr>
|
248 |
+
<tr>
|
249 |
+
<td><i style="background:maroon; width:15px; height:15px; display:inline-block; border:1px solid black;"></i></td>
|
250 |
+
<td>Hazardous</td>
|
251 |
+
<td>301+</td>
|
252 |
+
</tr>
|
253 |
+
</tbody>
|
254 |
+
</table>
|
255 |
+
</div>
|
256 |
+
"""
|
257 |
+
# Add the legend to the map
|
258 |
+
legend = folium.Element(legend_html)
|
259 |
+
m.get_root().html.add_child(legend)
|
260 |
+
|
261 |
+
# Function to generate a horizontal bar plot
|
262 |
+
def create_aqi_comparison_plot(data):
|
263 |
+
fig, ax = plt.subplots(figsize=(5, 2))
|
264 |
+
categories = ['DAY 1', 'DAY 2', 'DAY 3']
|
265 |
+
actual_values = [data['AQI_step_1'], data['AQI_step_2'], data['AQI_step_3']]
|
266 |
+
api_values = [data['AQI_step_1_API'], data['AQI_step_2_API'], data['AQI_step_3_API']]
|
267 |
+
|
268 |
+
bar_width = 0.35
|
269 |
+
index = range(len(categories))
|
270 |
+
|
271 |
+
# Plot horizontal bars
|
272 |
+
bars_actual = ax.barh(index, actual_values, bar_width, label="Model AQI", color='blue')
|
273 |
+
bars_api = ax.barh([i + bar_width for i in index], api_values, bar_width, label="API AQI", color='green')
|
274 |
+
|
275 |
+
# Add values to each bar
|
276 |
+
max_value = 0 # Track the maximum value for axis limit adjustment
|
277 |
+
for bar in bars_actual:
|
278 |
+
value = bar.get_width()
|
279 |
+
ax.text(value + 2, bar.get_y() + bar.get_height() / 2,
|
280 |
+
f'{value:.1f}', va='center', fontsize=10)
|
281 |
+
max_value = max(max_value, value)
|
282 |
+
for bar in bars_api:
|
283 |
+
value = bar.get_width()
|
284 |
+
ax.text(value + 2, bar.get_y() + bar.get_height() / 2,
|
285 |
+
f'{value:.1f}', va='center', fontsize=10)
|
286 |
+
max_value = max(max_value, value)
|
287 |
+
|
288 |
+
# Adjust x-axis limits to accommodate annotations
|
289 |
+
ax.set_xlim(0, max_value * 1.2)
|
290 |
+
|
291 |
+
# Customize y-ticks and labels
|
292 |
+
ax.set_yticks([i + bar_width / 2 for i in index])
|
293 |
+
ax.set_yticklabels(categories)
|
294 |
+
ax.set_xlabel('AQI')
|
295 |
+
ax.set_title('AQI Comparison')
|
296 |
+
|
297 |
+
# Place legend outside the plot area
|
298 |
+
ax.legend(loc='center left', bbox_to_anchor=(1, 0.5), frameon=False)
|
299 |
+
|
300 |
+
plt.tight_layout()
|
301 |
+
|
302 |
+
# Save the plot to a PNG image in memory
|
303 |
+
buffer = BytesIO()
|
304 |
+
plt.savefig(buffer, format="png", bbox_inches='tight')
|
305 |
+
plt.close(fig)
|
306 |
+
buffer.seek(0)
|
307 |
+
|
308 |
+
# Encode the image to base64 to embed it in the HTML
|
309 |
+
image_base64 = base64.b64encode(buffer.read()).decode()
|
310 |
+
return f'<img src="data:image/png;base64,{image_base64}">'
|
311 |
+
|
312 |
+
# Function to determine AQI marker color
|
313 |
+
def get_color_for_aqi(aqi_value):
|
314 |
+
if aqi_value <= 50:
|
315 |
+
return 'green'
|
316 |
+
elif aqi_value <= 100:
|
317 |
+
return 'yellow'
|
318 |
+
elif aqi_value <= 150:
|
319 |
+
return 'orange'
|
320 |
+
elif aqi_value <= 200:
|
321 |
+
return 'red'
|
322 |
+
elif aqi_value <= 300:
|
323 |
+
return 'purple'
|
324 |
+
else:
|
325 |
+
return 'maroon'
|
326 |
+
|
327 |
+
# Add markers with AQI comparison plot
|
328 |
+
for _, row in data.iterrows():
|
329 |
+
color = get_color_for_aqi(row['AQI_step_1'])
|
330 |
+
popup_html = create_aqi_comparison_plot(row)
|
331 |
+
folium.Marker(
|
332 |
+
location=[row["lat"], row["lon"]],
|
333 |
+
popup=folium.Popup(html=popup_html, max_width=500),
|
334 |
+
#tooltip=row["name"],
|
335 |
+
icon=folium.Icon(color=color)
|
336 |
+
).add_to(m)
|
337 |
+
|
338 |
+
# Save the map
|
339 |
+
m.save("aqi_forecast_with_legend.html")
|
340 |
+
m
|
aqi_data.csv
ADDED
@@ -0,0 +1,15 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
PM2.5,PM10,NO2,SO2,CO,AQI,Day,Month,Hour,lat,lon,AQI_step_1,AQI_step_2,AQI_step_3
|
2 |
+
87,89,2,127,123.1396,192,20,11,11,21.195069775800516,72.79324648126439,174.50804,175.36728,176.44917
|
3 |
+
86,89,7,65,138.3132,191,20,11,17,21.22050672027795,72.83355967457062,171.93951,172.93735,174.26135
|
4 |
+
86,89,7,65,138.3132,191,20,11,17,21.236796371788703,72.8665479925569,171.93951,172.93735,174.26135
|
5 |
+
84.0,88.0,3.0,89.0,132.4772,188.0,21.0,11.0,13.0,21.236796371788703,72.8665479925569,169.29886,170.1785,171.38548
|
6 |
+
205.0,256.0,8.0,99.0,151.1524,205.0,21.0,11.0,13.0,28.639638713652012,77.19002000205269,178.70003,179.95726,181.62497
|
7 |
+
54.0,58.0,2.0,40.0,124.8904,150.0,21.0,11.0,15.0,21.634633971544297,72.99221466910912,143.35014,143.9174,144.78899
|
8 |
+
106.0,116.0,2.0,80.0,170.4112,217.0,21.0,11.0,15.0,26.846962942608172,80.90966630609816,196.3583,198.081,200.372
|
9 |
+
35.0,37.0,3.0,40.0,141.2312,101.0,21.0,11.0,15.0,31.335876535998896,75.565248172424,111.138115,111.64326,112.21634
|
10 |
+
34.0,36.0,5.0,95.0,139.4804,101.0,21.0,11.0,16.0,30.921956088524542,75.85192818745244,112.60642,113.12772,113.72198
|
11 |
+
74.0,83.0,1.0,27.0,113.2184,175.0,21.0,11.0,16.0,23.238552725422572,77.43189201233218,157.19151,157.69708,158.61711
|
12 |
+
89.0,111.0,3.0,27.0,104.4644,195.0,21.0,11.0,16.0,22.622719257719115,88.36320858480713,173.02531,173.67334,174.52841
|
13 |
+
29.0,30.0,3.0,36.0,114.3856,87.0,21.0,11.0,16.0,11.301601687488285,77.19399206074418,94.49498,94.79229,95.16263
|
14 |
+
15.0,17.0,0.0,2.0,82.8712,56.0,21.0,11.0,16.0,10.569512756592735,72.63877516454528,56.11896,56.067623,56.15389
|
15 |
+
15.0,17.0,0.0,2.0,82.8712,56.0,21.0,11.0,16.0,10.569512756592735,72.63877516454528,56.11896,56.067623,56.15389
|
aqi_data_actual_api.csv
ADDED
@@ -0,0 +1,15 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
AQI_currrent_API,AQI_step_1_API,AQI_step_2_API,AQI_step_3_API
|
2 |
+
172,177,176,177
|
3 |
+
171,176,178,188
|
4 |
+
171,176,178,188
|
5 |
+
188,189,203,225
|
6 |
+
205,264,272,257
|
7 |
+
150,150,173,167
|
8 |
+
217,229,265,217
|
9 |
+
101,241,252,262
|
10 |
+
101,252,264,268
|
11 |
+
175,191,184,167
|
12 |
+
195,253,274,273
|
13 |
+
87,163,163,153
|
14 |
+
56,56,72,93
|
15 |
+
56,56,72,93
|
requirement.txt
ADDED
@@ -0,0 +1,116 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
absl-py==2.1.0
|
2 |
+
accelerate==1.1.1
|
3 |
+
aiohappyeyeballs==2.4.3
|
4 |
+
aiohttp==3.11.2
|
5 |
+
aiosignal==1.3.1
|
6 |
+
asttokens==2.4.1
|
7 |
+
astunparse==1.6.3
|
8 |
+
async-timeout==5.0.1
|
9 |
+
attrs==24.2.0
|
10 |
+
blinker==1.9.0
|
11 |
+
branca==0.8.0
|
12 |
+
certifi==2024.8.30
|
13 |
+
charset-normalizer==3.4.0
|
14 |
+
click==8.1.7
|
15 |
+
colorama==0.4.6
|
16 |
+
comm==0.2.2
|
17 |
+
contourpy==1.3.0
|
18 |
+
cycler==0.12.1
|
19 |
+
datasets==3.1.0
|
20 |
+
debugpy==1.8.7
|
21 |
+
decorator==5.1.1
|
22 |
+
dill==0.3.8
|
23 |
+
exceptiongroup==1.2.2
|
24 |
+
executing==2.1.0
|
25 |
+
filelock==3.16.1
|
26 |
+
Flask==3.0.3
|
27 |
+
flatbuffers==24.3.25
|
28 |
+
folium==0.18.0
|
29 |
+
fonttools==4.54.1
|
30 |
+
frozenlist==1.5.0
|
31 |
+
fsspec==2024.9.0
|
32 |
+
gast==0.6.0
|
33 |
+
google-pasta==0.2.0
|
34 |
+
grpcio==1.67.1
|
35 |
+
h5py==3.12.1
|
36 |
+
huggingface-hub==0.26.2
|
37 |
+
idna==3.10
|
38 |
+
ipykernel==6.29.5
|
39 |
+
ipython==8.29.0
|
40 |
+
itsdangerous==2.2.0
|
41 |
+
jedi==0.19.1
|
42 |
+
Jinja2==3.1.4
|
43 |
+
joblib==1.4.2
|
44 |
+
jupyter_client==8.6.3
|
45 |
+
jupyter_core==5.7.2
|
46 |
+
keras==3.6.0
|
47 |
+
kiwisolver==1.4.7
|
48 |
+
libclang==18.1.1
|
49 |
+
Markdown==3.7
|
50 |
+
markdown-it-py==3.0.0
|
51 |
+
MarkupSafe==3.0.2
|
52 |
+
matplotlib==3.9.2
|
53 |
+
matplotlib-inline==0.1.7
|
54 |
+
mdurl==0.1.2
|
55 |
+
ml-dtypes==0.4.1
|
56 |
+
mpmath==1.3.0
|
57 |
+
multidict==6.1.0
|
58 |
+
multiprocess==0.70.16
|
59 |
+
namex==0.0.8
|
60 |
+
nest-asyncio==1.6.0
|
61 |
+
networkx==3.4.2
|
62 |
+
numpy==2.0.2
|
63 |
+
opt_einsum==3.4.0
|
64 |
+
optree==0.13.0
|
65 |
+
packaging==24.1
|
66 |
+
pandas==2.2.3
|
67 |
+
parso==0.8.4
|
68 |
+
pillow==11.0.0
|
69 |
+
platformdirs==4.3.6
|
70 |
+
prompt_toolkit==3.0.48
|
71 |
+
propcache==0.2.0
|
72 |
+
protobuf==5.28.3
|
73 |
+
psutil==6.1.0
|
74 |
+
pure_eval==0.2.3
|
75 |
+
pyarrow==18.0.0
|
76 |
+
Pygments==2.18.0
|
77 |
+
pyparsing==3.2.0
|
78 |
+
python-dateutil==2.9.0.post0
|
79 |
+
pytz==2024.2
|
80 |
+
pywin32==308
|
81 |
+
PyYAML==6.0.2
|
82 |
+
pyzmq==26.2.0
|
83 |
+
regex==2024.11.6
|
84 |
+
requests==2.32.3
|
85 |
+
rich==13.9.4
|
86 |
+
safetensors==0.4.5
|
87 |
+
scikit-learn==1.5.2
|
88 |
+
scipy==1.14.1
|
89 |
+
seaborn==0.13.2
|
90 |
+
sentencepiece==0.2.0
|
91 |
+
six==1.16.0
|
92 |
+
stack-data==0.6.3
|
93 |
+
sympy==1.13.1
|
94 |
+
tensorboard==2.18.0
|
95 |
+
tensorboard-data-server==0.7.2
|
96 |
+
tensorflow==2.18.0
|
97 |
+
termcolor==2.5.0
|
98 |
+
tf_keras==2.18.0
|
99 |
+
threadpoolctl==3.5.0
|
100 |
+
tokenizers==0.20.3
|
101 |
+
torch==2.5.1
|
102 |
+
torchaudio==2.5.1
|
103 |
+
torchvision==0.20.1
|
104 |
+
tornado==6.4.1
|
105 |
+
tqdm==4.67.0
|
106 |
+
traitlets==5.14.3
|
107 |
+
transformers==4.46.2
|
108 |
+
typing_extensions==4.12.2
|
109 |
+
tzdata==2024.2
|
110 |
+
urllib3==2.2.3
|
111 |
+
wcwidth==0.2.13
|
112 |
+
Werkzeug==3.1.2
|
113 |
+
wrapt==1.16.0
|
114 |
+
xxhash==3.5.0
|
115 |
+
xyzservices==2024.9.0
|
116 |
+
yarl==1.17.1
|
scaler_X_cpcb_4.pkl
ADDED
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
1 |
+
version https://git-lfs.github.com/spec/v1
|
2 |
+
oid sha256:427ce69431d9fecc00f9f31668e87e575dff645ecfd188dc146d7a41728d1dd7
|
3 |
+
size 1703
|
scaler_y_cpcb_4.pkl
ADDED
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
1 |
+
version https://git-lfs.github.com/spec/v1
|
2 |
+
oid sha256:e2f48ec4bcaf215123873f416b60d9ffe080045913719a945e115131fe3b6eeb
|
3 |
+
size 1023
|
static/aqi_forecast_map.html
ADDED
@@ -0,0 +1,177 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<!DOCTYPE html>
|
2 |
+
<html>
|
3 |
+
<head>
|
4 |
+
|
5 |
+
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
|
6 |
+
|
7 |
+
<script>
|
8 |
+
L_NO_TOUCH = false;
|
9 |
+
L_DISABLE_3D = false;
|
10 |
+
</script>
|
11 |
+
|
12 |
+
<style>html, body {width: 100%;height: 100%;margin: 0;padding: 0;}</style>
|
13 |
+
<style>#map {position:absolute;top:0;bottom:0;right:0;left:0;}</style>
|
14 |
+
<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/leaflet.js"></script>
|
15 |
+
<script src="https://code.jquery.com/jquery-3.7.1.min.js"></script>
|
16 |
+
<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.bundle.min.js"></script>
|
17 |
+
<script src="https://cdnjs.cloudflare.com/ajax/libs/Leaflet.awesome-markers/2.0.2/leaflet.awesome-markers.js"></script>
|
18 |
+
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/[email protected]/dist/leaflet.css"/>
|
19 |
+
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css"/>
|
20 |
+
<link rel="stylesheet" href="https://netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap-glyphicons.css"/>
|
21 |
+
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@fortawesome/[email protected]/css/all.min.css"/>
|
22 |
+
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/Leaflet.awesome-markers/2.0.2/leaflet.awesome-markers.css"/>
|
23 |
+
<link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/python-visualization/folium/folium/templates/leaflet.awesome.rotate.min.css"/>
|
24 |
+
|
25 |
+
<meta name="viewport" content="width=device-width,
|
26 |
+
initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
|
27 |
+
<style>
|
28 |
+
#map_f96d7c068d70a2dfb86669b83d95543c {
|
29 |
+
position: relative;
|
30 |
+
width: 100.0%;
|
31 |
+
height: 100.0%;
|
32 |
+
left: 0.0%;
|
33 |
+
top: 0.0%;
|
34 |
+
}
|
35 |
+
.leaflet-container { font-size: 1rem; }
|
36 |
+
</style>
|
37 |
+
|
38 |
+
</head>
|
39 |
+
<body>
|
40 |
+
|
41 |
+
|
42 |
+
<div class="folium-map" id="map_f96d7c068d70a2dfb86669b83d95543c" ></div>
|
43 |
+
|
44 |
+
</body>
|
45 |
+
<script>
|
46 |
+
|
47 |
+
|
48 |
+
var map_f96d7c068d70a2dfb86669b83d95543c = L.map(
|
49 |
+
"map_f96d7c068d70a2dfb86669b83d95543c",
|
50 |
+
{
|
51 |
+
center: [21.2, 72.85],
|
52 |
+
crs: L.CRS.EPSG3857,
|
53 |
+
zoom: 10,
|
54 |
+
zoomControl: true,
|
55 |
+
preferCanvas: false,
|
56 |
+
}
|
57 |
+
);
|
58 |
+
|
59 |
+
|
60 |
+
|
61 |
+
|
62 |
+
|
63 |
+
var tile_layer_2fced53561d97c46a3851d3ffbd06d32 = L.tileLayer(
|
64 |
+
"https://tile.openstreetmap.org/{z}/{x}/{y}.png",
|
65 |
+
{"attribution": "\u0026copy; \u003ca href=\"https://www.openstreetmap.org/copyright\"\u003eOpenStreetMap\u003c/a\u003e contributors", "detectRetina": false, "maxNativeZoom": 19, "maxZoom": 19, "minZoom": 0, "noWrap": false, "opacity": 1, "subdomains": "abc", "tms": false}
|
66 |
+
);
|
67 |
+
|
68 |
+
|
69 |
+
tile_layer_2fced53561d97c46a3851d3ffbd06d32.addTo(map_f96d7c068d70a2dfb86669b83d95543c);
|
70 |
+
|
71 |
+
|
72 |
+
var marker_6e96a811704e3a9dcaf0853acb663dee = L.marker(
|
73 |
+
[21.195069775800516, 72.79324648126439],
|
74 |
+
{}
|
75 |
+
).addTo(map_f96d7c068d70a2dfb86669b83d95543c);
|
76 |
+
|
77 |
+
|
78 |
+
var icon_9d8e2b2ea6b79f929f60c2483341d300 = L.AwesomeMarkers.icon(
|
79 |
+
{"extraClasses": "fa-rotate-0", "icon": "info-sign", "iconColor": "white", "markerColor": "orange", "prefix": "glyphicon"}
|
80 |
+
);
|
81 |
+
marker_6e96a811704e3a9dcaf0853acb663dee.setIcon(icon_9d8e2b2ea6b79f929f60c2483341d300);
|
82 |
+
|
83 |
+
|
84 |
+
var popup_d299bc7f89956c3e85741cba3f9cf026 = L.popup({"maxWidth": 500});
|
85 |
+
|
86 |
+
|
87 |
+
|
88 |
+
var html_9c6b4cf4128fd1a18f384a46847adc48 = $(`<div id="html_9c6b4cf4128fd1a18f384a46847adc48" style="width: 100.0%; height: 100.0%;"><img src="data:image/png;base64,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"></div>`)[0];
|
89 |
+
popup_d299bc7f89956c3e85741cba3f9cf026.setContent(html_9c6b4cf4128fd1a18f384a46847adc48);
|
90 |
+
|
91 |
+
|
92 |
+
|
93 |
+
marker_6e96a811704e3a9dcaf0853acb663dee.bindPopup(popup_d299bc7f89956c3e85741cba3f9cf026)
|
94 |
+
;
|
95 |
+
|
96 |
+
|
97 |
+
|
98 |
+
|
99 |
+
marker_6e96a811704e3a9dcaf0853acb663dee.bindTooltip(
|
100 |
+
`<div>
|
101 |
+
Location 1
|
102 |
+
</div>`,
|
103 |
+
{"sticky": true}
|
104 |
+
);
|
105 |
+
|
106 |
+
|
107 |
+
var marker_d41a1d89753128a0d648fe9a95670476 = L.marker(
|
108 |
+
[21.3, 72.9],
|
109 |
+
{}
|
110 |
+
).addTo(map_f96d7c068d70a2dfb86669b83d95543c);
|
111 |
+
|
112 |
+
|
113 |
+
var icon_49ac172dbb970324b9bc82293c12de6c = L.AwesomeMarkers.icon(
|
114 |
+
{"extraClasses": "fa-rotate-0", "icon": "info-sign", "iconColor": "white", "markerColor": "orange", "prefix": "glyphicon"}
|
115 |
+
);
|
116 |
+
marker_d41a1d89753128a0d648fe9a95670476.setIcon(icon_49ac172dbb970324b9bc82293c12de6c);
|
117 |
+
|
118 |
+
|
119 |
+
var popup_d0739edffb2fb3b36cd822eab4c31669 = L.popup({"maxWidth": 500});
|
120 |
+
|
121 |
+
|
122 |
+
|
123 |
+
var html_1d63111637e0a5d02c02ff5848c3a1b1 = $(`<div id="html_1d63111637e0a5d02c02ff5848c3a1b1" style="width: 100.0%; height: 100.0%;"><img src="data:image/png;base64,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"></div>`)[0];
|
124 |
+
popup_d0739edffb2fb3b36cd822eab4c31669.setContent(html_1d63111637e0a5d02c02ff5848c3a1b1);
|
125 |
+
|
126 |
+
|
127 |
+
|
128 |
+
marker_d41a1d89753128a0d648fe9a95670476.bindPopup(popup_d0739edffb2fb3b36cd822eab4c31669)
|
129 |
+
;
|
130 |
+
|
131 |
+
|
132 |
+
|
133 |
+
|
134 |
+
marker_d41a1d89753128a0d648fe9a95670476.bindTooltip(
|
135 |
+
`<div>
|
136 |
+
Location 2
|
137 |
+
</div>`,
|
138 |
+
{"sticky": true}
|
139 |
+
);
|
140 |
+
|
141 |
+
|
142 |
+
var marker_2b4dd178b28f8dc64a6b58d3b2195568 = L.marker(
|
143 |
+
[21.1, 72.8],
|
144 |
+
{}
|
145 |
+
).addTo(map_f96d7c068d70a2dfb86669b83d95543c);
|
146 |
+
|
147 |
+
|
148 |
+
var icon_904d715c3fdcf1bd3e2085c62379e5c8 = L.AwesomeMarkers.icon(
|
149 |
+
{"extraClasses": "fa-rotate-0", "icon": "info-sign", "iconColor": "white", "markerColor": "orange", "prefix": "glyphicon"}
|
150 |
+
);
|
151 |
+
marker_2b4dd178b28f8dc64a6b58d3b2195568.setIcon(icon_904d715c3fdcf1bd3e2085c62379e5c8);
|
152 |
+
|
153 |
+
|
154 |
+
var popup_17f841170c403bf21955f085ac0694c3 = L.popup({"maxWidth": 500});
|
155 |
+
|
156 |
+
|
157 |
+
|
158 |
+
var html_ac0992d15caf4cab8b21de240372b018 = $(`<div id="html_ac0992d15caf4cab8b21de240372b018" style="width: 100.0%; height: 100.0%;"><img src="data:image/png;base64,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"></div>`)[0];
|
159 |
+
popup_17f841170c403bf21955f085ac0694c3.setContent(html_ac0992d15caf4cab8b21de240372b018);
|
160 |
+
|
161 |
+
|
162 |
+
|
163 |
+
marker_2b4dd178b28f8dc64a6b58d3b2195568.bindPopup(popup_17f841170c403bf21955f085ac0694c3)
|
164 |
+
;
|
165 |
+
|
166 |
+
|
167 |
+
|
168 |
+
|
169 |
+
marker_2b4dd178b28f8dc64a6b58d3b2195568.bindTooltip(
|
170 |
+
`<div>
|
171 |
+
Location 3
|
172 |
+
</div>`,
|
173 |
+
{"sticky": true}
|
174 |
+
);
|
175 |
+
|
176 |
+
</script>
|
177 |
+
</html>
|
static/aqi_forecast_vs_actual_map.html
ADDED
The diff for this file is too large to render.
See raw diff
|
|
static/aqi_forecast_vs_actual_map_horizontal_bars.html
ADDED
The diff for this file is too large to render.
See raw diff
|
|
static/aqi_forecast_with_legend.html
ADDED
@@ -0,0 +1,203 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<!DOCTYPE html>
|
2 |
+
<html>
|
3 |
+
<head>
|
4 |
+
|
5 |
+
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
|
6 |
+
|
7 |
+
<script>
|
8 |
+
L_NO_TOUCH = false;
|
9 |
+
L_DISABLE_3D = false;
|
10 |
+
</script>
|
11 |
+
|
12 |
+
<style>html, body {width: 100%;height: 100%;margin: 0;padding: 0;}</style>
|
13 |
+
<style>#map {position:absolute;top:0;bottom:0;right:0;left:0;}</style>
|
14 |
+
<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/leaflet.js"></script>
|
15 |
+
<script src="https://code.jquery.com/jquery-3.7.1.min.js"></script>
|
16 |
+
<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.bundle.min.js"></script>
|
17 |
+
<script src="https://cdnjs.cloudflare.com/ajax/libs/Leaflet.awesome-markers/2.0.2/leaflet.awesome-markers.js"></script>
|
18 |
+
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/[email protected]/dist/leaflet.css"/>
|
19 |
+
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css"/>
|
20 |
+
<link rel="stylesheet" href="https://netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap-glyphicons.css"/>
|
21 |
+
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@fortawesome/[email protected]/css/all.min.css"/>
|
22 |
+
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/Leaflet.awesome-markers/2.0.2/leaflet.awesome-markers.css"/>
|
23 |
+
<link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/python-visualization/folium/folium/templates/leaflet.awesome.rotate.min.css"/>
|
24 |
+
|
25 |
+
<meta name="viewport" content="width=device-width,
|
26 |
+
initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
|
27 |
+
<style>
|
28 |
+
#map_2c2025c360c3ed95ce6339b20a693bdd {
|
29 |
+
position: relative;
|
30 |
+
width: 100.0%;
|
31 |
+
height: 100.0%;
|
32 |
+
left: 0.0%;
|
33 |
+
top: 0.0%;
|
34 |
+
}
|
35 |
+
.leaflet-container { font-size: 1rem; }
|
36 |
+
</style>
|
37 |
+
|
38 |
+
</head>
|
39 |
+
<body>
|
40 |
+
<meta charset="UTF-8">
|
41 |
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
42 |
+
<title>AQI Forecast Map</title>
|
43 |
+
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap/5.3.0/css/bootstrap.min.css">
|
44 |
+
<style>
|
45 |
+
#legend {
|
46 |
+
position: fixed;
|
47 |
+
bottom: 20px;
|
48 |
+
left: 20px;
|
49 |
+
width: 300px;
|
50 |
+
background-color: rgba(255, 255, 255, 0.8);
|
51 |
+
z-index: 9999;
|
52 |
+
font-size: 12px;
|
53 |
+
border-radius: 8px;
|
54 |
+
padding: 10px;
|
55 |
+
box-shadow: 2px 2px 8px rgba(0, 0, 0, 0.3);
|
56 |
+
}
|
57 |
+
</style>
|
58 |
+
|
59 |
+
<!-- Navigation Bar -->
|
60 |
+
<nav class="navbar navbar-expand-lg navbar-dark bg-dark">
|
61 |
+
<div class="container-fluid">
|
62 |
+
<a class="navbar-brand" href="#">AQI Forecaster</a>
|
63 |
+
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation">
|
64 |
+
<span class="navbar-toggler-icon"></span>
|
65 |
+
</button>
|
66 |
+
<div class="collapse navbar-collapse" id="navbarNav">
|
67 |
+
<form class="d-flex ms-auto" method="POST" action="{{ url_for('forecast') }}">
|
68 |
+
<input class="form-control me-2" type="text" name="latitude" placeholder="Enter Latitude" required>
|
69 |
+
<input class="form-control me-2" type="text" name="longitude" placeholder="Enter Longitude" required>
|
70 |
+
<button class="btn btn-outline-success" type="submit">Update Map</button>
|
71 |
+
</form>
|
72 |
+
</div>
|
73 |
+
</div>
|
74 |
+
</nav>
|
75 |
+
|
76 |
+
<!-- AQI Legend -->
|
77 |
+
<div id="legend">
|
78 |
+
<b>AQI Color Legend</b>
|
79 |
+
<ul style="list-style: none; padding: 0; margin: 5px;">
|
80 |
+
<li><i style="background:green; width:15px; height:15px; display:inline-block; margin-right:5px;"></i> Good (0-50)</li>
|
81 |
+
<li><i style="background:yellow; width:15px; height:15px; display:inline-block; margin-right:5px;"></i> Moderate (51-100)</li>
|
82 |
+
<li><i style="background:orange; width:15px; height:15px; display:inline-block; margin-right:5px;"></i> Unhealthy for Sensitive Groups (101-150)</li>
|
83 |
+
<li><i style="background:red; width:15px; height:15px; display:inline-block; margin-right:5px;"></i> Unhealthy (151-200)</li>
|
84 |
+
<li><i style="background:purple; width:15px; height:15px; display:inline-block; margin-right:5px;"></i> Very Unhealthy (201-300)</li>
|
85 |
+
<li><i style="background:maroon; width:15px; height:15px; display:inline-block; margin-right:5px;"></i> Hazardous (301+)</li>
|
86 |
+
</ul>
|
87 |
+
</div>
|
88 |
+
|
89 |
+
<script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap/5.3.0/js/bootstrap.bundle.min.js"></script>
|
90 |
+
|
91 |
+
|
92 |
+
<div class="folium-map" id="map_2c2025c360c3ed95ce6339b20a693bdd" ></div>
|
93 |
+
|
94 |
+
</body>
|
95 |
+
<script>
|
96 |
+
|
97 |
+
|
98 |
+
var map_2c2025c360c3ed95ce6339b20a693bdd = L.map(
|
99 |
+
"map_2c2025c360c3ed95ce6339b20a693bdd",
|
100 |
+
{
|
101 |
+
center: [21.21745762262239, 72.83111804946397],
|
102 |
+
crs: L.CRS.EPSG3857,
|
103 |
+
zoom: 10,
|
104 |
+
zoomControl: true,
|
105 |
+
preferCanvas: false,
|
106 |
+
}
|
107 |
+
);
|
108 |
+
|
109 |
+
|
110 |
+
|
111 |
+
|
112 |
+
|
113 |
+
var tile_layer_1ed9d8a583c9ed0cbc8410660e53a246 = L.tileLayer(
|
114 |
+
"https://tile.openstreetmap.org/{z}/{x}/{y}.png",
|
115 |
+
{"attribution": "\u0026copy; \u003ca href=\"https://www.openstreetmap.org/copyright\"\u003eOpenStreetMap\u003c/a\u003e contributors", "detectRetina": false, "maxNativeZoom": 19, "maxZoom": 19, "minZoom": 0, "noWrap": false, "opacity": 1, "subdomains": "abc", "tms": false}
|
116 |
+
);
|
117 |
+
|
118 |
+
|
119 |
+
tile_layer_1ed9d8a583c9ed0cbc8410660e53a246.addTo(map_2c2025c360c3ed95ce6339b20a693bdd);
|
120 |
+
|
121 |
+
|
122 |
+
var marker_38b108b3eb17f246af1847ce3fde7155 = L.marker(
|
123 |
+
[21.19506977580052, 72.79324648126439],
|
124 |
+
{}
|
125 |
+
).addTo(map_2c2025c360c3ed95ce6339b20a693bdd);
|
126 |
+
|
127 |
+
|
128 |
+
var icon_48e797f3cf504d64ca1c73448a103ea4 = L.AwesomeMarkers.icon(
|
129 |
+
{"extraClasses": "fa-rotate-0", "icon": "info-sign", "iconColor": "white", "markerColor": "red", "prefix": "glyphicon"}
|
130 |
+
);
|
131 |
+
marker_38b108b3eb17f246af1847ce3fde7155.setIcon(icon_48e797f3cf504d64ca1c73448a103ea4);
|
132 |
+
|
133 |
+
|
134 |
+
var popup_0baf097a03f16cda6bcec6973beb4d7e = L.popup({"maxWidth": 500});
|
135 |
+
|
136 |
+
|
137 |
+
|
138 |
+
var html_7a3296080251cbbfd4b2ec8815f1ae4e = $(`<div id="html_7a3296080251cbbfd4b2ec8815f1ae4e" style="width: 100.0%; height: 100.0%;"><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAeoAAAC+CAYAAAD6BUxvAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAAA5mUlEQVR4nO3dd1RUR/sH8O/SFhApojQFRSyIJogYEYOFgAECRg1GJaDAizWiBo3mNRpRE2MiIRpjSeJZWPgFgxW72FBsoIIC1lUURGkmKguK9Pn9wcuN69JWEBb2+Zxzz/HOzL135srus3PLDI8xxkAIIYQQuaTU2hUghBBCSN0oUBNCCCFyjAI1IYQQIscoUBNCCCFyjAI1IYQQIscoUBNCCCFyjAI1IYQQIscoUBNCCCFyjAI1IYQQIscoUBPSxo0aNQqjRo1q7WoQQt4SCtSkSTZv3gwejwc7O7t6y2VlZWHWrFno0aMH+Hw+DAwMMH78eFy4cEGq7OnTp8Hj8bBr165G1aGwsBArV66EtbU1tLS0oKGhgQEDBuCrr75CTk7OG7WLEELkhUprV4C0bVFRUejRowcuXbqE9PR09OrVS6rM+fPn8dFHHwEApk2bBisrK+Tl5UEoFMLBwQGbNm3C7Nmz3+j49+/fh7OzM7KysvDpp59ixowZUFNTQ1paGgQCAWJiYnDnzp0mtVHeHTt2rLWrQAh5mxghb+j+/fsMANuzZw/r0qULW7FihVSZp0+fMiMjI2ZoaMjS09Ml8oqLi9nw4cOZsrIyS0hI4NJPnTrFALCdO3fWe/zy8nJmbW3NNDU12dmzZ6XyxWIx+/rrr9+wdfLvxYsXrV0FQkgLoEvf5I1FRUVBT08P7u7umDBhAqKioqTK/P7778jLy0NISAgsLCwk8jQ0NBAREQEAWLVqlczH3717N1JTU7F06VI4ODhI5Wtra2P16tUSaTt37oStrS00NDTQuXNn+Pj4IDs7W6KMn58ftLS0kJWVBQ8PD2hpaaFr167YtGkTAODatWv44IMP0KFDB3Tv3h3btm2T2F4oFILH4+HMmTOYOXMm9PX1oa2tjalTp+LZs2cSZfft2wd3d3eYmJiAz+fDwsIC3377LSorKyXKjRo1CgMGDEBycjJGjBgBTU1NfP3111ze6/eof/31V/Tv3x+amprQ09PD4MGDpep59epVuLm5QVtbG1paWnByckJiYmKtbTl//jwWLFiALl26oEOHDhg/fjz+/vvv2v5bCCHNjAI1eWNRUVH45JNPoKamBi8vL9y9exeXL1+WKHPgwAGoq6tj4sSJte7D3NwcDg4OOHHiBEpKSmQ6/v79+wEAU6ZMaVR5oVCIiRMnQllZGWvWrMH06dOxZ88eODg4oKCgQKJsZWUl3NzcYGpqirVr16JHjx4IDAyEUCiEq6srBg8ejB9//BEdO3bE1KlTkZGRIXW8wMBA3Lp1CytWrMDUqVMRFRWFcePGgb0ys6xQKISWlhYWLFiAX375Bba2tli+fDn++9//Su3vyZMncHNzw8CBA7F+/Xo4OjrW2s6tW7di3rx5sLKywvr167Fy5UoMHDgQFy9e5MrcuHEDw4cPR2pqKhYvXoxvvvkGGRkZGDVqlES5GnPnzkVqaiqCg4Mxe/ZsHDhwAIGBgY0674SQJmrtLj1pm5KSkhgAdvz4ccYYY1VVVaxbt25s/vz5EuV0dXWZtbV1vfuaN28eA8DS0tIYY42/9G1jY8N0dHQaVd+ysjJmYGDABgwYwF6+fMmlHzx4kAFgy5cv59J8fX0ZAPb9999zac+ePWMaGhqMx+Ox6OhoLv327dsMAAsODubSwsPDGQBma2vLysrKuPS1a9cyAGzfvn1cWnFxsVRdZ86cyTQ1NVlJSQmXNnLkSAaA/fbbb1LlR44cyUaOHMmtjx07lvXv37/e8zFu3DimpqbG7t27x6Xl5OSwjh07shEjRki1xdnZmVVVVXHpQUFBTFlZmRUUFNR7HEJI01GPmryRqKgoGBoacr06Ho+HSZMmITo6WuKybVFRETp27Fjvvmryi4qKZKpDYWFhg/uukZSUhMePH+Pzzz+Huro6l+7u7g5LS0scOnRIaptp06Zx/9bV1UXfvn3RoUMHiasDffv2ha6uLu7fvy+1/YwZM6Cqqsqtz549GyoqKjh8+DCXpqGhwf27qKgI//zzD4YPH47i4mLcvn1bYn98Ph/+/v4NtlVXVxePHj2SurpRo7KyEseOHcO4cePQs2dPLt3Y2BifffYZzp07h8LCQqm28Hg8bn348OGorKzEgwcPGqwPIaRpKFATmVVWViI6OhqOjo7IyMhAeno60tPTYWdnh/z8fJw8eZIr27FjxwYDcE2+gYGBTPXQ1tZudHCvCSh9+/aVyrO0tJQKOOrq6ujSpYtEmo6ODrp16yYRsGrSX7/3DAC9e/eWWNfS0oKxsTEyMzO5tBs3bmD8+PHQ0dGBtrY2unTpAh8fHwCAWCyW2L5r165QU1NroKXAV199BS0tLQwZMgS9e/fGnDlzcP78eS7/77//RnFxca3nol+/fqiqqsLDhw8l0s3MzCTW9fT0AKDWdhNCmhcFaiKzuLg45ObmIjo6Gr179+aWmp7mqw+VWVlZQSQSobS0tM79paWlQU1NDV27dpWpHpaWlhCLxVJBpTkoKyvLlM5eue/cWAUFBRg5ciRSU1OxatUqHDhwAMePH8ePP/4IAKiqqpIo/2rvuz79+vWDSCRCdHQ0HBwcsHv3bjg4OCA4OFjmOtZoznYTQmRDgZrILCoqCgYGBti5c6fU4uXlhZiYGLx8+RIAMGbMGJSUlGDnzp217iszMxNnz56Fh4dHowNRjTFjxgAA/vzzzwbLdu/eHQAgEomk8kQiEZffnO7evSux/vz5c+Tm5qJHjx4Aqgd2efLkCYRCIebPnw8PDw84OztzvdWm6NChAyZNmoTw8HBkZWXB3d0dq1evRklJCbp06QJNTc1az8Xt27ehpKQEU1PTJteBENI8KFATmbx8+RJ79uyBh4cHJkyYILUEBgaiqKiIeyJ75syZMDIywqJFi6Tu45aUlMDf3x88Hg+LFy+WuS4TJkzAO++8g9WrVyMhIUEqv6ioCEuXLgUADB48GAYGBvjtt98kevdHjhzBrVu34O7uLvPxG/LHH3+gvLycW9+yZQsqKirg5uYG4N9e6qu90rKyMmzevLlJx33y5InEupqaGqysrMAYQ3l5OZSVlfHhhx9i3759Epfh8/PzsW3bNjg4OEBbW7tJdSCENB8amYzIZP/+/SgqKsLHH39ca/7QoUPRpUsXREVFYdKkSdDT08OuXbvw0UcfYdCgQVIjk92/fx8bN25scAjS2qiqqmLPnj1wdnbGiBEjMHHiRLz//vtQVVXFjRs3sG3bNujp6WH16tVQVVXFjz/+CH9/f4wcORJeXl7Iz8/HL7/8gh49eiAoKKipp0ZKWVkZnJycMHHiRIhEImzevBkODg7cuRs2bBj09PTg6+uLefPmgcfj4f/+7/+afDn5ww8/hJGREd5//30YGhri1q1b2LhxI9zd3bmH77777jscP34cDg4O+Pzzz6GiooLff/8dpaWlWLt2bZPbTghpRq36zDlpc8aMGcPU1dXrHRXLz8+Pqaqqsn/++YdLy8zMZDNmzGBmZmZMRUWFAWAA2IkTJ6S2b+zrWTWePXvGli9fzt555x2mqanJ1NXV2YABA9iSJUtYbm6uRNnt27czGxsbxufzWadOnZi3tzd79OiRRBlfX1/WoUMHqeOMHDmy1teeunfvztzd3bn1mlea4uPj2YwZM5ienh7T0tJi3t7e7MmTJxLbnj9/ng0dOpRpaGgwExMTtnjxYnb06FEGgJ06darBY9fkvfp61u+//85GjBjB9PX1GZ/PZxYWFmzRokVMLBZLbHflyhXm4uLCtLS0mKamJnN0dGQXLlyQKFPTlsuXL0uk1/wfvVpHQsjbwWOMngYhLe/kyZP46KOP4ODggCNHjjTqaea2QigUwt/fH5cvX8bgwYNbuzqEkDaO7lGTVuHk5ISIiAicOnUK/v7+9PQwIYTUge5Rk1YzefJkTJ48ubWrQQghco161IQQQogco3vUhBBCiByjHjUhhBAixyhQE0IIIXJMoR4mq6qqQk5ODjp27Cg1sQIhhLQ0xhiKiopgYmICJSXqN5HaKVSgzsnJoTGMCSFy5+HDh+jWrVtrV4PIKYUK1DXDJz58+JDGMiaEtLrCwkKYmpo2el51opgUKlDXXO7W1tamQE0IkRt0K47Uh26KEEIIIXKMAjUhhBAixxTq0ncNnTU6gHpr14IQ0lQsWHK8pjNnziAkJATJycnIzc1FTEwMxo0bx+XXdYl57dq1WLRoEU6fPg1HR8day1y6dAnvvfderXklJSVYuHAhoqOjUVpaChcXF2zevBmGhoZv1jBCXkE9akJIu/HixQtYW1tj06ZNtebn5uZKLGFhYeDxePD09ARQPUf462WmTZsGc3PzemdCCwoKwoEDB7Bz507Ex8cjJycHn3zyyVtpI1E8CtmjJoS0T25ubnBzc6sz38jISGJ93759cHR0RM+ePQEAampqEmXKy8uxb98+zJ07t87euFgshkAgwLZt2/DBBx8AAMLDw9GvXz8kJiZi6NChTW0WUXDUoyaEKKT8/HwcOnQIAQEBdZbZv38/njx5An9//zrLJCcno7y8HM7OzlyapaUlzMzMkJCQ0Kx1JoqJAjUhRCFFRESgY8eO9V6iFggEcHFxqXcwkry8PKipqUFXV1ci3dDQEHl5ec1VXaLA6NI3IUQhhYWFwdvbG+rqtT9Z+ujRIxw9ehQ7duxo4ZoRIol61IQQhXP27FmIRCJMmzatzjLh4eHQ19fHxx9/XO++jIyMUFZWhoKCAon0/Px8qXvihLwJCtSEEIUjEAhga2sLa2vrWvMZYwgPD8fUqVOhqqpa775sbW2hqqqKkydPcmkikQhZWVmwt7dv1noTxSRToPbz8wOPxwOPx4OqqioMDQ0xevRohIWFoaqqqtZtXFxcoKysjMuXLwMASktL0b9/f8yYMUOq7OLFi2Fubo6ioqJa9/Xxxx/DzMwM6urqMDY2xpQpU5CTkyNLEwgh7djz58+RkpKClJQUAEBGRgZSUlKQlZXFlSksLMTOnTvr7U3HxcUhIyOj1jLZ2dmwtLTEpUuXAAA6OjoICAjAggULcOrUKSQnJ8Pf3x/29vb0xDdpFjL3qF1dXZGbm4vMzEwcOXIEjo6OmD9/Pjw8PFBRUSFRNisrCxcuXEBgYCDCwsIAAHw+H5GRkRAKhTh69ChXNjExEevWrYNQKKxzgHpHR0fs2LEDIpEIu3fvxr179zBhwgRZm0AIaaeSkpJgY2MDGxsbAMCCBQtgY2OD5cuXc2Wio6PBGIOXl1ed+xEIBBg2bBgsLS2l8srLyyESiVBcXMylrVu3Dh4eHvD09MSIESNgZGSEPXv2NGPLiCLjMcZYw8Wq+fn5oaCgAHv37pVIj4uLg5OTE7Zu3SrxC3TlypW4ffs2goODMXToUOTm5kJDQ4PL27p1K65fvw51dXXY2NjAzc0NP//8c6Mrv3//fowbNw6lpaUNXp4Cqn9J6+joAP8FjUxGSDvw+shkbU3Nd5JYLKaJgkidmuUe9QcffABra2uJX5A193h8fHxgaWmJXr16YdeuXVz+0qVLYWRkhHnz5mHZsmXg8Xj4/vvvG33Mp0+fIioqCsOGDaszSJeWlqKwsFBiIYQQQtqSZns9y9LSEmlpadz6iRMnUFxcDBcXFwCAj48PBAIBpkyZUn1gFRVERkbC1tYWVVVVOH/+fJ2vSbzqq6++wsaNG1FcXIyhQ4fi4MGDdZZds2YNVq5cKZ3xgxgA/XolpC1r/LVAQtq2ZnvqmzEmMcReWFgYJk2aBBWV6t8CXl5eOH/+PO7du8eVsbKygqenJ0aPHl3vOLqvWrRoEa5evYpjx45BWVkZU6dORV1X75csWQKxWMwtDx8+bEILCSHy7syZMxgzZgxMTEzA4/GkbtPVPAz7+hISEiJR7tChQ7Czs4OGhgb09PQkJvZoyKxZs8Dj8bB+/fqmN4gQNGOP+tatWzA3NwdQfVk6JiYG5eXl2LJlC1emsrISYWFhWL169b8VUFHhgnljdO7cGZ07d0afPn3Qr18/mJqaIjExsdbXIPh8Pvh8fhNaRQhpS2om5fjPf/5T64hjubm5EutHjhxBQEAANykHAOzevRvTp0/H999/jw8++AAVFRW4fv16o44fExODxMREmJiYNK0hhLyiWQJ1XFwcrl27hqCgIABAVFQUunXrJvVr9tixYwgNDcWqVaugrKzc5OPWvBJWWlra5H0RQtq+pk7KUVFRgfnz5yMkJERiDHArK6sGj52dnY25c+fi6NGjcHd3f8MWECJN5kBdWlqKvLw8VFZWIj8/H7GxsVizZg08PDwwdepUANWvNkyYMAEDBgyQ2NbU1BRLlixBbGyszH/IFy9exOXLl+Hg4AA9PT3cu3cP33zzDSwsLGhQAUKIzGom5YiIiODSrly5guzsbCgpKcHGxgZ5eXkYOHAgQkJCpL7PXlVVVYUpU6Zg0aJF6N+/f0tUnygQme9Rx8bGwtjYGD169ICrqytOnTqFDRs2YN++fVBWVkZycjJSU1MlLiXV0NHRgZOTEwQCgcwV1dTUxJ49e+Dk5IS+ffsiICAA7777LuLj4+nyNiFEZrVNynH//n0AwIoVK7Bs2TIcPHgQenp6GDVqFJ4+fVrnvn788UeoqKhg3rx5b73eRAExBSIWixkABohZ9TOjtNBCS1tdGgKAxcTE1Jnft29fFhgYKJEWFRXFALDff/+dSyspKWGdO3dmv/32W637SUpKYoaGhiw7O5tL6969O1u3bl2Ddaz5ThKLxQ2WJYqLxvomhCicuiblMDY2BiB5T5rP56Nnz54Sw5C+vq/Hjx/DzMyMezj2wYMHWLhwIXr06PHW2kAUB01zSQhROHVNymFraws+nw+RSAQHBwcA1UOGZmZmonv37rXua8qUKXB2dpZIc3FxwZQpU+Dv7/92GkAUCgVqQki78fz5c6Snp3PrNZNydOrUCWZmZgD+nZQjNDRUanttbW3MmjULwcHBMDU1Rffu3bl3rD/99FOunKWlJdasWYPx48dDX18f+vr6EvtRVVWFkZER+vbt+zaaSRQMBWpCSLuRlJQER0dHbn3BggUAAF9fXwiFQgANT8oREhICFRUVTJkyBS9fvoSdnR3i4uKgp6fHlRGJRBCLxW+vIYS8QqZJOdo6blIO0BCihLR17eGbiyblII1BD5MRQgghckwhL32LxQD9eCWEENIWUI+aEEIIkWMUqAkhhBA5RoGaEEIIkWMUqAkhhBA5RoGaEEIIkWMUqAkhpA3h8Vp2kUenT58Gj8dDQUFBo7fp0aMH1q9f/9bq9DZRoCaEENJs/Pz8wOPxMGvWLKm8OXPmgMfjwc/Pr+Ur1kiPHj2CmppanfOPV1ZWYt26dXjnnXegrq4OPT09uLm54fz58xLlhEIhdHV1m6VOFKgJIYQ0K1NTU0RHR+Ply5dcWklJCbZt28aNuS6vhEIhJk6ciMLCQly8eFEijzGGyZMnY9WqVZg/fz5u3bqF06dPw9TUFKNGjcLevXvfSp0oUBNCCGlWgwYNgqmpKfbs2cOl7dmzB2ZmZrCxsZEoW1painnz5sHAwADq6upwcHDA5cuXJcocPnwYffr0gYaGBhwdHZGZmSl1zHPnzmH48OHQ0NCAqakp5s2bhxcvXshUb8YYwsPDMWXKFHz22WcQCAQS+Tt27MCuXbsQGRmJadOmwdzcHNbW1vjjjz/w8ccfY9q0aTIfszEUcmQynTU6gHpr14IQ0hQsWHKw7zNnziAkJATJycnIzc1FTEwMxo0bx+Xz6rjhunbtWixatIhbP3ToEFatWoW0tDSoq6tj5MiR9faUGGMIDg7G1q1bUVBQgPfffx9btmxB7969m9S+tu4///kPwsPD4e3tDQAICwuDv78/Tp8+LVFu8eLF2L17NyIiItC9e3esXbsWLi4uSE9PR6dOnfDw4UN88sknmDNnDmbMmIGkpCQsXLhQYh/37t2Dq6srvvvuO4SFheHvv/9GYGAgAgMDER4e3ug6nzp1CsXFxXB2dkbXrl0xbNgwrFu3Dh06dAAAbNu2DX369MGYMWOktl24cCH27NmD48ePS/zdNQfqURNC2oUXL17A2toamzZtqjU/NzdXYgkLCwOPx4OnpydXZvfu3dw80qmpqTh//jw+++yzeo+7du1abNiwAb/99hsuXryIDh06wMXFBSUlJc3avrbGx8cH586dw4MHD/DgwQOcP38ePj4+EmVevHiBLVu2ICQkBG5ubrCyssLWrVuhoaHB9Wa3bNkCCwsLhIaGom/fvvD29pa6x71mzRp4e3vjiy++QO/evTFs2DBs2LABkZGRMv0/CAQCTJ48GcrKyhgwYAB69uyJnTt3cvl37txBv379at22Jv3OnTuNPl5jKWSPmhDS/ri5ucHNza3OfCMjI4n1ffv2wdHRET179gQAVFRUYP78+QgJCUFAQABXzsrKqs59Msawfv16LFu2DGPHjgUAREZGwtDQEHv37sXkyZOb0qQ2rUuXLnB3d4dQKARjDO7u7ujcubNEmXv37qG8vBzvv/8+l6aqqoohQ4bg1q1bAIBbt27Bzs5OYjt7e3uJ9dTUVKSlpSEqKopLY4yhqqoKGRkZdQbXVxUUFGDPnj04d+4cl+bj4wOBQCDxw6ChCSfV1NQaPJasKFATQhROfn4+Dh06hIiICC7typUryM7OhpKSEmxsbJCXl4eBAwciJCSkzieAMzIykJeXB2dnZy5NR0cHdnZ2SEhIUOhADVRf/g4MDASAOq90NIfnz59j5syZmDdvnlReYx9e27ZtG0pKSiR+FNQE+zt37qBPnz7o3bs39wPidTXpffr0eYMW1I8ufRNCFE5ERAQ6duyITz75hEu7f/8+AGDFihVYtmwZDh48CD09PYwaNQpPnz6tdT95eXkAAENDQ4l0Q0NDLk+Rubq6oqysDOXl5XBxcZHKt7CwgJqamsSrTeXl5bh8+TJ3JaNfv364dOmSxHaJiYkS64MGDcLNmzfRq1cvqaWxPVyBQICFCxciJSWFW1JTUzF8+HCEhYUBALy8vHD37l0cOHBAavvQ0FCYmJhg9OjRjTqeLChQE0IUTlhYGLy9vaGu/u9TpVVVVQCApUuXwtPTE7a2tggPDwePx5O4T0kaT1lZGbdu3cLNmzehrKwsld+hQwfMnj0bixYtQmxsLG7evInp06ejuLiYu/0wa9Ys3L17F4sWLYJIJMK2bdsgFAol9vPVV1/hwoULCAwMREpKCu7evYt9+/ZxvfmGpKSk4MqVK5g2bRoGDBggsXh5eSEiIgIVFRWYPHkyxo0bB19fXwgEAmRmZiItLQ0zZ87EwYMH8eeff0JVVbXJ5+11FKgJIQrl7NmzEIlEmDZtmkS6sbExAMl70nw+Hz179kRWVlat+6q5752fny+Rnp+fL3VPvLkw1rJLU2lra0NbW7vO/B9++AGenp6YMmUKBg0ahPT0dBw9ehR6enoAqi9d7969G3v37oW1tTV+++03fP/99xL7ePfddxEfH487d+5g+PDhsLGxwfLly2FiYtKoOgoEAlhZWcHS0lIqb/z48Xj8+DEOHz7M/Wj7+uuvsW7dOvTt2xfW1tbYtWsXrl69CkdHRxnOTOPxWEN3xtuRwsJC6OjoAP8FvZ5FSBv3+utZr+LxeFKvZ9Xw8/PD9evXkZSUJJFeWFgIAwMDbNq0ievNlZeXo1u3bvj2228xY8YM6TowBhMTE3z55ZfcK0M1+xEKhQ3eo675ThKLxfUGMyK/rly5AmdnZwQEBCAkJOStHEOmHnXN0HA8Hg+qqqowNDTE6NGjERYWxl02ep2LiwuUlZW5F9hLS0vRv3//Wv/oFy9eDHNzcxQVFUnlZWZmIiAgAObm5tDQ0ICFhQWCg4NRVlYmSxMIIe3U8+fPuXuLQPWDXikpKRK94cLCQuzcuVOqNw1U9/xmzZqF4OBgHDt2DCKRCLNnzwYAfPrpp1w5S0tLxMTEAKj+QfDFF1/gu+++w/79+3Ht2jVMnToVJiYmzf4uLZFPgwYNwsmTJ9GhQwfcu3fvrRxD5qe+XV1dER4ejsrKSuTn5yM2Nhbz58/Hrl27sH//fqio/LvLrKws7r5BWFgY3nvvPfD5fERGRsLe3h6enp7cAwaJiYlYt24dTpw4gY4dO0od9/bt26iqqsLvv/+OXr164fr165g+fTpevHiBn376qQmngBDSHiQlJUlcelywYAEAwNfXl7unGR0dDcYYvLy8at1HSEgIVFRUMGXKFLx8+RJ2dnaIi4vjLsMCgEgkglgs5tYXL16MFy9eYMaMGSgoKICDgwNiY2Ml7n+T9s3GxkZqxLXmJNOlbz8/PxQUFEiN0hMXFwcnJyds3bpV4pfqypUrcfv2bQQHB2Po0KHIzc2FhoYGl7d161Zcv34d6urqsLGxgZubG37++edGVz4kJARbtmzhntZsCF36JqT9qO/Sd1tBl75JYzTLw2QffPABrK2tJcZ1rRkz1cfHB5aWlujVqxd27drF5S9duhRGRkaYN28eli1bBh6PJ/WAQEPEYjE6derUHE0ghBBC5FKzDXhiaWmJtLQ0bv3EiRMoLi7mLm3XjPAyZcqU6gOrqCAyMhK2traoqqrC+fPnZbpUlJ6ejl9//bXey96lpaUoLS3l1gsLC2VtFiGEENK6mAx8fX3Z2LFja82bOHEis7Ky4tYnT57MAgMDufW8vDymoqLC0tPTJbbz9vZm7u7uslSDPXr0iFlYWLCAgIB6ywUHBzMAtSziFn7BgRZaaGnO5XXx8fHMw8ODGRsbMwAsJiZGIr/27wGwtWvXcmW6d+8ulb9mzZpGfSdVVVUxV1fXWo9dH7FYzAAwsVjc6G2I4mm296hv3boFc3NzAMDTp08RExODzZs3Q0VFBSoqKujatSsqKiq4EV5q1OQ3Vk5ODhwdHTFs2DD88ccf9ZZdsmQJxGIxtzx8+FD2hhFC5F5zTMgBAKtWrZIoN3fu3EYdf/369XXOzkVIUzXLpe+4uDhcu3YNQUFBAICoqCh069ZN6qGzY8eOITQ0FKtWrap1lJqGZGdnw9HRkRsxSEmp/t8ZfD4ffD5f5uMQQtqWpk7IUaNjx44yD1SSkpKC0NBQJCUlcYOmENKcZO5Rl5aWIi8vD9nZ2bhy5Qq+//57jB07Fh4eHpg6dSqA6lFeJkyYIDUUW0BAAP755x/ExsbKXNHs7GyMGjUKZmZm+Omnn/D3338jLy+PxtMlhMikZkKOV2fIqvHDDz9AX18fNjY2CAkJQUVFRb37Ki4uxmeffYZNmza9tZHICJG5Rx0bGwtjY2OoqKhAT08P1tbW2LBhA3x9faGkpITk5GSkpqZi69atUtvq6OjAyckJAoEA7u7uMh33+PHjSE9PR3p6Orp16yaRxxiTtRmEEAVV24QcADBv3jwMGjQInTp1woULF7BkyRLk5ubW+8poUFAQhg0bxk1x2RJ4K1v2EvubvgaXkJAABwcHuLq64tChQxJ5mZmZ3K1SAOjUqRNsbW3x448/cu8jjxo1CgMHDsT69evrPc7Lly/RtWtXKCkpITs7u9arqBEREdi4cSNu3LgBZWVlDBo0CIsWLYKHhwdX5vTp03B0dMSzZ8+gq6v7Rm1+W2QK1EKhUGow9NfZ2trWGzgPHz4stc/G8PPzk5osnBBCZFXbhBzAvwOkANVjR6upqWHmzJlYs2ZNrV/++/fvR1xcHK5evfrW69wWCQQCzJ07FwKBADk5ObWOu33ixAn0798fjx49wrx58+Dm5obbt2/LFCh3796N/v37gzGGvXv3YtKkSRL5X375JTZu3IjvvvsO48aNQ3l5Of7880+MHTsWv/zyS6Mn7mhNNCkHIURh1DUhR23s7OxQUVGBzMzMWvPj4uJw79496OrqSjwU6+npiVGjRjVjrdue58+fY/v27Zg9ezbc3d3r7JDp6+vDyMgIgwcPxk8//YT8/HxcvHhRpmMJBAL4+PhwrwC/KjExEaGhoQgJCcGXX36JXr16oV+/fli9ejW++OILLFiwoE08ZEyBmhCiMAQCAWxtbWFtbd1g2ZSUFCgpKcHAwKDW/P/+979IS0uTmL8YANatW4fw8PDmrHabs2PHDlhaWqJv377w8fFBWFhYg7coa0atlGX+hnv37iEhIQETJ07ExIkTcfbsWTx48IDL/+uvv6ClpYWZM2dKbbtw4UKUl5dj9+7djT5ea6FATQhp85o6IUdCQgLWr1+P1NRU3L9/H1FRUQgKCoKPjw83znd2djYsLS1x6dIlANVPkr/+wCxQPS3jq/dfFVFNLxeonh9CLBYjPj6+zvIFBQX49ttvoaWlhSFDhjT6OGFhYXBzc4Oenh46deoEFxcXiR9Jd+7cgYWFBdTU1KS2NTExgba2Nu7cuSNDy1oHBWpCSJuXlJQkMTHCggULuDmJa9Q3IQefz0d0dDRGjhyJ/v37Y/Xq1QgKCpIYq6G8vBwikQjFxcVvv0FtmEgkwqVLl7jzrKKigkmTJkldlgaAYcOGQUtLC3p6ekhNTcX27dthaGjYqONUVlYiIiKC+0EAVI+AKRQKJWZzbKgnX1sQlzfNNoQoIYS0llGjRjX4hTxjxoxap9cFqqcqTExMrHf7Hj16NHgMegOlujddUVEh8fAYYwx8Ph8bN26snhjpf7Zv3w4rKyvo6+vL/KT10aNHkZ2dLfXwWGVlJU6ePInRo0ejd+/eOHfuHMrKyqQCck5ODgoLC9GnTx/ZG9nCqEdNCCGkWVRUVCAyMhKhoaES9+5TU1NhYmKCv/76S6K8qakpLCws3uh1KIFAgMmTJ0scJyUlBZMnT+Z6715eXnj+/Dl+//13qe1/+uknqKurSwV6eaSQPWqxGKAZ5QghpHkdPHgQz549Q0BAgETPGah+Gl4gEGDWrFlNPs7ff/+NAwcOYP/+/dyzATWmTp2K8ePH4+nTp7C3t8f8+fOxaNEilJWVSbyetWHDBgiFQujr6ze5Pm8b9agJIYQ0C4FAAGdnZ6kgDVQH6qSkJIlZFt9UZGQkOnToACcnJ6k8JycnaGho4M8//wRQPQ775s2b8ddff2HAgAHo168fQkJCEBcXJ3F/W57xmALdVKFJ2gkh8oS+k1peZmYmRo4cCXt7e0RFRb3RvBMtjXrUhBBCFEaPHj1w+vRpWFpacq/zyTvqURNCSCuh7yTSGNSjJoQQQuQYBWpCCCFEjlGgJoQQQuQYBWpCCCFEjlGgJoQQQuSYQo5MprNGB1BvuBwhRL6xYIV5aYUoMOpRE0LajTNnzmDMmDEwMTEBj8fD3r17JfJ5PF6tS0hICADg9OnTdZa5fPlyncctKSnBnDlzoK+vDy0tLXh6eiI/P/9tNpUoEArUhJB248WLF7C2tsamTZtqzc/NzZVYwsLCwOPx4OnpCaB62sXXy0ybNg3m5uYYPHhwnccNCgrCgQMHsHPnTsTHxyMnJweffPLJW2kjUTwKeembENI+ubm5wc3Nrc58IyMjifV9+/bB0dERPXv2BFA9N/GrZcrLy7Fv3z7MnTsXPB6v1n2KxWIIBAJs27YNH3zwAQAgPDwc/fr1Q2JiIoYOHdrUZhEFRz1qQohCys/Px6FDhxAQEFBnmf379+PJkyfw9/evs0xycjLKy8vh7OzMpVlaWsLMzAwJCQnNWmeimChQE0IUUkREBDp27FjvJWqBQAAXFxd069atzjJ5eXlQU1OTmlPZ0NAQeXl5zVVdosDo0jchRCGFhYXB29sb6uq1vwLy6NEjHD16FDt27GjhmhEiiXrUhBCFc/bsWYhEIkybNq3OMuHh4dDX18fHH39c776MjIxQVlaGgoICifT8/Hype+KEvAmZArWfnx/3qoKqqioMDQ0xevRohIWFoaqqqtZtXFxcoKyszL3aUFpaiv79+2PGjBlSZRcvXgxzc3MUFRXVuq/Vq1dj2LBh0NTUlLrMRAghjSUQCGBrawtra+ta8xljCA8Px9SpU6GqqlrvvmxtbaGqqoqTJ09yaSKRCFlZWbC3t2/WehPFJHOP2tXVFbm5ucjMzMSRI0fg6OiI+fPnw8PDAxUVFRJls7KycOHCBQQGBiIsLAwAwOfzERkZCaFQiKNHj3JlExMTsW7dOgiFQnTs2LHWY5eVleHTTz/F7NmzZa02IUQBPH/+HCkpKdw8wxkZGUhJSUFWVhZXprCwEDt37qy3Nx0XF4eMjIxay2RnZ8PS0hKXLl0CAOjo6CAgIAALFizAqVOnkJycDH9/f9jb29MT36RZyHyPms/nc5dzunbtikGDBmHo0KFwcnKCUCiU+MMODw+Hh4cHZs+ejaFDh+Lnn3+GhoYGbG1tsXTpUgQEBOD69etQV1eHv78/5s6di5EjR9Z57JUrVwIAhEKhrNUmhCiApKQkODo6cusLFiwAAPj6+nLfG9HR0WCMwcvLq879CAQCDBs2DJaWllJ55eXlEIlEKC4u5tLWrVsHJSUleHp6orS0FC4uLti8eXMztYooOh5jrNFj8Pn5+aGgoEBqtB8AGDhwIExMTHD48GEA1ZeOzM3NsWnTJri7u2Pw4MGYP38+pkyZAgCoqKjA0KFDYWVlBQMDAxw+fBhXrlyp88GOVwmFQnzxxRdS94QaUjNJO/4LGkKUkHagrQ8hWvOdJBaLoa2t3drVIXKq2Z76trS0RFpaGrd+4sQJFBcXw8XFBQDg4+MDgUDABWoVFRVERkbC1tYWVVVVOH/+fKOCtCxKS0tRWlrKrRcWFjbr/gkhhJC3jsnA19eXjR07tta8iRMnMisrK2598uTJLDAwkFvPy8tjKioqLD09XWI7b29v5u7uLks1WHh4ONPR0WmwXHBwMANQyyJmAKOFFlra4PK6+Ph45uHhwYyNjRkAFhMTI5Ff+3cA2Nq1a6X2VVJSwqytrRkAdvXq1Xq/X0aOHCm1z5kzZzb4vfQqsVjMADCxWCzTdkSxNNvrWbdu3YK5uTkA4OnTp4iJicHmzZuhoqICFRUVdO3aFRUVFdxDZTVq8t+GJUuWQCwWc8vDhw/fynEIIa2nqeN7v2rx4sUwMTFp9LGnT58use+1a9e+cTsIqUuzRMi4uDhcu3YNQUFBAICoqCh069ZN6l72sWPHEBoailWrVkFZWbk5Dl0vPp8PPp//1o9DCGk9TR3fu8aRI0dw7Ngx7N69G0eOHGnUsTU1NeldafLWyRyoS0tLkZeXh8rKSuTn5yM2NhZr1qyBh4cHpk6dCqD6ickJEyZgwIABEtuamppiyZIliI2Nhbu7u8yVzcrKwtOnT5GVlYXKykruFYxevXpBS0tL5v0RQhRLzfjeERERUunTp0/H3r17oamp2ej9RUVF4c8//4SRkRHGjBmDb775RqbtCWkMmQN1bGwsjI2NoaKiAj09PVhbW2PDhg3w9fWFkpISkpOTkZqaiq1bt0ptq6OjAycnJwgEgjcK1MuXL5f4gNnY2AAATp06hVGjRsm8P0KIYqltfG/GGPz8/DBr1iwMHjwYmZmZjdrXZ599hu7du8PExARpaWn46quvIBKJsGfPnrdUe6KoZHo9q63jXs+CGAC9CkFIW1TfNxaPx0NMTAzGjRtXa76lpSVGjx6NX3/9lUvbsGEDduzYgfj4eCgrKyMzMxPm5ua4evUqBg4c2Oh6xcXFwcnJCenp6bCwsGjUNvR6FmkMGuubEKIQ6hrfOy4uDgkJCeDz+VBRUUGvXr0AAIMHD4avr2+j929nZwcASE9Pb75KEwKaPYsQoiDqGt97w4YN+O6777j1nJwcuLi4YPv27VzwbYyaZ2aMjY2bpb6E1KBATQhp054/fy7Ri60Z37tTp04wMzMD8O/43qGhoVLb15SpUfNgqoWFBTcPdXZ2NpycnBAZGYkhQ4bg3r172LZtGz766CPo6+sjLS0NQUFBGDFiBN5999231VSioChQE0LatOYa37s+r4/vraamhhMnTmD9+vV48eIFTE1N4enpiWXLljWtMYTUgh4mI4S0Ke3pG4seJiONQQ+TEUIIIXJMIS99i8UA/XglhBDSFlCPmhBCCJFjFKgJIYQQOUaBmhBCCJFjCnWPuuYB98LCwlauCSGE/PtdpEAv35A3oFCB+smTJwCqZ/EihBB5UVRU9L9XRwmRplCBulOnTgCqp8ukD0W1wsJCmJqa4uHDh/Qe5//QOZFG50Rac5wTxhiKiopgYmLSzLUj7YlCBWolpepb8jo6OvRl8xptbW06J6+hcyKNzom0pp4T6jSQhtDDZIQQQogco0BNCCGEyDGFCtR8Ph/BwcHg8/mtXRW5QedEGp0TaXROpNE5IS1FoSblIIQQQtoahepRE0IIIW0NBWpCCCFEjlGgJoQQQuSYQgXqTZs2oUePHlBXV4ednR0uXbrU2lVqEStWrACPx5NYLC0tufySkhLMmTMH+vr60NLSgqenJ/Lz81uxxs3vzJkzGDNmDExMTMDj8bB3716JfMYYli9fDmNjY2hoaMDZ2Rl3796VKPP06VN4e3tDW1sburq6CAgIwPPnz1uwFc2roXPi5+cn9Xfj6uoqUaa9nZM1a9bgvffeQ8eOHWFgYIBx48ZBJBJJlGnM5yUrKwvu7u7Q1NSEgYEBFi1ahIqKipZsCmlHFCZQb9++HQsWLEBwcDCuXLkCa2truLi44PHjx61dtRbRv39/5Obmcsu5c+e4vKCgIBw4cAA7d+5EfHw8cnJy8Mknn7RibZvfixcvYG1tjU2bNtWav3btWmzYsAG//fYbLl68iA4dOsDFxQUlJSVcGW9vb9y4cQPHjx/HwYMHcebMGcyYMaOlmtDsGjonAODq6irxd/PXX39J5Le3cxIfH485c+YgMTERx48fR3l5OT788EO8ePGCK9PQ56WyshLu7u4oKyvDhQsXEBERAaFQiOXLl7dGk0h7wBTEkCFD2Jw5c7j1yspKZmJiwtasWdOKtWoZwcHBzNrauta8goICpqqqynbu3Mml3bp1iwFgCQkJLVTDlgWAxcTEcOtVVVXMyMiIhYSEcGkFBQWMz+ezv/76izHG2M2bNxkAdvnyZa7MkSNHGI/HY9nZ2S1W97fl9XPCGGO+vr5s7NixdW7T3s8JY4w9fvyYAWDx8fGMscZ9Xg4fPsyUlJRYXl4eV2bLli1MW1ublZaWtmwDSLugED3qsrIyJCcnw9nZmUtTUlKCs7MzEhISWrFmLefu3bswMTFBz5494e3tjaysLABAcnIyysvLJc6NpaUlzMzMFObcZGRkIC8vT+Ic6OjowM7OjjsHCQkJ0NXVxeDBg7kyzs7OUFJSwsWLF1u8zi3l9OnTMDAwQN++fTF79mxuYhtAMc6JWCwG8O88AY35vCQkJOCdd96BoaEhV8bFxQWFhYW4ceNGC9aetBcKEaj/+ecfVFZWSnxwAMDQ0BB5eXmtVKuWY2dnB6FQiNjYWGzZsgUZGRkYPnw4ioqKkJeXBzU1Nejq6kpsoyjnBgDXzvr+PvLy8mBgYCCRr6Kigk6dOrXb8+Tq6orIyEicPHkSP/74I+Lj4+Hm5obKykoA7f+cVFVV4YsvvsD777+PAQMGAECjPi95eXm1/i3V5BEiK4WalENRubm5cf9+9913YWdnh+7du2PHjh3Q0NBoxZoReTZ58mTu3++88w7effddWFhY4PTp03BycmrFmrWMOXPm4Pr16xLPcxDSGhSiR925c2coKytLPZmZn58PIyOjVqpV69HV1UWfPn2Qnp4OIyMjlJWVoaCgQKKMIp2bmnbW9/dhZGQk9eBhRUUFnj59qjDnqWfPnujcuTPS09MBtO9zEhgYiIMHD+LUqVPo1q0bl96Yz4uRkVGtf0s1eYTISiECtZqaGmxtbXHy5EkuraqqCidPnoS9vX0r1qx1PH/+HPfu3YOxsTFsbW2hqqoqcW5EIhGysrIU5tyYm5vDyMhI4hwUFhbi4sWL3Dmwt7dHQUEBkpOTuTJxcXGoqqqCnZ1di9e5NTx69AhPnjyBsbExgPZ5ThhjCAwMRExMDOLi4mBubi6R35jPi729Pa5duybxI+b48ePQ1taGlZVVyzSEtC+t/TRbS4mOjmZ8Pp8JhUJ28+ZNNmPGDKarqyvxZGZ7tXDhQnb69GmWkZHBzp8/z5ydnVnnzp3Z48ePGWOMzZo1i5mZmbG4uDiWlJTE7O3tmb29fSvXunkVFRWxq1evsqtXrzIA7Oeff2ZXr15lDx48YIwx9sMPPzBdXV22b98+lpaWxsaOHcvMzc3Zy5cvuX24uroyGxsbdvHiRXbu3DnWu3dv5uXl1VpNarL6zklRURH78ssvWUJCAsvIyGAnTpxggwYNYr1792YlJSXcPtrbOZk9ezbT0dFhp0+fZrm5udxSXFzMlWno81JRUcEGDBjAPvzwQ5aSksJiY2NZly5d2JIlS1qjSaQdUJhAzRhjv/76KzMzM2NqampsyJAhLDExsbWr1CImTZrEjI2NmZqaGuvatSubNGkSS09P5/JfvnzJPv/8c6anp8c0NTXZ+PHjWW5ubivWuPmdOnWKAZBafH19GWPVr2h98803zNDQkPH5fObk5MREIpHEPp48ecK8vLyYlpYW09bWZv7+/qyoqKgVWtM86jsnxcXF7MMPP2RdunRhqqqqrHv37mz69OlSP2zb2zmp7XwAYOHh4VyZxnxeMjMzmZubG9PQ0GCdO3dmCxcuZOXl5S3cGtJe0OxZhBBCiBxTiHvUhBBCSFtFgZoQQgiRYxSoCSGEEDlGgZoQQgiRYxSoCSGEEDlGgZoQQgiRYxSoCSGEEDlGgZoQQgiRYxSoCSGEEDlGgZqQWiQkJEBZWRnu7u5SeS9fvkRwcDD69OkDPp+Pzp0749NPP8WNGzckyq1YsQIDBw5soRoTQtorCtSE1EIgEGDu3Lk4c+YMcnJyuPTS0lI4OzsjLCwM3333He7cuYPDhw+joqICdnZ2SExMbMVaE0LaI5XWrgAh8ub58+fYvn07kpKSkJeXB6FQiK+//hoAsH79eiQkJODq1auwtrYGAHTv3h27d++GnZ0dAgICcP36dfB4vNZsAiGkHaEeNSGv2bFjBywtLdG3b1/4+PggLCwMNXPXbNu2DaNHj+aCdA0lJSUEBQXh5s2bSE1NbY1qE0LaKQrUhLxGIBDAx8cHAODq6gqxWIz4+HgAwJ07d9CvX79at6tJv3PnTstUlBCiEChQE/IKkUiES5cuwcvLCwCgoqKCSZMmQSAQcGUamhlWTU3trdaREKJY6B41Ia8QCASoqKiAiYkJl8YYA5/Px8aNG9G7d2/cunWr1m1r0vv06dMidSWEKAbqURPyPxUVFYiMjERoaChSUlK4JTU1FSYmJvjrr7/g5eWFEydOSN2Hrqqqwrp16zB48GBYWVm1UgsIIe0R9agJ+Z+DBw/i2bNnCAgIgI6OjkSep6cnBAIBzp49i3379mHMmDEIDQ2FnZ0d8vPz8f333+Pu3bu4cOFCK9WeENJeUY+akP8RCARwdnaWCtJAdaBOSkrCnTt3cPLkSUydOhVLliyBhYUFhgwZguvXr+P69evUmyaENDsea+jJGEJIvY4cOYLx48fjp59+QmBgYGtXhxDSzlCPmpAmcnNzw5EjR/D06VP8888/rV0dQkg7Qz1qQgghRI5Rj5oQQgiRYxSoCSGEEDlGgZoQQgiRYxSoCSGEEDlGgZoQQgiRYxSoCSGEEDlGgZoQQgiRYxSoCSGEEDlGgZoQQgiRYxSoCSGEEDn2/z2UK4TRfzPdAAAAAElFTkSuQmCC"></div>`)[0];
|
139 |
+
popup_0baf097a03f16cda6bcec6973beb4d7e.setContent(html_7a3296080251cbbfd4b2ec8815f1ae4e);
|
140 |
+
|
141 |
+
|
142 |
+
|
143 |
+
marker_38b108b3eb17f246af1847ce3fde7155.bindPopup(popup_0baf097a03f16cda6bcec6973beb4d7e)
|
144 |
+
;
|
145 |
+
|
146 |
+
|
147 |
+
|
148 |
+
|
149 |
+
var marker_408f797d9baf56a8137906ff78f3eff5 = L.marker(
|
150 |
+
[21.22050672027795, 72.83355967457062],
|
151 |
+
{}
|
152 |
+
).addTo(map_2c2025c360c3ed95ce6339b20a693bdd);
|
153 |
+
|
154 |
+
|
155 |
+
var icon_331cf9c1763cef84374ab13767deef94 = L.AwesomeMarkers.icon(
|
156 |
+
{"extraClasses": "fa-rotate-0", "icon": "info-sign", "iconColor": "white", "markerColor": "red", "prefix": "glyphicon"}
|
157 |
+
);
|
158 |
+
marker_408f797d9baf56a8137906ff78f3eff5.setIcon(icon_331cf9c1763cef84374ab13767deef94);
|
159 |
+
|
160 |
+
|
161 |
+
var popup_3e38d54f4f14f205f64d254fc7ff5ec2 = L.popup({"maxWidth": 500});
|
162 |
+
|
163 |
+
|
164 |
+
|
165 |
+
var html_19ea0d1ccb60191cfa575a17ae6bc14a = $(`<div id="html_19ea0d1ccb60191cfa575a17ae6bc14a" style="width: 100.0%; height: 100.0%;"><img src="data:image/png;base64,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"></div>`)[0];
|
166 |
+
popup_3e38d54f4f14f205f64d254fc7ff5ec2.setContent(html_19ea0d1ccb60191cfa575a17ae6bc14a);
|
167 |
+
|
168 |
+
|
169 |
+
|
170 |
+
marker_408f797d9baf56a8137906ff78f3eff5.bindPopup(popup_3e38d54f4f14f205f64d254fc7ff5ec2)
|
171 |
+
;
|
172 |
+
|
173 |
+
|
174 |
+
|
175 |
+
|
176 |
+
var marker_93a2124fa21d15be6000355f1e3d3307 = L.marker(
|
177 |
+
[21.236796371788703, 72.8665479925569],
|
178 |
+
{}
|
179 |
+
).addTo(map_2c2025c360c3ed95ce6339b20a693bdd);
|
180 |
+
|
181 |
+
|
182 |
+
var icon_2a83ba72c46f59895db0b7de760b0a07 = L.AwesomeMarkers.icon(
|
183 |
+
{"extraClasses": "fa-rotate-0", "icon": "info-sign", "iconColor": "white", "markerColor": "red", "prefix": "glyphicon"}
|
184 |
+
);
|
185 |
+
marker_93a2124fa21d15be6000355f1e3d3307.setIcon(icon_2a83ba72c46f59895db0b7de760b0a07);
|
186 |
+
|
187 |
+
|
188 |
+
var popup_0f78979bbd5a3a2c30a209b0b346f20b = L.popup({"maxWidth": 500});
|
189 |
+
|
190 |
+
|
191 |
+
|
192 |
+
var html_7a8f516c8442020b7cbc117f95c0b7b6 = $(`<div id="html_7a8f516c8442020b7cbc117f95c0b7b6" style="width: 100.0%; height: 100.0%;"><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAeoAAAC+CAYAAAD6BUxvAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAAA7uUlEQVR4nO3dd1gU1/oH8O/SliZF6YqCqBAkImLEgoWAAgEjVuSKgldFvRKNGkyMicRcjcYSjd3rs7DwC4qiIlZsWBFUUFAMgiAEC2AsLE36+f3BZa7rorLSFnk/zzPP45xzZs4547LvzsyZMzzGGAMhhBBCZJJcazeAEEIIIW9HgZoQQgiRYRSoCSGEEBlGgZoQQgiRYRSoCSGEEBlGgZoQQgiRYRSoCSGEEBlGgZoQQgiRYRSoCSGEEBlGgZqQNm7EiBEYMWJEazeDENJMKFCTRtm+fTt4PB7s7OzeWS4nJwdz5syBiYkJ+Hw+9PT0MHbsWFy9elWi7IULF8Dj8XDgwIEGtaGwsBArVqyAtbU11NXVoaKiAisrK3z77bd48uTJB/WLEEJkhUJrN4C0bWFhYTAxMcH169eRkZGBHj16SJSJjY3FF198AQCYOXMmLC0tkZeXB6FQCHt7e2zbtg1z5879oPofPHgAJycn5OTkYOLEifDz84OSkhJu374NgUCAyMhIpKenN6qPsu706dOt3QRCSHNihHygBw8eMADs0KFDTFdXl/30008SZV68eMEMDAyYvr4+y8jIEMsrLS1lQ4cOZfLy8iwuLo5LP3/+PAPAIiIi3ll/ZWUls7a2Zqqqquzy5csS+SKRiH3//fcf2DvZV1JS0tpNIIS0ALr0TT5YWFgYtLW14ebmhgkTJiAsLEyizK5du5CXl4d169bBzMxMLE9FRQUhISEAgJ9//lnq+g8ePIjk5GQsW7YM9vb2EvkaGhpYtWqVWFpERARsbW2hoqICHR0deHt74/Hjx2JlfH19oa6ujpycHLi7u0NdXR2dO3fGtm3bAAB37tzB559/DjU1NXTr1g179uwR214oFILH4+HSpUuYPXs2OnXqBA0NDUybNg0vX74UKxsVFQU3NzcYGRmBz+fDzMwM//73v1FdXS1WbsSIEbCyskJiYiKGDRsGVVVVfP/991zem/eot2zZgt69e0NVVRXa2tro37+/RDtv3boFV1dXaGhoQF1dHY6OjoiPj6+3L7GxsVi0aBF0dXWhpqaGsWPH4u+//67vv4UQ0sQoUJMPFhYWhnHjxkFJSQleXl64f/8+bty4IVbm6NGjUFZWxqRJk+rdh6mpKezt7XH27FmUlZVJVf+RI0cAAFOnTm1QeaFQiEmTJkFeXh6rV6/GrFmzcOjQIdjb26OgoECsbHV1NVxdXWFsbIy1a9fCxMQE/v7+EAqFcHFxQf/+/fHrr7+iQ4cOmDZtGrKysiTq8/f3R2pqKn766SdMmzYNYWFh8PDwAHvtzbJCoRDq6upYtGgRfv/9d9ja2mL58uX47rvvJPb3/PlzuLq6om/fvti0aRMcHBzq7efu3bsxf/58WFpaYtOmTVixYgX69u2La9eucWXu3r2LoUOHIjk5GUuWLMGPP/6IrKwsjBgxQqxcna+++grJyckIDAzE3LlzcfToUfj7+zfouBNCGqm1T+lJ25SQkMAAsDNnzjDGGKupqWFdunRhCxYsECunpaXFrK2t37mv+fPnMwDs9u3bjLGGX/q2sbFhmpqaDWpvRUUF09PTY1ZWVuzVq1dc+rFjxxgAtnz5ci7Nx8eHAWC//PILl/by5UumoqLCeDweCw8P59Lv3bvHALDAwEAuLTg4mAFgtra2rKKigktfu3YtA8CioqK4tNLSUom2zp49m6mqqrKysjIubfjw4QwA27lzp0T54cOHs+HDh3PrY8aMYb17937n8fDw8GBKSkosMzOTS3vy5Anr0KEDGzZsmERfnJycWE1NDZe+cOFCJi8vzwoKCt5ZDyGk8eiMmnyQsLAw6Ovrc2d1PB4Pnp6eCA8PF7tsW1RUhA4dOrxzX3X5RUVFUrWhsLDwvfuuk5CQgKdPn+Jf//oXlJWVuXQ3NzdYWFjg+PHjEtvMnDmT+7eWlhbMzc2hpqYmdnXA3NwcWlpaePDggcT2fn5+UFRU5Nbnzp0LBQUFnDhxgktTUVHh/l1UVIRnz55h6NChKC0txb1798T2x+fzMX369Pf2VUtLC48ePZK4ulGnuroap0+fhoeHB7p3786lGxoa4h//+AeuXLmCwsJCib7weDxufejQoaiursZff/313vYQQhqHAjWRWnV1NcLDw+Hg4ICsrCxkZGQgIyMDdnZ2yM/Px7lz57iyHTp0eG8ArsvX09OTqh0aGhoNDu51AcXc3Fwiz8LCQiLgKCsrQ1dXVyxNU1MTXbp0EQtYdelv3nsGgJ49e4qtq6urw9DQENnZ2Vza3bt3MXbsWGhqakJDQwO6urrw9vYGAIhEIrHtO3fuDCUlpff0FPj222+hrq6OAQMGoGfPnpg3bx5iY2O5/L///hulpaX1HotPPvkENTU1ePjwoVh6165dxda1tbUBoN5+E0KaFgVqIrWYmBjk5uYiPDwcPXv25Ja6M83XB5VZWloiLS0N5eXlb93f7du3oaSkhM6dO0vVDgsLC4hEIomg0hTk5eWlSmev3XduqIKCAgwfPhzJycn4+eefcfToUZw5cwa//vorAKCmpkas/Otn3+/yySefIC0tDeHh4bC3t8fBgwdhb2+PwMBAqdtYpyn7TQiRDgVqIrWwsDDo6ekhIiJCYvHy8kJkZCRevXoFABg9ejTKysoQERFR776ys7Nx+fJluLu7NzgQ1Rk9ejQA4I8//nhv2W7dugEA0tLSJPLS0tK4/KZ0//59sfXi4mLk5ubCxMQEQO3ELs+fP4dQKMSCBQvg7u4OJycn7my1MdTU1ODp6Yng4GDk5OTAzc0Nq1atQllZGXR1daGqqlrvsbh37x7k5ORgbGzc6DYQQpoGBWoilVevXuHQoUNwd3fHhAkTJBZ/f38UFRVxI7Jnz54NAwMDBAQESNzHLSsrw/Tp08Hj8bBkyRKp2zJhwgR8+umnWLVqFeLi4iTyi4qKsGzZMgBA//79oaenh507d4qd3Z88eRKpqalwc3OTuv73+c9//oPKykpufceOHaiqqoKrqyuA/52lvn5WWlFRge3btzeq3ufPn4utKykpwdLSEowxVFZWQl5eHqNGjUJUVJTYZfj8/Hzs2bMH9vb20NDQaFQbCCFNh2YmI1I5cuQIioqK8OWXX9abP3DgQOjq6iIsLAyenp7Q1tbGgQMH8MUXX6Bfv34SM5M9ePAAW7dufe8UpPVRVFTEoUOH4OTkhGHDhmHSpEkYMmQIFBUVcffuXezZswfa2tpYtWoVFBUV8euvv2L69OkYPnw4vLy8kJ+fj99//x0mJiZYuHBhYw+NhIqKCjg6OmLSpElIS0vD9u3bYW9vzx27wYMHQ1tbGz4+Ppg/fz54PB7+7//+r9GXk0eNGgUDAwMMGTIE+vr6SE1NxdatW+Hm5sYNvlu5ciXOnDkDe3t7/Otf/4KCggJ27dqF8vJyrF27ttF9J4Q0oVYdc07anNGjRzNlZeV3zorl6+vLFBUV2bNnz7i07Oxs5ufnx7p27coUFBQYAAaAnT17VmL7hj6eVefly5ds+fLl7NNPP2WqqqpMWVmZWVlZsaVLl7Lc3Fyxsvv27WM2NjaMz+ezjh07silTprBHjx6JlfHx8WFqamoS9QwfPrzex566devG3NzcuPW6R5ouXrzI/Pz8mLa2NlNXV2dTpkxhz58/F9s2NjaWDRw4kKmoqDAjIyO2ZMkSdurUKQaAnT9//r111+W9/njWrl272LBhw1inTp0Yn89nZmZmLCAggIlEIrHtbt68yZydnZm6ujpTVVVlDg4O7OrVq2Jl6vpy48YNsfS6/6PX20gIaR48xmg0CGl5586dwxdffAF7e3ucPHmyQaOZ2wqhUIjp06fjxo0b6N+/f2s3hxDSxtE9atIqHB0dERISgvPnz2P69Ok0epgQQt6C7lGTVjN58mRMnjy5tZtBCCEyjc6oCSGEEBlG96gJIYQQGUZn1IQQQogMo0BNCCGEyLB2NZispqYGT548QYcOHSRerEAIIS2NMYaioiIYGRlBTo7Om0j92lWgfvLkCc1hTAiROQ8fPkSXLl1auxlERrWrQF03feLDhw9pLmNCSKsrLCyEsbFxg9+rTtqndhWo6y53a2hoUKAmhMgMuhVH3oVuihBCCCEyjAI1IYQQIsPa1aXvOpqrNQHl1m4FIaSxWKD4fE2XLl3CunXrkJiYiNzcXERGRsLDw4PLLy4uxnfffYfDhw/j+fPnMDU1xfz58zFnzhyuTF5eHgICAnDmzBkUFRXB3Nwcy5Ytw/jx49/Zlm3btmHdunXIy8uDtbU1tmzZggEDBjRpf0n7RGfUhJCPRklJCaytrbFt27Z68xctWoTo6Gj88ccfSE1Nxddffw1/f38cOXKEKzNt2jSkpaXhyJEjuHPnDsaNG4dJkybh1q1bb6133759WLRoEQIDA3Hz5k1YW1vD2dkZT58+bfI+kvaHAjUh5KPh6uqKlStXYuzYsfXmX716FT4+PhgxYgRMTEzg5+cHa2trXL9+XazMV199hQEDBqB79+744YcfoKWlhcTExLfW+9tvv2HWrFmYPn06LC0tsXPnTqiqqiIoKKjJ+0jaHwrUhJB2Y/DgwThy5AgeP34MxhjOnz+P9PR0jBo1SqzMvn378OLFC9TU1CA8PBxlZWUYMWJEvfusqKhAYmIinJycuDQ5OTk4OTkhLi6uubtE2oF2eY+aENI+bdmyBX5+fujSpQsUFBQgJyeH3bt3Y9iwYVyZ/fv3w9PTE506dYKCggJUVVURGRmJHj161LvPZ8+eobq6Gvr6+mLp+vr6uHfvXrP2h7QPFKgJIe3Gli1bEB8fjyNHjqBbt264dOkS5s2bByMjI+6M+Mcff0RBQQHOnj0LHR0dHD58GJMmTcLly5fx6aeftnIPSHtEgZoQ0i68evUK33//PSIjI+Hm5gYA6NOnD5KSkrB+/Xo4OTkhMzMTW7duRUpKCnr37g0AsLa2xuXLl7Ft2zbs3LlTYr86OjqQl5dHfn6+WHp+fj4MDAyav2Pko0f3qAkh7UJlZSUqKyslXn4hLy+PmpoaAEBpaSkAvLPMm5SUlGBra4tz585xaTU1NTh37hwGDRrUlF0g7ZRUgdrX1xc8Hg88Hg+KiorQ19fHyJEjERQU9NYPsbOzM+Tl5XHjxg0AQHl5OXr37g0/Pz+JskuWLIGpqSmKiorq3deXX36Jrl27QllZGYaGhpg6dSqePHkiTRcIIR+x4uJiJCUlISkpCQCQlZWFpKQk5OTkQENDA8OHD0dAQAAuXLiArKwsCIVChIaGcqPELSws0KNHD8yePRvXr19HZmYmNmzYgDNnzog9j+3o6IitW7dy64sWLcLu3bsREhKC1NRUzJ07FyUlJZg+fXpLdp98pKQ+o3ZxcUFubi6ys7Nx8uRJODg4YMGCBXB3d0dVVZVY2ZycHFy9ehX+/v7cYwp8Ph+hoaEQCoU4deoUVzY+Ph4bN26EUCh86wT1Dg4O2L9/P9LS0nDw4EFkZmZiwoQJ0naBEPKRSkhIgI2NDWxsbADUBlAbGxssX74cABAeHo7PPvsMU6ZMgaWlJdasWYNVq1ZxE54oKirixIkT0NXVxejRo9GnTx+EhoYiJCQEX3zxBVdPZmYmnj17xq17enpi/fr1WL58Ofr27YukpCRER0dLDDAj5EPwGGPs/cVq+fr6oqCgAIcPHxZLj4mJgaOjI3bv3o2ZM2dy6StWrMC9e/cQGBiIgQMHIjc3FyoqKlze7t27kZKSAmVlZdjY2MDV1RW//fZbgxt/5MgReHh4oLy8HIqKiu8tX1hYCE1NTeA70MxkhHwE3pyZrK2p+04SiUT0oiDyVk1yj/rzzz+HtbU1Dh06xKUxxhAcHAxvb2/uctKBAwe4/GXLlsHAwADz58/HDz/8AB6Ph19++aXBdb548QJhYWEYPHjwW4N0eXk5CgsLxRZCCCGkLWmyUd8WFha4ffs2t3727FmUlpbC2dkZAODt7Q2BQICpU6fWVqyggNDQUNja2qKmpgaxsbFQVn7/ae63336LrVu3orS0FAMHDsSxY8feWnb16tVYsWKFZMYaEQD69UpIa2n4dTxCSJON+maMib1TNSgoCJ6enlBQqP0t4OXlhdjYWGRmZnJlLC0tMX78eIwcORL9+/dvUD0BAQG4desWTp8+DXl5eUybNg1vu3q/dOlSiEQibnn48GEjekgIaS6XLl3C6NGjYWRkBB6PJ3F7rW4Q65vLunXrJPZVXl6Ovn37gsfjcYPK3mb27NkwMzODiooKdHV1MWbMGJqkhMicJgvUqampMDU1BVB7WToyMhLbt2+HgoICFBQU0LlzZ1RVVUnMfVuX31A6Ojro1asXRo4cifDwcJw4cQLx8fH1luXz+dDQ0BBbCCGy530v08jNzRVbgoKCwOPx6n2j1ZIlS2BkZNSgem1tbREcHIzU1FScOnUKjDGMGjUK1dXVjeoPIU2pSS59x8TE4M6dO1i4cCEAICwsDF26dJH4VXz69Gls2LABP//8M+Tl5Rtdb90jYeXl5Y3eFyGk9bi6usLV1fWt+W9OHBIVFQUHBwd0795dLP3kyZM4ffo0Dh48iJMnT7633tcfEzUxMcHKlSthbW2N7OxsmJmZSdkLQpqH1IG6vLwceXl5qK6uRn5+PqKjo7F69Wq4u7tj2rRpAACBQIAJEybAyspKbFtjY2MsXboU0dHR3MxADXXt2jXcuHED9vb20NbWRmZmJn788UeYmZnRpAKEtCP5+fk4fvw4QkJCJNJnzZqFw4cPQ1VVVer9lpSUIDg4GKampjA2Nm6q5hLSaFJf+o6OjoahoSFMTEzg4uKC8+fPY/PmzYiKioK8vDwSExORnJxc7yUpTU1NODo6QiAQSN1QVVVVHDp0CI6OjjA3N8eMGTPQp08fXLx4EXw+X+r9EULappCQEHTo0AHjxo3j0hhj8PX1xZw5cxo83qXO9u3boa6uDnV1dZw8eRJnzpyBkpJSUzebkA8m1XPUbR33HDVo1Dchreld3zo8Hg+RkZFiM4G9zsLCAiNHjsSWLVu4tM2bN2P//v24ePEi5OXlkZ2dDVNTU9y6dQt9+/Z9Z1tEIhGePn2K3NxcrF+/Ho8fP27wUyiNRc9Rk4agub4JIW3G5cuXkZaWJjaxElA7TiYuLg58Ph8KCgrcKyn79+8PHx+fd+5TU1MTPXv2xLBhw3DgwAHcu3cPkZGRzdYHQqRFb88ihLQZAoEAtra2sLa2FkvfvHkzVq5cya0/efIEzs7O2LdvH+zs7Bq8f8YYGGM0QJXIFArUhJBWV1xcjIyMDG697mUaHTt2RNeuXQHUXiaOiIjAhg0bJLavK1NHXV0dAGBmZoYuXboAAB4/fgxHR0eEhoZiwIABePDgAfbt24dRo0ZBV1cXjx49wpo1a6CioiI2rzchrY0CNSGk1SUkJMDBwYFbX7RoEQDAx8cHQqEQQO0LNRhj8PLy+qA6KisrkZaWxr3KUllZGZcvX8amTZvw8uVL6OvrY9iwYbh69Sr09PQa1yFCmhANJiOEtLj2863zbjSYjDQEDSYjhBBCZFi7vPQtEgH045UQQkhbQGfUhBBCiAyjQE0IIYTIMArUhBBCiAyjQE0IIYTIMArUhBBCiAyjQE0IIW0Ij9eyiyy6cOECeDweCgoKGryNiYkJNm3a1Gxtak4UqAkhhDQZX19f8Hg8zJkzRyJv3rx54PF48PX1bfmGNdCjR4+gpKQEKyurevOrq6uxceNGfPrpp1BWVoa2tjZcXV0RGxsrVk4oFEJLS6tJ2kSBmhBCSJMyNjZGeHg4Xr16xaWVlZVhz549EvOyyxqhUIhJkyahsLAQ165dE8tjjGHy5Mn4+eefsWDBAqSmpuLChQswNjbGiBEjcPjw4WZpEwVqQgghTapfv34wNjbGoUOHuLRDhw6ha9eusLGxEStbXl6O+fPnQ09PD8rKyrC3t8eNGzfEypw4cQK9evWCiooKHBwckJ2dLVHnlStXMHToUKioqMDY2Bjz589HSUmJVO1mjCE4OBhTp07FP/7xDwgEArH8/fv348CBAwgNDcXMmTNhamoKa2tr/Oc//8GXX36JmTNnSl1nQ7TLmck0V2sCzf9OeEKIFFig+ATgly5dwrp165CYmIjc3FxERkbCw8ODy+e95Qbq2rVrERAQAABIT09HQEAAYmNjUVFRgT59+uDf//632AtAJNrBGAIDA7F7924UFBRgyJAh2LFjB3r27Nn4TrYj//znPxEcHIwpU6YAAIKCgjB9+nRcuHBBrNySJUtw8OBBhISEoFu3bli7di2cnZ2RkZGBjh074uHDhxg3bhzmzZsHPz8/JCQkYPHixWL7yMzMhIuLC1auXImgoCD8/fff8Pf3h7+/P4KDgxvc5vPnz6O0tBROTk7o3LkzBg8ejI0bN0JNTQ0AsGfPHvTq1QujR4+W2Hbx4sU4dOgQzpw5I/Y5bQp0Rk0IkUklJSWwtrbGtm3b6s3Pzc0VW4KCgsDj8TB+/HiujLu7O6qqqhATE4PExERYW1vD3d0deXl5b6137dq12Lx5M3bu3Ilr165BTU0Nzs7OKCsra/I+fsy8vb1x5coV/PXXX/jrr78QGxsLb29vsTIlJSXYsWMH1q1bB1dXV1haWmL37t1QUVHhzmZ37NgBMzMzbNiwAebm5pgyZYrEPe7Vq1djypQp+Prrr9GzZ08MHjwYmzdvRmhoqFT/bwKBAJMnT4a8vDysrKzQvXt3REREcPnp6en45JNP6t22Lj09Pb3B9TVUuzyjJoTIPldXV7i6ur4138DAQGw9KioKDg4O6N69OwDg2bNnuH//PgQCAfr06QMAWLNmDbZv346UlBSJ7YHas+lNmzbhhx9+wJgxYwAAoaGh0NfXx+HDhzF58uSm6t5HT1dXF25ubhAKhWCMwc3NDTo6OmJlMjMzUVlZiSFDhnBpioqKGDBgAFJTUwEAqampsLOzE9tu0KBBYuvJycm4ffs2wsLCuDTGGGpqapCVlfXW4Pq6goICHDp0CFeuXOHSvL29IRAIxH4YvO+Fk0pKSu+tS1oUqAkhbV5+fj6OHz+OkJAQLq1Tp04wNzdHaGgo+vXrBz6fj127dkFPTw+2trb17icrKwt5eXlwcnLi0jQ1NWFnZ4e4uDgK1FL65z//CX9/fwB465WRplBcXIzZs2dj/vz5EnkNHby2Z88elJWVif0oqAv26enp6NWrF3r27Mn9gHhTXXqvXr0+oAfvRpe+CSFtXkhICDp06IBx48ZxaTweD2fPnsWtW7fQoUMHKCsr47fffkN0dDS0tbXr3U/dJXF9fX2xdH19/XdeLif1c3FxQUVFBSorK+Hs7CyRb2ZmBiUlJbFHmyorK3Hjxg1YWloCqL2kfP36dbHt4uPjxdb79euHP//8Ez169JBYGnqGKxAIsHjxYiQlJXFLcnIyhg4diqCgIACAl5cX7t+/j6NHj0psv2HDBhgZGWHkyJENqk8aFKgJIW1eUFAQpkyZAmXl/40SZYxh3rx50NPTw+XLl3H9+nV4eHhg9OjRyM3NbcXWth/y8vJITU3Fn3/+CXl5eYl8NTU1zJ07FwEBAYiOjsaff/6JWbNmobS0FDNmzAAAzJkzB/fv30dAQADS0tKwZ88eCIVCsf18++23uHr1Kvz9/ZGUlIT79+8jKiqKO5t/n6SkJNy8eRMzZ86ElZWV2OLl5YWQkBBUVVVh8uTJ8PDwgI+PDwQCAbKzs3H79m3Mnj0bx44dwx9//AFFRcVGH7c3UaAmhLRply9fRlpaGmbOnCmWHhMTg2PHjiE8PBxDhgxBv379sH37dqioqIhdIn9d3X3r/Px8sfT8/Px672m3BsZadmksDQ0NaGhovDV/zZo1GD9+PKZOnYp+/fohIyMDp06d4q56dO3aFQcPHsThw4dhbW2NnTt34pdffhHbR58+fXDx4kWkp6dj6NChsLGxwfLly2FkZNSgNgoEAlhaWsLCwkIib+zYsXj69ClOnDgBHo+HiIgIfP/999i4cSPMzc1hbW2NAwcO4NatW+98mqAxeOx9d8Y/IoWFhdDU1AS+Az2eRYiMefPxrNfxeDyJx7Pq+Pr6IiUlBQkJCWLpR48ehYeHB0QiEdTV1bl0c3Nz+Pj44Pvvv5dsA2MwMjLCN998wz0CVFhYCD09PQiFwia/R133nSQSid4ZzIjsunnzJpycnDBjxgysW7euWeqQ6oy6bmo4Ho8HRUVF6OvrY+TIkQgKCkJNTU292zg7O0NeXp57gL28vBy9e/eGn5+fRNklS5bA1NQURUVFEnnZ2dmYMWMGTE1NoaKiAjMzMwQGBqKiokKaLhBC2oji4mLuXiFQO9ArKSkJOTk5XJnCwkJERERInE0DtSODtbW14ePjg+TkZO6Z6qysLLi5uXHlLCwsEBkZCaD2B8HXX3+NlStX4siRI7hz5w6mTZsGIyOjJn82lnwc+vXrh3PnzkFNTQ2ZmZnNUofUo75dXFwQHByM6upq5OfnIzo6GgsWLMCBAwdw5MgRKCj8b5c5OTncfYOgoCB89tln4PP5CA0NxaBBgzB+/HhugEF8fDw2btyIs2fPokOHDhL13rt3DzU1Ndi1axd69OiBlJQUzJo1CyUlJVi/fn0jDgEhRBYlJCSIXUpctGgRAMDHx4e7RxkeHg7GGLy8vCS219HRQXR0NJYtW4bPP/8clZWV6N27N6KiomBtbc2VS0tLg0gk4taXLFmCkpIS+Pn5oaCgAPb29oiOjha7/03I62xsbCRmXGtKUl369vX1RUFBgcR8pjExMXB0dMTu3bvFftmuWLEC9+7dQ2BgIAYOHIjc3FyoqKhwebt370ZKSgqUlZVhY2MDV1dX/Pbbbw1u/Lp167Bjxw48ePCgQeXp0jchsutdl74/VnTpmzREkwwm+/zzz2FtbS02r2vdnKne3t6wsLBAjx49cODAAS5/2bJlMDAwwPz58/HDDz+Ax+NJDBB4H5FIhI4dOzZFFwghhBCZ1GQTnlhYWOD27dvc+tmzZ1FaWspd2q6b4WXq1Km1FSsoIDQ0FLa2tqipqUFsbKxUl5YyMjKwZcuWd172Li8vR3l5ObdeWFgobbcIIYSQ1sWk4OPjw8aMGVNv3qRJk5ilpSW3PnnyZObv78+t5+XlMQUFBZaRkSG23ZQpU5ibm5s0zWCPHj1iZmZmbMaMGe8sFxgYyADUs4ha+AEHWmihpW5508WLF5m7uzszNDRkAFhkZKRYfv1/w2Br165ljDGWlZXF/vnPfzITExOmrKzMunfvzpYvX87Ky8vf+f2QkZHBPDw8mI6ODuvQoQObOHEiy8vLk+q7qLFEIhEDwEQiUYvWS9qWJnuOOjU1FaampgCAFy9eIDIyEtu3b4eCggIUFBTQuXNnVFVVcTO81KnLb6gnT57AwcEBgwcPxn/+8593ll26dClEIhG3PHz4UPqOEUKaVWNfvvH6QNO7d+9i48aN2LlzZ72PX71e56hRo8Dj8RATE8O9XWv06NFvfYKFkNbSJJe+Y2JicOfOHSxcuBAAEBYWhi5dukgMOjt9+jQ2bNiAn3/+ud5Zat7n8ePHcHBwgK2tLYKDgyEn9+7fGXw+H3w+X+p6CCEtp7Ev33BxcYGLiwuX3717d6SlpWHHjh1vvTUWGxuL7Oxs3Lp1ixvEFRISAm1tbcTExIjN9U1Ia5M6UJeXlyMvL0/s8azVq1fD3d0d06ZNA1A7y8uECRNgZWUltq2xsTGWLl2K6OhosecYG+Lx48cYMWIEunXrhvXr1+Pvv//m8mRlxiBCSPOq7+Ub9XnfQNPy8nLweDyxH/LKysqQk5PDlStXKFATmSJ1oI6OjoahoSEUFBSgra0Na2trbN68GT4+PpCTk0NiYiKSk5Oxe/duiW01NTXh6OgIgUAgdaA+c+YMMjIykJGRgS5duojlMcak7QYhpA2q7+Ubb2rIQNOBAwdCTU0N3377LX755RcwxvDdd9+hurpa5ucB563gtWh9H/rYXFxcHOzt7eHi4oLjx4+L5WVnZ3O3SgGgY8eOsLW1xa+//so9jzxixAj07dsXmzZtemc9r169QufOnSEnJ4fHjx/XexU1JCQEW7duxd27dyEvL49+/fohICAA7u7uXJkLFy7AwcEBL1++hJaW1gf1ublIdY+67r2ijDFUVlbi6dOnOHPmDKZPn85dhra1tQVjDJ999lm9+zhx4oTYY1xCoVDiEnl9fH19ubrfXAgh7UN9L9943ePHj+Hi4oKJEydi1qxZb92Prq4uIiIicPToUairq0NTUxMFBQXo16/fe2+pkYYRCAT46quvcOnSJTx58qTeMmfPnkVubi5OnTqF4uJiuLq6oqCgQKp6Dh48iN69e8PCwqLeWPLNN99g9uzZ8PT0xO3bt3H9+nXY29tjzJgx2Lp16wf0rOXR+6gJIW1C3cs39u3bV2++NANNAWDUqFHIzMzEs2fPoKCgAC0tLRgYGHD3vsmHKy4uxr59+5CQkIC8vDwIhcJ6B/d16tQJBgYGMDAwwPr16zFkyBBcu3at3ldivo1AIIC3tzcYYxAIBPD09OTy4uPjsWHDBmzevBlfffUVl75q1SqUlZVh0aJFGDNmDIyNjRvX4WZGPx0JIW2CQCCAra2t2PSfderGsDR0oOnrdHR0oKWlhZiYGDx9+hRffvllUza7Xdq/fz8sLCxgbm4Ob29vBAUFvffqZ92sldK8vyEzMxNxcXGYNGkSJk2ahMuXL+Ovv/7i8vfu3Qt1dXXMnj1bYtvFixejsrISBw8ebHB9rYUCNSGkVTX25Rt1Qbpr167cQNO8vDzk5eWJlbGwsMD169e5tODgYMTHxyMzMxN//PEHJk6ciIULF8Lc3Lz5OttO1J3lArWj8kUiES5evPjW8gUFBfj3v/8NdXV1DBgwoMH1BAUFwdXVFdra2ujYsSOcnZ0RHBzM5aenp8PMzAxKSkoS2xoZGUFDQwPp6elS9Kx10KVvQkirauzLNxoy0LSyshJpaWkoLS3l8tLS0rB06VK8ePECJiYmWLZsGfeIKflwaWlpuH79OvdGMgUFBXh6ekIgEGDEiBFiZQcPHgw5OTmUlJSge/fu2LdvH/T19RtUT3V1NUJCQvD7779zad7e3vjmm2+wfPly7qrK+87k6wvisoYCNSGkVY0YMeK9X6Z+fn71vhoXqB1o6uvr+87tTUxMJOpYs2YN1qxZI1VbyfsJBAJUVVXByMiIS2OMgc/nY+vWrbUvRvqvffv2wdLSEp06dZJ6pPWpU6fw+PFjsXvSQG0AP3fuHEaOHImePXviypUrqKiokAjIT548QWFhIXr16iV9J1sYXfomhBDSJKqqqhAaGooNGzZwtzOSkpKQnJwMIyMj7N27V6y8sbExzMzMPuhxKIFAgMmTJ4vVk5SUhMmTJ0MgEAAAvLy8UFxcjF27dklsv379eigrK0sEelnULs+oRSKA3ihHCCFN69ixY3j58iVmzJghduYMAOPHj4dAIMCcOXMaXc/ff/+No0eP4siRIxITa02bNg1jx47FixcvMGjQICxYsAABAQGoqKiAh4cHKisr8ccff2Dz5s0QCoXo1KlTo9vT3OiMmhBCSJMQCARwcnKSCNJAbaBOSEgQe8vihwoNDYWamhocHR0l8hwdHaGiooI//vgDALBp0yZs374de/fuhZWVFT755BOsW7cOMTEx3IA3Wcdj7WjGEHpJOyFEltB3UsvLzs7G8OHDMWjQIISFhX3QeydaGp1RE0IIaTdMTExw4cIFWFhYcI8Eyjo6oyaEkFZC30mkIeiMmhBCCJFhFKgJIYQQGUaBmhBCCJFhFKgJIYQQGUaBmhBCCJFh7XJmMs3VmkD9750nhLQgFthuHjoh5IPRGTUhRKZcunQJo0ePhpGREXg8Hg4fPiyWz+Px6l3WrVsnVu748eOws7ODiooKtLW14eHh8c56GWNYvnw5DA0NoaKiAicnJ9y/f7+Je0eI9ChQE0JkSklJCaytrbFt27Z683Nzc8WWoKAg8Hg8jB8/nitz8OBBTJ06FdOnT0dycjJiY2Pxj3/84531rl27Fps3b8bOnTtx7do1qKmpwdnZGWVlZU3aP0Kk1S4nPMF3oEvfhMiA91365vF4iIyMfOfZsIeHB4qKinDu3DkAtW9wMjExwYoVKzBjxoyGtYMxGBkZYfHixfjmm28AACKRCPr6+hAKhZg8eXLDOiQlmvCENASdURNC2qz8/HwcP35cLCDfvHkTjx8/hpycHGxsbGBoaAhXV1ekpKS8dT9ZWVnIy8uDk5MTl6apqQk7OzvExcU1ax8IeR8K1ISQNiskJAQdOnTAuHHjuLQHDx4AAH766Sf88MMPOHbsGLS1tTFixAi8ePGi3v3k5eUBAPT19cXS9fX1uTxCWgsFakJImxUUFIQpU6ZAWfl/97JqamoAAMuWLcP48eNha2uL4OBg8Hg8REREtFZTCflgFKgJIW3S5cuXkZaWhpkzZ4qlGxoaAgAsLS25ND6fj+7duyMnJ6fefRkYGACovZT+uvz8fC6PkNYiVaD29fXlHoVQVFSEvr4+Ro4ciaCgIO5X7JucnZ0hLy+PGzduAADKy8vRu3dv+Pn5SZRdsmQJTE1NUVRUVO++Vq1ahcGDB0NVVRVaWlrSNJ0Q8pERCASwtbWFtbW1WLqtrS34fD7S0tK4tMrKSmRnZ6Nbt2717svU1BQGBgbcgDSgdqDXtWvXMGjQoObpACENJPUZtYuLC3Jzc5GdnY2TJ0/CwcEBCxYsgLu7O6qqqsTK5uTk4OrVq/D390dQUBCA2l+2oaGhEAqFOHXqFFc2Pj4eGzduhFAoRIcOHeqtu6KiAhMnTsTcuXOlbTYhpI0oLi5GUlIS967grKwsJCUliZ0NFxYWIiIiQuJsGgA0NDQwZ84cBAYG4vTp00hLS+O+MyZOnMiVs7CwQGRkJIDa0eVff/01Vq5ciSNHjuDOnTuYNm0ajIyM3vv8NSHNTeqZyfh8PncpqHPnzujXrx8GDhwIR0dHCIVCsT+c4OBguLu7Y+7cuRg4cCB+++03qKiowNbWFsuWLcOMGTOQkpICZWVlTJ8+HV999RWGDx/+1rpXrFgBABAKhdI2mxDSRiQkJMDBwYFbX7RoEQDAx8eH+9sPDw8HYwxeXl717mPdunVQUFDA1KlT8erVK9jZ2SEmJgba2tpcmbS0NIhEIm59yZIlKCkpgZ+fHwoKCmBvb4/o6Gix+9+EtAapnqP29fVFQUGBxExBANC3b18YGRnhxIkTAGqfSzQ1NcW2bdvg5uaG/v37Y8GCBZg6dSqA2mcdBw4cCEtLS+jp6eHEiRO4efNmg/4ohEIhvv76axQUFDS06QDoOWpCZE17n0KUnqMmDdFkc31bWFjg9u3b3PrZs2dRWloKZ2dnAIC3tzcEAgEXqBUUFBAaGgpbW1vU1NQgNja2yX+5lpeXo7y8nFsvLCxs0v0TQgghza3JAjVjDDwej1sPCgqCp6cnFBRqq/Dy8kJAQAAyMzNhZmYGoHZU5vjx41FQUID+/fs3VVM4q1ev5i6Xi1kjAkC/XglpSW9eu6ub0zsxMRG5ubkSM5C9/n3yurVr1yIgIABA7QDT48ePIykpCUpKSg26ypafn49vv/0Wp0+fRkFBAYYNG4YtW7agZ8+eH9o1QppVkz2elZqaClNTUwDAixcvEBkZie3bt0NBQQEKCgro3LkzqqqquEFlderym8PSpUshEom45eHDh81SDyFEek0xp7e0A0wZY/Dw8MCDBw8QFRWFW7duoVu3bnByckJJSUmT9IuQptYkETImJgZ37tzBwoULAQBhYWHo0qWLxL3s06dPY8OGDfj5558hLy/fFFW/E5/PB5/Pb/Z6CCHSc3V1haur61vz33x+OSoqCg4ODujevTuXJu0A0/v37yM+Ph4pKSno3bs3AGDHjh0wMDDA3r176x1FTkhrkzpQl5eXIy8vD9XV1cjPz0d0dDRWr14Nd3d3TJs2DUDt840TJkyAlZWV2LbGxsZYunQpoqOj4ebmJnVjc3Jy8OLFC+Tk5KC6upp7fKNHjx5QV1eXen+EkLahbk7vkJCQRu2nbszK6+Nh5OTkwOfzceXKFQrURCZJfek7OjoahoaGMDExgYuLC86fP4/NmzcjKioK8vLySExMRHJystjlqTqamppwdHSEQCD4oMYuX74cNjY2CAwMRHFxMWxsbGBjY4OEhIQP2h8hpG2ob07vD2FhYYGuXbti6dKlePnyJSoqKvDrr7/i0aNHyM3NbaLWEtK02udrLkGDyQhpae/6pnnf6ywtLCwwcuRIbNmypd58aR7ZTExMxIwZM5CcnAx5eXk4OTlBTk4OjDGcPHmyAT1pOvR4FmmI5hnFRQghTaRuTu99+/Y1yf5sbW2RlJQEkUiEiooK6Orqws7OrlmePCGkKdBLOQghMu1tc3o3lqamJnR1dXH//n0kJCRgzJgxTbp/QpoKBWpCSKto7JzeQO0A07pt6gaYJiUlobi4mCvz+pzeABAREYELFy5wj2iNHDkSHh4eGDVqVPN0lJDGYu2ISCRiABggYrV3zGihhZaWWt50/vx5Vvv3KL74+PhwZXbt2sVUVFRYQUFBvX/TPj4+9e7j/PnzXBkALDg4mFv//fffWZcuXZiioiLr2rUr++GHH1h5eXkTfctIp+47SSQStUr9pG2gwWSEkBbRfr5pGo4Gk5GGoEvfhBBCiAxrl6O+RSKAfrwSQghpC+iMmhBCCJFhFKgJIYQQGUaBmhBCCJFh7eoedd0A98LCwlZuCSGE/O+7qB09fEM+QLsK1M+fPwdQ+xYvQgiRFUVFRf99dJQQSe0qUHfs2BFA7WxG7fWPorCwEMbGxnj48GG7fW6TjgEdA0A2jgFjDEVFRTAyMmqV+knb0K4CtZxc7S15TU3NdvvlVEdDQ4OOAR0DOgZo/WPQXk8aSMPRYDJCCCFEhlGgJoQQQmRYuwrUfD4fgYGB4PP5rd2UVkPHgI4BQMcAoGNA2o529VIOQgghpK1pV2fUhBBCSFtDgZoQQgiRYRSoCSGEEBnWrgL1tm3bYGJiAmVlZdjZ2eH69eut3aRm8dNPP4HH44ktFhYWXH5ZWRnmzZuHTp06QV1dHePHj0d+fn4rtrjxLl26hNGjR8PIyAg8Hg+HDx8Wy2eMYfny5TA0NISKigqcnJxw//59sTIvXrzAlClToKGhAS0tLcyYMQPFxcUt2IvGed8x8PX1lfhcuLi4iJVpy8dg9erV+Oyzz9ChQwfo6enBw8MDaWlpYmUa8tnPycmBm5sbVFVVoaenh4CAAFRVVbVkVwgR024C9b59+7Bo0SIEBgbi5s2bsLa2hrOzM54+fdraTWsWvXv3Rm5uLrdcuXKFy1u4cCGOHj2KiIgIXLx4EU+ePMG4ceNasbWNV1JSAmtra2zbtq3e/LVr12Lz5s3YuXMnrl27BjU1NTg7O6OsrIwrM2XKFNy9exdnzpzBsWPHcOnSJfj5+bVUFxrtfccAAFxcXMQ+F3v37hXLb8vH4OLFi5g3bx7i4+Nx5swZVFZWYtSoUSgpKeHKvO+zX11dDTc3N1RUVODq1asICQmBUCjE8uXLW6NLhNRi7cSAAQPYvHnzuPXq6mpmZGTEVq9e3Yqtah6BgYHM2tq63ryCggKmqKjIIiIiuLTU1FQGgMXFxbVQC5sXABYZGcmt19TUMAMDA7Zu3TouraCggPH5fLZ3717GGGN//vknA8Bu3LjBlTl58iTj8Xjs8ePHLdb2pvLmMWCMMR8fHzZmzJi3bvOxHYOnT58yAOzixYuMsYZ99k+cOMHk5ORYXl4eV2bHjh1MQ0ODlZeXt2wHCPmvdnFGXVFRgcTERDg5OXFpcnJycHJyQlxcXCu2rPncv38fRkZG6N69O6ZMmYKcnBwAQGJiIiorK8WOhYWFBbp27frRHousrCzk5eWJ9VlTUxN2dnZcn+Pi4qClpYX+/ftzZZycnCAnJ4dr1661eJuby4ULF6Cnpwdzc3PMnTuXe1EN8PEdA5FIBOB/c/w35LMfFxeHTz/9FPr6+lwZZ2dnFBYW4u7duy3YekL+p10E6mfPnqG6ulrsjw8A9PX1kZeX10qtaj52dnYQCoWIjo7Gjh07kJWVhaFDh6KoqAh5eXlQUlKClpaW2DYf67EAwPXrXf//eXl50NPTE8tXUFBAx44dP5rj4uLigtDQUJw7dw6//vorLl68CFdXV1RXVwP4uI5BTU0Nvv76awwZMgRWVlYA0KDPfl5eXr2fk7o8QlpDu3opR3vh6urK/btPnz6ws7NDt27dsH//fqioqLRiy0hrmjx5MvfvTz/9FH369IGZmRkuXLgAR0fHVmxZ05s3bx5SUlLExmYQ0la1izNqHR0dyMvLS4zuzM/Ph4GBQSu1quVoaWmhV69eyMjIgIGBASoqKlBQUCBW5mM+FnX9etf/v4GBgcTAwqqqKrx48eKjPS7du3eHjo4OMjIyAHw8x8Df3x/Hjh3D+fPn0aVLFy69IZ99AwODej8ndXmEtIZ2EaiVlJRga2uLc+fOcWk1NTU4d+4cBg0a1IotaxnFxcXIzMyEoaEhbG1toaioKHYs0tLSkJOT89EeC1NTUxgYGIj1ubCwENeuXeP6PGjQIBQUFCAxMZErExMTg5qaGtjZ2bV4m1vCo0eP8Pz5cxgaGgJo+8eAMQZ/f39ERkYiJiYGpqamYvkN+ewPGjQId+7cEfvBcubMGWhoaMDS0rJlOkLIm1p7NFtLCQ8PZ3w+nwmFQvbnn38yPz8/pqWlJTa682OxePFiduHCBZaVlcViY2OZk5MT09HRYU+fPmWMMTZnzhzWtWtXFhMTwxISEtigQYPYoEGDWrnVjVNUVMRu3brFbt26xQCw3377jd26dYv99ddfjDHG1qxZw7S0tFhUVBS7ffs2GzNmDDM1NWWvXr3i9uHi4sJsbGzYtWvX2JUrV1jPnj2Zl5dXa3VJau86BkVFReybb75hcXFxLCsri509e5b169eP9ezZk5WVlXH7aMvHYO7cuUxTU5NduHCB5ebmcktpaSlX5n2f/aqqKmZlZcVGjRrFkpKSWHR0NNPV1WVLly5tjS4RwhhjrN0EasYY27JlC+vatStTUlJiAwYMYPHx8a3dpGbh6enJDA0NmZKSEuvcuTPz9PRkGRkZXP6rV6/Yv/71L6atrc1UVVXZ2LFjWW5ubiu2uPHOnz/PAEgsPj4+jLHaR7R+/PFHpq+vz/h8PnN0dGRpaWli+3j+/Dnz8vJi6urqTENDg02fPp0VFRW1Qm8+zLuOQWlpKRs1ahTT1dVlioqKrFu3bmzWrFkSP1Tb8jGor+8AWHBwMFemIZ/97Oxs5urqylRUVJiOjg5bvHgxq6ysbOHeEPI/9PYsQgghRIa1i3vUhBBCSFtFgZoQQgiRYRSoCSGEEBlGgZoQQgiRYRSoCSGEEBlGgZoQQgiRYRSoCSGEEBlGgZoQQgiRYRSoCSGEEBlGgZqQesTFxUFeXh5ubm4Sea9evUJgYCB69eoFPp8PHR0dTJw4EXfv3hUr99NPP6Fv374t1GJCyMeKAjUh9RAIBPjqq69w6dIlPHnyhEsvLy+Hk5MTgoKCsHLlSqSnp+PEiROoqqqCnZ0d4uPjW7HVhJCPkUJrN4AQWVNcXIx9+/YhISEBeXl5EAqF+P777wEAmzZtQlxcHG7dugVra2sAQLdu3XDw4EHY2dlhxowZSElJAY/Ha80uEEI+InRGTcgb9u/fDwsLC5ibm8Pb2xtBQUGoe3fNnj17MHLkSC5I15GTk8PChQvx559/Ijk5uTWaTQj5SFGgJuQNAoEA3t7eAAAXFxeIRCJcvHgRAJCeno5PPvmk3u3q0tPT01umoYSQdoECNSGvSUtLw/Xr1+Hl5QUAUFBQgKenJwQCAVfmfW+GVVJSatY2EkLaF7pHTchrBAIBqqqqYGRkxKUxxsDn87F161b07NkTqamp9W5bl96rV68WaSshpH2gM2pC/quqqgqhoaHYsGEDkpKSuCU5ORlGRkbYu3cvvLy8cPbsWYn70DU1Ndi4cSP69+8PS0vLVuoBIeRjRGfUhPzXsWPH8PLlS8yYMQOamppieePHj4dAIMDly5cRFRWF0aNHY8OGDbCzs0N+fj5++eUX3L9/H1evXm2l1hNCPlZ0Rk3IfwkEAjg5OUkEaaA2UCckJCA9PR3nzp3DtGnTsHTpUpiZmWHAgAFISUlBSkoKnU0TQpocj71vZAwh5J1OnjyJsWPHYv369fD392/t5hBCPjJ0Rk1II7m6uuLkyZN48eIFnj171trNIYR8ZOiMmhBCCJFhdEZNCCGEyDAK1IQQQogMo0BNCCGEyDAK1IQQQogMo0BNCCGEyDAK1IQQQogMo0BNCCGEyDAK1IQQQogMo0BNCCGEyDAK1IQQQogM+38LUlG7fKa5FAAAAABJRU5ErkJggg=="></div>`)[0];
|
193 |
+
popup_0f78979bbd5a3a2c30a209b0b346f20b.setContent(html_7a8f516c8442020b7cbc117f95c0b7b6);
|
194 |
+
|
195 |
+
|
196 |
+
|
197 |
+
marker_93a2124fa21d15be6000355f1e3d3307.bindPopup(popup_0f78979bbd5a3a2c30a209b0b346f20b)
|
198 |
+
;
|
199 |
+
|
200 |
+
|
201 |
+
|
202 |
+
</script>
|
203 |
+
</html>
|
static/aqi_map_with_legend.html
ADDED
@@ -0,0 +1,222 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<!DOCTYPE html>
|
2 |
+
<html>
|
3 |
+
<head>
|
4 |
+
|
5 |
+
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
|
6 |
+
|
7 |
+
<script>
|
8 |
+
L_NO_TOUCH = false;
|
9 |
+
L_DISABLE_3D = false;
|
10 |
+
</script>
|
11 |
+
|
12 |
+
<style>html, body {width: 100%;height: 100%;margin: 0;padding: 0;}</style>
|
13 |
+
<style>#map {position:absolute;top:0;bottom:0;right:0;left:0;}</style>
|
14 |
+
<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/leaflet.js"></script>
|
15 |
+
<script src="https://code.jquery.com/jquery-3.7.1.min.js"></script>
|
16 |
+
<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.bundle.min.js"></script>
|
17 |
+
<script src="https://cdnjs.cloudflare.com/ajax/libs/Leaflet.awesome-markers/2.0.2/leaflet.awesome-markers.js"></script>
|
18 |
+
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/[email protected]/dist/leaflet.css"/>
|
19 |
+
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css"/>
|
20 |
+
<link rel="stylesheet" href="https://netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap-glyphicons.css"/>
|
21 |
+
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@fortawesome/[email protected]/css/all.min.css"/>
|
22 |
+
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/Leaflet.awesome-markers/2.0.2/leaflet.awesome-markers.css"/>
|
23 |
+
<link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/python-visualization/folium/folium/templates/leaflet.awesome.rotate.min.css"/>
|
24 |
+
|
25 |
+
<meta name="viewport" content="width=device-width,
|
26 |
+
initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
|
27 |
+
<style>
|
28 |
+
#map_a150e0fb4cc7276810a35f632619f3a1 {
|
29 |
+
position: relative;
|
30 |
+
width: 100.0%;
|
31 |
+
height: 100.0%;
|
32 |
+
left: 0.0%;
|
33 |
+
top: 0.0%;
|
34 |
+
}
|
35 |
+
.leaflet-container { font-size: 1rem; }
|
36 |
+
</style>
|
37 |
+
|
38 |
+
</head>
|
39 |
+
<body>
|
40 |
+
|
41 |
+
|
42 |
+
<div style="
|
43 |
+
position: fixed;
|
44 |
+
bottom: 50px; left: 50px; width: 300px; height: 200px;
|
45 |
+
background-color: white;
|
46 |
+
z-index:9999; font-size:14px; border:2px solid grey;
|
47 |
+
padding: 10px; overflow-y: auto;">
|
48 |
+
<b>AQI Color Legend</b>
|
49 |
+
<table style="width: 100%; border-collapse: collapse; text-align: left;">
|
50 |
+
<thead>
|
51 |
+
<tr style="border-bottom: 2px solid grey;">
|
52 |
+
<th style="padding: 5px;">Color</th>
|
53 |
+
<th style="padding: 5px;">Remark</th>
|
54 |
+
<th style="padding: 5px;">Range</th>
|
55 |
+
</tr>
|
56 |
+
</thead>
|
57 |
+
<tbody>
|
58 |
+
<tr>
|
59 |
+
<td style="padding: 5px;"><i style="background:green; width:15px; height:15px; display:inline-block; border:1px solid black;"></i></td>
|
60 |
+
<td style="padding: 5px;">Good</td>
|
61 |
+
<td style="padding: 5px;">0-50</td>
|
62 |
+
</tr>
|
63 |
+
<tr>
|
64 |
+
<td style="padding: 5px;"><i style="background:yellow; width:15px; height:15px; display:inline-block; border:1px solid black;"></i></td>
|
65 |
+
<td style="padding: 5px;">Moderate</td>
|
66 |
+
<td style="padding: 5px;">51-100</td>
|
67 |
+
</tr>
|
68 |
+
<tr>
|
69 |
+
<td style="padding: 5px;"><i style="background:orange; width:15px; height:15px; display:inline-block; border:1px solid black;"></i></td>
|
70 |
+
<td style="padding: 5px;">Unhealthy for Sensitive Groups</td>
|
71 |
+
<td style="padding: 5px;">101-150</td>
|
72 |
+
</tr>
|
73 |
+
<tr>
|
74 |
+
<td style="padding: 5px;"><i style="background:red; width:15px; height:15px; display:inline-block; border:1px solid black;"></i></td>
|
75 |
+
<td style="padding: 5px;">Unhealthy</td>
|
76 |
+
<td style="padding: 5px;">151-200</td>
|
77 |
+
</tr>
|
78 |
+
<tr>
|
79 |
+
<td style="padding: 5px;"><i style="background:purple; width:15px; height:15px; display:inline-block; border:1px solid black;"></i></td>
|
80 |
+
<td style="padding: 5px;">Very Unhealthy</td>
|
81 |
+
<td style="padding: 5px;">201-300</td>
|
82 |
+
</tr>
|
83 |
+
<tr>
|
84 |
+
<td style="padding: 5px;"><i style="background:maroon; width:15px; height:15px; display:inline-block; border:1px solid black;"></i></td>
|
85 |
+
<td style="padding: 5px;">Hazardous</td>
|
86 |
+
<td style="padding: 5px;">301+</td>
|
87 |
+
</tr>
|
88 |
+
</tbody>
|
89 |
+
</table>
|
90 |
+
</div>
|
91 |
+
|
92 |
+
<div class="folium-map" id="map_a150e0fb4cc7276810a35f632619f3a1" ></div>
|
93 |
+
|
94 |
+
</body>
|
95 |
+
<script>
|
96 |
+
|
97 |
+
|
98 |
+
var map_a150e0fb4cc7276810a35f632619f3a1 = L.map(
|
99 |
+
"map_a150e0fb4cc7276810a35f632619f3a1",
|
100 |
+
{
|
101 |
+
center: [21.2130139551601, 72.81864929625287],
|
102 |
+
crs: L.CRS.EPSG3857,
|
103 |
+
zoom: 10,
|
104 |
+
zoomControl: true,
|
105 |
+
preferCanvas: false,
|
106 |
+
}
|
107 |
+
);
|
108 |
+
|
109 |
+
|
110 |
+
|
111 |
+
|
112 |
+
|
113 |
+
var tile_layer_63bd45a9cd619b6645de023d33db15a9 = L.tileLayer(
|
114 |
+
"https://tile.openstreetmap.org/{z}/{x}/{y}.png",
|
115 |
+
{"attribution": "\u0026copy; \u003ca href=\"https://www.openstreetmap.org/copyright\"\u003eOpenStreetMap\u003c/a\u003e contributors", "detectRetina": false, "maxNativeZoom": 19, "maxZoom": 19, "minZoom": 0, "noWrap": false, "opacity": 1, "subdomains": "abc", "tms": false}
|
116 |
+
);
|
117 |
+
|
118 |
+
|
119 |
+
tile_layer_63bd45a9cd619b6645de023d33db15a9.addTo(map_a150e0fb4cc7276810a35f632619f3a1);
|
120 |
+
|
121 |
+
|
122 |
+
var marker_2429860b4cbaf5615ea1017c44b19f22 = L.marker(
|
123 |
+
[21.195069775800516, 72.79324648126439],
|
124 |
+
{}
|
125 |
+
).addTo(map_a150e0fb4cc7276810a35f632619f3a1);
|
126 |
+
|
127 |
+
|
128 |
+
var icon_67d84c6204b0790d039646f6c1e2da39 = L.AwesomeMarkers.icon(
|
129 |
+
{"extraClasses": "fa-rotate-0", "icon": "info-sign", "iconColor": "white", "markerColor": "orange", "prefix": "glyphicon"}
|
130 |
+
);
|
131 |
+
marker_2429860b4cbaf5615ea1017c44b19f22.setIcon(icon_67d84c6204b0790d039646f6c1e2da39);
|
132 |
+
|
133 |
+
|
134 |
+
marker_2429860b4cbaf5615ea1017c44b19f22.bindTooltip(
|
135 |
+
`<div>
|
136 |
+
Location 1
|
137 |
+
</div>`,
|
138 |
+
{"sticky": true}
|
139 |
+
);
|
140 |
+
|
141 |
+
|
142 |
+
var marker_b7a6e3483466a57f4c675d8f1855957d = L.marker(
|
143 |
+
[21.3, 72.9],
|
144 |
+
{}
|
145 |
+
).addTo(map_a150e0fb4cc7276810a35f632619f3a1);
|
146 |
+
|
147 |
+
|
148 |
+
var icon_312c040d6b5b62945c0a9095b367df86 = L.AwesomeMarkers.icon(
|
149 |
+
{"extraClasses": "fa-rotate-0", "icon": "info-sign", "iconColor": "white", "markerColor": "orange", "prefix": "glyphicon"}
|
150 |
+
);
|
151 |
+
marker_b7a6e3483466a57f4c675d8f1855957d.setIcon(icon_312c040d6b5b62945c0a9095b367df86);
|
152 |
+
|
153 |
+
|
154 |
+
marker_b7a6e3483466a57f4c675d8f1855957d.bindTooltip(
|
155 |
+
`<div>
|
156 |
+
Location 2
|
157 |
+
</div>`,
|
158 |
+
{"sticky": true}
|
159 |
+
);
|
160 |
+
|
161 |
+
|
162 |
+
var marker_7ae55386c3f54f1e32b3a75aa8a3c475 = L.marker(
|
163 |
+
[21.1, 72.8],
|
164 |
+
{}
|
165 |
+
).addTo(map_a150e0fb4cc7276810a35f632619f3a1);
|
166 |
+
|
167 |
+
|
168 |
+
var icon_3dbc85d72a24050ac1f5c0e977d415fe = L.AwesomeMarkers.icon(
|
169 |
+
{"extraClasses": "fa-rotate-0", "icon": "info-sign", "iconColor": "white", "markerColor": "orange", "prefix": "glyphicon"}
|
170 |
+
);
|
171 |
+
marker_7ae55386c3f54f1e32b3a75aa8a3c475.setIcon(icon_3dbc85d72a24050ac1f5c0e977d415fe);
|
172 |
+
|
173 |
+
|
174 |
+
marker_7ae55386c3f54f1e32b3a75aa8a3c475.bindTooltip(
|
175 |
+
`<div>
|
176 |
+
Location 3
|
177 |
+
</div>`,
|
178 |
+
{"sticky": true}
|
179 |
+
);
|
180 |
+
|
181 |
+
|
182 |
+
var marker_2d8020c07cc33b3b6500310ab4224ec2 = L.marker(
|
183 |
+
[21.25, 72.85],
|
184 |
+
{}
|
185 |
+
).addTo(map_a150e0fb4cc7276810a35f632619f3a1);
|
186 |
+
|
187 |
+
|
188 |
+
var icon_a4e9c615cf66ea065d533cfb5956086b = L.AwesomeMarkers.icon(
|
189 |
+
{"extraClasses": "fa-rotate-0", "icon": "info-sign", "iconColor": "white", "markerColor": "orange", "prefix": "glyphicon"}
|
190 |
+
);
|
191 |
+
marker_2d8020c07cc33b3b6500310ab4224ec2.setIcon(icon_a4e9c615cf66ea065d533cfb5956086b);
|
192 |
+
|
193 |
+
|
194 |
+
marker_2d8020c07cc33b3b6500310ab4224ec2.bindTooltip(
|
195 |
+
`<div>
|
196 |
+
Location 4
|
197 |
+
</div>`,
|
198 |
+
{"sticky": true}
|
199 |
+
);
|
200 |
+
|
201 |
+
|
202 |
+
var marker_a32fd1d6158d26403dfdfd275aeee4fe = L.marker(
|
203 |
+
[21.22, 72.75],
|
204 |
+
{}
|
205 |
+
).addTo(map_a150e0fb4cc7276810a35f632619f3a1);
|
206 |
+
|
207 |
+
|
208 |
+
var icon_903f2288884967fe826c17b2e3de0ae6 = L.AwesomeMarkers.icon(
|
209 |
+
{"extraClasses": "fa-rotate-0", "icon": "info-sign", "iconColor": "white", "markerColor": "orange", "prefix": "glyphicon"}
|
210 |
+
);
|
211 |
+
marker_a32fd1d6158d26403dfdfd275aeee4fe.setIcon(icon_903f2288884967fe826c17b2e3de0ae6);
|
212 |
+
|
213 |
+
|
214 |
+
marker_a32fd1d6158d26403dfdfd275aeee4fe.bindTooltip(
|
215 |
+
`<div>
|
216 |
+
Location 5
|
217 |
+
</div>`,
|
218 |
+
{"sticky": true}
|
219 |
+
);
|
220 |
+
|
221 |
+
</script>
|
222 |
+
</html>
|
static/multiple_wind_speed_map.html
ADDED
@@ -0,0 +1,101 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<!DOCTYPE html>
|
2 |
+
<html>
|
3 |
+
<head>
|
4 |
+
|
5 |
+
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
|
6 |
+
|
7 |
+
<script>
|
8 |
+
L_NO_TOUCH = false;
|
9 |
+
L_DISABLE_3D = false;
|
10 |
+
</script>
|
11 |
+
|
12 |
+
<style>html, body {width: 100%;height: 100%;margin: 0;padding: 0;}</style>
|
13 |
+
<style>#map {position:absolute;top:0;bottom:0;right:0;left:0;}</style>
|
14 |
+
<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/leaflet.js"></script>
|
15 |
+
<script src="https://code.jquery.com/jquery-3.7.1.min.js"></script>
|
16 |
+
<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.bundle.min.js"></script>
|
17 |
+
<script src="https://cdnjs.cloudflare.com/ajax/libs/Leaflet.awesome-markers/2.0.2/leaflet.awesome-markers.js"></script>
|
18 |
+
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/[email protected]/dist/leaflet.css"/>
|
19 |
+
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css"/>
|
20 |
+
<link rel="stylesheet" href="https://netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap-glyphicons.css"/>
|
21 |
+
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@fortawesome/[email protected]/css/all.min.css"/>
|
22 |
+
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/Leaflet.awesome-markers/2.0.2/leaflet.awesome-markers.css"/>
|
23 |
+
<link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/python-visualization/folium/folium/templates/leaflet.awesome.rotate.min.css"/>
|
24 |
+
|
25 |
+
<meta name="viewport" content="width=device-width,
|
26 |
+
initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
|
27 |
+
<style>
|
28 |
+
#map_f07b2c63ab23eb37554ee9e8f9b994bd {
|
29 |
+
position: relative;
|
30 |
+
width: 100.0%;
|
31 |
+
height: 100.0%;
|
32 |
+
left: 0.0%;
|
33 |
+
top: 0.0%;
|
34 |
+
}
|
35 |
+
.leaflet-container { font-size: 1rem; }
|
36 |
+
</style>
|
37 |
+
|
38 |
+
</head>
|
39 |
+
<body>
|
40 |
+
|
41 |
+
|
42 |
+
<div class="folium-map" id="map_f07b2c63ab23eb37554ee9e8f9b994bd" ></div>
|
43 |
+
|
44 |
+
</body>
|
45 |
+
<script>
|
46 |
+
|
47 |
+
|
48 |
+
var map_f07b2c63ab23eb37554ee9e8f9b994bd = L.map(
|
49 |
+
"map_f07b2c63ab23eb37554ee9e8f9b994bd",
|
50 |
+
{
|
51 |
+
center: [21.172654967610296, 72.8284030862854],
|
52 |
+
crs: L.CRS.EPSG3857,
|
53 |
+
zoom: 10,
|
54 |
+
zoomControl: true,
|
55 |
+
preferCanvas: false,
|
56 |
+
}
|
57 |
+
);
|
58 |
+
|
59 |
+
|
60 |
+
|
61 |
+
|
62 |
+
|
63 |
+
var tile_layer_450ea641254663ee4a9f020cc91927af = L.tileLayer(
|
64 |
+
"https://tile.openstreetmap.org/{z}/{x}/{y}.png",
|
65 |
+
{"attribution": "\u0026copy; \u003ca href=\"https://www.openstreetmap.org/copyright\"\u003eOpenStreetMap\u003c/a\u003e contributors", "detectRetina": false, "maxNativeZoom": 19, "maxZoom": 19, "minZoom": 0, "noWrap": false, "opacity": 1, "subdomains": "abc", "tms": false}
|
66 |
+
);
|
67 |
+
|
68 |
+
|
69 |
+
tile_layer_450ea641254663ee4a9f020cc91927af.addTo(map_f07b2c63ab23eb37554ee9e8f9b994bd);
|
70 |
+
|
71 |
+
|
72 |
+
var marker_2a7638b5cacc5305e893d4dba45911c5 = L.marker(
|
73 |
+
[21.172654967610296, 72.8284030862854],
|
74 |
+
{}
|
75 |
+
).addTo(map_f07b2c63ab23eb37554ee9e8f9b994bd);
|
76 |
+
|
77 |
+
|
78 |
+
var popup_4d47557e8d279db04bb42be9092829a3 = L.popup({"maxWidth": 300});
|
79 |
+
|
80 |
+
|
81 |
+
|
82 |
+
var html_f9410af04516429d1f1c883381fe8eba = $(`<div id="html_f9410af04516429d1f1c883381fe8eba" style="width: 100.0%; height: 100.0%;"><img src="data:image/png;base64,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" alt="Wind Speed Comparison"></div>`)[0];
|
83 |
+
popup_4d47557e8d279db04bb42be9092829a3.setContent(html_f9410af04516429d1f1c883381fe8eba);
|
84 |
+
|
85 |
+
|
86 |
+
|
87 |
+
marker_2a7638b5cacc5305e893d4dba45911c5.bindPopup(popup_4d47557e8d279db04bb42be9092829a3)
|
88 |
+
;
|
89 |
+
|
90 |
+
|
91 |
+
|
92 |
+
|
93 |
+
marker_2a7638b5cacc5305e893d4dba45911c5.bindTooltip(
|
94 |
+
`<div>
|
95 |
+
Utran
|
96 |
+
</div>`,
|
97 |
+
{"sticky": true}
|
98 |
+
);
|
99 |
+
|
100 |
+
</script>
|
101 |
+
</html>
|
surat_AQI_testing_2024.csv
ADDED
The diff for this file is too large to render.
See raw diff
|
|
surat_sample_test.csv
ADDED
@@ -0,0 +1,204 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
PM2.5,PM10,NO,NO2,NOx,NH3,SO2,CO,Ozone,Benzene,Toluene,Xylene,Day,Month,Hour,AQI,Hour sin,Hour cos,Day sin,Day cos,Month sin,Month cos,AQI_step_1,AQI_step_2,AQI_step_3
|
2 |
+
69.95,549.41,64.17,97.97,34.76,0.0,35.78,1.26,0.0,0.0,0.0,0.0,18,11,1,549.2624999999999,0.25881904510252074,0.9659258262890683,-0.4853019625310808,-0.8743466161445822,-0.5000000000000004,0.8660254037844384,1111.1625,158.48,639.825
|
3 |
+
67.56,998.93,66.08,101.35,35.02,0.0,36.04,1.23,0.0,0.0,0.0,0.0,18,11,2,1111.1625,0.49999999999999994,0.8660254037844387,-0.4853019625310808,-0.8743466161445822,-0.5000000000000004,0.8660254037844384,158.48,639.825,210.0
|
4 |
+
50.98,187.72,66.48,101.38,34.94,0.0,36.09,1.18,0.0,0.0,0.0,0.0,18,11,3,158.48,0.7071067811865476,0.7071067811865476,-0.4853019625310808,-0.8743466161445822,-0.5000000000000004,0.8660254037844384,639.825,210.0,150.39999999999998
|
5 |
+
50.59,621.86,66.34,101.0,35.05,0.0,36.14,1.12,0.0,0.0,0.0,0.0,18,11,4,639.825,0.8660254037844386,0.5000000000000001,-0.4853019625310808,-0.8743466161445822,-0.5000000000000004,0.8660254037844384,210.0,150.39999999999998,662.3874999999999
|
6 |
+
72.78,260.0,66.92,102.82,35.2,0.0,36.17,1.07,0.0,0.0,0.0,0.0,18,11,5,210.0,0.9659258262890683,0.25881904510252074,-0.4853019625310808,-0.8743466161445822,-0.5000000000000004,0.8660254037844384,150.39999999999998,662.3874999999999,111.03333333333335
|
7 |
+
63.9,175.6,62.66,94.63,34.56,0.0,35.95,0.98,0.0,0.0,0.0,0.0,18,11,6,150.39999999999998,1.0,6.123233995736766e-17,-0.4853019625310808,-0.8743466161445822,-0.5000000000000004,0.8660254037844384,662.3874999999999,111.03333333333335,327.08750000000003
|
8 |
+
63.0,639.91,57.92,88.44,33.91,0.0,35.72,0.92,0.0,0.0,0.0,0.0,18,11,7,662.3874999999999,0.9659258262890683,-0.25881904510252063,-0.4853019625310808,-0.8743466161445822,-0.5000000000000004,0.8660254037844384,111.03333333333335,327.08750000000003,142.98
|
9 |
+
63.31,91.14,56.63,86.67,33.45,0.0,36.41,0.9,0.0,0.0,0.0,0.0,18,11,8,111.03333333333335,0.8660254037844387,-0.4999999999999998,-0.4853019625310808,-0.8743466161445822,-0.5000000000000004,0.8660254037844384,327.08750000000003,142.98,202.29999999999998
|
10 |
+
66.03,371.67,51.25,77.13,32.68,0.0,37.09,0.91,0.0,0.0,0.0,0.0,18,11,9,327.08750000000003,0.7071067811865476,-0.7071067811865475,-0.4853019625310808,-0.8743466161445822,-0.5000000000000004,0.8660254037844384,142.98,202.29999999999998,302.1625
|
11 |
+
67.62,164.47,45.74,69.24,31.84,0.0,35.9,0.93,0.0,0.0,0.0,0.0,18,11,10,142.98,0.49999999999999994,-0.8660254037844387,-0.4853019625310808,-0.8743466161445822,-0.5000000000000004,0.8660254037844384,202.29999999999998,302.1625,91.1
|
12 |
+
90.69,167.21,42.4,64.88,31.07,0.0,36.06,0.95,0.0,0.0,0.0,0.0,18,11,11,202.29999999999998,0.258819045102521,-0.9659258262890682,-0.4853019625310808,-0.8743466161445822,-0.5000000000000004,0.8660254037844384,302.1625,91.1,463.2125
|
13 |
+
75.8,351.73,39.57,59.55,30.66,0.0,35.44,0.93,0.0,0.0,0.0,0.0,18,11,12,302.1625,1.2246467991473532e-16,-1.0,-0.4853019625310808,-0.8743466161445822,-0.5000000000000004,0.8660254037844384,91.1,463.2125,836.7625
|
14 |
+
54.66,0.0,36.84,56.05,30.16,0.0,35.06,0.83,0.0,0.0,0.0,0.0,18,11,13,91.1,-0.2588190451025208,-0.9659258262890683,-0.4853019625310808,-0.8743466161445822,-0.5000000000000004,0.8660254037844384,463.2125,836.7625,104.74666666666667
|
15 |
+
41.84,480.57,36.97,56.66,30.16,0.0,34.74,0.75,0.0,0.0,0.0,0.0,18,11,14,463.2125,-0.4999999999999997,-0.8660254037844388,-0.4853019625310808,-0.8743466161445822,-0.5000000000000004,0.8660254037844384,836.7625,104.74666666666667,88.96
|
16 |
+
36.2,779.41,33.93,52.14,29.68,0.0,34.26,0.72,0.0,0.0,0.0,0.0,18,11,15,836.7625,-0.7071067811865471,-0.7071067811865479,-0.4853019625310808,-0.8743466161445822,-0.5000000000000004,0.8660254037844384,104.74666666666667,88.96,78.28750000000001
|
17 |
+
42.18,107.12,32.89,49.88,29.61,0.0,33.91,0.69,0.0,0.0,0.0,0.0,18,11,16,104.74666666666667,-0.8660254037844385,-0.5000000000000004,-0.4853019625310808,-0.8743466161445822,-0.5000000000000004,0.8660254037844384,88.96,78.28750000000001,98.11666666666666
|
18 |
+
48.77,88.96,35.45,54.23,30.09,0.0,34.17,0.68,0.0,0.0,0.0,0.0,18,11,17,88.96,-0.9659258262890683,-0.25881904510252063,-0.4853019625310808,-0.8743466161445822,-0.5000000000000004,0.8660254037844384,78.28750000000001,98.11666666666666,239.33999999999997
|
19 |
+
42.44,53.21,40.4,62.63,30.65,0.0,34.38,0.71,0.0,0.0,0.0,0.0,18,11,18,78.28750000000001,-1.0,-1.8369701987210297e-16,-0.4853019625310808,-0.8743466161445822,-0.5000000000000004,0.8660254037844384,98.11666666666666,239.33999999999997,165.43333333333334
|
20 |
+
58.87,60.6,43.38,67.18,31.33,0.0,34.87,0.8,0.0,0.0,0.0,0.0,18,11,19,98.11666666666666,-0.9659258262890684,0.2588190451025203,-0.4853019625310808,-0.8743466161445822,-0.5000000000000004,0.8660254037844384,239.33999999999997,165.43333333333334,164.54000000000002
|
21 |
+
58.33,289.34,52.2,80.88,32.49,0.0,35.15,1.0,0.0,0.0,0.0,0.0,18,11,20,239.33999999999997,-0.8660254037844386,0.5000000000000001,-0.4853019625310808,-0.8743466161445822,-0.5000000000000004,0.8660254037844384,165.43333333333334,164.54000000000002,143.23333333333335
|
22 |
+
68.13,198.15,59.37,91.22,33.89,0.0,35.14,1.18,0.0,0.0,0.0,0.0,18,11,21,165.43333333333334,-0.7071067811865477,0.7071067811865474,-0.4853019625310808,-0.8743466161445822,-0.5000000000000004,0.8660254037844384,164.54000000000002,143.23333333333335,958.75
|
23 |
+
73.0,196.81,62.14,95.41,34.12,0.0,35.31,1.25,0.0,0.0,0.0,0.0,18,11,22,164.54000000000002,-0.5000000000000004,0.8660254037844384,-0.4853019625310808,-0.8743466161445822,-0.5000000000000004,0.8660254037844384,143.23333333333335,958.75,221.95
|
24 |
+
72.97,160.86,63.67,97.14,34.43,0.0,35.34,1.28,0.0,0.0,0.0,0.0,18,11,23,143.23333333333335,-0.25881904510252157,0.9659258262890681,-0.4853019625310808,-0.8743466161445822,-0.5000000000000004,0.8660254037844384,958.75,221.95,218.35000000000002
|
25 |
+
72.1,877.0,61.81,94.17,34.42,0.0,35.37,1.27,0.0,0.0,0.0,0.0,19,11,0,958.75,0.0,1.0,-0.651372482722222,-0.7587581226927911,-0.5000000000000004,0.8660254037844384,221.95,218.35000000000002,230.1
|
26 |
+
76.27,271.95,61.12,93.52,34.22,0.0,35.43,1.24,0.0,0.0,0.0,0.0,19,11,1,221.95,0.25881904510252074,0.9659258262890683,-0.651372482722222,-0.7587581226927911,-0.5000000000000004,0.8660254037844384,218.35000000000002,230.1,174.5933333333333
|
27 |
+
84.4,268.35,62.41,95.27,34.28,0.0,35.43,1.18,0.0,0.0,0.0,0.0,19,11,2,218.35000000000002,0.49999999999999994,0.8660254037844387,-0.651372482722222,-0.7587581226927911,-0.5000000000000004,0.8660254037844384,230.1,174.5933333333333,834.6625
|
28 |
+
99.03,216.0,61.08,93.14,34.21,0.0,35.53,1.13,0.0,0.0,0.0,0.0,19,11,3,230.1,0.7071067811865476,0.7071067811865476,-0.651372482722222,-0.7587581226927911,-0.5000000000000004,0.8660254037844384,174.5933333333333,834.6625,121.99999999999999
|
29 |
+
61.17,211.89,62.0,94.81,34.28,0.0,35.52,1.08,0.0,0.0,0.0,0.0,19,11,4,174.5933333333333,0.8660254037844386,0.5000000000000001,-0.651372482722222,-0.7587581226927911,-0.5000000000000004,0.8660254037844384,834.6625,121.99999999999999,1081.5875
|
30 |
+
66.0,777.73,60.93,93.24,34.13,0.0,35.52,1.03,0.0,0.0,0.0,0.0,19,11,5,834.6625,0.9659258262890683,0.25881904510252074,-0.651372482722222,-0.7587581226927911,-0.5000000000000004,0.8660254037844384,121.99999999999999,1081.5875,728.925
|
31 |
+
66.6,0.0,60.47,92.74,34.22,0.0,35.51,1.0,0.0,0.0,0.0,0.0,19,11,6,121.99999999999999,1.0,6.123233995736766e-17,-0.651372482722222,-0.7587581226927911,-0.5000000000000004,0.8660254037844384,1081.5875,728.925,318.65000000000003
|
32 |
+
84.33,975.27,58.39,88.31,33.85,0.0,35.46,0.98,0.0,0.0,0.0,0.0,19,11,7,1081.5875,0.9659258262890683,-0.25881904510252063,-0.651372482722222,-0.7587581226927911,-0.5000000000000004,0.8660254037844384,728.925,318.65000000000003,88.7125
|
33 |
+
94.34,693.14,54.86,84.09,33.22,0.0,35.79,1.0,0.0,0.0,0.0,0.0,19,11,8,728.925,0.8660254037844387,-0.4999999999999998,-0.651372482722222,-0.7587581226927911,-0.5000000000000004,0.8660254037844384,318.65000000000003,88.7125,92.47500000000001
|
34 |
+
106.82,364.92,48.84,73.32,32.34,0.0,36.34,1.02,0.0,0.0,0.0,0.0,19,11,9,318.65000000000003,0.7071067811865476,-0.7071067811865475,-0.651372482722222,-0.7587581226927911,-0.5000000000000004,0.8660254037844384,88.7125,92.47500000000001,87.30000000000001
|
35 |
+
0.0,0.0,46.23,70.97,31.8,0.0,36.44,1.1,0.0,0.0,0.0,0.0,19,11,10,88.7125,0.49999999999999994,-0.8660254037844387,-0.651372482722222,-0.7587581226927911,-0.5000000000000004,0.8660254037844384,92.47500000000001,87.30000000000001,407.8375
|
36 |
+
0.0,0.0,48.37,73.98,31.98,0.0,36.6,1.2,0.0,0.0,0.0,0.0,19,11,11,92.47500000000001,0.258819045102521,-0.9659258262890682,-0.651372482722222,-0.7587581226927911,-0.5000000000000004,0.8660254037844384,87.30000000000001,407.8375,91.5625
|
37 |
+
0.0,0.0,46.02,69.84,31.79,0.0,35.89,1.15,0.0,0.0,0.0,0.0,19,11,12,87.30000000000001,1.2246467991473532e-16,-1.0,-0.651372482722222,-0.7587581226927911,-0.5000000000000004,0.8660254037844384,407.8375,91.5625,139.88666666666666
|
38 |
+
74.23,436.27,44.37,68.98,31.29,0.0,36.83,1.05,0.0,0.0,0.0,0.0,19,11,13,407.8375,-0.2588190451025208,-0.9659258262890683,-0.651372482722222,-0.7587581226927911,-0.5000000000000004,0.8660254037844384,91.5625,139.88666666666666,740.2125
|
39 |
+
52.0,0.0,48.93,73.25,32.02,0.0,39.16,0.98,0.0,0.0,0.0,0.0,19,11,14,91.5625,-0.4999999999999997,-0.8660254037844388,-0.651372482722222,-0.7587581226927911,-0.5000000000000004,0.8660254037844384,139.88666666666666,740.2125,419.85
|
40 |
+
52.52,159.83,42.77,65.19,31.09,0.0,34.67,0.91,0.0,0.0,0.0,0.0,19,11,15,139.88666666666666,-0.7071067811865471,-0.7071067811865479,-0.651372482722222,-0.7587581226927911,-0.5000000000000004,0.8660254037844384,740.2125,419.85,100.39999999999999
|
41 |
+
56.87,702.17,37.11,56.15,30.36,0.0,33.57,0.84,0.0,0.0,0.0,0.0,19,11,16,740.2125,-0.8660254037844385,-0.5000000000000004,-0.651372482722222,-0.7587581226927911,-0.5000000000000004,0.8660254037844384,419.85,100.39999999999999,95.4875
|
42 |
+
51.57,445.88,39.48,60.76,30.29,0.0,34.33,0.81,0.0,0.0,0.0,0.0,19,11,17,419.85,-0.9659258262890683,-0.25881904510252063,-0.651372482722222,-0.7587581226927911,-0.5000000000000004,0.8660254037844384,100.39999999999999,95.4875,195.07999999999998
|
43 |
+
39.21,100.6,43.26,67.11,30.88,0.0,34.35,0.83,0.0,0.0,0.0,0.0,19,11,18,100.39999999999999,-1.0,-1.8369701987210297e-16,-0.651372482722222,-0.7587581226927911,-0.5000000000000004,0.8660254037844384,95.4875,195.07999999999998,1043.5
|
44 |
+
0.0,0.0,49.8,76.39,32.2,0.0,34.83,0.94,0.0,0.0,0.0,0.0,19,11,19,95.4875,-0.9659258262890684,0.2588190451025203,-0.651372482722222,-0.7587581226927911,-0.5000000000000004,0.8660254037844384,195.07999999999998,1043.5,101.34
|
45 |
+
58.48,242.62,50.81,77.88,32.77,0.0,35.01,1.06,0.0,0.0,0.0,0.0,19,11,20,195.07999999999998,-0.8660254037844386,0.5000000000000001,-0.651372482722222,-0.7587581226927911,-0.5000000000000004,0.8660254037844384,1043.5,101.34,152.9
|
46 |
+
79.97,944.8,55.89,85.69,33.42,0.0,34.95,1.16,0.0,0.0,0.0,0.0,19,11,21,1043.5,-0.7071067811865477,0.7071067811865474,-0.651372482722222,-0.7587581226927911,-0.5000000000000004,0.8660254037844384,101.34,152.9,306.45000000000005
|
47 |
+
0.0,0.0,54.82,84.02,33.22,0.0,34.93,1.2,0.0,0.0,0.0,0.0,19,11,22,101.34,-0.5000000000000004,0.8660254037844384,-0.651372482722222,-0.7587581226927911,-0.5000000000000004,0.8660254037844384,152.9,306.45000000000005,200.89999999999998
|
48 |
+
75.87,95.92,56.49,86.79,33.3,0.0,35.02,1.22,0.0,0.0,0.0,0.0,19,11,23,152.9,-0.25881904510252157,0.9659258262890681,-0.651372482722222,-0.7587581226927911,-0.5000000000000004,0.8660254037844384,306.45000000000005,200.89999999999998,820.625
|
49 |
+
100.82,355.16,58.15,88.94,33.62,0.0,35.2,1.23,0.0,0.0,0.0,0.0,20,11,0,306.45000000000005,0.0,1.0,-0.7907757369376986,-0.6121059825476627,-0.5000000000000004,0.8660254037844384,200.89999999999998,820.625,157.43333333333334
|
50 |
+
90.27,231.67,57.12,87.2,33.42,0.0,35.2,1.2,0.0,0.0,0.0,0.0,20,11,1,200.89999999999998,0.25881904510252074,0.9659258262890683,-0.7907757369376986,-0.6121059825476627,-0.5000000000000004,0.8660254037844384,820.625,157.43333333333334,957.5875000000001
|
51 |
+
65.97,766.5,58.12,89.11,33.58,0.0,35.26,1.16,0.0,0.0,0.0,0.0,20,11,2,820.625,0.49999999999999994,0.8660254037844387,-0.7907757369376986,-0.6121059825476627,-0.5000000000000004,0.8660254037844384,157.43333333333334,957.5875000000001,564.7125
|
52 |
+
64.95,186.15,58.82,90.21,33.7,0.0,35.27,1.11,0.0,0.0,0.0,0.0,20,11,3,157.43333333333334,0.7071067811865476,0.7071067811865476,-0.7907757369376986,-0.6121059825476627,-0.5000000000000004,0.8660254037844384,957.5875000000001,564.7125,164.98000000000002
|
53 |
+
63.44,876.07,60.04,91.62,33.91,0.0,35.3,1.05,0.0,0.0,0.0,0.0,20,11,4,957.5875000000001,0.8660254037844386,0.5000000000000001,-0.7907757369376986,-0.6121059825476627,-0.5000000000000004,0.8660254037844384,564.7125,164.98000000000002,176.93333333333334
|
54 |
+
79.73,561.77,58.7,89.78,33.88,0.0,35.37,1.01,0.0,0.0,0.0,0.0,20,11,5,564.7125,0.9659258262890683,0.25881904510252074,-0.7907757369376986,-0.6121059825476627,-0.5000000000000004,0.8660254037844384,164.98000000000002,176.93333333333334,190.66666666666669
|
55 |
+
72.28,197.47,59.51,90.21,33.78,0.0,35.37,0.98,0.0,0.0,0.0,0.0,20,11,6,164.98000000000002,1.0,6.123233995736766e-17,-0.7907757369376986,-0.6121059825476627,-0.5000000000000004,0.8660254037844384,176.93333333333334,190.66666666666669,458.425
|
56 |
+
83.08,93.72,57.69,88.41,33.71,0.0,35.26,0.96,0.0,0.0,0.0,0.0,20,11,7,176.93333333333334,0.9659258262890683,-0.25881904510252063,-0.7907757369376986,-0.6121059825476627,-0.5000000000000004,0.8660254037844384,190.66666666666669,458.425,814.1875
|
57 |
+
87.2,146.97,54.61,82.63,33.24,0.0,35.42,0.98,0.0,0.0,0.0,0.0,20,11,8,190.66666666666669,0.8660254037844387,-0.4999999999999998,-0.7907757369376986,-0.6121059825476627,-0.5000000000000004,0.8660254037844384,458.425,814.1875,59.712500000000006
|
58 |
+
95.65,476.74,49.53,75.45,32.61,0.0,36.28,1.05,0.0,0.0,0.0,0.0,20,11,9,458.425,0.7071067811865476,-0.7071067811865475,-0.7907757369376986,-0.6121059825476627,-0.5000000000000004,0.8660254037844384,814.1875,59.712500000000006,352.3076923076923
|
59 |
+
119.95,761.35,45.88,68.69,31.81,0.0,45.23,1.17,0.0,0.0,0.0,0.0,20,11,10,814.1875,0.49999999999999994,-0.8660254037844387,-0.7907757369376986,-0.6121059825476627,-0.5000000000000004,0.8660254037844384,59.712500000000006,352.3076923076923,350.46153846153845
|
60 |
+
0.0,0.0,32.17,47.77,29.9,0.0,43.63,1.12,0.0,0.0,0.0,0.0,20,11,11,59.712500000000006,0.258819045102521,-0.9659258262890682,-0.7907757369376986,-0.6121059825476627,-0.5000000000000004,0.8660254037844384,352.3076923076923,350.46153846153845,284.59999999999997
|
61 |
+
188.0,0.0,25.49,38.39,28.41,0.0,35.53,0.7,0.0,0.0,0.0,0.0,20,11,12,352.3076923076923,1.2246467991473532e-16,-1.0,-0.7907757369376986,-0.6121059825476627,-0.5000000000000004,0.8660254037844384,350.46153846153845,284.59999999999997,204.7
|
62 |
+
185.6,0.0,18.0,27.03,27.31,0.0,37.22,0.69,0.0,0.0,0.0,0.0,20,11,13,350.46153846153845,-0.2588190451025208,-0.9659258262890683,-0.7907757369376986,-0.6121059825476627,-0.5000000000000004,0.8660254037844384,284.59999999999997,204.7,258.0
|
63 |
+
115.38,0.0,24.12,37.72,27.76,0.0,33.8,0.58,0.0,0.0,0.0,0.0,20,11,14,284.59999999999997,-0.4999999999999997,-0.8660254037844388,-0.7907757369376986,-0.6121059825476627,-0.5000000000000004,0.8660254037844384,204.7,258.0,284.0
|
64 |
+
91.41,216.79,27.57,42.19,28.41,0.0,33.74,0.49,0.0,0.0,0.0,0.0,20,11,15,204.7,-0.7071067811865471,-0.7071067811865479,-0.7907757369376986,-0.6121059825476627,-0.5000000000000004,0.8660254037844384,258.0,284.0,314.27500000000003
|
65 |
+
107.4,156.9,25.49,38.95,28.42,0.0,33.28,0.52,0.0,0.0,0.0,0.0,20,11,16,258.0,-0.8660254037844385,-0.5000000000000004,-0.7907757369376986,-0.6121059825476627,-0.5000000000000004,0.8660254037844384,284.0,314.27500000000003,891.125
|
66 |
+
109.87,334.0,27.75,42.72,28.6,0.0,33.59,0.66,0.0,0.0,0.0,0.0,20,11,17,284.0,-0.9659258262890683,-0.25881904510252063,-0.7907757369376986,-0.6121059825476627,-0.5000000000000004,0.8660254037844384,314.27500000000003,891.125,100.37666666666667
|
67 |
+
105.0,361.42,36.07,56.73,29.88,0.0,33.8,0.76,0.0,0.0,0.0,0.0,20,11,18,314.27500000000003,-1.0,-1.8369701987210297e-16,-0.7907757369376986,-0.6121059825476627,-0.5000000000000004,0.8660254037844384,891.125,100.37666666666667,97.6625
|
68 |
+
105.98,822.9,45.57,70.72,31.39,0.0,34.45,0.89,0.0,0.0,0.0,0.0,20,11,19,891.125,-0.9659258262890684,0.2588190451025203,-0.7907757369376986,-0.6121059825476627,-0.5000000000000004,0.8660254037844384,100.37666666666667,97.6625,96.13749999999999
|
69 |
+
0.0,0.0,52.85,81.13,32.57,0.0,34.48,1.05,0.0,0.0,0.0,0.0,20,11,20,100.37666666666667,-0.8660254037844386,0.5000000000000001,-0.7907757369376986,-0.6121059825476627,-0.5000000000000004,0.8660254037844384,97.6625,96.13749999999999,100.64666666666666
|
70 |
+
0.0,0.0,51.25,78.13,32.62,0.0,34.53,1.12,0.0,0.0,0.0,0.0,20,11,21,97.6625,-0.7071067811865477,0.7071067811865474,-0.7907757369376986,-0.6121059825476627,-0.5000000000000004,0.8660254037844384,96.13749999999999,100.64666666666666,100.93333333333334
|
71 |
+
0.0,0.0,50.0,76.91,32.34,0.0,34.66,1.13,0.0,0.0,0.0,0.0,20,11,22,96.13749999999999,-0.5000000000000004,0.8660254037844384,-0.7907757369376986,-0.6121059825476627,-0.5000000000000004,0.8660254037844384,100.64666666666666,100.93333333333334,99.925
|
72 |
+
0.0,0.0,53.86,81.94,32.95,0.0,34.78,1.15,0.0,0.0,0.0,0.0,20,11,23,100.64666666666666,-0.25881904510252157,0.9659258262890681,-0.7907757369376986,-0.6121059825476627,-0.5000000000000004,0.8660254037844384,100.93333333333334,99.925,93.1125
|
73 |
+
0.0,0.0,54.16,82.8,33.19,0.0,34.88,1.14,0.0,0.0,0.0,0.0,21,11,0,100.93333333333334,0.0,1.0,-0.8978045395707417,-0.44039415155763423,-0.5000000000000004,0.8660254037844384,99.925,93.1125,93.375
|
74 |
+
0.0,0.0,52.22,79.94,32.92,0.0,34.84,1.06,0.0,0.0,0.0,0.0,21,11,1,99.925,0.25881904510252074,0.9659258262890683,-0.8978045395707417,-0.44039415155763423,-0.5000000000000004,0.8660254037844384,93.1125,93.375,90.22500000000001
|
75 |
+
0.0,0.0,49.0,74.49,32.36,0.0,34.81,0.97,0.0,0.0,0.0,0.0,21,11,2,93.1125,0.49999999999999994,0.8660254037844387,-0.8978045395707417,-0.44039415155763423,-0.5000000000000004,0.8660254037844384,93.375,90.22500000000001,89.4125
|
76 |
+
0.0,0.0,49.03,74.7,32.18,0.0,34.82,0.9,0.0,0.0,0.0,0.0,21,11,3,93.375,0.7071067811865476,0.7071067811865476,-0.8978045395707417,-0.44039415155763423,-0.5000000000000004,0.8660254037844384,90.22500000000001,89.4125,90.0375
|
77 |
+
0.0,0.0,47.35,72.18,32.05,0.0,34.8,0.84,0.0,0.0,0.0,0.0,21,11,4,90.22500000000001,0.8660254037844386,0.5000000000000001,-0.8978045395707417,-0.44039415155763423,-0.5000000000000004,0.8660254037844384,89.4125,90.0375,94.675
|
78 |
+
0.0,0.0,46.49,71.53,31.92,0.0,34.78,0.81,0.0,0.0,0.0,0.0,21,11,5,89.4125,0.9659258262890683,0.25881904510252074,-0.8978045395707417,-0.44039415155763423,-0.5000000000000004,0.8660254037844384,90.0375,94.675,100.22333333333333
|
79 |
+
0.0,0.0,47.38,72.03,31.91,0.0,34.78,0.8,0.0,0.0,0.0,0.0,21,11,6,90.0375,1.0,6.123233995736766e-17,-0.8978045395707417,-0.44039415155763423,-0.5000000000000004,0.8660254037844384,94.675,100.22333333333333,97.225
|
80 |
+
0.0,0.0,49.1,75.74,32.26,0.0,34.85,0.82,0.0,0.0,0.0,0.0,21,11,7,94.675,0.9659258262890683,-0.25881904510252063,-0.8978045395707417,-0.44039415155763423,-0.5000000000000004,0.8660254037844384,100.22333333333333,97.225,88.66250000000001
|
81 |
+
0.0,0.0,52.78,80.67,32.79,0.0,35.22,0.9,0.0,0.0,0.0,0.0,21,11,8,100.22333333333333,0.8660254037844387,-0.4999999999999998,-0.8978045395707417,-0.44039415155763423,-0.5000000000000004,0.8660254037844384,97.225,88.66250000000001,84.71249999999999
|
82 |
+
0.0,0.0,51.19,77.78,32.78,0.0,35.75,0.98,0.0,0.0,0.0,0.0,21,11,9,97.225,0.7071067811865476,-0.7071067811865475,-0.8978045395707417,-0.44039415155763423,-0.5000000000000004,0.8660254037844384,88.66250000000001,84.71249999999999,81.1875
|
83 |
+
0.0,0.0,47.1,70.93,32.03,0.0,35.25,1.05,0.0,0.0,0.0,0.0,21,11,10,88.66250000000001,0.49999999999999994,-0.8660254037844387,-0.8978045395707417,-0.44039415155763423,-0.5000000000000004,0.8660254037844384,84.71249999999999,81.1875,78.89999999999999
|
84 |
+
0.0,0.0,44.49,67.77,31.56,0.0,35.83,1.14,0.0,0.0,0.0,0.0,21,11,11,84.71249999999999,0.258819045102521,-0.9659258262890682,-0.8978045395707417,-0.44039415155763423,-0.5000000000000004,0.8660254037844384,81.1875,78.89999999999999,80.0375
|
85 |
+
0.0,0.0,42.59,64.95,31.29,0.0,35.76,1.12,0.0,0.0,0.0,0.0,21,11,12,81.1875,1.2246467991473532e-16,-1.0,-0.8978045395707417,-0.44039415155763423,-0.5000000000000004,0.8660254037844384,78.89999999999999,80.0375,83.5375
|
86 |
+
0.0,0.0,41.34,63.12,31.04,0.0,35.08,1.06,0.0,0.0,0.0,0.0,21,11,13,78.89999999999999,-0.2588190451025208,-0.9659258262890683,-0.8978045395707417,-0.44039415155763423,-0.5000000000000004,0.8660254037844384,80.0375,83.5375,82.3625
|
87 |
+
0.0,0.0,41.54,64.03,30.89,0.0,34.61,0.99,0.0,0.0,0.0,0.0,21,11,14,80.0375,-0.4999999999999997,-0.8660254037844388,-0.8978045395707417,-0.44039415155763423,-0.5000000000000004,0.8660254037844384,83.5375,82.3625,82.2875
|
88 |
+
0.0,0.0,43.67,66.83,31.18,0.0,34.37,0.95,0.0,0.0,0.0,0.0,21,11,15,83.5375,-0.7071067811865471,-0.7071067811865479,-0.8978045395707417,-0.44039415155763423,-0.5000000000000004,0.8660254037844384,82.3625,82.2875,89.225
|
89 |
+
0.0,0.0,43.32,65.89,31.28,0.0,34.09,0.92,0.0,0.0,0.0,0.0,21,11,16,82.3625,-0.8660254037844385,-0.5000000000000004,-0.8978045395707417,-0.44039415155763423,-0.5000000000000004,0.8660254037844384,82.2875,89.225,94.825
|
90 |
+
0.0,0.0,42.7,65.83,31.16,0.0,34.03,0.9,0.0,0.0,0.0,0.0,21,11,17,82.2875,-0.9659258262890683,-0.25881904510252063,-0.8978045395707417,-0.44039415155763423,-0.5000000000000004,0.8660254037844384,89.225,94.825,101.54
|
91 |
+
0.0,0.0,46.61,71.38,31.66,0.0,34.17,0.92,0.0,0.0,0.0,0.0,21,11,18,89.225,-1.0,-1.8369701987210297e-16,-0.8978045395707417,-0.44039415155763423,-0.5000000000000004,0.8660254037844384,94.825,101.54,103.60333333333334
|
92 |
+
0.0,0.0,49.01,75.86,32.1,0.0,34.64,0.97,0.0,0.0,0.0,0.0,21,11,19,94.825,-0.9659258262890684,0.2588190451025203,-0.8978045395707417,-0.44039415155763423,-0.5000000000000004,0.8660254037844384,101.54,103.60333333333334,103.41666666666667
|
93 |
+
0.0,0.0,54.66,84.62,32.92,0.0,34.77,1.04,0.0,0.0,0.0,0.0,21,11,20,101.54,-0.8660254037844386,0.5000000000000001,-0.8978045395707417,-0.44039415155763423,-0.5000000000000004,0.8660254037844384,103.60333333333334,103.41666666666667,103.96
|
94 |
+
0.0,0.0,59.35,90.81,33.75,0.0,35.09,1.12,0.0,0.0,0.0,0.0,21,11,21,103.60333333333334,-0.7071067811865477,0.7071067811865474,-0.8978045395707417,-0.44039415155763423,-0.5000000000000004,0.8660254037844384,103.41666666666667,103.96,105.2
|
95 |
+
0.0,0.0,59.49,90.25,33.92,0.0,35.29,1.14,0.0,0.0,0.0,0.0,21,11,22,103.41666666666667,-0.5000000000000004,0.8660254037844384,-0.8978045395707417,-0.44039415155763423,-0.5000000000000004,0.8660254037844384,103.96,105.2,103.45333333333333
|
96 |
+
0.0,0.0,59.97,91.88,34.02,0.0,35.55,1.13,0.0,0.0,0.0,0.0,21,11,23,103.96,-0.25881904510252157,0.9659258262890681,-0.8978045395707417,-0.44039415155763423,-0.5000000000000004,0.8660254037844384,105.2,103.45333333333333,102.02
|
97 |
+
0.0,0.0,62.73,95.6,34.35,0.0,35.81,1.14,0.0,0.0,0.0,0.0,22,11,0,105.2,0.0,1.0,-0.9680771188662041,-0.2506525322587213,-0.5000000000000004,0.8660254037844384,103.45333333333333,102.02,100.70666666666666
|
98 |
+
0.0,0.0,59.11,90.36,33.98,0.0,36.11,1.09,0.0,0.0,0.0,0.0,22,11,1,103.45333333333333,0.25881904510252074,0.9659258262890683,-0.9680771188662041,-0.2506525322587213,-0.5000000000000004,0.8660254037844384,102.02,100.70666666666666,100.93666666666667
|
99 |
+
0.0,0.0,56.58,86.06,33.5,0.0,35.73,1.02,0.0,0.0,0.0,0.0,22,11,2,102.02,0.49999999999999994,0.8660254037844387,-0.9680771188662041,-0.2506525322587213,-0.5000000000000004,0.8660254037844384,100.70666666666666,100.93666666666667,100.89
|
100 |
+
0.0,0.0,53.82,82.12,33.24,0.0,35.77,0.98,0.0,0.0,0.0,0.0,22,11,3,100.70666666666666,0.7071067811865476,0.7071067811865476,-0.9680771188662041,-0.2506525322587213,-0.5000000000000004,0.8660254037844384,100.93666666666667,100.89,101.28
|
101 |
+
0.0,0.0,53.66,82.81,32.98,0.0,35.69,0.94,0.0,0.0,0.0,0.0,22,11,4,100.93666666666667,0.8660254037844386,0.5000000000000001,-0.9680771188662041,-0.2506525322587213,-0.5000000000000004,0.8660254037844384,100.89,101.28,102.10666666666667
|
102 |
+
0.0,0.0,54.48,82.67,33.05,0.0,35.67,0.94,0.0,0.0,0.0,0.0,22,11,5,100.89,0.9659258262890683,0.25881904510252074,-0.9680771188662041,-0.2506525322587213,-0.5000000000000004,0.8660254037844384,101.28,102.10666666666667,102.87333333333333
|
103 |
+
0.0,0.0,54.83,83.84,32.99,0.0,35.69,0.91,0.0,0.0,0.0,0.0,22,11,6,101.28,1.0,6.123233995736766e-17,-0.9680771188662041,-0.2506525322587213,-0.5000000000000004,0.8660254037844384,102.10666666666667,102.87333333333333,95.8375
|
104 |
+
0.0,0.0,56.33,86.32,33.23,0.0,35.72,0.92,0.0,0.0,0.0,0.0,22,11,7,102.10666666666667,0.9659258262890683,-0.25881904510252063,-0.9680771188662041,-0.2506525322587213,-0.5000000000000004,0.8660254037844384,102.87333333333333,95.8375,90.35
|
105 |
+
0.0,0.0,58.16,88.62,33.66,0.0,36.08,0.95,0.0,0.0,0.0,0.0,22,11,8,102.87333333333333,0.8660254037844387,-0.4999999999999998,-0.9680771188662041,-0.2506525322587213,-0.5000000000000004,0.8660254037844384,95.8375,90.35,96.7125
|
106 |
+
0.0,0.0,50.79,76.67,32.95,0.0,36.52,0.99,0.0,0.0,0.0,0.0,22,11,9,95.8375,0.7071067811865476,-0.7071067811865475,-0.9680771188662041,-0.2506525322587213,-0.5000000000000004,0.8660254037844384,90.35,96.7125,92.9625
|
107 |
+
0.0,0.0,47.41,72.28,32.08,0.0,36.54,1.08,0.0,0.0,0.0,0.0,22,11,10,90.35,0.49999999999999994,-0.8660254037844387,-0.9680771188662041,-0.2506525322587213,-0.5000000000000004,0.8660254037844384,96.7125,92.9625,80.39999999999999
|
108 |
+
0.0,0.0,50.38,77.37,32.43,0.0,37.06,1.21,0.0,0.0,0.0,0.0,22,11,11,96.7125,0.258819045102521,-0.9659258262890682,-0.9680771188662041,-0.2506525322587213,-0.5000000000000004,0.8660254037844384,92.9625,80.39999999999999,74.57499999999999
|
109 |
+
0.0,0.0,48.79,74.37,32.14,0.0,36.81,1.21,0.0,0.0,0.0,0.0,22,11,12,92.9625,1.2246467991473532e-16,-1.0,-0.9680771188662041,-0.2506525322587213,-0.5000000000000004,0.8660254037844384,80.39999999999999,74.57499999999999,73.675
|
110 |
+
0.0,0.0,42.84,64.32,31.35,0.0,36.1,1.1,0.0,0.0,0.0,0.0,22,11,13,80.39999999999999,-0.2588190451025208,-0.9659258262890683,-0.9680771188662041,-0.2506525322587213,-0.5000000000000004,0.8660254037844384,74.57499999999999,73.675,72.7625
|
111 |
+
0.0,0.0,39.15,59.66,30.61,0.0,35.48,0.99,0.0,0.0,0.0,0.0,22,11,14,74.57499999999999,-0.4999999999999997,-0.8660254037844388,-0.9680771188662041,-0.2506525322587213,-0.5000000000000004,0.8660254037844384,73.675,72.7625,72.55
|
112 |
+
0.0,0.0,38.86,58.94,30.57,0.0,35.08,0.93,0.0,0.0,0.0,0.0,22,11,15,73.675,-0.7071067811865471,-0.7071067811865479,-0.9680771188662041,-0.2506525322587213,-0.5000000000000004,0.8660254037844384,72.7625,72.55,85.9375
|
113 |
+
0.0,0.0,37.92,58.21,30.42,0.0,34.41,0.9,0.0,0.0,0.0,0.0,22,11,16,72.7625,-0.8660254037844385,-0.5000000000000004,-0.9680771188662041,-0.2506525322587213,-0.5000000000000004,0.8660254037844384,72.55,85.9375,58.0
|
114 |
+
0.0,0.0,37.54,58.04,30.52,0.0,34.28,0.9,0.0,0.0,0.0,0.0,22,11,17,72.55,-0.9659258262890683,-0.25881904510252063,-0.9680771188662041,-0.2506525322587213,-0.5000000000000004,0.8660254037844384,85.9375,58.0,284.20000000000005
|
115 |
+
0.0,0.0,45.18,68.75,31.37,0.0,35.16,0.95,0.0,0.0,0.0,0.0,22,11,18,85.9375,-1.0,-1.8369701987210297e-16,-0.9680771188662041,-0.2506525322587213,-0.5000000000000004,0.8660254037844384,58.0,284.20000000000005,303.84615384615387
|
116 |
+
0.0,0.0,27.95,41.84,29.34,0.0,39.62,1.16,0.0,0.0,0.0,0.0,22,11,19,58.0,-0.9659258262890684,0.2588190451025203,-0.9680771188662041,-0.2506525322587213,-0.5000000000000004,0.8660254037844384,284.20000000000005,303.84615384615387,306.60769230769233
|
117 |
+
115.26,300.6,38.22,59.84,30.06,0.0,35.62,1.21,0.0,0.0,0.0,0.0,22,11,20,284.20000000000005,-0.8660254037844386,0.5000000000000001,-0.9680771188662041,-0.2506525322587213,-0.5000000000000004,0.8660254037844384,303.84615384615387,306.60769230769233,984.8375
|
118 |
+
125.0,0.0,45.61,70.38,31.35,0.0,35.86,1.27,0.0,0.0,0.0,0.0,22,11,21,303.84615384615387,-0.7071067811865477,0.7071067811865474,-0.9680771188662041,-0.2506525322587213,-0.5000000000000004,0.8660254037844384,306.60769230769233,984.8375,565.3874999999999
|
119 |
+
128.59,214.31,49.12,75.78,32.06,0.0,35.92,1.32,0.0,0.0,0.0,0.0,22,11,22,306.60769230769233,-0.5000000000000004,0.8660254037844384,-0.9680771188662041,-0.2506525322587213,-0.5000000000000004,0.8660254037844384,984.8375,565.3874999999999,100.11666666666666
|
120 |
+
125.03,897.87,53.75,81.87,32.71,0.0,36.02,1.33,0.0,0.0,0.0,0.0,22,11,23,984.8375,-0.25881904510252157,0.9659258262890681,-0.9680771188662041,-0.2506525322587213,-0.5000000000000004,0.8660254037844384,565.3874999999999,100.11666666666666,310.4846153846154
|
121 |
+
125.95,562.31,52.75,80.42,32.78,0.0,36.09,1.3,0.0,0.0,0.0,0.0,23,11,0,565.3874999999999,0.0,1.0,-0.9987165071710528,-0.05064916883871355,-0.5000000000000004,0.8660254037844384,100.11666666666666,310.4846153846154,324.46153846153845
|
122 |
+
0.0,0.0,52.23,80.35,32.66,0.0,36.15,1.26,0.0,0.0,0.0,0.0,23,11,1,100.11666666666666,0.25881904510252074,0.9659258262890683,-0.9987165071710528,-0.05064916883871355,-0.5000000000000004,0.8660254037844384,310.4846153846154,324.46153846153845,102.88666666666667
|
123 |
+
133.63,307.45,55.58,85.64,33.36,0.0,36.29,0.9,0.0,0.0,0.0,0.0,23,11,2,310.4846153846154,0.49999999999999994,0.8660254037844387,-0.9987165071710528,-0.05064916883871355,-0.5000000000000004,0.8660254037844384,324.46153846153845,102.88666666666667,320.3461538461538
|
124 |
+
151.8,221.22,56.48,86.44,33.44,0.0,36.4,1.19,0.0,0.0,0.0,0.0,23,11,3,324.46153846153845,0.7071067811865476,0.7071067811865476,-0.9987165071710528,-0.05064916883871355,-0.5000000000000004,0.8660254037844384,102.88666666666667,320.3461538461538,691.4375
|
125 |
+
0.0,0.0,58.45,88.66,33.67,0.0,36.51,1.16,0.0,0.0,0.0,0.0,23,11,4,102.88666666666667,0.8660254037844386,0.5000000000000001,-0.9987165071710528,-0.05064916883871355,-0.5000000000000004,0.8660254037844384,320.3461538461538,691.4375,576.225
|
126 |
+
146.45,225.24,57.79,88.81,33.68,0.0,36.53,1.14,0.0,0.0,0.0,0.0,23,11,5,320.3461538461538,0.9659258262890683,0.25881904510252074,-0.9987165071710528,-0.05064916883871355,-0.5000000000000004,0.8660254037844384,691.4375,576.225,322.4307692307692
|
127 |
+
133.13,663.15,58.39,89.09,33.65,0.0,36.61,1.11,0.0,0.0,0.0,0.0,23,11,6,691.4375,1.0,6.123233995736766e-17,-0.9987165071710528,-0.05064916883871355,-0.5000000000000004,0.8660254037844384,576.225,322.4307692307692,479.8125
|
128 |
+
137.4,570.98,54.36,82.59,33.24,0.0,36.71,1.05,0.0,0.0,0.0,0.0,23,11,7,576.225,0.9659258262890683,-0.25881904510252063,-0.9987165071710528,-0.05064916883871355,-0.5000000000000004,0.8660254037844384,322.4307692307692,479.8125,352.0
|
129 |
+
149.16,276.42,52.91,80.58,32.83,0.0,37.28,1.06,0.0,0.0,0.0,0.0,23,11,8,322.4307692307692,0.8660254037844387,-0.4999999999999998,-0.9987165071710528,-0.05064916883871355,-0.5000000000000004,0.8660254037844384,479.8125,352.0,977.3375
|
130 |
+
156.1,493.85,58.2,89.68,33.43,0.0,38.24,1.14,0.0,0.0,0.0,0.0,23,11,9,479.8125,0.7071067811865476,-0.7071067811865475,-0.9987165071710528,-0.05064916883871355,-0.5000000000000004,0.8660254037844384,352.0,977.3375,376.1538461538462
|
131 |
+
187.6,372.88,59.95,91.19,33.92,0.0,38.26,1.23,0.0,0.0,0.0,0.0,23,11,10,352.0,0.49999999999999994,-0.8660254037844387,-0.9987165071710528,-0.05064916883871355,-0.5000000000000004,0.8660254037844384,977.3375,376.1538461538462,583.3125
|
132 |
+
176.0,891.87,48.2,71.9,32.47,0.0,37.66,1.08,0.0,0.0,0.0,0.0,23,11,11,977.3375,0.258819045102521,-0.9659258262890682,-0.9987165071710528,-0.05064916883871355,-0.5000000000000004,0.8660254037844384,376.1538461538462,583.3125,55.9375
|
133 |
+
219.0,337.74,37.65,56.69,30.61,0.0,36.4,0.9,0.0,0.0,0.0,0.0,23,11,12,376.1538461538462,1.2246467991473532e-16,-1.0,-0.9987165071710528,-0.05064916883871355,-0.5000000000000004,0.8660254037844384,583.3125,55.9375,60.337500000000006
|
134 |
+
216.34,576.65,30.61,45.82,29.38,0.0,35.7,0.82,0.0,0.0,0.0,0.0,23,11,13,583.3125,-0.2588190451025208,-0.9659258262890683,-0.9987165071710528,-0.05064916883871355,-0.5000000000000004,0.8660254037844384,55.9375,60.337500000000006,283.5
|
135 |
+
0.0,0.0,29.29,44.75,28.96,0.0,35.25,0.73,0.0,0.0,0.0,0.0,23,11,14,55.9375,-0.4999999999999997,-0.8660254037844388,-0.9987165071710528,-0.05064916883871355,-0.5000000000000004,0.8660254037844384,60.337500000000006,283.5,65.4375
|
136 |
+
0.0,0.0,31.01,48.27,29.12,0.0,34.77,0.79,0.0,0.0,0.0,0.0,23,11,15,60.337500000000006,-0.7071067811865471,-0.7071067811865479,-0.9987165071710528,-0.05064916883871355,-0.5000000000000004,0.8660254037844384,283.5,65.4375,74.57499999999999
|
137 |
+
115.05,118.07,34.55,52.38,29.58,0.0,34.37,0.81,0.0,0.0,0.0,0.0,23,11,16,283.5,-0.8660254037844385,-0.5000000000000004,-0.9987165071710528,-0.05064916883871355,-0.5000000000000004,0.8660254037844384,65.4375,74.57499999999999,308.66153846153844
|
138 |
+
0.0,0.0,34.21,52.35,29.77,0.0,34.66,0.86,0.0,0.0,0.0,0.0,23,11,17,65.4375,-0.9659258262890683,-0.25881904510252063,-0.9987165071710528,-0.05064916883871355,-0.5000000000000004,0.8660254037844384,74.57499999999999,308.66153846153844,316.7153846153846
|
139 |
+
0.0,0.0,38.27,59.66,30.44,0.0,35.04,0.95,0.0,0.0,0.0,0.0,23,11,18,74.57499999999999,-1.0,-1.8369701987210297e-16,-0.9987165071710528,-0.05064916883871355,-0.5000000000000004,0.8660254037844384,308.66153846153844,316.7153846153846,332.2846153846154
|
140 |
+
131.26,139.7,42.78,66.11,30.97,0.0,35.35,1.02,0.0,0.0,0.0,0.0,23,11,19,308.66153846153844,-0.9659258262890684,0.2588190451025203,-0.9987165071710528,-0.05064916883871355,-0.5000000000000004,0.8660254037844384,316.7153846153846,332.2846153846154,325.96153846153845
|
141 |
+
141.73,153.58,51.0,79.18,32.22,0.0,35.46,1.12,0.0,0.0,0.0,0.0,23,11,20,316.7153846153846,-0.8660254037844386,0.5000000000000001,-0.9987165071710528,-0.05064916883871355,-0.5000000000000004,0.8660254037844384,332.2846153846154,325.96153846153845,109.59333333333333
|
142 |
+
161.97,163.0,58.85,90.77,33.53,0.0,35.88,1.23,0.0,0.0,0.0,0.0,23,11,21,332.2846153846154,-0.7071067811865477,0.7071067811865474,-0.9987165071710528,-0.05064916883871355,-0.5000000000000004,0.8660254037844384,325.96153846153845,109.59333333333333,111.18666666666667
|
143 |
+
153.75,163.16,65.06,100.68,34.83,0.0,36.28,1.39,0.0,0.0,0.0,0.0,23,11,22,325.96153846153845,-0.5000000000000004,0.8660254037844384,-0.9987165071710528,-0.05064916883871355,-0.5000000000000004,0.8660254037844384,109.59333333333333,111.18666666666667,112.13666666666667
|
144 |
+
0.0,0.0,71.26,108.78,35.65,0.0,36.54,1.55,0.0,0.0,0.0,0.0,23,11,23,109.59333333333333,-0.25881904510252157,0.9659258262890681,-0.9987165071710528,-0.05064916883871355,-0.5000000000000004,0.8660254037844384,111.18666666666667,112.13666666666667,331.5153846153846
|
145 |
+
0.0,0.0,73.75,113.56,36.27,0.0,36.77,1.59,0.0,0.0,0.0,0.0,24,11,0,111.18666666666667,0.0,1.0,-0.9884683243281114,0.15142777750457667,-0.5000000000000004,0.8660254037844384,112.13666666666667,331.5153846153846,324.3538461538461
|
146 |
+
0.0,0.0,76.07,116.41,36.54,0.0,37.01,1.59,0.0,0.0,0.0,0.0,24,11,1,112.13666666666667,0.25881904510252074,0.9659258262890683,-0.9884683243281114,0.15142777750457667,-0.5000000000000004,0.8660254037844384,331.5153846153846,324.3538461538461,314.7769230769231
|
147 |
+
160.97,162.2,80.42,122.59,37.27,0.0,37.25,1.6,0.0,0.0,0.0,0.0,24,11,2,331.5153846153846,0.49999999999999994,0.8660254037844387,-0.9884683243281114,0.15142777750457667,-0.5000000000000004,0.8660254037844384,324.3538461538461,314.7769230769231,321.2076923076923
|
148 |
+
151.66,163.41,79.01,121.54,37.2,0.0,37.42,1.53,0.0,0.0,0.0,0.0,24,11,3,324.3538461538461,0.7071067811865476,0.7071067811865476,-0.9884683243281114,0.15142777750457667,-0.5000000000000004,0.8660254037844384,314.7769230769231,321.2076923076923,114.25333333333333
|
149 |
+
139.21,170.07,80.13,121.9,37.08,0.0,37.5,1.47,0.0,0.0,0.0,0.0,24,11,4,314.7769230769231,0.8660254037844386,0.5000000000000001,-0.9884683243281114,0.15142777750457667,-0.5000000000000004,0.8660254037844384,321.2076923076923,114.25333333333333,112.11333333333333
|
150 |
+
147.57,152.9,80.44,123.25,37.38,0.0,37.45,1.4,0.0,0.0,0.0,0.0,24,11,5,321.2076923076923,0.9659258262890683,0.25881904510252074,-0.9884683243281114,0.15142777750457667,-0.5000000000000004,0.8660254037844384,114.25333333333333,112.11333333333333,113.59
|
151 |
+
0.0,0.0,80.37,122.76,37.26,0.0,37.42,1.34,0.0,0.0,0.0,0.0,24,11,6,114.25333333333333,1.0,6.123233995736766e-17,-0.9884683243281114,0.15142777750457667,-0.5000000000000004,0.8660254037844384,112.11333333333333,113.59,113.01
|
152 |
+
0.0,0.0,76.6,116.34,36.64,0.0,37.33,1.27,0.0,0.0,0.0,0.0,24,11,7,112.11333333333333,0.9659258262890683,-0.25881904510252063,-0.9884683243281114,0.15142777750457667,-0.5000000000000004,0.8660254037844384,113.59,113.01,110.66666666666667
|
153 |
+
0.0,0.0,78.53,120.77,36.8,0.0,37.81,1.31,0.0,0.0,0.0,0.0,24,11,8,113.59,0.8660254037844387,-0.4999999999999998,-0.9884683243281114,0.15142777750457667,-0.5000000000000004,0.8660254037844384,113.01,110.66666666666667,109.90333333333334
|
154 |
+
0.0,0.0,78.0,119.03,37.2,0.0,38.56,1.36,0.0,0.0,0.0,0.0,24,11,9,113.01,0.7071067811865476,-0.7071067811865475,-0.9884683243281114,0.15142777750457667,-0.5000000000000004,0.8660254037844384,110.66666666666667,109.90333333333334,301.94615384615383
|
155 |
+
0.0,0.0,73.43,112.0,36.34,0.0,38.56,1.37,0.0,0.0,0.0,0.0,24,11,10,110.66666666666667,0.49999999999999994,-0.8660254037844387,-0.9884683243281114,0.15142777750457667,-0.5000000000000004,0.8660254037844384,109.90333333333334,301.94615384615383,102.17
|
156 |
+
0.0,0.0,72.2,109.71,36.06,0.0,38.05,1.44,0.0,0.0,0.0,0.0,24,11,11,109.90333333333334,0.258819045102521,-0.9659258262890682,-0.9884683243281114,0.15142777750457667,-0.5000000000000004,0.8660254037844384,301.94615384615383,102.17,240.7
|
157 |
+
122.53,174.6,65.94,100.0,35.19,0.0,37.8,1.43,0.0,0.0,0.0,0.0,24,11,12,301.94615384615383,1.2246467991473532e-16,-1.0,-0.9884683243281114,0.15142777750457667,-0.5000000000000004,0.8660254037844384,102.17,240.7,266.6666666666667
|
158 |
+
0.0,0.0,58.12,86.51,33.6,0.0,36.79,1.28,0.0,0.0,0.0,0.0,24,11,13,102.17,-0.2588190451025208,-0.9659258262890683,-0.9884683243281114,0.15142777750457667,-0.5000000000000004,0.8660254037844384,240.7,266.6666666666667,88.25
|
159 |
+
102.21,118.79,47.29,71.95,31.97,0.0,35.92,1.15,0.0,0.0,0.0,0.0,24,11,14,240.7,-0.4999999999999997,-0.8660254037844388,-0.9884683243281114,0.15142777750457667,-0.5000000000000004,0.8660254037844384,266.6666666666667,88.25,196.76666666666665
|
160 |
+
110.0,115.0,45.57,70.67,31.81,0.0,35.92,1.09,0.0,0.0,0.0,0.0,24,11,15,266.6666666666667,-0.7071067811865471,-0.7071067811865479,-0.9884683243281114,0.15142777750457667,-0.5000000000000004,0.8660254037844384,88.25,196.76666666666665,101.87
|
161 |
+
0.0,0.0,46.35,70.6,31.66,0.0,35.66,1.03,0.0,0.0,0.0,0.0,24,11,16,88.25,-0.8660254037844385,-0.5000000000000004,-0.9884683243281114,0.15142777750457667,-0.5000000000000004,0.8660254037844384,196.76666666666665,101.87,136.76666666666665
|
162 |
+
89.03,96.31,47.59,73.25,31.91,0.0,35.26,0.99,0.0,0.0,0.0,0.0,24,11,17,196.76666666666665,-0.9659258262890683,-0.25881904510252063,-0.9884683243281114,0.15142777750457667,-0.5000000000000004,0.8660254037844384,101.87,136.76666666666665,143.96666666666667
|
163 |
+
16.45,102.67,55.21,85.61,33.02,0.0,35.56,1.01,0.0,0.0,0.0,0.0,24,11,18,101.87,-1.0,-1.8369701987210297e-16,-0.9884683243281114,0.15142777750457667,-0.5000000000000004,0.8660254037844384,136.76666666666665,143.96666666666667,295.40000000000003
|
164 |
+
71.03,117.02,62.76,95.28,34.31,0.0,36.03,0.99,0.0,0.0,0.0,0.0,24,11,19,136.76666666666665,-0.9659258262890684,0.2588190451025203,-0.9884683243281114,0.15142777750457667,-0.5000000000000004,0.8660254037844384,143.96666666666667,295.40000000000003,112.41666666666667
|
165 |
+
73.19,153.95,59.55,92.24,33.86,0.0,35.9,1.06,0.0,0.0,0.0,0.0,24,11,20,143.96666666666667,-0.8660254037844386,0.5000000000000001,-0.9884683243281114,0.15142777750457667,-0.5000000000000004,0.8660254037844384,295.40000000000003,112.41666666666667,319.2307692307692
|
166 |
+
118.62,152.33,67.72,104.6,34.92,0.0,36.3,1.16,0.0,0.0,0.0,0.0,24,11,21,295.40000000000003,-0.7071067811865477,0.7071067811865474,-0.9884683243281114,0.15142777750457667,-0.5000000000000004,0.8660254037844384,112.41666666666667,319.2307692307692,319.2692307692308
|
167 |
+
0.0,0.0,76.47,117.25,36.6,0.0,36.65,1.27,0.0,0.0,0.0,0.0,24,11,22,112.41666666666667,-0.5000000000000004,0.8660254037844384,-0.9884683243281114,0.15142777750457667,-0.5000000000000004,0.8660254037844384,319.2307692307692,319.2692307692308,320.6923076923077
|
168 |
+
145.0,147.05,80.63,123.09,37.44,0.0,37.0,1.41,0.0,0.0,0.0,0.0,24,11,23,319.2307692307692,-0.25881904510252157,0.9659258262890681,-0.9884683243281114,0.15142777750457667,-0.5000000000000004,0.8660254037844384,319.2692307692308,320.6923076923077,116.83333333333333
|
169 |
+
145.05,148.52,83.77,128.87,37.97,0.0,37.35,1.5,0.0,0.0,0.0,0.0,25,11,0,319.2692307692308,0.0,1.0,-0.9377521321470804,0.3473052528448203,-0.5000000000000004,0.8660254037844384,320.6923076923077,116.83333333333333,117.15666666666667
|
170 |
+
146.9,156.71,86.84,133.74,38.43,0.0,37.49,1.59,0.0,0.0,0.0,0.0,25,11,1,320.6923076923077,0.25881904510252074,0.9659258262890683,-0.9377521321470804,0.3473052528448203,-0.5000000000000004,0.8660254037844384,116.83333333333333,117.15666666666667,302.33076923076925
|
171 |
+
0.0,0.0,85.48,130.5,38.48,0.0,37.4,1.57,0.0,0.0,0.0,0.0,25,11,2,116.83333333333333,0.49999999999999994,0.8660254037844387,-0.9377521321470804,0.3473052528448203,-0.5000000000000004,0.8660254037844384,117.15666666666667,302.33076923076925,111.89666666666666
|
172 |
+
0.0,0.0,86.49,131.47,38.11,0.0,37.38,1.47,0.0,0.0,0.0,0.0,25,11,3,117.15666666666667,0.7071067811865476,0.7071067811865476,-0.9377521321470804,0.3473052528448203,-0.5000000000000004,0.8660254037844384,302.33076923076925,111.89666666666666,247.0
|
173 |
+
123.03,146.07,81.33,123.92,37.72,0.0,37.2,1.37,0.0,0.0,0.0,0.0,25,11,4,302.33076923076925,0.8660254037844386,0.5000000000000001,-0.9377521321470804,0.3473052528448203,-0.5000000000000004,0.8660254037844384,111.89666666666666,247.0,103.81
|
174 |
+
0.0,0.0,76.84,115.69,36.79,0.0,37.03,1.24,0.0,0.0,0.0,0.0,25,11,5,111.89666666666666,0.9659258262890683,0.25881904510252074,-0.9377521321470804,0.3473052528448203,-0.5000000000000004,0.8660254037844384,247.0,103.81,104.08333333333333
|
175 |
+
104.1,118.07,68.84,104.7,35.78,0.0,36.76,1.11,0.0,0.0,0.0,0.0,25,11,6,247.0,1.0,6.123233995736766e-17,-0.9377521321470804,0.3473052528448203,-0.5000000000000004,0.8660254037844384,103.81,104.08333333333333,102.73333333333333
|
176 |
+
0.0,0.0,60.21,91.43,34.15,0.0,36.41,1.02,0.0,0.0,0.0,0.0,25,11,7,103.81,0.9659258262890683,-0.25881904510252063,-0.9377521321470804,0.3473052528448203,-0.5000000000000004,0.8660254037844384,104.08333333333333,102.73333333333333,101.76666666666667
|
177 |
+
0.0,0.0,60.21,92.25,34.06,0.0,36.37,1.05,0.0,0.0,0.0,0.0,25,11,8,104.08333333333333,0.8660254037844387,-0.4999999999999998,-0.9377521321470804,0.3473052528448203,-0.5000000000000004,0.8660254037844384,102.73333333333333,101.76666666666667,101.62666666666667
|
178 |
+
0.0,0.0,57.97,88.2,33.86,0.0,36.66,1.09,0.0,0.0,0.0,0.0,25,11,9,102.73333333333333,0.7071067811865476,-0.7071067811865475,-0.9377521321470804,0.3473052528448203,-0.5000000000000004,0.8660254037844384,101.76666666666667,101.62666666666667,116.14666666666668
|
179 |
+
0.0,0.0,56.02,85.3,33.36,0.0,36.51,1.13,0.0,0.0,0.0,0.0,25,11,10,101.76666666666667,0.49999999999999994,-0.8660254037844387,-0.9377521321470804,0.3473052528448203,-0.5000000000000004,0.8660254037844384,101.62666666666667,116.14666666666668,229.23333333333332
|
180 |
+
0.0,0.0,55.82,84.88,33.28,0.0,36.56,1.17,0.0,0.0,0.0,0.0,25,11,11,101.62666666666667,0.258819045102521,-0.9659258262890682,-0.9377521321470804,0.3473052528448203,-0.5000000000000004,0.8660254037844384,116.14666666666668,229.23333333333332,199.13333333333333
|
181 |
+
49.85,124.22,35.27,51.23,30.56,0.0,38.06,1.07,0.0,0.0,0.0,0.0,25,11,12,116.14666666666668,1.2246467991473532e-16,-1.0,-0.9377521321470804,0.3473052528448203,-0.5000000000000004,0.8660254037844384,229.23333333333332,199.13333333333333,167.7
|
182 |
+
98.77,157.41,29.54,44.57,29.02,0.0,35.37,0.79,0.0,0.0,0.0,0.0,25,11,13,229.23333333333332,-0.2588190451025208,-0.9659258262890683,-0.9377521321470804,0.3473052528448203,-0.5000000000000004,0.8660254037844384,199.13333333333333,167.7,51.8375
|
183 |
+
89.74,108.86,26.87,41.14,28.47,0.0,34.93,0.67,0.0,0.0,0.0,0.0,25,11,14,199.13333333333333,-0.4999999999999997,-0.8660254037844388,-0.9377521321470804,0.3473052528448203,-0.5000000000000004,0.8660254037844384,167.7,51.8375,108.03333333333332
|
184 |
+
80.31,87.53,29.38,45.46,28.92,0.0,34.91,0.6,0.0,0.0,0.0,0.0,25,11,15,167.7,-0.7071067811865471,-0.7071067811865479,-0.9377521321470804,0.3473052528448203,-0.5000000000000004,0.8660254037844384,51.8375,108.03333333333332,160.0
|
185 |
+
0.0,0.0,27.92,41.47,28.7,0.0,35.09,0.55,0.0,0.0,0.0,0.0,25,11,16,51.8375,-0.8660254037844385,-0.5000000000000004,-0.9377521321470804,0.3473052528448203,-0.5000000000000004,0.8660254037844384,108.03333333333332,160.0,102.09333333333333
|
186 |
+
62.41,82.9,30.1,47.35,28.95,0.0,34.76,0.66,0.0,0.0,0.0,0.0,25,11,17,108.03333333333332,-0.9659258262890683,-0.25881904510252063,-0.9377521321470804,0.3473052528448203,-0.5000000000000004,0.8660254037844384,160.0,102.09333333333333,106.89333333333333
|
187 |
+
78.0,81.0,38.42,60.95,30.32,0.0,35.27,0.76,0.0,0.0,0.0,0.0,25,11,18,160.0,-1.0,-1.8369701987210297e-16,-0.9377521321470804,0.3473052528448203,-0.5000000000000004,0.8660254037844384,102.09333333333333,106.89333333333333,207.53333333333336
|
188 |
+
0.0,0.0,55.52,86.28,32.88,0.0,35.66,0.94,0.0,0.0,0.0,0.0,25,11,19,102.09333333333333,-0.9659258262890684,0.2588190451025203,-0.9377521321470804,0.3473052528448203,-0.5000000000000004,0.8660254037844384,106.89333333333333,207.53333333333336,109.64666666666666
|
189 |
+
0.0,0.0,64.88,100.68,34.53,0.0,35.8,1.15,0.0,0.0,0.0,0.0,25,11,20,106.89333333333333,-0.8660254037844386,0.5000000000000001,-0.9377521321470804,0.3473052528448203,-0.5000000000000004,0.8660254037844384,207.53333333333336,109.64666666666666,199.66666666666669
|
190 |
+
92.26,99.45,69.42,106.41,35.35,0.0,36.08,1.29,0.0,0.0,0.0,0.0,25,11,21,207.53333333333336,-0.7071067811865477,0.7071067811865474,-0.9377521321470804,0.3473052528448203,-0.5000000000000004,0.8660254037844384,109.64666666666666,199.66666666666669,185.9666666666667
|
191 |
+
0.0,0.0,71.15,108.94,35.97,0.0,36.3,1.38,0.0,0.0,0.0,0.0,25,11,22,109.64666666666666,-0.5000000000000004,0.8660254037844384,-0.9377521321470804,0.3473052528448203,-0.5000000000000004,0.8660254037844384,199.66666666666669,185.9666666666667,160.0
|
192 |
+
89.9,105.95,73.9,112.93,36.25,0.0,36.49,1.49,0.0,0.0,0.0,0.0,25,11,23,199.66666666666669,-0.25881904510252157,0.9659258262890681,-0.9377521321470804,0.3473052528448203,-0.5000000000000004,0.8660254037844384,185.9666666666667,160.0,109.91666666666667
|
193 |
+
85.79,104.43,75.86,115.85,36.54,0.0,36.54,1.52,0.0,0.0,0.0,0.0,26,11,0,185.9666666666667,0.0,1.0,-0.8486442574947509,0.5289640103269624,-0.5000000000000004,0.8660254037844384,160.0,109.91666666666667,157.23333333333335
|
194 |
+
78.0,92.34,74.79,114.09,36.43,0.0,36.44,1.47,0.0,0.0,0.0,0.0,26,11,1,160.0,0.25881904510252074,0.9659258262890683,-0.8486442574947509,0.5289640103269624,-0.5000000000000004,0.8660254037844384,109.91666666666667,157.23333333333335,172.56666666666666
|
195 |
+
0.0,0.0,72.16,109.75,35.95,0.0,36.43,1.39,0.0,0.0,0.0,0.0,26,11,2,109.91666666666667,0.49999999999999994,0.8660254037844387,-0.8486442574947509,0.5289640103269624,-0.5000000000000004,0.8660254037844384,157.23333333333335,172.56666666666666,149.66666666666669
|
196 |
+
77.17,81.7,69.42,105.79,35.56,0.0,36.39,1.3,0.0,0.0,0.0,0.0,26,11,3,157.23333333333335,0.7071067811865476,0.7071067811865476,-0.8486442574947509,0.5289640103269624,-0.5000000000000004,0.8660254037844384,172.56666666666666,149.66666666666669,101.92
|
197 |
+
81.77,92.01,68.08,103.74,35.42,0.0,36.32,1.2,0.0,0.0,0.0,0.0,26,11,4,172.56666666666666,0.8660254037844386,0.5000000000000001,-0.8486442574947509,0.5289640103269624,-0.5000000000000004,0.8660254037844384,149.66666666666669,101.92,96.25
|
198 |
+
74.9,75.74,64.32,97.55,34.85,0.0,36.19,1.11,0.0,0.0,0.0,0.0,26,11,5,149.66666666666669,0.9659258262890683,0.25881904510252074,-0.8486442574947509,0.5289640103269624,-0.5000000000000004,0.8660254037844384,101.92,96.25,143.16666666666669
|
199 |
+
0.0,0.0,56.51,85.76,33.82,0.0,36.16,1.01,0.0,0.0,0.0,0.0,26,11,6,101.92,1.0,6.123233995736766e-17,-0.8486442574947509,0.5289640103269624,-0.5000000000000004,0.8660254037844384,96.25,143.16666666666669,137.56666666666666
|
200 |
+
0.0,0.0,50.71,77.0,32.5,0.0,36.01,0.94,0.0,0.0,0.0,0.0,26,11,7,96.25,0.9659258262890683,-0.25881904510252063,-0.8486442574947509,0.5289640103269624,-0.5000000000000004,0.8660254037844384,143.16666666666669,137.56666666666666,163.33333333333334
|
201 |
+
72.95,86.28,49.87,76.36,32.15,0.0,36.36,0.94,0.0,0.0,0.0,0.0,26,11,8,143.16666666666669,0.8660254037844387,-0.4999999999999998,-0.8486442574947509,0.5289640103269624,-0.5000000000000004,0.8660254037844384,137.56666666666666,163.33333333333334,86.6375
|
202 |
+
71.27,73.53,50.21,77.14,32.31,0.0,36.9,0.98,0.0,0.0,0.0,0.0,26,11,9,137.56666666666666,0.7071067811865476,-0.7071067811865475,-0.8486442574947509,0.5289640103269624,-0.5000000000000004,0.8660254037844384,163.33333333333334,86.6375,
|
203 |
+
79.0,82.0,49.16,74.06,32.28,0.0,36.56,1.01,0.0,0.0,0.0,0.0,26,11,10,163.33333333333334,0.49999999999999994,-0.8660254037844387,-0.8486442574947509,0.5289640103269624,-0.5000000000000004,0.8660254037844384,86.6375,,
|
204 |
+
0.0,0.0,45.42,69.31,31.8,0.0,36.55,1.05,0.0,0.0,0.0,0.0,26,11,10,86.6375,0.49999999999999994,-0.8660254037844387,-0.8486442574947509,0.5289640103269624,-0.5000000000000004,0.8660254037844384,,,
|
templates/aqi_forecast_with_legend.html
ADDED
@@ -0,0 +1,187 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<!DOCTYPE html>
|
2 |
+
<html lang="en">
|
3 |
+
|
4 |
+
<head>
|
5 |
+
<meta charset="UTF-8">
|
6 |
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
7 |
+
<title>AQI Forecast Map</title>
|
8 |
+
<!-- Add Bootstrap 5 CSS -->
|
9 |
+
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap/5.3.0/css/bootstrap.min.css">
|
10 |
+
<style>
|
11 |
+
body {
|
12 |
+
font-family: Arial, sans-serif;
|
13 |
+
background-color: #f8f9fa;
|
14 |
+
margin: 0;
|
15 |
+
padding: 0;
|
16 |
+
}
|
17 |
+
|
18 |
+
/* Thinner Navigation Bar */
|
19 |
+
.navbar {
|
20 |
+
position: fixed;
|
21 |
+
top: 0;
|
22 |
+
left: 0;
|
23 |
+
width: 100%;
|
24 |
+
z-index: 1000;
|
25 |
+
box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);
|
26 |
+
padding: 3px 10px;
|
27 |
+
/* Reduced padding for a thinner navbar */
|
28 |
+
font-size: 0.85rem;
|
29 |
+
/* Slightly smaller font size */
|
30 |
+
height: 50px;
|
31 |
+
/* Explicit height for consistent thinness */
|
32 |
+
}
|
33 |
+
|
34 |
+
/* Reduced brand name size */
|
35 |
+
.navbar-brand {
|
36 |
+
font-size: 1rem;
|
37 |
+
/* Smaller font size for brand */
|
38 |
+
padding: 0;
|
39 |
+
/* Remove extra padding */
|
40 |
+
line-height: 50px;
|
41 |
+
/* Center-align text vertically */
|
42 |
+
}
|
43 |
+
|
44 |
+
/* Adjust the navbar toggler button */
|
45 |
+
.navbar-toggler {
|
46 |
+
padding: 2px 8px;
|
47 |
+
/* Smaller padding for toggler */
|
48 |
+
line-height: 1;
|
49 |
+
/* Adjust spacing */
|
50 |
+
}
|
51 |
+
|
52 |
+
/* Adjust form-container inside navbar */
|
53 |
+
.form-container {
|
54 |
+
margin-bottom: 0;
|
55 |
+
display: flex;
|
56 |
+
align-items: center; /* Vertically align form fields and button */
|
57 |
+
}
|
58 |
+
|
59 |
+
/* Reduce size of form inputs and button */
|
60 |
+
.form-control {
|
61 |
+
font-size: 0.85rem;
|
62 |
+
padding: 4px 6px;
|
63 |
+
height: auto;
|
64 |
+
flex-grow: 1; /* Ensure input fields expand proportionally */
|
65 |
+
min-width: 50px; /* Prevent inputs from shrinking too much */
|
66 |
+
margin-right: 5px; /* Spacing between input fields */
|
67 |
+
}
|
68 |
+
|
69 |
+
.btn-outline-success {
|
70 |
+
font-size: 0.85rem;
|
71 |
+
padding: 4px 8px;
|
72 |
+
height: auto;
|
73 |
+
white-space: nowrap; /* Prevent button text from wrapping */
|
74 |
+
}
|
75 |
+
|
76 |
+
/* Content area */
|
77 |
+
.content {
|
78 |
+
display: flex;
|
79 |
+
flex-direction: column;
|
80 |
+
height: 80vh;
|
81 |
+
/* Full height */
|
82 |
+
padding-top: 50px;
|
83 |
+
/* Reduced space for the smaller navbar */
|
84 |
+
}
|
85 |
+
|
86 |
+
/* Map Container to fill the remaining space */
|
87 |
+
.map-container {
|
88 |
+
flex: 1;
|
89 |
+
margin-bottom: 20px;
|
90 |
+
background-color: #e9ecef;
|
91 |
+
/* Optional: set a background color for the map container */
|
92 |
+
}
|
93 |
+
|
94 |
+
/* AQI Legend box */
|
95 |
+
#legend {
|
96 |
+
position: fixed;
|
97 |
+
bottom: 20px;
|
98 |
+
left: 20px;
|
99 |
+
width: 220px;
|
100 |
+
/* Reduced the width */
|
101 |
+
background-color: rgba(255, 255, 255, 0.6);
|
102 |
+
z-index: 9999;
|
103 |
+
font-size: 12px;
|
104 |
+
/* Reduced font size */
|
105 |
+
border-radius: 8px;
|
106 |
+
padding: 10px;
|
107 |
+
/* Reduced padding */
|
108 |
+
box-shadow: 2px 2px 8px rgba(0, 0, 0, 0.3);
|
109 |
+
}
|
110 |
+
|
111 |
+
.form-control {
|
112 |
+
margin-right: 10px;
|
113 |
+
}
|
114 |
+
|
115 |
+
/* List styling for AQI legend */
|
116 |
+
.legend-list li {
|
117 |
+
margin-bottom: 6px;
|
118 |
+
}
|
119 |
+
|
120 |
+
.legend-list i {
|
121 |
+
width: 18px;
|
122 |
+
/* Reduced the size of the color box */
|
123 |
+
height: 18px;
|
124 |
+
display: inline-block;
|
125 |
+
margin-right: 8px;
|
126 |
+
}
|
127 |
+
</style>
|
128 |
+
</head>
|
129 |
+
|
130 |
+
<body>
|
131 |
+
|
132 |
+
<!-- Fixed Navigation Bar -->
|
133 |
+
<nav class="navbar navbar-expand-lg navbar-dark bg-dark">
|
134 |
+
<div class="container-fluid">
|
135 |
+
<!-- Brand -->
|
136 |
+
<a class="navbar-brand" href="#">AQI Forecaster</a>
|
137 |
+
|
138 |
+
<!-- Toggler for mobile view -->
|
139 |
+
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNav"
|
140 |
+
aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation">
|
141 |
+
<span class="navbar-toggler-icon"></span>
|
142 |
+
</button>
|
143 |
+
|
144 |
+
<!-- Navigation content -->
|
145 |
+
<div class="collapse navbar-collapse" id="navbarNav">
|
146 |
+
<div class="w-100 d-flex justify-content-between align-items-center">
|
147 |
+
<!-- Form for latitude and longitude -->
|
148 |
+
<form class="d-flex flex-grow-1 form-container me-2" method="POST" action="{{ url_for('forecast') }}">
|
149 |
+
<input class="form-control me-2" type="text" name="latitude" placeholder="Enter Latitude" required>
|
150 |
+
<input class="form-control me-2" type="text" name="longitude" placeholder="Enter Longitude" required>
|
151 |
+
<button class="btn btn-outline-success" type="submit">Update Map</button>
|
152 |
+
</form>
|
153 |
+
</div>
|
154 |
+
</div>
|
155 |
+
</div>
|
156 |
+
</nav>
|
157 |
+
|
158 |
+
|
159 |
+
|
160 |
+
<div class="content">
|
161 |
+
<div class="map-container">
|
162 |
+
<!-- AQI Forecast Map -->
|
163 |
+
<div>
|
164 |
+
<!-- Render the map -->
|
165 |
+
{{ map_html|safe }}
|
166 |
+
</div>
|
167 |
+
</div>
|
168 |
+
|
169 |
+
<!-- AQI Legend -->
|
170 |
+
<div id="legend">
|
171 |
+
<b>AQI Color Legend</b>
|
172 |
+
<ul class="legend-list" style="list-style: none; padding: 0; margin: 5px;">
|
173 |
+
<li><i style="background:green;"></i> Good (0-50)</li>
|
174 |
+
<li><i style="background:yellow;"></i> Moderate (51-100)</li>
|
175 |
+
<li><i style="background:orange;"></i> Unhealthy for Sensitive Groups (101-150)</li>
|
176 |
+
<li><i style="background:red;"></i> Unhealthy (151-200)</li>
|
177 |
+
<li><i style="background:purple;"></i> Very Unhealthy (201-300)</li>
|
178 |
+
<li><i style="background:maroon;"></i> Hazardous (301+)</li>
|
179 |
+
</ul>
|
180 |
+
</div>
|
181 |
+
</div>
|
182 |
+
|
183 |
+
<!-- Add Bootstrap 5 JS -->
|
184 |
+
<script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap/5.3.0/js/bootstrap.bundle.min.js"></script>
|
185 |
+
</body>
|
186 |
+
|
187 |
+
</html>
|
templates/index.html
ADDED
@@ -0,0 +1,134 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<!DOCTYPE html>
|
2 |
+
<html lang="en">
|
3 |
+
|
4 |
+
<head>
|
5 |
+
<meta charset="UTF-8">
|
6 |
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
7 |
+
<title>AQI Forecast Map</title>
|
8 |
+
<!-- Add Bootstrap 5 CSS -->
|
9 |
+
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap/5.3.0/css/bootstrap.min.css">
|
10 |
+
<style>
|
11 |
+
body {
|
12 |
+
font-family: Arial, sans-serif;
|
13 |
+
background-color: #f8f9fa;
|
14 |
+
margin: 0;
|
15 |
+
padding: 0;
|
16 |
+
}
|
17 |
+
|
18 |
+
/* Fixed Navigation Bar at the top */
|
19 |
+
.navbar {
|
20 |
+
position: fixed;
|
21 |
+
top: 0;
|
22 |
+
left: 0;
|
23 |
+
width: 100%;
|
24 |
+
z-index: 1000;
|
25 |
+
box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);
|
26 |
+
}
|
27 |
+
|
28 |
+
/* Content area */
|
29 |
+
.content {
|
30 |
+
display: flex;
|
31 |
+
flex-direction: column;
|
32 |
+
height: 100vh; /* Full height */
|
33 |
+
padding-top: 80px; /* Space for fixed navbar */
|
34 |
+
}
|
35 |
+
|
36 |
+
/* Map Container to fill the remaining space */
|
37 |
+
.map-container {
|
38 |
+
flex: 1;
|
39 |
+
margin-bottom: 20px;
|
40 |
+
background-color: #e9ecef; /* Optional: set a background color for the map container */
|
41 |
+
}
|
42 |
+
|
43 |
+
/* AQI Legend box */
|
44 |
+
#legend {
|
45 |
+
position: fixed;
|
46 |
+
bottom: 20px;
|
47 |
+
left: 20px;
|
48 |
+
width: 220px; /* Reduced the width */
|
49 |
+
background-color: rgba(255, 255, 255, 0.8);
|
50 |
+
z-index: 9999;
|
51 |
+
font-size: 12px; /* Reduced font size */
|
52 |
+
border-radius: 8px;
|
53 |
+
padding: 10px; /* Reduced padding */
|
54 |
+
box-shadow: 2px 2px 8px rgba(0, 0, 0, 0.3);
|
55 |
+
}
|
56 |
+
|
57 |
+
/* Navbar style adjustments */
|
58 |
+
.navbar-brand {
|
59 |
+
font-size: 1.5rem;
|
60 |
+
}
|
61 |
+
|
62 |
+
/* Container for the form */
|
63 |
+
.form-container {
|
64 |
+
margin-bottom: 30px;
|
65 |
+
}
|
66 |
+
|
67 |
+
/* Form styling */
|
68 |
+
.form-control {
|
69 |
+
margin-right: 10px;
|
70 |
+
}
|
71 |
+
|
72 |
+
/* List styling for AQI legend */
|
73 |
+
.legend-list li {
|
74 |
+
margin-bottom: 6px;
|
75 |
+
}
|
76 |
+
|
77 |
+
.legend-list i {
|
78 |
+
width: 18px; /* Reduced the size of the color box */
|
79 |
+
height: 18px;
|
80 |
+
display: inline-block;
|
81 |
+
margin-right: 8px;
|
82 |
+
}
|
83 |
+
</style>
|
84 |
+
</head>
|
85 |
+
|
86 |
+
<body>
|
87 |
+
|
88 |
+
<!-- Fixed Navigation Bar -->
|
89 |
+
<nav class="navbar navbar-expand-lg navbar-dark bg-dark">
|
90 |
+
<div class="container-fluid">
|
91 |
+
<a class="navbar-brand" href="#">AQI Forecaster</a>
|
92 |
+
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNav"
|
93 |
+
aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation">
|
94 |
+
<span class="navbar-toggler-icon"></span>
|
95 |
+
</button>
|
96 |
+
<div class="collapse navbar-collapse" id="navbarNav">
|
97 |
+
<form class="d-flex ms-auto form-container" method="POST" action="{{ url_for('forecast') }}">
|
98 |
+
<input class="form-control me-2" type="text" name="latitude" placeholder="Enter Latitude" required>
|
99 |
+
<input class="form-control me-2" type="text" name="longitude" placeholder="Enter Longitude"
|
100 |
+
required>
|
101 |
+
<button class="btn btn-outline-success" type="submit">Update Map</button>
|
102 |
+
</form>
|
103 |
+
</div>
|
104 |
+
</div>
|
105 |
+
</nav>
|
106 |
+
|
107 |
+
<div class="content">
|
108 |
+
<div class="map-container">
|
109 |
+
<!-- AQI Forecast Map -->
|
110 |
+
<div>
|
111 |
+
<!-- Render the map -->
|
112 |
+
{{ map_html|safe }}
|
113 |
+
</div>
|
114 |
+
</div>
|
115 |
+
|
116 |
+
<!-- AQI Legend -->
|
117 |
+
<div id="legend">
|
118 |
+
<b>AQI Color Legend</b>
|
119 |
+
<ul class="legend-list" style="list-style: none; padding: 0; margin: 5px;">
|
120 |
+
<li><i style="background:green;"></i> Good (0-50)</li>
|
121 |
+
<li><i style="background:yellow;"></i> Moderate (51-100)</li>
|
122 |
+
<li><i style="background:orange;"></i> Unhealthy for Sensitive Groups (101-150)</li>
|
123 |
+
<li><i style="background:red;"></i> Unhealthy (151-200)</li>
|
124 |
+
<li><i style="background:purple;"></i> Very Unhealthy (201-300)</li>
|
125 |
+
<li><i style="background:maroon;"></i> Hazardous (301+)</li>
|
126 |
+
</ul>
|
127 |
+
</div>
|
128 |
+
</div>
|
129 |
+
|
130 |
+
<!-- Add Bootstrap 5 JS -->
|
131 |
+
<script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap/5.3.0/js/bootstrap.bundle.min.js"></script>
|
132 |
+
</body>
|
133 |
+
|
134 |
+
</html>
|
templates/multiple_wind_speed_map.html
ADDED
@@ -0,0 +1,101 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<!DOCTYPE html>
|
2 |
+
<html>
|
3 |
+
<head>
|
4 |
+
|
5 |
+
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
|
6 |
+
|
7 |
+
<script>
|
8 |
+
L_NO_TOUCH = false;
|
9 |
+
L_DISABLE_3D = false;
|
10 |
+
</script>
|
11 |
+
|
12 |
+
<style>html, body {width: 100%;height: 100%;margin: 0;padding: 0;}</style>
|
13 |
+
<style>#map {position:absolute;top:0;bottom:0;right:0;left:0;}</style>
|
14 |
+
<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/leaflet.js"></script>
|
15 |
+
<script src="https://code.jquery.com/jquery-3.7.1.min.js"></script>
|
16 |
+
<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.bundle.min.js"></script>
|
17 |
+
<script src="https://cdnjs.cloudflare.com/ajax/libs/Leaflet.awesome-markers/2.0.2/leaflet.awesome-markers.js"></script>
|
18 |
+
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/[email protected]/dist/leaflet.css"/>
|
19 |
+
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css"/>
|
20 |
+
<link rel="stylesheet" href="https://netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap-glyphicons.css"/>
|
21 |
+
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@fortawesome/[email protected]/css/all.min.css"/>
|
22 |
+
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/Leaflet.awesome-markers/2.0.2/leaflet.awesome-markers.css"/>
|
23 |
+
<link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/python-visualization/folium/folium/templates/leaflet.awesome.rotate.min.css"/>
|
24 |
+
|
25 |
+
<meta name="viewport" content="width=device-width,
|
26 |
+
initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
|
27 |
+
<style>
|
28 |
+
#map_c61b342e70deea09a0734350221e1318 {
|
29 |
+
position: relative;
|
30 |
+
width: 100.0%;
|
31 |
+
height: 100.0%;
|
32 |
+
left: 0.0%;
|
33 |
+
top: 0.0%;
|
34 |
+
}
|
35 |
+
.leaflet-container { font-size: 1rem; }
|
36 |
+
</style>
|
37 |
+
|
38 |
+
</head>
|
39 |
+
<body>
|
40 |
+
|
41 |
+
|
42 |
+
<div class="folium-map" id="map_c61b342e70deea09a0734350221e1318" ></div>
|
43 |
+
|
44 |
+
</body>
|
45 |
+
<script>
|
46 |
+
|
47 |
+
|
48 |
+
var map_c61b342e70deea09a0734350221e1318 = L.map(
|
49 |
+
"map_c61b342e70deea09a0734350221e1318",
|
50 |
+
{
|
51 |
+
center: [21.174364030859888, 73.06735784024302],
|
52 |
+
crs: L.CRS.EPSG3857,
|
53 |
+
zoom: 10,
|
54 |
+
zoomControl: true,
|
55 |
+
preferCanvas: false,
|
56 |
+
}
|
57 |
+
);
|
58 |
+
|
59 |
+
|
60 |
+
|
61 |
+
|
62 |
+
|
63 |
+
var tile_layer_9a692e000cfa98eab120be7ef771ef0c = L.tileLayer(
|
64 |
+
"https://tile.openstreetmap.org/{z}/{x}/{y}.png",
|
65 |
+
{"attribution": "\u0026copy; \u003ca href=\"https://www.openstreetmap.org/copyright\"\u003eOpenStreetMap\u003c/a\u003e contributors", "detectRetina": false, "maxNativeZoom": 19, "maxZoom": 19, "minZoom": 0, "noWrap": false, "opacity": 1, "subdomains": "abc", "tms": false}
|
66 |
+
);
|
67 |
+
|
68 |
+
|
69 |
+
tile_layer_9a692e000cfa98eab120be7ef771ef0c.addTo(map_c61b342e70deea09a0734350221e1318);
|
70 |
+
|
71 |
+
|
72 |
+
var marker_325f7aaaf407ede9431ef3e94b478da8 = L.marker(
|
73 |
+
[21.174364030859888, 73.06735784024302],
|
74 |
+
{}
|
75 |
+
).addTo(map_c61b342e70deea09a0734350221e1318);
|
76 |
+
|
77 |
+
|
78 |
+
var popup_ba5ff7c693e7132352eab20dde701d9f = L.popup({"maxWidth": 300});
|
79 |
+
|
80 |
+
|
81 |
+
|
82 |
+
var html_504edff652c09db11dfbb4099d86edf5 = $(`<div id="html_504edff652c09db11dfbb4099d86edf5" style="width: 100.0%; height: 100.0%;"><img src="data:image/png;base64,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"></div>`)[0];
|
83 |
+
popup_ba5ff7c693e7132352eab20dde701d9f.setContent(html_504edff652c09db11dfbb4099d86edf5);
|
84 |
+
|
85 |
+
|
86 |
+
|
87 |
+
marker_325f7aaaf407ede9431ef3e94b478da8.bindPopup(popup_ba5ff7c693e7132352eab20dde701d9f)
|
88 |
+
;
|
89 |
+
|
90 |
+
|
91 |
+
|
92 |
+
|
93 |
+
marker_325f7aaaf407ede9431ef3e94b478da8.bindTooltip(
|
94 |
+
`<div>
|
95 |
+
Bardoli
|
96 |
+
</div>`,
|
97 |
+
{"sticky": true}
|
98 |
+
);
|
99 |
+
|
100 |
+
</script>
|
101 |
+
</html>
|
templates/results.html
ADDED
@@ -0,0 +1,45 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<!-- templates/results.html -->
|
2 |
+
<!DOCTYPE html>
|
3 |
+
<html lang="en">
|
4 |
+
<head>
|
5 |
+
<meta charset="UTF-8">
|
6 |
+
<title>Wind Speed Prediction Results</title>
|
7 |
+
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css" rel="stylesheet">
|
8 |
+
<style>
|
9 |
+
body {
|
10 |
+
display: flex;
|
11 |
+
justify-content: center;
|
12 |
+
align-items: center;
|
13 |
+
min-height: 100vh;
|
14 |
+
background-color: #f8f9fa;
|
15 |
+
}
|
16 |
+
.container {
|
17 |
+
background-color: #ffffff;
|
18 |
+
padding: 30px;
|
19 |
+
border-radius: 8px;
|
20 |
+
box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2);
|
21 |
+
}
|
22 |
+
h1, h2 {
|
23 |
+
text-align: center;
|
24 |
+
color: #343a40;
|
25 |
+
}
|
26 |
+
p {
|
27 |
+
font-size: 1.2em;
|
28 |
+
color: #555;
|
29 |
+
}
|
30 |
+
</style>
|
31 |
+
</head>
|
32 |
+
<body>
|
33 |
+
<div class="container">
|
34 |
+
<h1>Wind Speed Prediction Results</h1>
|
35 |
+
<p><strong>Actual Wind Speed:</strong> {{ actual }} km/h</p>
|
36 |
+
<p><strong>Predicted Wind Speed:</strong> {{ predicted }} km/h</p>
|
37 |
+
<h2>Location Map</h2>
|
38 |
+
<iframe src="{{ url_for('static', filename=map_file) }}" width="100%" height="500px" style="border: none; border-radius: 8px;"></iframe>
|
39 |
+
</div>
|
40 |
+
|
41 |
+
<script src="https://code.jquery.com/jquery-3.5.1.slim.min.js"></script>
|
42 |
+
<script src="https://cdn.jsdelivr.net/npm/@popperjs/[email protected]/dist/umd/popper.min.js"></script>
|
43 |
+
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.5.2/js/bootstrap.min.js"></script>
|
44 |
+
</body>
|
45 |
+
</html>
|