From 697f06a1a2d6fa8036cfcf22dd923e3735a06cd2 Mon Sep 17 00:00:00 2001 From: Sara <sarasdj@stud.ntnu.no> Date: Wed, 14 Feb 2024 13:56:07 +0100 Subject: [PATCH] update: schema, db and parsing to JSON --- .../__pycache__/get_markers.cpython-311.pyc | Bin 3282 -> 3153 bytes server/map/get_markers.py | 38 ++++++++++-------- server/sql_db/icedb | Bin 32768 -> 32768 bytes server/sql_db/schema.sql | 10 ++--- 4 files changed, 27 insertions(+), 21 deletions(-) diff --git a/server/map/__pycache__/get_markers.cpython-311.pyc b/server/map/__pycache__/get_markers.cpython-311.pyc index 09577cf8e7125f13454aa159548ac4e9b12001dd..f74b266039fe4266ffa62d64876b10b36f5ecbbd 100644 GIT binary patch delta 1091 zcmZ`%TSyd97(Qq2m%WVcHtwn$6M{9OVOkKCk++pHEeR6sY4Mn3r7*ii#BBBuw20xu zc}Qr2ddY4NK`%i>5!jQID}swpLQhLU6V^+;^v|x#+U-AczWKlZ{5Sq{mZRB7eBSR@ z5Xi9?i=+E|2z~TONtjJ#BMi!IL=eFj&@dv*4K$1iK7~v+@458TcC0fJM~83%FVL6x z>=7b6LRzpnqC_{7AOuV;GvafYv}p4-dl^}sHf!@+&iu5GY0>^L2Ee%Eg!lj>^aOTM zFq)Z#BpeBr!+~kPv5GQFiKWOwLzVOu6OD!())vOFEskLlcAzDjKLl<w@8~C{9ZR%{ zZKZK8NGI8<-fe%@Cwf{YRcU1+LLzB7RZ-4AE|+v$BHYvH0~qL&(oj)ap;>lYo0<xi zybvPQwt5HMW&T%V2reP5UQ;Ke;-A)Wby%i7oXOUZTAJj}V1<6*s>E0^1AWctDuy7q ztL^=X&osb4rf+$@vr#ermXY0^lh(wjb+oI|DCx%&sdK4IWOR#Va$?Lg(N%t)9u$I7 zF~}I9Cj}jk&@tfvV+!=4(6c8GFAC-T048I3@61vG*0`=jDzPRO<C1xAB6;sZ^D^Z` z6Z3SpSg%%k?jeAyP4vFl^!%pCW9*~1q@$vLq|hdPFPXeo!Jt2-!KuTb@vxKQknlQk znQqM2tV@B}z;wVxQpEQaNwWW&2S5SBNYiJhrl+z&V<l*0xb>RYk`!?T6ppy4POdCK zrZX2a?o~LaGySfFK*dgc(~_%>%_W@rO-2{xK!fWSYoHiFrq|UycgE@Q94ehbmuF*e z29W7<ee{dmup_4#_qMNS&CjAM+QC(=V_EBX)0Wi+R<wbo!bfYB{k1uxX>Q65DSM$K zfF&;|t2Hla&EKn^pI3I`E8X?oCR#9+c!*tS)#Cy7U4RE2hQ131VtJE!gf;+?)duiG pI&^W8T)HrN*lGvrjXv23;IbIw98#|rmMisR+~T5tqjdxVegRK%^o;-j delta 1289 zcmZ`%&2Jk;6o0d`-Y<Ww-H^nIF|`{M%cX=AIJCk=YMT~HP!1F&s)=fCGuzgYKccnM zP_)JdRZ0|D3eg-0#R#9$098fXe}F?PgoKb?`C#n<EOE-sC~$y7#jG9E8o`@+znR~> z_vX#KnY#bc$m}h*TLC8D-~CblnazH+Nl%3R$=+i&`4k8cl!AD7L~+D8m*UbmjuGgv z$oImk4!Vg4!k`P=2;dv0U5Sf*UXtyl_D9P0+ELI&g10#q%d{*1+DXyTQ~8{B)GX*q zzZdGB)D?FT{szR|1f7SdW7pnrCW<V1F_+CGmh;Kf2i(NO!au2)S!Rlv?%lzg7d5oC z`Q7CsCQsxMw$>G*RK$W{I!t^Gj6)_i9Z%VubO(j$D)K#FCd`E=t|vyu+<i=@kI~3W zo+oSlmmq2do5B@DycOO~6Jz<ypV7CtlSrgx?iKn2Qt40J@U*W#j$QshK_UYMIpZhK z6r{YbcXWV7`+glUMZ(`6>@RgerjvMZTFI+DF90%RDxbp_-2dgcz)D?EK2$PNcU(a$ z@IJl(E69Xu=Xo%g65Ym8JWTxb5q=NLRj>VQ7{~}c%a8G+Gg_La`L7R>iPKplqZ>y; zxry_7CYLqdy}qQ|?Bqf|d5tbPZqa#ROx(3^5f$l2!W)B@(2cS9DJ`$<+Fx#$qkjrf z#M3cx{Qiu13?V07mCn&$q%iMfcIuGligq<!Omi=?=PyB<JMIXyB+rIt-O~oa@A?e{ z+5Ni>j56?ocW9%yUaYI3h8kMqTY+Fr^0x+t+b}90=)l_PW-wIsRc6;_TF)M=qRQEQ z-W&~XX_fIFiyYoLN?Wo#xWC?3r2tFHU~RfRL<f|^xaNJEUQ~_^w|(-fY;y)RZ>aiQ z-8)(HPX6J)e@}^^;?(h}7(9q6XU6eEVdzX4KMXtAJnFHyY|g^D>p6?R#D2PAe`t$e z((+d=ktB_bmewsPk+_^p>4}8pTv#>?J(Eu`lO<}Gavev0F`LX-%97SI8DX}I5wXFp z-B(cDV*?nkG5AZ0rL$x?rN3^RW7K|x+)V~;j1X#qT<WwYD5Xwo!f36(w>;kRm5uCr zcI#^06KQxNC1=yEmghDS>xr#*Dsx}X-<;oh;oE#Y7;6M$b@z#e`^2e|(gb`%T2((* fKT+xsXh5I_fhIUhoz|94A@p(^{u_-q+4=qkR&+6_ diff --git a/server/map/get_markers.py b/server/map/get_markers.py index 1ca3bc89..ff121d91 100644 --- a/server/map/get_markers.py +++ b/server/map/get_markers.py @@ -1,10 +1,3 @@ -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,48 +7,60 @@ 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 data = list(measurement_data.values()) - if len(rows) == 0 or len(data) == 0: # Return 500 and empty list if no data is found + if len(rows) == 0 or len(data) == 0: # Return 500 and empty list if no data is found print(f"An error occurred while querying the database") resp_code = 500 marker_json = '[]' @@ -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')) + diff --git a/server/sql_db/icedb b/server/sql_db/icedb index 14130a77d22b6a5d213bd3487b9891db3d273b4e..e9e55c8afd162410d4f26f2806f5bc5f6fa662ae 100644 GIT binary patch delta 114 zcmZo@U}|V!njkI6$H2hA0mLxCHc`h|nvX%Rtdp1j2Ln6z8V0@}{0I5md2aK`aj)T7 zx3STPo2#*&ja^()lCe2*@*(a}1?T*tywoC}#FEUC(v(yMHy?k;5FIWBAb`kh*5<id F3;?Nv9kBoa delta 86 zcmZo@U}|V!njkI6!@$760mLxCGEv7^nukHJtdp1j2Ln6z4hFs-{0I5md2aK`aqr++ jw^>lYj+?8on2lXrQj)RRaq>3q(8)@?nwuSX4ip0b*Xk3p diff --git a/server/sql_db/schema.sql b/server/sql_db/schema.sql index 3cc5ae4b..d3a639c2 100644 --- a/server/sql_db/schema.sql +++ b/server/sql_db/schema.sql @@ -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), -- GitLab