From 33af06844c54d0fd38de1400a68a2f7f634f6ddd Mon Sep 17 00:00:00 2001 From: Hoa Ben The Nguyen <hbnguye@stud.ntnu.no> Date: Thu, 29 Feb 2024 10:22:16 +0100 Subject: [PATCH] add: file structure, moved update feature to nrew file --- .../__pycache__/get_weather.cpython-39.pyc | Bin 2013 -> 2017 bytes .../process_lidar_data.cpython-39.pyc | Bin 0 -> 2792 bytes server/data_processing/process_lidar_data.py | 19 ++++---- server/main.py | 7 +-- .../__pycache__/get_markers.cpython-39.pyc | Bin 2796 -> 2796 bytes .../__pycache__/input_new_data.cpython-39.pyc | Bin 0 -> 1591 bytes server/map/get_markers.py | 38 ---------------- server/map/input_new_data.py | 42 ++++++++++++++++++ 8 files changed, 57 insertions(+), 49 deletions(-) create mode 100644 server/data_processing/__pycache__/process_lidar_data.cpython-39.pyc create mode 100644 server/map/__pycache__/input_new_data.cpython-39.pyc create mode 100644 server/map/input_new_data.py diff --git a/server/APIs/__pycache__/get_weather.cpython-39.pyc b/server/APIs/__pycache__/get_weather.cpython-39.pyc index 2c0c82d7bea273f0a93159170f91de5e995623bb..f8858872de717cd7d93b420283a1654752615aec 100644 GIT binary patch delta 88 zcmcc1|B#<Ik(ZZ?0SHR&Tu=SDk@qAkW7Op9tT!3WCvRj+V=R~~!JZ<>%*4p`pM{Bw enTwH!k%PI&a&jlTqNpWMSCKg?VKI3>yBq*LI~6$q delta 110 zcmaFJf0v&(k(ZZ?0SM|BUrD{ck@qAk<E_cpS#L60Oy0<r#+Wl%f<1+oMSziunTwH! tk%PI&YH}~TqOlcFN09|8VF~2k;;_lhPbtkwwPOVGiaCG;P!|ZY001`W7pVXM diff --git a/server/data_processing/__pycache__/process_lidar_data.cpython-39.pyc b/server/data_processing/__pycache__/process_lidar_data.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..4b9c5e0857452a784de0ace8ed0f1d69d5075580 GIT binary patch literal 2792 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 literal 0 HcmV?d00001 diff --git a/server/data_processing/process_lidar_data.py b/server/data_processing/process_lidar_data.py index a0fdea41..4db12e3d 100644 --- a/server/data_processing/process_lidar_data.py +++ b/server/data_processing/process_lidar_data.py @@ -22,14 +22,6 @@ with laspy.open(lazData_path[0]) as fh: for r, c in zip(bins, counts): print(' {}:{}'.format(r, c)) -# Limit the data to specific areas -# should be within this range (10.616913,60.742712) - (10.825653,60.940206) -# this is only temporary data for coordinates in arctic -areas = [ - [(-3671212, 7898422), (-3200175, 4699978)], - [(-3671212, 7898422), (-3200175, 4699978)] -] - def inArea(position, areaRange): x, y, _ = position if (areaRange[0][0] < x < areaRange[1][0]) and (areaRange[0][1] > y > areaRange[1][1]): @@ -61,6 +53,17 @@ def find_height(points): # areas def height_in_area(area): + # Limit the data to specific areas + + # this is only temporary data for coordinates in arctic + # areas = [ + # [(-3671212, 7898422), (-3200175, 4699978)], + # [(60.815356, 10.672022), (60.774878, 10.768867)], + # ] + + # NB: is only for the test data should be removed after + area = (area[0] * ((-3671212/60.815356) - (-3200175/60.774878)), area[1] * ((7898422/10.672022) - (4699978/10.768867))) + # Refactor data format iceOver = laspy.read(lazData_path[0]) iceUnder = laspy.read(lazData_path[1]) diff --git a/server/main.py b/server/main.py index eac3faf1..7e79ca5e 100644 --- a/server/main.py +++ b/server/main.py @@ -1,7 +1,8 @@ from flask import Flask from http.server import HTTPServer, BaseHTTPRequestHandler from consts import SSL_CERT_PATH, SSL_KEY_PATH, HOST, PORT -from map.get_markers import get_all_markers, input_new_Lidar_data +from map.get_markers import get_all_markers +from map.input_new_data import input_new_Lidar_data from APIs.get_weather import get_weather import ssl import keyboard @@ -45,8 +46,8 @@ class IceHTTP(BaseHTTPRequestHandler): if self.path == '/get_weather_data': get_weather(self) - elif self.path == '/get_new_lidar_data': - input_new_Lidar_data(self,self.cursor, 1, 'Mjøsa') + elif self.path == '/new_lidar_data': + input_new_Lidar_data(self,self.cursor, 1, 'Mjøsa') # hardcoded body of water must change later # Terminate server on key press q def on_key_press(server, event, cursor, conn): diff --git a/server/map/__pycache__/get_markers.cpython-39.pyc b/server/map/__pycache__/get_markers.cpython-39.pyc index 0ed1ba09ccad9e2350e9200179cbb2e084247f85..9e45cfc2c9ce435036ce31556ab2be3352754967 100644 GIT binary patch delta 30 kcmaDO`bLyDk(ZZ?0SJ2T+)cII$ZN^P$U51bYY8I@0Ea6G3;+NC delta 30 kcmaDO`bLyDk(ZZ?0SM$zTu-&$$ZN^P$Tr!XYY8JO0Dg7{i2wiq diff --git a/server/map/__pycache__/input_new_data.cpython-39.pyc b/server/map/__pycache__/input_new_data.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..02a1dd5649b14c230e1c373aece6024d454c0a50 GIT binary patch literal 1591 zcmah~&1>UE6ra(TWyLlvZ1>X39BnWmEEKk%TQ_!#!Exx?+fd<RWNB>AMjE*zDcKmQ zmn{7wdWw(zcY0a`d+KTXClnU?Ms{MQDRc(C`FL;M`@N4DIrX}Qp#AmcEq!eu^ru{u zn*xik;fvZpJmg^?*>Y5T9AFz`IahrpP;C|Fny0@;w&vjxY8mg~1RAz*ZhB5kV-`@D zH<pwwmhqJFsUxW4YEo#|8Zg%2JBBZM17!VMif_PXs>Jw4*`QRNs~ZKQ6u(q6t>7se zzyLFCgEBqU#jmN}ML!KPBQ+*kR>{n)npv@)R#J1WT;uE@HqwJ@99Ja$7-h9Wi<)X_ zHML?>?xr;<?P+sU+WPq^SgYPx8-!7O;OW<3?+o#$8j5RIe_)i=F<KMg7-{`_i>-Q7 zm(pkGM~F^V|E12Y?RbQaU<YDT8LlrZQfmF-sP}wK`or-lIiXIJ2pUixH_3?dC=~r} zn~WiVJC@fbXAn~HP3T<>9f&LWp)+{V8<BfDrTXTxHuTo#cMRtfjL_Xmii~=L-tm|m zgE=Y&PR!!OqwU*u$QQefQ8MeY3l_1Ex5;-ROjiBwJw@L>KRqEOse8=JB^9*nTE9!a zB+p1^*d@*XvE6#;mjn*2KP1f^{%(IX?hp5l?17iGGjQ!5tgV_o{kIRL$gST#I9bkG z$?;|>gEDg^mR#;)*Cr>7vmgn^OXi+)8bxi=xuC*X(9%u`{C}sV<GP7(+^gFfcmPs5 zw=Dx%3fo?C>(=*oP#4HHqr{!MlzQtAJDgA<LP0`lK~S&N$Sd>}brYx)`7Go{61zOS zw5z@o#Ui|9UT)55>@FSO7pjy{qa?^xpYmJ{7|$&?<ea)Ol#p$>VGyu5*H?n^IIs3z zxpY-<OcDD2%yG}bpcYYoo*MuFZULa%-UiP;m_g~E&Wl@+H-i0*nKI9=ufm8)Ra1C) zoLmKHw(0LG8_?dChOI}*tlzaOi)}UAmF?pc<rQa}h#b@3k$42I{Qdp$XOkBZ713lF zI@2eUQ%<{rUC_zsTn@8Pc$1X~7f(JtI@(X*0BD*7&T7K=Dv76@UKXehS6BI?{nmha zjwl#97>k-f5LOgJt-aR_L$NBRqG1!)pnrf3_3?W{x0IUFz?LE&gKSIBwU<%Ii^SNi zt=U8A{uDsDP+W{J4tLY3e`l>oQ=y^ovP3=tt-1L{5PFGEzmmlf!T$jj7?ghi6!o^l literal 0 HcmV?d00001 diff --git a/server/map/get_markers.py b/server/map/get_markers.py index 9fa5dd1a..e1e82312 100644 --- a/server/map/get_markers.py +++ b/server/map/get_markers.py @@ -1,6 +1,4 @@ import json -from datetime import datetime -from server.data_processing.process_lidar_data import height_in_area # get_markers requests all marker data or valid markers, converts the data to json, and writes # the data to the response object @@ -103,39 +101,3 @@ def get_all_markers(self, cursor, valid: bool): # Write marker data to response object self.wfile.write(marker_data.encode('utf-8')) -def input_new_Lidar_data(self, cursor, sensorId, bodyOfWater): - try: - - cursor.execute(''' - INSERT INTO Measurement( SensorID, TimeMeasured, WaterBodyName) VALUES - (?,?,?); - ''',( sensorId, datetime.utcnow(), bodyOfWater)) - - # auto generate new measurement id - measurement_id = cursor.lastrowid - - cursor.execute(''' - SELECT DISTINCT CenterLatitude, CenterLongitude - FROM SubDivision - where MeasurementID = ?; - ''') - position_data = cursor.fetchall() - - if(position_data): - for row in position_data: - latitude, longitude = row - heights = height_in_area((latitude,longitude)) - average = sum(heights)/len(heights) - cursor.execute(''' - INSERT INTO SubDivision(MeasurementID, SubDivisionID, GroupID, MinimumThickness, AverageThickness, CenterLatitude, CenterLongitude, Accuracy) VALUES - (?,?,?,?,?,?,?,?); - ''',(measurement_id, 1, 1, min(heights), average, latitude, longitude, 1)) - - cursor.connection.commit() - - print("suc_ceed") - - except Exception as e: - print("An error occurred", e) - # rollback in case of error - cursor.connection.rollback() \ No newline at end of file diff --git a/server/map/input_new_data.py b/server/map/input_new_data.py new file mode 100644 index 00000000..87276f92 --- /dev/null +++ b/server/map/input_new_data.py @@ -0,0 +1,42 @@ +import json +from datetime import datetime +from server.data_processing.process_lidar_data import height_in_area + +def input_new_Lidar_data(self, cursor, sensorId, bodyOfWater): + try: + + cursor.execute(''' + INSERT INTO Measurement( SensorID, TimeMeasured, WaterBodyName) VALUES + (?,?,?); + ''',( sensorId, datetime.utcnow(), bodyOfWater)) + + # auto generate new measurement id + measurement_id = cursor.lastrowid + + cursor.execute(''' + SELECT CenterLatitude, CenterLongitude, SubDivision, GroupID + FROM SubDivision + where MeasurementID = ? AND (CenterLatitude, CenterLongitude) + IN (SELECT DISTINCT CenterLongitude, CenterLatitiude + FROM SubDivision); + ''') + position_data = cursor.fetchall() + + if(position_data): + for row in position_data: + latitude, longitude, subID, groupID = row + heights = height_in_area((latitude,longitude)) + average = sum(heights)/len(heights) + cursor.execute(''' + INSERT INTO SubDivision(MeasurementID, SubDivisionID, GroupID, MinimumThickness, AverageThickness, CenterLatitude, CenterLongitude, Accuracy) VALUES + (?,?,?,?,?,?,?,?); + ''',(measurement_id, subID, groupID, min(heights), average, latitude, longitude, 1)) + + cursor.connection.commit() + + print("suc_ceed") + + except Exception as e: + print("An error occurred", e) + # rollback in case of error + cursor.connection.rollback() \ No newline at end of file -- GitLab