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