From 6fbcc8bd64738239cf0cc5d9eb4a3e2d742b4b33 Mon Sep 17 00:00:00 2001
From: Hoa Ben The Nguyen <hbnguye@stud.ntnu.no>
Date: Thu, 14 Mar 2024 13:07:15 +0100
Subject: [PATCH] change: made about laz file to a function and set it to the
 database as accuracy for now

---
 server/data_processing/process_lidar_data.py  |  34 +++++++++---------
 .../__pycache__/get_markers.cpython-39.pyc    | Bin 2182 -> 2126 bytes
 .../__pycache__/get_relation.cpython-39.pyc   | Bin 933 -> 1685 bytes
 server/map/input_new_data.py                  |   8 +++--
 4 files changed, 24 insertions(+), 18 deletions(-)

diff --git a/server/data_processing/process_lidar_data.py b/server/data_processing/process_lidar_data.py
index 46162b5a..97f0e1bd 100644
--- a/server/data_processing/process_lidar_data.py
+++ b/server/data_processing/process_lidar_data.py
@@ -9,22 +9,24 @@ from server.data_processing.area_processing import calculate_corners, define_gri
 lazData_path = ["server/example_lidar_data/ot_N_000005_1.laz", "server/example_lidar_data/ot_N_000033_1.laz"]
 
 # Info about data
-with laspy.open(lazData_path[0]) as fh:
-    # Print metadata properties
-    print("File Version:", fh.header.version)
-    print("Point Count:", fh.header.point_count)
-    print("Scale Factors:", fh.header.scale)
-    print("Offset:", fh.header.offset)
-
-    print('Points from Header:', fh.header.point_count)
-    las = fh.read()
-    print(las)
-    print('Points from data:', len(las.points))
-    ground_pts = las.classification == 2
-    bins, counts = np.unique(las.return_number[ground_pts], return_counts=True)
-    print('Ground Point Return Number distribution:')
-    for r, c in zip(bins, counts):
-        print('    {}:{}'.format(r, c))
+def about_laz_file():
+    with laspy.open(lazData_path[0]) as fh:
+        # Print metadata properties
+        print("File Version:", fh.header.version)
+        print("Point Count:", fh.header.point_count)
+        print("Scale Factors:", fh.header.scale)
+        print("Offset:", fh.header.offset)
+
+        las = fh.read()
+        print(las)
+        print('Points from data:', len(las.points))
+        ground_pts = las.classification == 2
+        bins, counts = np.unique(las.return_number[ground_pts], return_counts=True)
+        print('Ground Point Return Number distribution:')
+        for r, c in zip(bins, counts):
+            print('    {}:{}'.format(r, c))
+
+    return [las.header.version, las.header.point_count, las.header.scale, las.header.offset]
 
 # check if lidar points is within range of the area selected
 def inArea(position, areaRange):
diff --git a/server/map/__pycache__/get_markers.cpython-39.pyc b/server/map/__pycache__/get_markers.cpython-39.pyc
index 153eff491a414be4d1f89f774ec15cc0bcc92577..9fc12b022571f0ea96d9af2b5b047407ea06b93b 100644
GIT binary patch
delta 371
zcmZn@JSV`L$ji&c00dJGeo9T6$Qvoj3*>-AoPoHwgOPz@0%MiL#A<EEWfPYNGG3YZ
z)2%+8Aw^^kdktF+hYdraUI|ML+XB{w49$$STqSHZtj&xm%-KxEe}HT*2zvr!5myO&
zifA(<BSVT<Eq5MY2}c%Z4Oa?(ig+(mEq6FWo&^g-3D*S1${<FDS{_D*DmkEfi5i~S
z40D-ay22SE8B&0<b<R9_Twn%|0fPZU4Z{NN6v>4^qk$}*6sZ*Hg-l>J??MI;oyE6+
zzlM8(K#I&lMv$r$hF}Iw+0C*{o0)ag{qhx35=#;l$}=*PGZb=DQ%i~!N-|OvlJoOY
zGD|Y^^AytZOY>5yn4)7R|76u*eR%>HDw7r2G#CXZd$B1_u45}=<emJHEq`)0dpR2$
kD9FMlzhJi)Wctb@z{4cP$ic|QEW{+h$T!)J!<~^80BZtX761SM

delta 406
zcmYjNyGjF55S_X1-c5G*ZXOzA;sdl&1W6?p0SiHEu?W79kh_HsHo93s<6SKRc0$4}
zRmg(i2Sn2N17hJfh+rXDYGLP%A~-NJ=M3jCaGsLqDOP681XUaNuWq-+Rx^$wmg)u7
zwHpLzV!hBhnZ~=;?J~Z!z822{O&HwCftraNGzcHKG6WT|A{@*Fx}a?uK?6fGFofPf
z-nUDdShE!~|Cm1(#CWEG2z)TKcs8`XG#?7BAiiS?lP7rYf`oPnyrKqy)x={DA!G>k
z3FX_$3w8<D<iEWHtH71ylzHawE<gbUv~6KU>WxB-5A%_T{9q@7-rh;HlfrJN_-KSZ
z6^9j=8tWkG^kH7U>v?DULnTlr>zi*6Di8UrPfA87F)e55c>h|eQr@c^?v(>~t5Wqn
z*RRPE_0f@!v}(qEx3;hD+?8|25!HKnZpf}NpG|(+37d>y3^k-gBWaRE2Q^7!OQ?MV
D_1<FS

diff --git a/server/map/__pycache__/get_relation.cpython-39.pyc b/server/map/__pycache__/get_relation.cpython-39.pyc
index a9aa82b5f430dc0f6cbd1672148de6d7fae5e6d8..96abab2fe87409b078ffd10fb5cf0856ecce57c0 100644
GIT binary patch
literal 1685
zcma)6&2J+$6t_JenIw}mTCJ9DSBr{-kRt82)n52eRghX0ap@ujE~BiXN$jMPPR3K)
z{YW%(>YfltAaP-}hvdkgz>yn&gRflZ6>f+F&rY}La>AD1dw%wNet!Nv$Bjk}LHqI7
zKiQKiLcg2I-R8jLGZ=CU2t^d9D8j%=N+wR^V8mSNyvEd}-b**~s81^|QRGwHLG9og
zY|v2~>&llrosM`0Vx!OLw8w|Ni&!x+AZE)=s{r?4?8A`X08wa;DPG``6woPoh{l9E
zC%{X`o`?#^Xb;d8E?wmm?iHr~2^NRSrIjm;A>s~Fp3#?H;m!R8D*Xb@D>PWZDo6pX
z(%OPpxw=4xk8AUK;m<=_U%=T*AMNmHwl0}CXJUI2=i8Gpm+{t!@v-EY4nUYNC8ok$
zXMlmcX-46~=)jN<fQ;aT7tInYRNyhb!atBxw}XC0ZDNh1fL%gf5-!?AldT<H$(N}U
zCNq}&{e1tE?$;2E>>l&D_pJLoV+SHRXWh<;VSO%WHy3>L?BkuCm9UJy3(<E+O!Wjy
zW0ml1E1&AxZkk9n;FEkWgj4>4fo7X;?b=QGAWr4p)@tjux##ThVVtClZYsVx;2Gpc
z8Sy4)dHtK&6Yld&u}nQx)11v(ah|8iz@ENs@;CF&)bQy??S^(nIgP4<#k4mBuTj+`
zwr8xgld?>Exkxgl*JyH{P<DF<T~WMeU!oydMnNxgo=K+bc6to{n9y~zw3MaxF3bVI
zM537XSvKI5wJX|{EFB7i`pCR$kH#vF!kg>ZnGW7uPJ0S`$f#zS4Pf<3A^;ycyqiRW
z1Gx?ak(zVQxko}AVAlzt*D%PAcm!*2!DkH=br`lJK7fQ%Tw+Q}GJ+B)0QfKdDBZ#x
zqpn+erC(OcK;a@N{B?lWBU2Vtm{$t#c3vy0l$;RRDr$y{uTEQv6xAyXzFw7ekZV@{
zwhW=5ydo^{ee@10{Gz^;hQw&81G@jQvf8(_TiM)Q8JPlY6wcg*LT^y_HL>Lh#r`2G
z$?5TF7ozkE2g=(y!QW$XU-{HC1wJwbUKt1Q5y02;9Vwed(|kQgqgOwf_RFWjz*Lwd
zwn-Fp&iV(*`4<PmJjU$(6?m7Bx&`hg;EZqDhqYVVc*&~T@AI>aO6?dVdLqt7%vP@U
z0oMRA(KP3ohZ7ATQTRFI2Y{kO5l>iqO*}Nps`1>D$qX<q&-!q9FQH<?7@1!%@-BOm
zB#XT1lEEy#w6pk9yMkXx?GAVfL4d3s5N|y8`}{HrmUyJY|DaK{!1a4D<PH!-TnwEA
zxQSc1MOv5uAVW;>1H6IX#T)<lehW8A(}J`~taZC$Ych{B8q4MVTJku~Svobp;p!9A
ij#R?p+1lNS#QtNpID*{?r)MeKGcP24AOQ|Z^YOoy_^j0c

literal 933
zcmYjQPjAyO6u09fP16>(aoITS+Qa^62LuQqq#+@pu^~-dqDqllyIHy<j%;_MRd?eX
zAaUZ59{C1H9J%lrd_^4g36MDP>=rRw_WS*w{rvvPwAYIfjBg)*@!tfYpO)MmphGWU
zsYkFe#BhO<mBa~l+)Id)ei<YoMjSEkGiHSOAN-`n@Hy%Sw_uA-``Gk`g3VGfPOquv
za^zY4dW0YYSjVu`C)hM<FvClH<1Jt^ZwF00MlM0#kOgVT5@DqMCSd*&I~1~Djan>R
zqsZNAH!)armIz++b-U><z~&}cpr*%K_9mcvEMo1Y=kR@NwLp`NW^)lVTP$8e92nAu
zWICtwZN=pkmj@-S56X#9bU))_qC{mP043LQmbBiAVwQ<&`VdlCW3`)CyKg4nzbd->
zii_9hXQ!rpBC0IcQ^rknLbXG;Kfq?*Jr<SbmEO~{n$I_AT^IQXZiwo@`kDt*J>GlV
ze_%*fGt-uwvUHpmJZak?Qfp=Wx)9osy3i(ox8X2+U(g{hl5pmv@zsU6Hol8KC<JB7
zw6sW9oK4GGnV#YmOC?ves1!FHM=!t~m!@NnR#=(f+WH3}bInc2tC3*5AA%2FjHPXM
zVhfZqs%g@#R|Q%#&|9A=%SSrt{d4Bx_=4m%*#0>?emZyurB{OsLDQqbS;b$<{E83G
zFRd5~$p*C)+0m23!~bB_s{!<CkZ}!Z6t0H*^~`kdDk5;9Y_pITlPwbA*v*LCBQc3_
z7e_?e<9=j9rDa}avIo>vyQUSRO16NT&5~+c^&%gF4_E(iC8hmo?hTjEoo&Y&M$byY
RrUieFfhikKgzfD5e*xQA4}t&y

diff --git a/server/map/input_new_data.py b/server/map/input_new_data.py
index 603a7a5a..d0a8c52b 100644
--- a/server/map/input_new_data.py
+++ b/server/map/input_new_data.py
@@ -1,6 +1,6 @@
 import json
 from datetime import datetime
-from server.data_processing.process_lidar_data import calculate_area_data
+from server.data_processing.process_lidar_data import calculate_area_data, about_laz_file
 
 # input_new_Lidar_data send new data gathered from the lidar and send it to the database (from the drone, most likely)
 def input_new_Lidar_data(self, cursor, sensorId, bodyOfWater):
@@ -11,13 +11,17 @@ def input_new_Lidar_data(self, cursor, sensorId, bodyOfWater):
 
         total_measurement_average = 0  # the total average of a measurement
 
+        # data about the file read from
+        about_laz = about_laz_file()
+        scale_factor = max(about_laz[2])
+
         # create a new measurement with the time the data is sent, sensor type, where
         # and an estimate of average thickness of ice on water body
         cursor.execute('''
             INSERT INTO Measurement(  SensorID, TimeMeasured, WaterBodyName, 
                                         WholeAverageThickness, CenterLat, CenterLon) VALUES 
                 (?,?,?,?,?,?);
-        ''', (sensorId, datetime.utcnow().replace(microsecond=0), bodyOfWater, 0, latitude, longitude))
+        ''', (sensorId, datetime.utcnow().replace(microsecond=0), bodyOfWater, 0, latitude, longitude, scale_factor))
 
         # auto generate new measurement id
         measurement_id = cursor.lastrowid
-- 
GitLab