Skip to content
Snippets Groups Projects
Commit 697f06a1 authored by Sara Savanovic Djordjevic's avatar Sara Savanovic Djordjevic
Browse files

update: schema, db and parsing to JSON

parent 21d66318
Branches
No related tags found
No related merge requests found
No preview for this file type
import os
import sys
from bson import json_util
current_dir = os.path.dirname(__file__)
parent_dir = os.path.abspath(os.path.join(current_dir, '..'))
sys.path.append(parent_dir)
import json
......@@ -14,42 +7,54 @@ def get_all_markers(self, cursor):
# Fetch all data
cursor.execute('''
SELECT m.MeasurementID, m.SensorID, m.TimeMeasured, d.Latitude, d.Longitude,
d.IceTop, d.IceBottom, d.CalculatedThickness, d.Accuracy, d.Corner, s.SensorType, s.Active
d.IceTop, d.IceBottom, d.CalculatedThickness, d.Accuracy, s.SensorType, s.Active,
c.CornerID, c.CornerLatitude, c.CornerLongitude
FROM Measurement m
INNER JOIN Sensor s ON m.SensorID = s.SensorID
INNER JOIN Data d ON m.MeasurementID = d.MeasurementID
INNER JOIN Corner c ON m.MeasurementID = c.MeasurementID
''')
rows = cursor.fetchall()
measurement_data = {}
# Iterate over the fetched rows
for row in rows:
measurement_id = row[0]
# Create a data object for current row
data_object = {
'Latitude': row[3],
'Longitude': row[4],
'IceTop': row[5],
'IceBottom': row[6],
'CalculatedThickness': row[7],
'Accuracy': row[8],
'Corner': row[9]
'Accuracy': row[8]
}
# Append data with measurement ID x to measurement x object
# Create a corner object for current row
corner_object = {
'Latitude': row[12],
'Longitude': row[13]
}
# If measurement ID already exists in measurement_data, append data and corner
if measurement_id in measurement_data:
measurement_data[measurement_id]['Data'].append(data_object)
measurement_data[measurement_id]['Corners'].append(corner_object)
else:
# Create a new measurement entry if measurement ID doesn't exist already
# Create a new entry for measurement_id if it does not already exist in the list
measurement_data[measurement_id] = {
'MeasurementID': measurement_id,
'TimeMeasured': row[1],
'TimeMeasured': row[2],
'Sensor': {
'SensorID': row[2],
'SensorID': row[1],
'SensorType': row[9],
'Active': bool(row[10])
},
'Data': [data_object]
'Data': [data_object],
'Corners': [corner_object]
}
# Convert dictionary values to list of measurements
......@@ -76,3 +81,4 @@ def get_all_markers(self, cursor):
# Write marker_data to the response object
self.wfile.write(marker_json.encode('utf-8'))
No preview for this file type
......@@ -26,8 +26,8 @@ CREATE TABLE Data (
CREATE TABLE Corner (
CornerID INT,
MeasurementID INT,
Latitude FLOAT,
Longitude FLOAT,
CornerLatitude FLOAT,
CornerLongitude FLOAT,
PRIMARY KEY (CornerID, MeasurementID),
FOREIGN KEY (MeasurementID) REFERENCES Measurement(MeasurementID)
);
......@@ -50,7 +50,7 @@ INSERT INTO Data (MeasurementID, Latitude, Longitude, IceTop, IceBottom, Calcula
(1, 60.7062, 10.9774, 7.5, 2.5, 5.0, 1.0),
(1, 60.7067, 10.9775, 7.0, 2.0, 5.0, 1.0);
INSERT INTO Corner (CornerID, MeasurementID, Latitude, Longitude) VALUES
INSERT INTO Corner (CornerID, MeasurementID, CornerLatitude, CornerLongitude) VALUES
(1, 1, 60.7060, 10.9770),
(2, 1, 60.7061, 10.9771),
(3, 1, 60.7062, 10.9772),
......@@ -65,7 +65,7 @@ INSERT INTO Data (MeasurementID, Latitude, Longitude, IceTop, IceBottom, Calcula
(2, 60.6367, 10.8173, 7.4, 2.4, 5.0, 1.5),
(2, 60.6367, 10.8179, 7.5, 2.5, 5.0, 1.5);
INSERT INTO Corner (CornerID, MeasurementID, Latitude, Longitude) VALUES
INSERT INTO Corner (CornerID, MeasurementID, CornerLatitude, CornerLongitude) VALUES
(1, 2, 60.6360, 10.8170),
(2, 2, 60.6361, 10.8171),
(3, 2, 60.6362, 10.8172),
......@@ -79,7 +79,7 @@ INSERT INTO Data (MeasurementID, Latitude, Longitude, IceTop, IceBottom, Calcula
(3, 60.7368, 10.8481, 7.2, 2.2, 5.0, 2.5),
(3, 60.7370, 10.8475, 7.1, 2.1, 5.0, 2.5);
INSERT INTO Corner (CornerID, MeasurementID, Latitude, Longitude) VALUES
INSERT INTO Corner (CornerID, MeasurementID, CornerLatitude, CornerLongitude) VALUES
(1, 3, 60.7360, 10.8470),
(2, 3, 60.7361, 10.8471),
(3, 3, 60.7362, 10.8472),
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment