From 16f47677eadfb9bf701dc9c02929c9c47d4c0dc4 Mon Sep 17 00:00:00 2001
From: Hoa Ben The Nguyen <hbnguye@stud.ntnu.no>
Date: Fri, 17 May 2024 16:37:59 +0200
Subject: [PATCH] add: method for adding new measurement and test for it

---
 .coverage                                     | Bin 53248 -> 69632 bytes
 README.md                                     |   6 +-
 .../getIceThicknessLakes.cpython-39.pyc       | Bin 7532 -> 8496 bytes
 .../__pycache__/box_funcitons.cpython-39.pyc  | Bin 0 -> 2815 bytes
 .../__pycache__/evalscript.cpython-39.pyc     | Bin 0 -> 2414 bytes
 .../__pycache__/getAreaInfo.cpython-39.pyc    | Bin 0 -> 6440 bytes
 server/__pycache__/consts.cpython-39.pyc      | Bin 443 -> 504 bytes
 .../__pycache__/__init__.cpython-39.pyc       | Bin 178 -> 178 bytes
 .../add_new_lidar_measurement.cpython-39.pyc  | Bin 0 -> 2324 bytes
 .../area_processing.cpython-39.pyc            | Bin 5900 -> 5900 bytes
 .../__pycache__/input_new_data.cpython-39.pyc | Bin 3919 -> 3903 bytes
 .../process_lidar_data.cpython-39.pyc         | Bin 3699 -> 3699 bytes
 .../add_new_lidar_measurement.py              |  95 ++++++++++++++++++
 server/data_processing/input_new_data.py      |  35 +++----
 .../__pycache__/__init__.cpython-39.pyc       | Bin 189 -> 189 bytes
 ...ar_measurement.cpython-39-pytest-7.1.2.pyc | Bin 0 -> 1417 bytes
 ...ea__processing.cpython-39-pytest-7.1.2.pyc | Bin 7637 -> 7590 bytes
 ...input_new_data.cpython-39-pytest-7.1.2.pyc | Bin 2438 -> 458 bytes
 ...ess_lidar_data.cpython-39-pytest-7.1.2.pyc | Bin 2871 -> 481 bytes
 .../test_add_new_lidar_measurement.py         |  18 ++++
 .../unit_tests/test_area__processing.py       |   2 -
 .../unit_tests/test_input_new_data.py         |   1 +
 .../__pycache__/add_new_lake.cpython-39.pyc   | Bin 5828 -> 6924 bytes
 .../get_lake_relation.cpython-39.pyc          | Bin 1284 -> 1378 bytes
 .../update_measurements.cpython-39.pyc        | Bin 6180 -> 6169 bytes
 ...t_add_new_lake.cpython-39-pytest-7.1.2.pyc | Bin 2640 -> 2635 bytes
 ...e_measurements.cpython-39-pytest-7.1.2.pyc | Bin 1282 -> 752 bytes
 .../unit_tests/test_update_measurements.py    |   2 -
 28 files changed, 134 insertions(+), 25 deletions(-)
 create mode 100644 server/Sentinelhub/__pycache__/box_funcitons.cpython-39.pyc
 create mode 100644 server/Sentinelhub/__pycache__/evalscript.cpython-39.pyc
 create mode 100644 server/Sentinelhub/__pycache__/getAreaInfo.cpython-39.pyc
 create mode 100644 server/data_processing/__pycache__/add_new_lidar_measurement.cpython-39.pyc
 create mode 100644 server/data_processing/add_new_lidar_measurement.py
 create mode 100644 server/data_processing/unit_tests/__pycache__/test_add_new_lidar_measurement.cpython-39-pytest-7.1.2.pyc
 create mode 100644 server/data_processing/unit_tests/test_add_new_lidar_measurement.py

diff --git a/.coverage b/.coverage
index 90d487d5235d822965d20d2735542e15d82d4d70..d06917897e5641380540d8f2477af9c3b378a3b8 100644
GIT binary patch
delta 4444
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

delta 2071
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

diff --git a/README.md b/README.md
index e21145f8..24128d70 100644
--- a/README.md
+++ b/README.md
@@ -187,12 +187,14 @@ This endpoint is only for production, and is not implemented in the application.
 
 ### New lidar data
 ```
-Method: POST
+Method: GET
 Path: new_lidar_data?lake=*
 Paramters: 
     - lake (required)
 ```
-
+The endpoint will update the current data from ```*_lidar_data.json```, 
+with the content from folder ```./server/lidar_data/*```. Should be used after the 
+```./server/lidar_data/*``` has been updated. 
 
 ## Database
 This project requires SQLite3. Download the precompiled binary for your operating system. 
diff --git a/server/ModelFromNVE/icemodellingscripts/__pycache__/getIceThicknessLakes.cpython-39.pyc b/server/ModelFromNVE/icemodellingscripts/__pycache__/getIceThicknessLakes.cpython-39.pyc
index 4dc75562c32a5891e0a754550e688c65f718bd34..9c0b3d1fb4c72d32d9bc8b3f5bbc46597f3a9236 100644
GIT binary patch
delta 2371
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

delta 1445
zcmY*ZO>7%Q6rLIXWc?c_aqKv8Vkc>STv6ksRSIp=x@m$+TLQE~z(TrpJ!5wh+Z$##
zghWL?Bpf4@?garolmntSBo_&B=ZXMvS_#1w0ap%42;SRmk}}qO`@Nre^XAPwf4TU_
zxp*ZO3lkV`el}J6cIqIWWq*@{XY@AZg!_4blRCj!Q+SYf?NK$u6&~6n>LAbZFpq#{
zh(|?eEn8ze#^WFlyAtKyJOR=O@8P}RpA&iBx6b5WBFB@vR2}90>KIR{<2=m=_J|l=
zBA`7XMtDY?5TVpsmJjaxC=nBUXqQsL=}l4?w&&=r?)s-on`d{|C(8Bj7rQ?EuJa@P
zM+x-98C3hH@W(-wHEXiRwj%rVWQRp_lwP#QVh1#8KaPDuFLhpte?+G*g1dB~j4Tgu
zAExQnBCN0?jWUJFd?%6Er;#N3L=pPzFM3{k9yfDWKVl9mmYjfSS#tXklV{LSI<(3%
zFeg0U&`qmqG&e4MWzY2%+bOiC5e5*35Q+c=zg$3m6hw{I^oAt`*LcOMc<Ek2k1~K0
zs|!n$l`S+1^K(#{m?8-)G)rN!B$d}dmU94AADZ0Jxt{!*(j_~P`k-$SG)`#wy{g!-
zbfZ-W$_4vDs&L++!rShsL{4<gG+KIX+s)-0SZ5|MTr^HojL|49(q0;;@^;6UF0p5^
zj$VZ2BX%4sJkRy2SCXI6eAT{_Ii0%>bSI{nn|Cy>zgxup<O-UX5MH()XC{NMBE4b%
zni)U$Hc+R#Qm;!<hYEN_aug_;XjPg*uA=KL1P#I6-Aln<7#yZQ*lz)f&i3Fqz3g5v
zMK?_RHwLg$=#sC)*9n-G)HmR>(a<e9fliYMIoDWg7!|7!kgN7DLzx@y{XMl4x}@-)
z;81WTP3NZ8(yE5!=AU3Q;{YV$XHmGYI27>;lPz4MXj-$Pw=`|jzLq`T-U-i^X3v}|
z&77Jk9rM{z6;nPOm~;r{WtiqHK%Lwpt0&*5_n?<E#3I%c1~SbMK$aogx9{7fHFm(>
z@k4|8<xvsjT?kR|$r(c0L}EO78a2#&RF^#d0_vYb`2VTpi=azGFnJY?D5)WHeY0t<
z8KPC75^rxOa#u7OMt;kX4PIa?D}_lpjqYx9xNS0mV(=#78}`H8vfp8*uz$}@_m86v
zU$vY<@FR@b)A_UQQKSlh>Z@;=5;Juh+)Z4KY%~l@s~HV0q`ZwbfpA!Md^(z@Do<Xa
z`BXQiu^Yu<J3<KQwVuQ-IzInP9xa2?QRbTl-)x8rPzhq<AA<rn?frV`089FS{~K<T
ZE+rXGCerb&l2W=A=BIuZXNjcZ{}0`ZIFbMW

diff --git a/server/Sentinelhub/__pycache__/box_funcitons.cpython-39.pyc b/server/Sentinelhub/__pycache__/box_funcitons.cpython-39.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..2f7dc778831dfc1953ae7a474ce1a164a87091d1
GIT binary patch
literal 2815
zcmbVO&u<$=6rP>kwKuktraz>nJ<vH68q+GIr9y30m8hxI3$)OH3RbGs#xr&{UGF+G
z>kwP^DMjr832{M!Q*z8dfcRVX%BkYWjT7G+=VuA1>RR)5W_EUG-h1EoJx7z16^84#
z>cduAX6z3d9KBo&7SN1_k*vX_BYEO99DC;tZtrfx#obN3j^FS*rAEnN(v$uR)+o!8
zEaM)?Ku+L3AuF<qdqvjdB<@vJlT**RPE}Q&lG9tfF{!5H=`9Ce;7hE2X7Fj{tH%!>
z-x21yjyFUsw2EX$iL4`5vkfhyR3xh1Rw9oRp;EE3l5JuY?A)5k(n{qu4$dCcdEwo^
zpKTWI;*+JOLvwo<d00YQL^BI8<k1T@WDnSuGlEw~Mm%S^Gjz5bSPsi=pHsi(<?fod
zMQ8Q~H^m~3nJXhALA#1prqQLNwc`z(GEPOlst!&mT5+O|or>ci9@-L`IS13miJsL)
z*j=&<>?gkNEwNoklP9}umlu3)zVMq_rls~VXU*T=EZ$lE+9++7SF<R*vHUny4-iGQ
zyhOoND_FhU)mi(-?fLn`4qn($dU;8ud7P?bwYRd2lZUNd+KlroHFMp5QMsGMCU0h)
z?!8mk?k_YpxYV>>hvf3y-6U&9iMfZ){>pdp@HKfjc8Rid=$xLQA)$AgI#rmuuPJVY
z+lf<{Xj4;i8~)RWOSf*;-NJ<%MX(v#FqtCg@AcmJXi+`lM-5*vv@>(3oGGr)qSvJ1
z{sq>s0BsS?`~Z`)HD?=0fpv3l$Jud4<2io_Z0+!olb4W1zQupMIO2JEI~a1Tai22j
zdPw?~>#%hCIy0ZmGsphEg>AEuH*}?Ufk_{Hd4+!I0x<e)X5<fj+^0sRp|?FTEbV|h
z>l^Fo5D2N42S1A^V2nA$T9itVDDUai2!%xVEoZKYm0m8gH0fJp5;}X`uF_(&FX)XV
z`))j#rR>&)=`~leGRj4qizZmOf)|XEfObXTGJEI|ZIz1%xJdA%B?v@$3=j<hB*Rj)
zaP*_X%llnb)IRSedHh9|^xIjAG!UHQl!#QX6g)G9*NyVkqAX*bMjcfI^j$j@gduS#
z3=3~9L-xI_t6)h23NOhbS(GBUlgfG-S`_QhzBOUrv0ab4g(sstYS7U_LTyp*j?bbk
z#tw*Ou~$^#S{Nlsh~-34%Twl`159epEccumegT2z13Wzj8jKl1)q;k;Jr<puZCTkt
z;@m+Ui5q7LdsrD!<{E-16$B2cTkj#Jc_w1{cD%|Nsnu9HEaK~qMe{D#gyEB1wDhXe
zL!#G!ayfRGa(4p3@kMg=2%l`oh^a;G=*w3yV<-TO>si>Q?b8?+v5lGy&H$Zbip-BG
zvTGF?`U^&Z8#Aao;~u=l><rj6^6VPduJI4npocY>wQKyGZ@WWJmd>)FPxd_9aV&pk
z#X}&N_#lCZC~Ydy(x^U=b3}m>5Q#1zm%m*Wj_S82g&zlt{5=x318tk5`NQDvAK|3n
zzr+3{ZvVgkNBjHRN~0$+d`-Ekdzy4#Pr(#khgj*Eb)DBs7Dt6|L!wX9nlrS9%T2WY
z8$OOvvG3JYEHw82h}GK5&SkFY0LRclh@!Z;wD=Ybk!HkSvX@TF{u_A#J+-yl9lG08
zqmg6iE9&!*4}lTjz-v*Rb_Z7uC}yiM<+GV&Mj0eLvpH`<fsFW9XenJ(3Cu+pTbj>6
z)<LjW&MVe}v>&ILjUr(lh1yM`941T0p*YC&Z9E=l`YJJH?;Ih4EQA1uu{<g1$ioMC
zvGA=f*mPJ@qZHnt4_>zq@eO5)iTyYm{V_eW+?=PLCFuG8*!B~wFjV0fFFEHp<cwwt
zC~hZ;(=cp5`Tf1`|NQd(h4!z%;OakGX!xoX8B;%1l*3SF%`nuL@QVJB%nVGUx?djf
z=fc)(TdD2I#|lECU~_-483{hgJBmRLcxf>12$&9aCb-+lWG_+o2&Ohao)<ud13t}z
QAUGR%K{c2Nc!dZ2A8I*-P5=M^

literal 0
HcmV?d00001

diff --git a/server/Sentinelhub/__pycache__/evalscript.cpython-39.pyc b/server/Sentinelhub/__pycache__/evalscript.cpython-39.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..540e1f7e8a3e8a9e29736ee320fb0be5b59f01e4
GIT binary patch
literal 2414
zcma)8&2HO95T<RVXjLSa7RYrV6bNN2GD$mtE7wKg+HeKbQXttWphz&*;>spWk-{!1
zI4Sf%eSsYFAinl3a?0!<xmM)F0=(qT?9LA7`{rAdr%$U6{yzM8GI4)!od3nd{;lEU
z5B%dl;}ALnCtMq>h3kX$aAU9$R{Bo;3HhbsI90%(9JaUL9QXR|Zs%a9G*0qloJDB@
zoM!pVt;4_42f%R7l41%FC9^zh!Q0xQw^wUG?a=qdBP1C)CH$r~YN%txd1;=h#U`3C
zMqvw=(+SDrtk%%S2*)K!Lf!)33IM>#bQaUIcQe|87w7HH+1`s{%c5cBWdfT#Rz@zi
zek1TmFI?=)mxUbVP!x*JNt~06zK(8b?5Z?*S+|&Gkc86+4q!~;aUSE+b`sKCv$Toz
zYv|A8O{`*lAGWu_?X-LF68itNdww1Cd`r)DRyuByvMGt9_d2eysu&&PfGh>?r4Jla
zpyfBLKvm;`xQ^2}Wqq;1l@S~87)$W#6#|d>_f8IxGc!gxO)?@WmGdaMg3i%tTjvj8
z*n;Qj$~BGY5v5-$sNfBfMm&NN08Lz1da<I~jTKdvEp2%i;idWtyy=(mr5UzBq7_IC
z&lpMg1VMlaOQ(PUAPzpD^@>VJ<XjeG6|<~*uRimXWY<lW=1J(P(>DR@udtWMVUr@$
zKsvc10WJVcN#Zk)crJ(|;jz*nx2PrsMz&5A#)AIKIw2Z(1+SF3R1I4QjIZc?p(%mX
z6mLg8c58+X<>JN2Zf#{ZLi5$|O76-)0IK@NqMKbz7u7GncvZufbWlMw=`^Xa#dl4M
z<NJ>F9*h+4)L~+L|6Cr~|Eqic_Ys`5-yFknuh;EW$;Wj><sKR<QMjknmP+rcQrcpD
z=*u#jmMb*dl<}>p<4Ua-{Udc+*XSXMw&YpGS(fHU2NEPebP$!|%O6H#PLSm^MB!D5
z2^99_-6uRkSOd%FW6NT6;S$PgZQ8rP$+vvIzb^<PHjUFHV}xhu^#e~EQT_08LzC-@
zOq6`1HZ93{9X5;om<4W*CZO+!LJ#5K07Dz1-2)kQR9&Meqw2`=@-^6^%O5FnVtiRf
z9Dv50>dW)NkY3SfRxocQRK6=OcJPF@pw>iVyxs5x1t$unxLao-Y@K>#P!YGupqjCq
zUPy(zdqNpY+1<04+|Y|?jDJG4{&Uy{{wpJgPv?KOhUc6zKD<uJMKJ6p^oT`sI_%$w
z$7RaG;f$qM!LOcIzTk#AWy3z+Kv6>D>-=&k=)%V=nq|$|ySwjyo2FqN)8DbP9R3{+
KmCedemC9$6kbKJk

literal 0
HcmV?d00001

diff --git a/server/Sentinelhub/__pycache__/getAreaInfo.cpython-39.pyc b/server/Sentinelhub/__pycache__/getAreaInfo.cpython-39.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..735003454656becfb40081b64cfddc8afa681a6c
GIT binary patch
literal 6440
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
Rb(hLk!2-Klb>@P1{~P2prpy2U

literal 0
HcmV?d00001

diff --git a/server/__pycache__/consts.cpython-39.pyc b/server/__pycache__/consts.cpython-39.pyc
index ded41a9b9378df29070f95b610b3abead5441e75..e1e6e78b87fda546bfd0023eb017c1ddec604a98 100644
GIT binary patch
delta 152
zcmdnZ{DYY{k(ZZ?0SK6R+|yP}<dtPKnW$~Z5yg?h8O)%`H8G)5y-KM#wWut$NZ&U<
zB{j#bC_mRP%vC?Xw4|W4q*%WoCm%@qX>v}y6Qz5L-^bI%F(}@}F~l)Gz%j%lN-#LY
tF(f$NKQtsDGz2WPlA(whXkQWY<N(G<5dk2Rg^`7sg^`1i15C0o0sz)>CjI~b

delta 92
zcmeytyqlRfk(ZZ?0SJC}I;Z7L<dtPKn5b>Y63n2<IWeV@*-w*WG7DprR209Dr;B4y
pyo+OqV|;*Ph{sBXA|{}&BBsgRjFCcoKqd<#3o{EN2O|fV1OWaJ5_tds

diff --git a/server/data_processing/__pycache__/__init__.cpython-39.pyc b/server/data_processing/__pycache__/__init__.cpython-39.pyc
index 5e7a44e7ddbd81200f088b345c160601980ccd48..1c432fa6eee7d5356b4a3b456d8fbeb68927634e 100644
GIT binary patch
delta 19
ZcmdnQxQUTFk(ZZ?0SK6R+$VA`2LL3!1CRg!

delta 19
ZcmdnQxQUTFk(ZZ?0SH_iohNcH2LLBL1Ofm6

diff --git a/server/data_processing/__pycache__/add_new_lidar_measurement.cpython-39.pyc b/server/data_processing/__pycache__/add_new_lidar_measurement.cpython-39.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..dad8079e88a289d04670f9d108d10184a82da143
GIT binary patch
literal 2324
zcmaJ?O>7%g5Pom}y#7nvBo&m?f<TH<f6{V+2%(syqJfZBjZwwQ(rWAX;%vHpYu<Zq
znsnWZdoA?9t*vAqxpLypg#+BtUODBCI8;JnX6?3aO8Zv(er9K8XWq<w6IQDw0^{zD
zFLv)%3Hb{Tv%`kN8oY|Z#0aA?@h2<wDV&Yi=o-F3k!Hqb*Yd5d?c0=ahZlH(S&vO-
zGv~hLyEBvmbAeLiC0=AjR$}F$Ii#S2?vQ%r82&`I>ojv&sJV{1yl!OkTbmn=>%m5&
z*$A#Rnpd*Lt;ScEgX@>K8qLkC+dDb2Zf3<eyu||%c6nyTp@u0DZ3{I{hXX4*wGOZP
z5++Sjni{D&G+V~N8rUfr(bO7)Ij}PrWyToXgS|N>xb9mcTRWpdYLDs2W#*V7FC$>O
zwS81sPlV<|pVNmuepCy4y*O%zI!eTaeU*r(c3<zF`?y}r&V-Bwf*%BN#6lT#d8qo5
zcR|#zDlS+cx#}fCalf1&_jt&-^vn2ZvRA%+up7lZvkzpXd1m1cGMn|gJ(W3Jv=heb
zPG%_{?@Dx8qVKW*6X?{T?yCTK{P}(lZ<@g=xBVv~=Yi?z-ui0m8^xt+?ImGwsdZKG
z4H@0$t({xA+)N~E^<>hy^vTM~iwy|e=CTDE!vMavxl)nnv|j7(`QBmn?rXmWd!b-4
z&#hK@s?wTKq7~|z@)Q`^Heq@;DzHJGJht~KArI-%nkM^nWN0%bZ;>$_nEBaCA#Q2~
zqnnaP<cYCs+<*v9c_9aw3EYqm80j$?xnr_lWEQg@(1G0{11IM!VV=l8bvd<$^oMr_
z1zj0c(*pd(y+N2`5sM5>N<{4<QQxmX_Tcj^ym~Hmhm;lGCVD=#hZHlAxsy_OY<38%
zJaz`f)E(8*B4(Ga?4L?qR%LS!jDaK0GV4upId}0HH(JN$hX&YJN=u`K)Ip6e*|%^J
zZc44pTF7dtGr1Fs=*5Th@E#?DG9^dvu~TdzEk7b`@rgNFVoPI+d=B`<oI&|sd1tz=
zkQLZLRh$lghES9|7!Agh7kZHPUY_>eOxk;q@IsO3JubaCnbeGz>;gNMbSal#?S(Sz
zdYIAP^5>!ASDMXh*ZFsSuJn~jqSRNt2B?Dk7HvL}|9{3=h0j65TUJ_visl~o5JXS`
zSmepcKRENS;x6PCp+i%H0BOAC-8c#LR2B%4?z89eGk(7G-$a~{OGM|*f|BdL1gS{q
zv);tmhNt_zn0r{hVI-j1a+@b54pcA$?#2t__|;oic<qVc-pzy^qPGWt1TwcV`Vqo*
zbQ*p2Si+SD!SVQ=Na<DYs5ZqdEc5dSJQA1*fOfeXwPm6>7{j)Yk$7yt<l9@(Mkt$g
z(|32cP>I}Rerd960#y1=qpbl{>W*Li`UMtlZupfZbbu*|`NefWNG`WR{d}7U-<c@#
zD?9z0EV>;jz*}{Uun!hFkzgQ{(SzgPfD-+UZY?&1$E8f9m$ch`DLDhD46h?y6gr(5
ziOQ^AsP_O?lSoK}naqw9i=;%o5}nFSksM@BU$=2BNZyOXHV5p*O9J_%$Av5-qXoIa
zpc!$InGm$hfyMwxE)lULLRMD1e5cKO*eE3QVQ7OVA$u-Q(h01hT}8~q08R8=Y?484
z!xX|Z3mN^|Ox^`KWeHo(Nor>0eT4EH_a{>gEi1x=D66($A|=bL0rJ+&1#`);%nIP}
zvQ?rEHK<|0OO1am+xW++mdu)Myh^XknHBn>314ZhxsUy*yZ`GiD(rlOLv62h{`eio
z2W$0mesl5+@Z^_`Z4o=md2kVKH;>396z>B|X6NOX_k>(|X7?o2$c#tW(<Hi;xu13u
X){psTn4St_;8K@XjGD1fTG;*%1B8e2

literal 0
HcmV?d00001

diff --git a/server/data_processing/__pycache__/area_processing.cpython-39.pyc b/server/data_processing/__pycache__/area_processing.cpython-39.pyc
index 391fab42fdbe9fd2de2ab4a7d5eee38cc51b5e0d..2b4ae7a7e2245ccb5a988c2785f3339556e81724 100644
GIT binary patch
delta 20
ZcmeCt>(S#*<mKgJ00L$n_l?|);s7W}11|so

delta 20
ZcmeCt>(S#*<mKgJ0D^UOZX3B7#Q`sz1WNz_

diff --git a/server/data_processing/__pycache__/input_new_data.cpython-39.pyc b/server/data_processing/__pycache__/input_new_data.cpython-39.pyc
index 4d82a412097a52e9863d648d978ccd3a9591cfc8..1ba1de3faa52b6a385fb82c82e491b30b6c15a10 100644
GIT binary patch
delta 1411
zcmY*Z&2Jk;6rY*>$a=kAJI;r*vEweGRJbxF5j{mhP>6((D3?T3ky^r%87G^MU1xUO
zsMah#m;*voSS$yitz=)gaX{gQRD_UFZ(OV8FQ~Y1;(&z2+cgsHuI9Zr?`wYV&C~qW
z{HbYsrILx@`{BK}I**&*+voUlT8daecR7o?VGyyjm~Ri5M;T9xnQ1CVY4Qj5a4oq`
zKE+P*n6wQ`L1;w!4--pS8C<1=Dw5noRDGay$PKiGgeH|C{(L!Bg+88<>IBEy4Ma5+
zsc5KR6jatxbaM^i{NDj845<w<)sGPWOcdzM5Mu;+jc4=jqgaPEBehL5!na1TAqoR&
zWX{r{1qa0i;3jYrcoBF}phG++!jz<js8vIvC<{Xja;b&@mL)7|@8cnkOQJNkCum%r
zpu-9+)5={O+Y*gu>8vbBENw}oDT^I_LI7?xmkH>SmsM>b%OlMHmgP-!>rq@0a}qK*
z2(r$Cq&w&)iK}s@tpcWbD0Uu-EgvZ(90g+j{~iBix|@2`QM@1)GHbjT7_=NOz*@{P
z%>gD`&PpN{<>D~;Q8n>=@~is7AU_tAwd~j-mL<AyUyqmM%(y0(CeWx6KD`n^-{@lA
zwgNQ720tiGVp^k1)VZ(78M+Knn$#gm%c4%dlIU=0>`dUUs1`c_P|r(HM}&WyH(8a+
z1P@^Qfk5NsYy*AL59?B=b=tT~APB~St_%qb#<E-<H>8vKJTn;8br`JZo2N%3sKOA{
z_p{q_0CqDUjSJG5j+%<Z%1F7RV-(jh>c8I3aW-?DE`3hcVJ=r6DB}zC`3cTKbhMLI
zQ2(gD^&ekDYanf*)<w@H=R10W2OFG;9uGF$7yUrA-AM4(hI`Ewz3wq{_rgGUe&7fD
zt~g*|^h7TLEoH73&|G)IyeR5%cESSTQcrkp*vSpYKJ~cU@sC-QJD(je&Rk!ZE_`QR
z<O=VI1+ThcFwNt2b4$Onn@8?uxvm^WVc>s>5$an(I8EOPx!c#>PS^`*(l#!izi+7c
z{Iu{j9;Dhk{-(#bTS{tdu^<Zh+cY(&()OJ$OZ97e!oSU0I&Z)Wky_jS3A+vj0Dj6>
zK*gJxUY~}f)>iLB>fiPwAD)dTDwtY0)%}1%ttme1H{K0he~(SExc*$=?)5m&8sTx~
zJ$VEH$uGq>8*12P0k34K)#K2ksdCJMRO@nRd9rFn`Yf1uIk{&!rD}FcgU@H0h2&?;
z!D;flH3Yg_`uI{UQ|DwUld^{{3y8h|f{LnMRV-XJlA?VndBt9TO(9sv1QP-alYdl=
z{H2#H#Z*+q#x^!pn^?H5nAiYag_t<c*s^o1yq$b!zX1pTX*(CMLVoUKWFsTl!BZSh
KAxd5<ul@_y!fgBi

delta 1447
zcmY*ZO>Epm6rS<ldc9unPqNu~H$Nt{B^x4?_JV{E;wMC^)N)Crsuoe?W}L*EjlH!e
zNxK?%58D%>V!;&x(MVo#;ff-0t+=4xxWb+gw~9MA5O2Jt5L@%!oA>k0H{<7dy72RY
z;S`G+g6I6rjlJ^X_r^J1v5S%Glbz6wx`7|Lb|IS{xDIhcyTC&eJF=5Mu!E<Po5Cl!
zmi!{Dsy9T0hC=V}L>K4#Z&R5F1B?+7iNu6&5RuQsJ>eGGL{wqo0DsnqC7MfBCXH|`
z-$F!@kc0*zMt=D!ipUzm*?Su#%`<s`N$wDZj{#SGft$~8wSRH<QLMnoF?k*Jhj{zD
zSfw({l9@^hCW`Z*b<i5<BIp7|ZJY{JV?rGfqmF2S<p&t-QXK&;o$92#j|Vs|(qd|i
zP+A(Hc9~R2^%0H@hSCa|VtIy{!33tU!k#h`fNqr~i&C)<RHr#rRvHSS#!BmG`&nG3
zQw$JH1gI6Tawhs%h^sO8)_~JAY!<3W<xm{r=mDMnZx((vnN2d9D6Y{OkH#~;N-A*;
z#!SX(1~?fk`Btjpdh&yGxt}dZXIPytH^8h&W}hhWEX$>JHah}}LwxrgAC8NdoG|D{
zMm!G(Vn9A@jnqh!%#rygBFm8lsFopXG0Rc_Mdm1X)0aNfo=wdW|8_F5`Wa}RDcQax
zIE~-4lb4t{!Z7=kqO`$nNYAyKOd+q3rAI<+@>U_Q4g_eH25Y2q%;Y&2nx%RbnlAe3
zLc7T15?_&AW@grMeSl4y`}~udz~{<^Ai((>5~A}%@%{!zaTBB7D&zbYIDhgQS!PY>
z-`1I!E|QfI=8y`y4ILXdA2c^#=ryzk)+TDb?tG3B(kyuRzhlt@_k3A-h~Mp%cRC(%
z!X4sJ=Z$t0_&sC8>$sL5P-`zZ_KEixDtn?ISiP#{-t!`A1wH_Hk#*#BlLK`{?J1Mg
z^Dk5hmwLr0IC2kyQ|mMc52N!h^IzkBFMsO#)ap7B9m_Yobtl|viMG1w`cV*GC$=`R
zw(fUbTX}DndM9p631{IRu=OqP$i3-0(Q)XK&;(c5;C^LNV(Xj7cZhf5MIKxZy{VV$
zSTwMlZWp#|%Wt)V6OTNXpst0-isutxGsdU3k_E0ke+H4>^hbf^?YfiASe|b=q3a|+
z7CxAhyP*dKQUGwF4!L8g6F6inc3eNP^k}sRzOcXp`48{yx?Kun#%dUJI(MAi!_a_8
zYc4GFtV;4!H?f`kst-VJ7auN9ad#%Bxy7%)DvT%vf%1}46?Iv~RWZpKSFoC_8rQB1
zsvuwm3s?XR?_ZKE{HYXGtV2YDVPFGmk|F4Lg?mH|tJsjrf`&8vmXU2ETuRQ2_kqT5
ZhIwfPRtsxftZ~6<Oj!MoUou}>`Uj@bXHEbB

diff --git a/server/data_processing/__pycache__/process_lidar_data.cpython-39.pyc b/server/data_processing/__pycache__/process_lidar_data.cpython-39.pyc
index b25a8d60414042c320cca5bb67208462c3090e40..00c429468ce27e0ca4e0f6b21e30495022da114e 100644
GIT binary patch
delta 20
acmew?^I3*Fk(ZZ?0SK6R+&6M(@Bsid&jdFB

delta 20
acmew?^I3*Fk(ZZ?0SG+R-8OP(@BsigRs@#-

diff --git a/server/data_processing/add_new_lidar_measurement.py b/server/data_processing/add_new_lidar_measurement.py
new file mode 100644
index 00000000..166a896c
--- /dev/null
+++ b/server/data_processing/add_new_lidar_measurement.py
@@ -0,0 +1,95 @@
+import json
+import os
+from datetime import datetime
+
+from server.consts import LIDAR_DATA_PATH, LAKE_RELATIONS_PATH
+
+def add_new_lidar_measurement_handler(self, lake_name: str, lat: float, lon: float):
+    status_code, updated_content = add_new_lidar_measurement(lake_name, lat, lon)
+
+    self.send_response(status_code)
+    self.send_header("Content-type", "application/json")
+    self.end_headers()
+
+    # Write content data to response object
+    self.wfile.write(json.dumps(updated_content).encode('utf-8'))
+
+def add_new_lidar_measurement(lake_name: str, lat: float, lon: float):
+    """
+    Adds a new lidar measurement in another location of a lake
+
+    :param self (BaseHTTPRequestHandler): A instance of a BaseHTTPRequestHandler
+    :param lake_name (str): The name of the requested file/lake
+    :param lat (float): The latitude of the measurement
+    :param lon (float): The longitude of the measurement
+    :return (int, str): A tuple containing the status code and all lidar measurements in one body of water
+    """
+    try:
+        # find out if lake exist in our database
+        # sjekk hvordan sara sjekker dette - se i sqlDB eller mapper eller ...
+        lake_data_path = os.path.join(LIDAR_DATA_PATH + lake_name)
+        if not os.path.isdir(lake_data_path):
+            return 404, f"lake does not exist: {lake_name}"
+
+        # read json data with path to data for specific water body
+        file_path = os.path.join(LAKE_RELATIONS_PATH, lake_name + '_lidar_data.json')
+
+        # time last updated data
+        time_now = datetime.now().utcnow().replace(microsecond=0)
+
+        content = []
+
+        # check if water body data exist, else create
+        if os.path.exists(file_path):
+            # get the areas from the map's data
+            with open(file_path) as data:
+                measurement_data = json.load(data)
+
+            # create an empty container for new measurement
+            new_measurement_data = {
+                'MeasurementID': len(measurement_data) - 1,
+                'TimeMeasured': str(time_now),
+                'CenterLat': lat,
+                'CenterLon': lon,
+                'Sensor': {
+                    'SensorId': 2,
+                    'SensorType': "LiDar",
+                    "Active": True,
+                },
+                'Subdivisions': [],
+            }
+
+            measurement_data.append(new_measurement_data)
+
+            # convert data to json format
+            content = json.dumps(measurement_data, indent=4)
+
+        else:
+            # create an empty container for new measurement
+            new_measurement_data = {
+                'MeasurementID': 0,
+                'TimeMeasured': str(time_now),
+                'CenterLat': lat,
+                'CenterLon': lon,
+                'Sensor': {
+                    'SensorId': 2,
+                    'SensorType': "LiDar",
+                    "Active": True,
+                },
+                'Subdivisions': [],
+            }
+            content = json.dumps(new_measurement_data, indent=4)
+
+        # write to file
+        with open(file_path, "w") as file:
+            file.write(content)
+
+        # send response
+        return 200, content
+
+    # error handling
+    except Exception as e:
+        return 500, f"An error occurred: {e} g".encode("utf-8")
+
+
+print(add_new_lidar_measurement("mjøsa", 60.9, 10.9))
\ No newline at end of file
diff --git a/server/data_processing/input_new_data.py b/server/data_processing/input_new_data.py
index 946824d7..2ca6cd2b 100644
--- a/server/data_processing/input_new_data.py
+++ b/server/data_processing/input_new_data.py
@@ -23,6 +23,8 @@ def input_new_Lidar_data(cursor, sensorId, lake_name: str) -> (int, str):
     :param cursor (cursor): An Sqlite3 cursor object that points to the database
     :param sensorId: Id of the sensor used to measure the data
     :param lake_name (str): The name of the requested file/lake
+    :return: (int, str): A tuple containing the status code and the meassurement data of the lidar files and where it
+    was taken on the map
     """
     try:
         # print("name=",lake_name)
@@ -32,14 +34,14 @@ def input_new_Lidar_data(cursor, sensorId, lake_name: str) -> (int, str):
         # read json data with path to data for specific water body
         file_path = os.path.join(LAKE_RELATIONS_PATH, lake_name + '_lidar_data.json')
 
-        # map of water body area exist
+        # check if water body data exist
         if not os.path.exists(file_path):
-            # Just temporary, not gonna use:
-            # with open(file_path, "w") as file:
-            #     file.write(
-            #         "[{\"MeasurementID\": 1,\"TimeMeasured\": \"2024-04-15 16:23:28.620516\",\"CenterLat\": 60.841532,\"CenterLon\": 10.717878,\"Sensor\": {\"SensorID\": 2,\"SensorType\": \"LiDar\",\"Active\": true},\"Subdivisions\": []},{\"MeasurementID\": 2,\"TimeMeasured\": \"2024-04-15 16:23:28.620516\",\"CenterLat\": 60.841532,\"CenterLon\": 10.717878,\"Sensor\": {\"SensorID\": 2,\"SensorType\": \"LiDar\",\"Active\": true},\"Subdivisions\": []}]")  # Writing an empty JSON object
-            print("File not found")
-            return 404, f"no {lake_name} exist on this map"
+            return 404, f"no data for {lake_name} found"
+
+        # Just temporary, not gonna use:
+        # with open(file_path, "w") as file:
+        #     file.write(
+        #         "[{\"MeasurementID\": 1,\"TimeMeasured\": \"2024-04-15 16:23:28.620516\",\"CenterLat\": 60.841532,\"CenterLon\": 10.717878,\"Sensor\": {\"SensorID\": 2,\"SensorType\": \"LiDar\",\"Active\": true},\"Subdivisions\": []},{\"MeasurementID\": 2,\"TimeMeasured\": \"2024-04-15 16:23:28.620516\",\"CenterLat\": 60.841532,\"CenterLon\": 10.717878,\"Sensor\": {\"SensorID\": 2,\"SensorType\": \"LiDar\",\"Active\": true},\"Subdivisions\": []}]")  # Writing an empty JSON object
 
         # get the areas from the map's data
         with open(file_path) as data:
@@ -83,7 +85,6 @@ def input_new_Lidar_data(cursor, sensorId, lake_name: str) -> (int, str):
 
             # Calculate each area's ice thickness based on the area coordinates given to the calculation model
             areas_data = calculate_area_data((latitude, longitude), lake_name, laz_file_path)
-            print("somehow works")
             if (areas_data):
                 # store lidar data in json format
                 # calculate data for each zone within the area
@@ -121,28 +122,27 @@ def input_new_Lidar_data(cursor, sensorId, lake_name: str) -> (int, str):
             else:
                 print('No data found')
 
-            print("went past")
             measurement_data = {
                 'MeasurementID': measurement_id,
                 'TimeMeasured': str(time_now),
                 'CenterLat': latitude,
                 'CenterLon': longitude,
                 'Sensor': {
-                    'SensorId': 2,
+                    'SensorId': sensorId,
                     'SensorType': "LiDar",
                     "Active": True,
                 },
                 'Subdivisions': subdiv_json_data,
             }
 
-            print("went past to append")
             lidar_json_data.append(measurement_data)
 
-        print("went past to append")
         # send the changes to the database
         cursor.connection.commit()
 
-        print("jovid")
+        # container for content, might not be needed
+        content = None
+
         # check if there are ice in area
         if len(lidar_json_data) > 0:
             if os.path.exists(file_path):
@@ -154,16 +154,13 @@ def input_new_Lidar_data(cursor, sensorId, lake_name: str) -> (int, str):
             # write to file
             with open(file_path, "w") as file:
                 file.write(content)
-
-            print("jovid2")
-            # Send response
-            return 200, content
         else:
             # return empty list, since there were no ice in area scanned
             content = json.dumps([])
-            print('No ice found in area')
-            return 200, content
+            print('No ice found in current area')
 
+        # send response
+        return 200, content
 
     # error handling
     except Exception as e:
diff --git a/server/data_processing/unit_tests/__pycache__/__init__.cpython-39.pyc b/server/data_processing/unit_tests/__pycache__/__init__.cpython-39.pyc
index bab6ac9d680fceba19ad6359bbdf4d33d0c06a25..30e35933ced48b5c9e62d2122fbd977d99ea0fa4 100644
GIT binary patch
delta 19
ZcmdnXxR;STk(ZZ?0SK6R+$VBx0stmd1F--A

delta 19
ZcmdnXxR;STk(ZZ?0SG#rohNc{0sty?1Ze;O

diff --git a/server/data_processing/unit_tests/__pycache__/test_add_new_lidar_measurement.cpython-39-pytest-7.1.2.pyc b/server/data_processing/unit_tests/__pycache__/test_add_new_lidar_measurement.cpython-39-pytest-7.1.2.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..1c31f05f9ebcece4830641353883b360d925b792
GIT binary patch
literal 1417
zcmds1yKmGm7`KyLlDj@AMMA9vs0)Y_;&hZUfH+iC9$OhI7@|nVJ^QYqd7Nyg50qP4
z{shJj?Sga*Gdl}^LskaVm9Z0_oxTJr>^Sl--{TkC-@~C36Ac98Xa8mIu7%Kdt(+e=
zD2p)V3jl@~j!}Tk+e&N;VU##Q4Qr1TyNMTgAY*3lVdk*f2Pg24HJ5py)frwvP5%(q
zLd#8D&Qium$~Q?IF)B#HsmujWc&fnZ3a)aIb~X8A)IsoIF2R(a0T>>_)<X=_Qm8-$
zF05TUw1)Q3VfL_A*hOvK8oGrmKPkL#F{f~Qm>GM|I&he)?0x3|Z6Nsu{9r%8;w?z7
zmQsts!A}`mhEW5?j$wcV43GJH)>Sn0Se-QrFTx=E$^(X9_y>3w??A$aE<+Id*m6);
zTq+XNb^Zg+Z$|VHBQ(NCR;M$<@279x9&ERpa<0>v)8c$nmM-n8oW`Zkw+6hcI2&1|
z4J-}wN0U@aE|g&}02_=8qq=~4qO!3#*fu*-QC=op8plNNf#_z*fC^rYgPW}8QLLgA
zwuv)f$a03rwJeXBp^|=_t<spJG~s2PNZR9ig>v$#*)_`2=R#znyh3`JNT?!k#+as5
zfoD_?>N-^OabU+(0c5H0_0cd9x}N2jK0_74y}&5dLia0Ar92oRaShl<TT73^*AT7@
z*D^}x!&fPPCZY`<uB_|VY9?4X5LtizVY_`Mzy}*#gp4Xmz}w|gMrl9H(?}7W9vN0i
zx~LypgYELp-zg+YHz+i+sja>@avT6*$2?Pj;s)sdSwH74#FV`I`bARVfOz-~K-4to
zi)t!u$}IGcMoeg!)No0|j0RoS3a*1xHvf_4vm}oJ{m&%NfwkEv{gbX1(|XleQr&}A
z)o9S0Ex|WMq@bryO{I5i6I1X_(5||s^;_4pF8phmD`%=K^eN6oW@0qq`Hz!~<uQK(
NcOFTdvRl@q{|h^vi$eea

literal 0
HcmV?d00001

diff --git a/server/data_processing/unit_tests/__pycache__/test_area__processing.cpython-39-pytest-7.1.2.pyc b/server/data_processing/unit_tests/__pycache__/test_area__processing.cpython-39-pytest-7.1.2.pyc
index 31953821049774df24066f0c6941245d740dc5fd..8b0f8126b378c7b1fe671e6a619184c6665dd649 100644
GIT binary patch
delta 2250
zcma)7O>7%Q6wcVrdTp=QcGmG<ym3;3lZ~CUO$Y?i1k$EyRobLgX)F0qH|f~PO7$AX
zjzqbHN(gb_KsypABv6YgSpuXs2QD1ofKbH=q#o)k5|Yb>3lc}(8*kT66on+pr~Tf%
zeeZkU%ub%pJ)8@!1%v(`__<g<Q@(UJsFUd3+~{^iF31&M!B_DY{FOi<P*Dm>C0GcO
z9!jYD3qn1#_aje1wV6b{z(O{YsSjA#W_}s~7O|N^gTVT1rqU2F&1PX50Tu<ejV=19
z2DIN^jM9E!F`LC`99Z0D37Q0!uvv-@0882|O?6-?n+?(oumPJ5(P3a|N-p;pM_TB@
zis5ZarnO^|lSB$YfCcy?SDdK)iR&tH@geu;QXhsj{)2mhjPd90Pl%iU)T@zkzT(yS
z*PibO#Cti+QV@aw%PfSC5&mAUHXFys1VR$w2*Q{H20S&jdZ|_~n${vKtre?V^_odb
ze$ggxw|T@LNTXze|0*S=PVLP9)aGfgP9mbvBoulQ777VA?-c2CiZp!8jcX~cN3xvB
z+J*M;7<(BZi!h3?XMm6xfSR@Xnsu{OJci@e#6cq-`1QjdI}Qr6{9pM&8dVssmIn)|
z2*SONqO*=7b`+P7AspOsCIdNpJ5KXEs?Lx4pA&_r0+-1f+zO<^V!saZK<H|F@JAps
zau^SIRv9B%zN*ZSMbY%W^7pJT`xVqagYYWCYY4LluOrMM2tmS!js;5{3+5rGA+rTc
zeGB1DghQzsRt>Vme+x~@exeYWu%(?lszOpHu>#g*rx3cV<-=-{{}>9Bb$D%toaSFf
zbUqUPE+^DGN)2~=91)np8e+Ypf7hYv#ROsKwT9G`-mRKey>_Sx;KgQGoUO8H(c)&w
z+}Nyt2+^7h&;ujML?Y}Q$owU}43UN{OxP)ebu_JZJUs)c>?}gp>_D4|z0HbNwZ3Uu
z8y~}JS5r98=Y=;!d%P@W7aaw>4XG~-!az%E2ZUJyau8tnd9;szM`G6py{|-`iw<g^
z!i!x}U|U!4%<bHc&XfEqEH+#%QT!5i5GQ^2?!B|`*Khb33T<!Hj3GD4`%QAYDOJnm
zTB&}h?c(dP3388r7R!+<;^KN1`!gjhIDwUgo{RV-TnO=J@%f;0kPQ#(=PxD3176Iy
z=17UcCGFc_CN0*?4@$NUelIZ_=-NB}G%=xl1@G9#c!-MU{W_l<(D_vIcMDZCT;hs0
zT<j`VM>&S)#ZEb!xGQi0bKEWbPFp^F3F|<{4SZg6K$wiV`#KBvDjwIiv-yU^3do$n
z54c--D>bD(gluQ5Fc~9^!dQRxqZC#|*mIk8ouYMIzKPIn){V3=@(l!?stQ&uLB!CT
z^7@u}t8Q8~mge84r%8(clg@iwu*iq>%=S1I%Ogx897mW&SVUMtIE`=);XJ|$!WD$;
m2owQ(bx9K9#J@uMM5Ri%Zj}~rrrIFDf=l%}zk~c|J^UXSv6|-q

delta 2317
zcma)7OK%%h6!x_p+hfnzPW&1>cABIi$>h<Jq=ky4Z4zkOP|`vR1r11!n>%qw_1MuJ
zM^HAAct{nCl<HQMc&w;|FscwD8x}0e3M8bem4JnR0KzQj8i@txTu)plN>Mz@XMg9O
zdmi6CbMxi&Z_`RaQGzb`9D9FZ^_`naj`ZFf9oir+>Y|=fz>;*y3hF^Cq=zh7mn}tC
ztgs%oB6<XT2=#tWXb1Iu;MJoJ^V0yZPKQY}2&~ItAu0olIZUBpU~z{<XcSmNunj^x
zX&2C>vlydsU@3<sXcCy}uoP8+r5%>08DJTQb<-@cZinS)53sDm4$xj;IfwPpeqcS6
zTy$v%V-1w#oJQ)>QlV(BELB#nZoNp(kRBQA458*`1b-vc+zk)@j__~Ymxzb^J-2-^
zG{pHG&p6TeL(g^6!TbC%GRn)|Uy~xr7<woOVSoh|<qv(afdm><gfv11;UI$6f)ReB
zLnX3^HxBXc^N)N(-G^XZa~D7T1V7SjaY}qbvrgdo{RD;(b+u~P)x24rV@3hKY?B)K
z)l#KUjbTFXVesKUk_^A#zZ(+O3mHW5T|0BsB<AHO)xjCo51VR!-M3aT%hd_zdy+LZ
zf;BdXFoZCS(BA9Efw+n)*kVkH7oH&eu}QFrLVge2O<^ILyWz#n5d<Obo{Bz=%M%Fg
zSsqC7L?0M;XF0-4a*ij1e-VX~(8a-N@TmvaSY^#%RnxHbK+&jJMwML?Q_-A>Cy3F3
zVz^m9|0&czu&>?~d6*3IXXK+~eyb!a1d7;Da*5}#`WXZ<NTOkpb8+VZuoK`@3$T;u
zI)^Zeu&>mck#wd~HuBZNRim622WKz9ZX1<#@j3Y^z8v<GQ$n8)!;do0V`xmsUO;FU
zcQc|9%D;~sB@6uT$S;G>qC=~6&BGoWrf^BnCy3}n5#MS~l&{{LD0^QmLF9T=4EL&8
zrui#|S-etx53F_oz(oS^_y{`-CFb~@&aYFa!CG^Q6B>)+_8h7+;K~*e+WY>jD;K*C
z#<m17xJx3zpIzV0i9SVS0WX2;wisw=_?iZxlz=fXun>aSAWC^{*O~8G3T&yTclVyR
z)=O1$tz>M%a$Ai7!p`HdZY{@;lcASk5iU4<``85p@xDJkF|6d(=H<2P{nsSs-yZqS
zWPE=kznB~+xA@!1QST)PEMD+?$v-ke4>9thhF7o<AxV_qOC48QBdvK^k_XihAD$_D
z1JkF)uxS3eRAeU2+vdB5GcWv_dMwm_U_Yqiu`ghwBZilRVJ29f|EoSSu>!dCn>P)6
z9m8WOns@uiTBo_ga1MPu4ZJrR5^lmc;8DQems=o2Mc+M@gqu{tRwkUeXK$istLgu{
zJ|AQzV_$)HtEDIzCd`1Aa(uG;eiX}L%Lt-`J*RsGmnlNKSf{hvz&BuQMV2x0Dp<4w
z^}ywI6Nam7vmC#bol10rSy$G}W)-LKkOluxnVbKd9pnFGdp3kHqnKbE;V=T;@9YS|
zJi;jiynxtQge8RY2skDzk6<8R{<bnj!6RU+2WG4aT`w6Yuur=eV9-6_4*TKZH*%@}
E00?inXaE2J

diff --git a/server/data_processing/unit_tests/__pycache__/test_input_new_data.cpython-39-pytest-7.1.2.pyc b/server/data_processing/unit_tests/__pycache__/test_input_new_data.cpython-39-pytest-7.1.2.pyc
index aa59423b4338645471aa047587af7f9807d410b1..279b93a3e9baf699a8abb16b934f7ae92a575cdb 100644
GIT binary patch
delta 146
zcmZn@KE<q^$ji&c00ep&?rB||3=EG!9Av-*<TwCvvE4*%dzN4ZO_qtvbR@ZNaU_*y
z=9FaS72o1<D5#8w@g^VR(C59y1r#btEiQ>qEQ*@^o5P)RB|{N6(2yeT$%@Ry5*#+U
W`6;D2sdkJYgV}(D8Y2fIj{^WlN+PTP

literal 2438
zcmds2zjGT!6u#X%o$e%A*l`F6A;AoB;25HjWt$m1n21TpP{gLl&}cMsoV6?E?9-iQ
z_s)qkQe!hTP*Bj2NfA?oQ3o>=Dd=e7AGnqV*FfV2-rJMqAH)Mg$x8R`y|-`o-tK<y
zTW?~bph5fYvs>+LTho3)<7m^tsKX;SK`@PxKx+{7rd^$CMC%%j9KjwMnB9CMuXGYv
z4GVmFV0R0R0{93s9ubyf<|js@II{B00;@E#Y*qkkVq_H$tUH=h+JkRvs}4!+6|dvB
zR-)Dh7-#*km&9(!@42^q<_VX1u?K!r@Hi1+3kMxESellH=LS6TDTr9x(FTxqUt1?G
zWn@4Y9ne_sYkktEJ9?82^nt<jL9Va&a~pJE_D%V1Y&^~}qi?ohDd=z0U4xmi`8dC;
zZEEsk=(qa%E)naX*{Fq-nJhn!*j5oai1=JZfCdq;5s&COZIEZM3H`iJK)2!oL=^kh
zF4-a5u;l}jX|Nf^)jb0FH|&_p*bTf5zV{_KhGd^EFAvFsGqbPvwyKVtSzew&wdTmQ
zC}S^9q}z%ZPc44G$6GOHLz?OkilVk(_N3$@RzntG2sjs<lA!RZG|%tzRuc2Hl<lm$
z=>-WF2#vH*?`^3}JdsYhEiVXM!F!?=b$gzG5zy_fC4Lb5p-jynf(V(OcjetE3786X
zJ3+MO1#akdd1|}TYjd0-Ex)HS@}uy5AtI4ZyX{DHz1W5P126Pq=o#8+u?uK$TZxbm
zV@n>w+x1ym9`BEuSs=_);))`^i<nln;<?Po=AJ)lEDkmCDn##hZ!9%Gg58nLyOHPC
znjePzrtmj;^Uemo)*`{0JrQ+kZ&#~_3JlofqKTk%p|{1Q^utaw3H{i`++<T_cnD&Q
ztn{|hOUjS1&ieci_S<KpHRd2ASq7m|lUT$c2Au>cX2Ekh<bQzP4DubQ#jnW-_7q^R
zKLhs0G1z|(K+FN)5%%U7_J^Qm(4WCR1nmI!0O~R9KUEP3`!7^P278OyBiI*M@gHDc
zS{)jHn6QeK^&g)~&(Q^LL?d_Gzv&63JEnT=A!PTbYt`Dqwdx%FXXdI)Rs4(Bpr>>B
zn_oYuT)$H9JSp6oO_o;cj-|$B!hw)1?%`M1?0N@0(9YC5KmUYHt9RyA`|Y|K(lEma
zt59Ha0y#z?*(kgzu!$0y&!LzEG0cieOo0xC=`-%~b{h&()svXUxU(ppM{y3t3n<Q`
zxPanC6c<q-Ix}$vwDjUBz`^wJ(_`3_Oa&VXuz3^wr^Dt6^a3{mxethf4+Z$>03V91
z32aG`FUM?o95xT(sQ&|O4gm6RIMD!B9ORG}hsD+G1o4o?RS^E~K#S@?oWHZ;yd%{K
zIaEwQEYjWlgQFa{m~r5ucmukJwz!1TUPkc}3S<-UGKiy8QWG=aX()2Z_+;TIpS*SQ
zyiOK+a;(r_fw{61Q$=o4^H0;7q+%ZY|A!M3*I*%Pdqows<6u_HtUY@RoN{U%+$pL|
z(hF{O3so{shnt}y_&wpnon?<*X@2BWMV3w=6Jy0x@CM0lIy0N5F`JQh<pg<Gj+1p(
pu}HkCj8w`;mZ27;3e$S08?hwd@8Zp^&h#o!cZrsZ<tg}0{sr?ka5De^

diff --git a/server/data_processing/unit_tests/__pycache__/test_process_lidar_data.cpython-39-pytest-7.1.2.pyc b/server/data_processing/unit_tests/__pycache__/test_process_lidar_data.cpython-39-pytest-7.1.2.pyc
index bf986448ae8ed6e2e9d2b42f374754d56a45dca1..4d286464ec758a12fb05f87a060a9983fe992b85 100644
GIT binary patch
delta 120
zcmdlk_K=x3k(ZZ?0SL@9+|#~K<dtQ#ny78X${5U`$ue=0vy>+HEsmtp%$$<Uyy9Ct
z4h5C*Fy7=mE`6R`TtK0c)Z&u(#G=WIxI8&mG8FLwO)KJ^EWlhY#$l72pHiBWYR3o^
MD`o)_YK#Jm07!@-IRF3v

literal 2871
zcmds3y>A>v6rY*>yz_TVoP;l#kAy6Uv*W~(Kp4exKp-K5lF(QuE$f>-XOq3%V`eT8
zYmWj`P*71&QP}B@KLAnD@DET=OB0tAG;ZL%+4K4Q5y@`Z)4qN4=H2bg{C@BKE*cxF
z61e{T;lt+N4k3TxVEAG%xCOUd2g3=cDOscD$yyd8l(g(MhvE!N-IllJ8Q)6%R%NZy
zs;*UGY;)&3vNpn9?!j}E`@90rF<#{(@Eqr(d<>owoZcnD_%6JMtOit1eDd+_<vZc+
z<$KHFXUq3K3Yea1CK(T#dCFrEHj^}#db$y%jZPY=IE+Lbg*;MG1Ak)wa>4Q7UV&Tw
z0*2ErQKTSSv`Y(E_66{{b%AWKE-Prk9<r`gSn`RY+l<?V)ui0Pc$4ke+*Q`Ly+a-m
zc?aepzC%SFJQux;;T8uO%49Ie_{L;_2N@pse`YhJYx4@P7Is3xca#Sie&OuUE&44S
zZ`a}k4r63>vsRmvv3L}VIow&;7I`C<GRZdPI$5GZ6-y=O(3a=1dA{C?BiRvgE6!Ay
z@NmACMw`dO*D&0pdu(Z`M>o%1zS@2~AIRCIrCD?r0;%1op*m5j{rKy4+)y#^F>OH>
znuWdbNW!|5$-V*E5WEpogarqztGC*Z&5|Oar$PWI4Mp4*jl9(cjPxi>hwGgrRY?Y~
zNpr}M`eG>W=be<B)Nmus*P}GdqE@Ucp^Ta_{(>G~Hg8Sx>;oZkp{Iciq7|tS)|f_F
zq+lj+wcU=?ec{7eL<JW#f^RGre61XmU%Ng$SnLt;0%Y%fx$<uPbJ(1$-_N6Pq5f$W
z-xkTExPJE`KGt)=>wv??!aMWx2TqAn{Rm3+1C;9KNcsSVX~H96*jj5p)-!zskFeW@
z<w)EHp*HpDBo!}#e~8{VdyL+kbt$*H3~7$k-LksY22ifB3LEI{6wZL&j-fZiPo%ds
zpf`9Y(%T-;8@wTUyN2Gbp|{tkw>O}-)2DZj?NZplE_RuJuu@wO{`gHsnh5AcMBv5_
zU=-M?#2A`!FujVv^AQthCecixIfrH%&2wnZqnQEI^R?T6nuvw2q|w9Ja7$dk=>bv1
zMI2s2^E?`)Lup<FPtO{ZPG~q`mWN0=T%a5UgLvU*6mIbbjQ>ZNiI-tN;#DwvD`#s?
zb0@W?Qy?u~!#BQ;<}8R{^FTHnM<jsgvl00nW>F-bRYi)TENn4KjAx@aR9U|&wrzoA
zU}d=&H<jfnd)qO>(S&)3L*2B&^Uy2nW{~l{$-v6`(PWgB1*&O;!$sXJ_AASWj7o8|
zvPM?}mOQlxN&bWy60hLVT?Mn}iWr*w>?sbtS2g9Oowi6ab=oRBJ4)CvvDhS*@NnH!
zX_bn%A$ABU?B|1i_XGx~Lkc9-0W6#j?Yf04e}Yp(jNCp(&Jm2hFbE(<4-5i*jEoN=
z-Is9B^f=G-IA4`W`1?K1CSA9?-{%6hy98_99RYKIhIkW(0o`*GIh*Awpqn%MI$TDK
zx?T^Y=}-X^_;pm;>zl*!yI9KaqIe5`t|BhuORk_f+}(y{aKW^?Vfni;Jh*wZ&@Mi!
z^<h;?Y{!S86E`6eOlp5$=S_3gm%{R&L9G;HQ0tnAzY>W8l^=w(*N+*}>9JB-YmGdE
z|2hJtLI?fW5w)!yS6B0oq!bF&PScD9*1w^aS?17QO?xrD-hZ!^^G+JSkNRXf$Q3%t
JeAmaT`X2=C(Xs#l

diff --git a/server/data_processing/unit_tests/test_add_new_lidar_measurement.py b/server/data_processing/unit_tests/test_add_new_lidar_measurement.py
new file mode 100644
index 00000000..987ffe5b
--- /dev/null
+++ b/server/data_processing/unit_tests/test_add_new_lidar_measurement.py
@@ -0,0 +1,18 @@
+from server.data_processing.add_new_lidar_measurement import add_new_lidar_measurement
+
+def test_add_new_lidar_measurement_invalid_lake() -> None:
+    lake_name = 'test_lake'
+    lat = 0.0
+    lon = 0.0
+    actual, _ = add_new_lidar_measurement(lake_name, lat, lon)
+    expected = 404
+    assert actual == expected
+
+def test_add_new_lidar_measurement_valid_lake() -> None:
+    lake_name = 'mjøsa'
+    lat = 0.0
+    lon = 0.0
+    actual, _ = add_new_lidar_measurement(lake_name, lat, lon)
+    expected = 200
+    assert actual == expected
+
diff --git a/server/data_processing/unit_tests/test_area__processing.py b/server/data_processing/unit_tests/test_area__processing.py
index e00a8300..277deaba 100644
--- a/server/data_processing/unit_tests/test_area__processing.py
+++ b/server/data_processing/unit_tests/test_area__processing.py
@@ -1,5 +1,3 @@
-from unittest.mock import MagicMock
-
 from server.data_processing.area_processing import inArea, distance, closest_points, find_height, calculate_corners, define_gridareas, define_grid_lidardata
 
 def test_inArea_inside() -> None:
diff --git a/server/data_processing/unit_tests/test_input_new_data.py b/server/data_processing/unit_tests/test_input_new_data.py
index 4303d0b4..0daa6c55 100644
--- a/server/data_processing/unit_tests/test_input_new_data.py
+++ b/server/data_processing/unit_tests/test_input_new_data.py
@@ -63,6 +63,7 @@ def test_new_input_unvalid_cursor() -> None:
     status_code, _ = input_new_Lidar_data(mock_cursor, sensor_id, test_lake_name)
 
     assert status_code == 500
+
 '''
 def test_new_input_valid_cursor() -> None:
     sensor_id = 1
diff --git a/server/map_handler/__pycache__/add_new_lake.cpython-39.pyc b/server/map_handler/__pycache__/add_new_lake.cpython-39.pyc
index 360bb6bc650b05b6f1e0dd479c799ffdd42be2cd..a2003fedd994538f1e6f8c40f7c4b14cd9bfed16 100644
GIT binary patch
delta 3230
zcmZ`*O>7)V6|U-^nVw(IpZ{j;c<eYUPd1zNW+59{!SO0yXA@8eIBdw^$V{esoSBTL
z$JOm%o9c|fmNqMGHqQ30v{DjeOM3yq0fLa=#9@zc;J~GiflH7;LgKIjB>1Yw&N>lv
zt6sf+RqxfSSMPn*pS|+_$z&ywh!Q-%ik+)XmhLBq=x6s|elTGUu;fFH^{~{IRvt97
zW*(CCLzQJ%7Lo$XvED6G9{TxTzD$q$3EOP3MQ++{t7V&hEcm=(R+!2Cm>lZzw(p%+
z-k}9=NBIFA_Qurl-Z3mK*FTG9|5hPnTiN)g_Z@Ysvqan;q0f?SdX2d$#}FwIWw9I)
zu}#%Yi}X%Jq#Ds(N{JH_=}qdUo%mj#aFUXfGLdfdusBO>5th7*xgs4{jJg?-*-44i
zF6B?ar6uQPMG{uC(x&KS8=(cw&AGj9pWE+bL_gl%0Wv^X&!&R!KD@d8@0#Kcz~MnB
zE3!^*Q`x5cLq`+YMsK5Uld{xJY=bYXJn2ei$+cr{9yapK7$htm*vqp}mxrx_80^54
zg7jpYt}rJj2C<tVG1TaHhs7|<3_@=Ibma-lIs+oHNyPxmJybB#`%rZci5_StAcJ{O
z7_KQbCD>OSBZmSm!9s5kH?i_0SmX1RZPo{!sE7$g#962RVaOd3WM_~K2wJ1N3W7p*
z^1H+>iXt0a#Yyo~!FYau+$o6UraX`#LB)vZ*;FZE1u;@nu8?`65odT?S-(SxJ4(q$
zo(-{KG5UZ!f@@buh+HLX&>g)!Iv?~iw?`+XiVl_EJX1NuM*hEw)R=_wJSi0`JCFaU
zU!dN-<ml@Y^_Fw2Xgj<#ReZDf_T|f$@KJGA?PAqpX0g&@MdyZDTy3+8W3nP>#mk51
zk*BTjc%gvI<N+B1=SNRB>$X$1mfO=4-p|78ohpTR|B*bB7`sI}XFvpLkOqx)du$ZG
z(TgS3H>zgK;Z~jbbls<GCF*O<dduuC^u=n%>1Jj5I;%{dgDpM|vN2d)brzQ^?c=AL
zR<+W6)t&~|odhfDO>_Ne2=kt*l4u})tZG@D)mzvdDsbB9qrUeoW4the!E$=eL@2m<
z)@nA*s#CXGr4awp<ByCUN)LITM!2ro7I(bf=<BrTosS-y@{OA5RBu=<(>K~pD{uw~
zP`PC;R+`O489qNfS8tjZEoaVJZLzmFw|Hrc4|u<fPF_AER}JF;xU;yn&mabi{3J&B
z8<L!o<OGNxWA$5gW-_^BKP-c0a+^!k@O2q5n;!-5O~z*Ed2b~)77aEPubR!K_bB%2
z!t<xclbAe+X1@<YVw#enc$GLc)F_Rs22H6N4PG^>q-b0*s6pde3ZucRCh54M(Kxge
z#Vf}1N?!4%;x8SJ2lK~hiUw<xG+%35&GiF&I^^AspX%4$h=_>rP0BAgRA?enQ$$Ea
zJetUkMudWbjI88^=EhKlA<VjsSuvqwR!oF3tC!Np{fR%*8#0XCkmOB}Qk-9t{1+h%
z#;-`(w<WnMNg1RZUE+1N*p1zUl*$0|k|Zw#YX-89y~Um*9m$nc9z)0Tl3WI<$_(3o
zB4D23_$MfXZMyMYhcJLJ@PIay9o5lxsa<q*rfkw5QYYkSOzoGL65b{KglTB{rgCq{
zRUHE$MTIIc=L%t=js_%<VA4vxM(l-2LWB1zXkaD`Rf9!X^sag@AE-y6OkGVXKd1Z2
zL0v(Fc8l`Qg|-tDL}KDIYx<tGF=?%#M{rWAw~;Dz{&vuSoc_%J<evXCt|}BD{Lux)
z)zLz3Sg1R3p+CUQAwmHSgQgyZ<dT5*+;eVbUX#%N&cSuAkk(`Xh4jSwhrmJu@Y#pp
zriHN?gb2_Xa*f+YE86V?91H<#G8OjtC#eMWK2G$^75B=gI3XbnVE8q3MXOds*%s~9
z>$22r0D!#@iFLlG0-%%#QbG0E-Y?P{^d;|=OyT54d~wg@ac9lhP>vOS8r>M4tDyLS
zsa8>fLV&HP-T+spilu~iAv4mMM!xu()iztGW9xe+=ea<_R+rm=LaV}pyyjU*OOY2c
z&!;tClQ<J#L|KOufRdnF=L^tyF_XUz*{{)T2^=J%DbuKGYA8eWsG6e_sQW1TNp%4A
zJBzyKQsFsZm-#JWRpz|?srUEHkq*;bjp?rLr~+BeLOJptMLvMX>0ew>-Xm`4UGgri
zDJ;y?EyK}~Mab}3f~!2tj7A7arfv}tmXZ%}tWJ2x5TQn7mo|{V!eIE}xr?-4nMMZ1
zSUgBkx)a|;;xj#g^G$l!v;Urvm{(Hx6uNT!oN3J>G;_SNY(h8+p|3eOkr#t<7$bj0
z<Ky0sa-$v8x4gah5lJMsFL)+h`u*?Z^N%ynMMg$MN0TRI%NuG5HGORenNM8>Rg5-3
z?vNb0Lkp<$`^t(of8c<yO5oz#dT=H9Dt;G#toXEEj<i;n7j4IE+g;D)^~<Hx|CCH{
z7iJHCe`@l?ntPCXqq+R0fqg$xE=8dbL34<4ckL2=`X3C-%Mw2Z`yry${}rEq?Jec~
zA$NQ>!A*SnYP;!_4b+Rg{A~UeDT|nJ*5tTheRZSW_Cqy`FISxIkwkDL^Cqw3vKsNu
z^bU0*T>c-Fb$KdwS*_KV_?i^Ny0>E0YFfMulWZ|yxh0p-_ryVmAL_NPzZ_#c2+c)s
ze?qh6=1JI4lWJVvW=dR5(LBx3yb@J8W_<&D=Mt><yJ23#SGNK~9REYsvaiAY8(jX&
zlp{-~)rPcUclQ&;klcH-ex1wH=j)!<cj>LKg7x(pYS-bzQoJgOym9$iNoGJ$w)LtL
Xl$Z46KpyO!vG-Bm%eu&oXO8|CTMqLo

delta 2167
zcmaJCO^@3|bjEfZ+i^ZO*?jIt%d(Juz_vg^e6HxS<+G|(pb$VIWSm`xY@8j>0xe@!
zG!+7=z@j;DV3D#C2QD07`2h%VrQATWint&oE)|C!k;)sVEu{x+&70@<J#XH7K7Ztg
zgQ-?BX(4zvjvVbQ-SSDQhQIq{|7UX~wXKpg$(+*~C1=7ZlkB!aa%2L&D<n?}=TM{i
z^`(38zDCk_`lLx6f8h0fr;&(0SDhAdXd@w6W880uXO!o0QGB7ii_2nOoh$4Cx6=1f
zSpFFWp)KW%Et=}NO&(i9Tlkf^Ak7S(<`zlh5l;-&Aj2~wlc&4Z4#tQjcxH%$470E9
zNtTkBr18uWdgWq}<=Ii1r*|;D09Zz1L5`=uMowDbxvu`Q7EA>Bpb$*5ET4ooU)n?^
zMC_pggaW)1rK{f^B`B_-pu}=K$0ml#7N)CUBHt~5vjagH<jce;Ba)1C%S0dJpjY7~
za9WX0xA6M?Y=V~{%qp*TCxaTVkyIJz{@L{lB+ZJOJUPU?NHW_Bu(I1~FvV?9pNe8m
z68&BjB-bxQroLT2PjWoTEuP>Cx5>n|9!zsIDv><L9lWE!Dbc9BgMt}8Lkb(<hF*^N
zlh^pH!c#+;&nm}!dZ^${M2dX6qntt~k%m}pOF8{0M!_sbXDXyb%6#@S^tmGWI(iY2
zLNNQz?8&S9g4BqC2D`3NA=UraSODFVs9tLw!%z{kv%9zIOIUm#KMv)RHRh^CC=eQf
z5@4bAV9)hg+glqvJTFcdr<Ff-(J~9AMts?6u?_0fmC*7xUTYHfjiyT);v;jeS_REU
z_Nu^9uh(<h%=P+po!++lqnXBdO8jb3@m%6Cu8H>(2Oen{9f!47y}lC~gPzBlYpp?;
zdy~4%X?A_D-(+61<Mx~|yA1HS$CkZ~K6#8%kJk6lyttHDz=y?*T|Qiw;qQ}RzXbCD
z!UV+T5{F2ubXrnkJ-6@pp(Zy$?M3{6*tPdsQQS5I7veYj&guWAf~G*T49h<Y0GZ-I
zvOJ|)N(S4Cfemb{2Dap@rtqAiVH=BXvLfC~&QDvB*j}8$k&(I@Y6Gu#nvR1NKPB%g
zXo1O1uD_1ylMDkE>nPk5CsKubO^%@i&Gib81qmp;ILN#MG8#{Sj4t7d0`+ZiW2Eq?
zS!H?duBLv+n};D%YDjQ5fVxeOOZ?v?Mf}Gl?Fk8<l;9}<4QqwEq&ZF#ev2*xEySnC
zg>k()=v_em0G3|^fRZ{SK~ptIMm|b}CVt9TT`5#oXaY7m37`$r=lY`oCgY3d(q%vx
zA}~~-L2y?YsZ86!evQQlobW7WI@5?+geEH@qQQy{m5*zI!r~(X+DQ>7vIYFC=wxS3
zNt($O7(wbOM05>0WvF7*&m2Pj)&j!O`yxP&xcUaBe{pqWaU`2Q@)DQUiAk&v)sOc|
z4_$++;NfDnTKMBeeWF7*rCQeRm$@Vs>HNm@UN{AGh3)ix=#OU0Z@X@&yM5yHSv?_s
z&d+Qf0+CSj22P)5B9v^b4WJyo78zfZ_HVjE+zB<(Vy&B#zX+ON!SZENkqH%u4W)$l
zsd;?6tVP)AB5>N!=+_?|u($~zN_bCvQ@HhMj$x$U5okn{2_MDa;QEeCU5x3YIM=$y
z4(^(8{1}N7<3mW}`n*gRF{5<hQDO%YNi0Z2LcBEj_oD10xbcIqHSA-Kw*=8I)7Bac
z3pxeFP?J4&^Lb`~^9w9GD?Tmm$(@Pc^7j1;N8SpkjNiR-<%;;TbjPAiPe}{vpvM{p
z3?4Zy{7~<BbgjigowoYKTMOfIcl&G{g9$O5bg1k2v?^XI*EV&!1V$P$8HV3bJMId7
zO?rM+Qth#gX4~s|^yVNR0f`@B`SRXS+)z_0G`^C<6~$7i<km5jKiX?sjlKY1(KS;C
zuuxlT<=HBgP0%n`9B%-TwtRX}9I6y>TO6yLSbRvz#X3+9jLL}<s`4mu{zM%I<>0ni
XbhnYm8)6){rnp$y9~<Q6GPC~x2mSbI

diff --git a/server/map_handler/__pycache__/get_lake_relation.cpython-39.pyc b/server/map_handler/__pycache__/get_lake_relation.cpython-39.pyc
index 69cc0062bde8be6c071a8b5022d03bb31e477a61..78a3ba0cb8002fc8db42bb51086a412bb9c7bc28 100644
GIT binary patch
delta 130
zcmZqSdc?(-$ji&c00i5(-P4#^H}c(QVoeNVWMG*5p6Pd(0u%(LmXsFd6<cw^1YopA
zW?qSoLUBovrj>%Df=5V50FaYdQd+E#oS%}akeHXEP?C|VP?TC&np#|vnxc@BSduvT
NDf3E3uF3r@r2t>lB+>u?

delta 40
vcmaFF)xyP>$ji&c00gCG&S}e7HuBwPVygN*`4iLc$sR0A7&#`tWhn&!=d=wf

diff --git a/server/map_handler/__pycache__/update_measurements.cpython-39.pyc b/server/map_handler/__pycache__/update_measurements.cpython-39.pyc
index 55dfc3d1701664629e0aae4131a0b1b428cf136d..9f807770e09b37f6ad378e4c78c19cb759f8fae9 100644
GIT binary patch
delta 1151
zcmZvbOH30{6o%){w6t{WSfI2#6blMkC82735b=R1g4SvTRO+J+ov9AA9dc(d5lYaw
zabv_>7Z{%lU9cogTpQ!U#GP^DEKGD^!d5rNmG_@UB*sqi%{k{kbEo(GcU~kOCKNRo
z3<&)9N<NmGNh~R{7;!=cUA3mDUeJqnMpJEdQJ`VgB|ab#_EzllKNSUGUYx$jeu_in
z14~N#$N_do8X+IqXQ}K9-X<kQi?QdPZqmvePgk@pDrg&Ti}zx)wYG1(z9f}uwXn8{
z#k|qJ0||k+*C;1fBP9viU2(QfYcJL1#B;)s;1TTTym(`Q2(w`#OvkhiZF4F7NO&SX
zZ_u`|X>TiummhnJ<nRW*7a9XvITovEGru`&hK+)Lva&0Uu7kWDXmQ1%sWHvCZdis{
zv}ij^`d*R*`|j)aELPJF*6VMUx1xD75HDZ#X9;oG`|3Ax7!?=wY#}f}eC$i0lT?)z
z`Igky0I`W9<@j^DYV(0wPGFLnlRC8x-J+drNokC4;T_8az1x5UupQU|>;!fJd)N;p
zHP??&0*(O#9FAlZZF&N!2k-((AO)P_aBBLEyq+@cesij*9i`Ny^a#XZj<`ar5NCn2
z9FCvrdDZ6ANC&N{vCPVB(mwWjtv}g`#tXnj;1Wl=&Ngi|pE0s}#=d4`CyKgd(aVrW
zfiYm!w2+?WxX;3&QF59UL(h6J2zr%c*^g*9A{<TH1-K6vR-($#kz$jd*kDaFNtN}Q
zcha1@&Lpoc%h0i+<4qbzR60!CP}v9#&M&*GxG!4E(|8r_fW8-4<v7xApdDxgdVu{L
zDS8m04{-l>wR-@sAwR@1tzh!8qG`u+m_0Sv`}(e$<6Ls84a>}#w4ieLm>g+of>rb%
zhtHrk#QGv_@&v+)ZEP~qJPIEiW%ajeX!Jaq(i~}-d-umWdIe<__>UD%P}Q`Ity`6^
z{TurlQEPAV=6Egb#WU_%n_(kS{m>xt2rv%7Ajgw8EZg<d@#gX--;aCpZld9@=@rY^
NuV}k>HZ-6Fe*=Tk37r4{

delta 1208
zcmZvcO>7%Q6vt<F?KqB;jqTWR(n9MdO<Gr_b_JA=mJb!zO{>Iw*d@&(Fx$+UZi#oJ
zw`)*?LxpldLJ^gwNJR({BtXg$`Q8KKfYe(B2Uds!2c&S}$_beNhK~s0!*BoZz1ioP
z`9J%^%4ZeB8W|a4>a+FeGwnahUm7WG+)Q_D%kPrivE860tial4G$za1EuNQOYsUw_
z&=|X^tqJ*?*5IL>*H81Bd{@83e~>@w{ZT_qOfpfNWE;F^h(q#r>@hwi@5RdH=>ijn
zH?;SQ>)9Z2E#K37S&<Vnn>uHUOeA6~#x|68vnN%5za}g3{IfHg+WMH7?TxjyMb=O&
zg2GMh`W9#FInLIK;)pof%YDQ?*0v@@=~IqX18hlkThG0nYy9=Bu!>R*Ryx+d6?ggB
z1M0+d5GX2a570jKFo&B?$6nYyyP*9j-v`{U5DquGSA_G1<2#<~)3mH6KIbRoFNs>2
z9#r-1Bpp@{GjX20?&^hVIK1Gv&8yDx>#ptlbQFDNfFpf#aG7&c-bsFy8bc;RPQEuZ
z$94Jb&~a|`dFmZq6i}R0sE31X+X|E;emJyB-l|Q3WBYVW)k4GXUTLX~wU(7zHW9~L
zvkE(rDj_@plz|Fx62PYEVfnLBx2ljja1N*`gu3GfbOB)uhyxdad0;^y%+#C}yY2-w
zuj`6)L>|#u6kkv%88iU>D$tZ4jLxR9Te=J^0j9h=IywCk<cmNH*mEBU>k6APkzV3;
zX{A3ogJY3U*cpU+2ny3n4*=22*Zxtv*NPBZ{!X6B?C10S%b9QV8&RK*%I>64M@KV0
z?^G>n(jjD~P{WYy<Pb(*G^$i-Aaa>bA-l&@gpUBzzy$C(a9W{GPe3MsXxqtX@NC3S
zDy$i}$D->6#Wrq|+VW1moS9RlFzNVS+oO)9ypX@=5A4Im(|`PW4!P&$sqv{BS0Vp3
zAw?M^;6#`VY=8IH9L<es?ER5Df-Yg@qJo)H6ZQ9`)5}P|0{o9bVagJssrpvcpTtj$
z$?wNo*|*f<QkI^=JJCG7DK8f6r_UqK1Fr$FEsU)=eh|4F#@j2NI%PCn=&)xLc8!$3
M7G~nt({skipMK{L&Hw-a

diff --git a/server/map_handler/unit_tests/__pycache__/test_add_new_lake.cpython-39-pytest-7.1.2.pyc b/server/map_handler/unit_tests/__pycache__/test_add_new_lake.cpython-39-pytest-7.1.2.pyc
index ed5bccfcc82a13f1ed283a3e65cac18b3c6ea0fe..cfee192e7c0b86ffbbe358e6c23a060d2523a7e5 100644
GIT binary patch
delta 535
zcmZXRPfG$p7{;A7H@C$NOZtQ6TBarR-xP|_g1|08=LnXmR+3hCnOTMHGju5CRG*-Z
zAq0Jd=+d>h1%Y&_Tj%Cosf6b6+nM)$p64BApJPuk4M!pa0kQ7YO7$yrseNb>id&|E
zEz3B@E^ZH^2pZu*$IG8-m{OCtsm!e76>^lb73mIf_9kVcT-|g$qiT~nc8j+Gl4SAV
zIZCx}f_WrQihMH7Ui(INGO&e#WD1ZL$Vmi=Pv`my)=OEOeL?nL@BOzo!^)vzCJ72e
zg1(ST3rk!+vTbrq33R&9*>$KQ`(v}L6FOkK^28Duh5i`$`u7#rq^{xEmd91!UTa`c
zA`76I2PD{qoK$-=ALIfmwm;=Fl%5j`E)$bBEthw*;N8d~IF|t{>^wXLbNBw{a>=IP
zs@p9y7bfGNTNn7b4R%jBs**LRCjhH}0-*OEaiui0C5pKi4<9ybmRoC3GR#huycz{<
d39!L#6<z$NM`c@2L7@l$TThmss<XL)>2EUahDHDY

delta 564
zcmYk2O-~a+7{@!??9i697HCSLSfIQvFQrMfF_?&nM)(X9lFb6MvS!=aJTrwXUw{K#
z$i#zQJ$W*wU%{IfJ-Qc-7ZMMC2Itwvq|f0ung8>DUS_^lzEw(Iu~^8M7<6Cw8G2Xx
zJ2QO=f#U8PDf+Gwt{;SaSRh4GW!Wh1T$Ma2IjE(z%_x5CNTzqK&xGlp*7_8id>+NF
zFQDhC?#B$w>uUCvEDS$nJLKr083IcNj&*Nn;@1HXb2t_(n*(qSXdo6xDkksWzr*-(
zU|gx8sT+2ktmu8ayEczL0@>7_Sgkgrr$WG)1k8+3*Kh4Znht2{-}W(mfT^<Hr_1Zk
z1j{Qfl^cmLW|L`c(D#f44!SlGbNYrh%3}?UnAG$qyQaU>8fg#z&?~aCfhq+q2cb$v
zP0u{#!4|gILG0@5Tyt#ttHcr#OM2phJ2{v|(<6ibJ9+9nAwG0apF^||dx)`ZbT$8M
z`l%6}N|HMn1fdH05~j4D?`)?}eS!sD16G#jUc|$=^_q(wR}h1RIs87RzvN#oF5tC|
Pz=mT}(s^~gQCR&4R(pli

diff --git a/server/map_handler/unit_tests/__pycache__/test_update_measurements.cpython-39-pytest-7.1.2.pyc b/server/map_handler/unit_tests/__pycache__/test_update_measurements.cpython-39-pytest-7.1.2.pyc
index 0f0fc11bca8d501fc89871ef0468915c06d7aa85..99ac9992a6aa08b95b8a232a1adc866fe37baeaa 100644
GIT binary patch
literal 752
zcmcH%%}N46cy_JSB_E*M;7Orm5id!KP|(c|(nS`A(fQ2Lotb53*6@Xb-XQ4MTkJJD
zbne!v*_F(L5FPqp=KKHuXss3?2XBk(*|UexYtHO~@0fvmrtUt5#)x^$kG-*9;F37-
zk%z?L_{c-dAE9O`eQ;rBS_y1GuRym1O~{-|7CSmk7_~qIP?Ks9Ag#e%BuZPnM->DN
zX4rzUWRI3`xuP*=B&JJfH1Sy<50!*&fE^T0xq?V40QYcxE2#&Cg|XD8hD;TMQ%s!2
zo)nF(QxT@Q@ubFeX7Nq{-0R^^*!iX2zf?O~rot><o<ROnx$Q6v-rY*kuvyN^gfKNF
zB&$qP9$PL=c05SdWXqk9WS!5VwdtKJ+0t;YxrMB{6=mgbS>T+D(NX<~bk$`kzE64C
zjc(oWOf*-Nw4)mdSDLRN8ZC1)QJO`GR(I|5F#I7lcNFd1QItw<NuI$(MV>voYbEQf
Qav>B;W9Yk+L?3y#U-HKKW&i*H

literal 1282
zcmdT@Id2p(6t-t(XJ&IO3XwP(h(JMXvkD180<kD4kb)u<fo3(5<*dEQuye`wECkI+
zh)|}aOpz`3A3#mRZ*WVMzmNj)Jey;S<Og8M&)+-z{4Uek*(n6;@4-gzCr0RxVJ4Ri
z%o=RD0fZrjBh<mwX~njMFp8Z{4I7OWxv|&r0Apq!V&<^gH>cyDaxU|Lt24ZXn*K5P
zLYqyj=kttF#YxPm%mt5mq9ll2!BsAjt}#1X9ssk~Vao#`43|iu0`23#DsgEstF#MT
z*nO*X3P*lX_{d^*;q)LBBkx&52uayT&JYcdd;|JgfrnVU1LPW%SfDr99%AMmS~pNx
zV;=L1T8II=$^)%mxI?^;zd{ilR63>25TsP!)OE$BA`$KL@H<p;giow?dxSq<UwoMD
zEj8sryS-rGN>l1-si?{&>86a2ENz2<AuA^hDkT@HGF$~i5U!5u!h(GD)LOPzy+MVZ
zBV8IrMDR>>(>SAo>lsj!?L3TBm`LqLDOgB-i^$zHk62|&cA|8fMkJvz*L5Okj~frV
z@v?d~Oq16_q(aY=UMga$2>+BtG@%MKBTqNZGpsxa-$aFpo;EL!17DtG9*vo?ug8<j
zlMxbk;Py$f{w#P88OvZdrDQpHoA6g69PnVPZ;tI$upkrZ&hpcxr3(NT23!O&&B!iI
zSOhpvLPbn`GN_`wWUyM<o?g64Ny216qmWe%bRab80zufZW-PG)=)W4q+<fY-ejdvY
zzkcxK_&2bkW{CMhRpUh6pczAE4QUv1(-6~`F}Vv!-@meC7X>qJCJS~C_~w-M&&E;A
z8Be##cz|2uS%INy3I0)p3Wo7qq`gy_xCVDR55~Q2P4v2TNpGtkQuRrgw<mI_vZ)gB
UpT{Z7BmM$@Cz7Ve5A25j4}OSh^8f$<

diff --git a/server/map_handler/unit_tests/test_update_measurements.py b/server/map_handler/unit_tests/test_update_measurements.py
index e05ae8ed..e8942cef 100644
--- a/server/map_handler/unit_tests/test_update_measurements.py
+++ b/server/map_handler/unit_tests/test_update_measurements.py
@@ -1,6 +1,5 @@
 from server.map_handler.update_measurements import update_measurements
 
-
 def test_update_measurements_invalid_lake() -> None:
     test_lake_name = "test_lake"
 
@@ -8,7 +7,6 @@ def test_update_measurements_invalid_lake() -> None:
 
     assert status_code == 404
 
-
 def test_update_measurements_valid_lake() -> None:
     test_lake_name = "Skumsjøen"
 
-- 
GitLab