From a7b76e4034853a9ab5f0184f685beb8f4f608d63 Mon Sep 17 00:00:00 2001
From: Hoa Ben The Nguyen <hbnguye@stud.ntnu.no>
Date: Thu, 21 Mar 2024 12:26:02 +0100
Subject: [PATCH] fix: some errors, current problem unique constraint

---
 server/__pycache__/consts.cpython-39.pyc      | Bin 329 -> 329 bytes
 .../area_processing.cpython-39.pyc            | Bin 1584 -> 1443 bytes
 .../process_lidar_data.cpython-39.pyc         | Bin 3491 -> 4982 bytes
 server/data_processing/process_lidar_data.py  |  15 +++++++++----
 server/main.py                                |   2 +-
 .../__pycache__/get_markers.cpython-39.pyc    | Bin 2126 -> 2028 bytes
 .../__pycache__/get_relation.cpython-39.pyc   | Bin 1685 -> 2976 bytes
 .../__pycache__/input_new_data.cpython-39.pyc | Bin 1881 -> 2317 bytes
 server/map/input_new_data.py                  |  20 +++++++++---------
 9 files changed, 22 insertions(+), 15 deletions(-)

diff --git a/server/__pycache__/consts.cpython-39.pyc b/server/__pycache__/consts.cpython-39.pyc
index eeb75f82b9a15f779acada9e282ada5a3919fb91..2196fb987975dc7bdef7f3f1ef0c83c833609df5 100644
GIT binary patch
delta 22
ccmX@fbdrfTk(ZZ?0SGo8{F(ZFBd-l307!oZ>i_@%

delta 22
ccmX@fbdrfTk(ZZ?0SI<aewzAqBd-l307laWu>b%7

diff --git a/server/data_processing/__pycache__/area_processing.cpython-39.pyc b/server/data_processing/__pycache__/area_processing.cpython-39.pyc
index e770151519aca70814292d4f5cc66264b00083d0..4abd0dbd36d062cf74830855eb5681862f02482b 100644
GIT binary patch
delta 337
zcmWkpyGjE=6upnxWV4UFSWR$^g@wdml_qNCBZ7?<Vzp=yn24Z38B@+yu{U9UK#=tM
z7dBRQ7WxC$f|br(IOlS>mwWDcj-JBuAdUmD)qDRP-UPGq^4^YB5+q*32s0c}MhKEJ
zmMp~(6OdjCLrx$CSx6xhvMBv~$UIq+f$aqu&Zf!B{135U=Co0++j~WeeT%y@^F?~$
zGY@sBIfXnLqvi?r;r!Ly@{xJt6(sY`t*x$(-A)1x>wd*kR9ziN?m-@mL05ED`xDM<
zT0D|2*$FP%O<lVn(-+&dy7H}^DmilbKFotKrsH+umV2XZ2}rORc#Tc5iaxc`=LnZb
rHSOehz4#$UgYl&zs}x(xyo247(?jKwsEVVe`SI2wXHzACP4XN6MwCL?

delta 517
zcmXX?O^Xvj5bdt&nRMnWlWa^DW`(FIW)blw=*d+<5Iv{|X%Ly%Sq;ui#+li}LJuqK
zUOWg&BVGmnfSv?@%KQWIvUe|bhi$0$s`^!RKkB>xBZ$&4^oTi=52wrR@N=|tBuyoW
zq#4Pnpg9PjwuTG^+pr_t4fk>``e&Lae2F5EOgc+CCelsFG8mJD$X-H3D7oyP5D`gF
z`i2J*o|1X+$9_DA4$4)Buh#YB*B`$YKTrNq>go4zE!r|NH*wcQUFhGS&YiZt@)ahe
z4H~NOnBF5VI{gqIg*YJ!l|Lp^(hl_(yg*0#7oNYpr$Ren?<Ks&Pqf-op2VA^^%|lE
zDpvd$+mT}5Kn+#jXmnzF)o34e$Zid{Dr=$YTd<oF`Z?2Fxb?x}<x1+mZ1?E0^|xz)
zAY%dCfEjXNltDl_wK1bJh~XmTaFucl=uT8kP4_(RSe`a-DlkQb283Itg-mO+64^P$
zL0%qqP?X)!w3XSq$yST&<)O_w_l&W;lr^GPFVn@kDg@R=Eu8yzo;-U{_3X0)3se2h
SxiXGT8XG$sQ^w#n@Z>*VT5xs%

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 3edb3e6aec41636e85a32723ec41ee26bef38aba..b93b7c5d9f28b79f1a102206fd941d7afafe229a 100644
GIT binary patch
literal 4982
zcmb_g%Wot{8SkooOwZHfvDc5?JS?PyOhAs;0hCya3G9-9K;E$4B%79_R(q;v-1bcO
zxVpXAlkU^3lpqmhxpCm&J?=linKMU@edXi}LgI!H@cXJ~{MZcw0X?d(-d}xRea{-N
zUax5Q{;=>j|4+-B_DAYm{x~}Cpv1of5Sn0p&0(tM4p+7A=&CjxL)E5ZqUL>TP;yF)
z_UL_kP<G0Lic?X2qhB4=oEqAuuzK97i;}P(X--3wMFsVYsEQiurl^Ys>RB-(ny6c1
zR<uyh3AU}Z=gvTpw$)~NsVAeO;qFPB=d&HJ-#O}giSKqI8TvBLo5Jq~q3`x&AUx@N
zG3|Ii>YwzYaP*DXmk)jUhJWl0hJD}d(;8QJiT6g7xLfWTecyI(uJ*mrf3*0`H;cs`
zB5wMX(6CW%qr`s(NVHRyaKV<fC+y4LW?G^Po@)EXzB%TMdb;Xalb)e^rAg0JJ)3%|
zc3OU-Wh~KCHfCz4l~hu;UmY_w&-QDgbigy7)b|@0pGo<$CTvmug75H5&kUSZQ9GNd
zo*H9*NBd+6GiGLCrg}P?nyK}K(~862d<0<{_>Fa@h0U8<{QEVHso%$dzz+Hqv=l5U
zX!i^VtF|Q>_#V~Y4f_7dhmcDUg&U*V`%w@kE4QPgFxeP2wjn)#<z26nL^9qOmF{-C
zv5$#awJcug%4o1c!r3?@y}S=e)}@~u$q>>8ig@(edr*Z?tQ2_fskxP{qrt8(S40pe
zGT1#z)Y0V?e4l0;pJwe=ZuY%+c#<2@&=2z(WPJyRxI-`5%gvz#iMh4sd%~A_3ED!m
zJJlhPUYwhoF;Sjdks>%Zpk^Z1`#@%?WwF!f;D|Wr1|5&i&v`h^t)nnFJo23>522zn
z*GB>7x{(}sNxPKu?w+G#vr{284~08S;@sE`!Z^1Iu5%`H)_JPQ7jP+m^=@zMd;qnM
zclILBUEjGI`gdgT(BIiUplUagVrM9$-ul~XYZr~e4tD5rUCefT5F7Sro|>2JViot)
z@OGo4#Kk?iUC6V6V`Dm7V@=**>c?$nvnH#sCDbjp#^p<x?~vH0pNWQnqO3xqk!m}7
zrnE9;WE)gcZfLr8V8~UBk?vv)z5URD4!)H@>(oljj2U|Rm`&F2syW)B=FayRLf_T|
zbW&*0OS90+Gg8j`??Rt+Z#Qn6xjl^HfCS}~$!Fa2!k(YA<D8x3%vJYXfETeZw}SBd
zSoAftV={9MZ0|6G%U968!m@<{DvIUrpaGU)oEgj)wUL>HV@QpZFM%P!=Cp*v1odfe
z5e@@n^DRke+Int4N%nFhK9q@Ep&@IcayKXSdd`n;=KKWZ810kwXQ{WzF1)bgzmDxO
zq17NVo5@wQIy&_yUl}zCO;LXz4WVUv0+EbaW~2<RV>2^TQ;A8(#T(1Sot2dmmTGA!
zwYq%FGds0Y<3N*5@Wmf8)HZgTnSKZtq(qYILD<bJ(7mBAlfaMjMtrpEir}H!@x#QI
z%9p^~o85loC5q5?8J0>GnHzoZ<J3A46g_qm@4ye8dZ!=7ew?^!2_`39VjYu5QUY%=
z39}7*03I+Yk3oukN!T#tOQ_;C%*HJMjT!3N=Ar*hv@Isz!f1yyYx<FLoL}H$bb92w
zp#%cD{Rn~b3n+syg!xFrm2qKBNAExxpd>o3_yK%2ho@%n>sq{?8p4K^7@`cj;PU?A
zI(c+aeS|UEg?(mXh}xAAE45N{Nz34&PtCOSguMHDN{UtAx<W7!Pa3d|5;p;eR2-*_
zs>`>vr+Q&P@?}h_TYAcJQ{DY@dUmVt4R(dM`3{!;1w|XZh`=n|JwNE}C9Ajk5u9ke
ziAJ%Gtnt7<xk3;TLq0<hw1h?v#C+0(nlZ#Uc#ARn6+eV^tJB*|ehX`0CVX{GZlal+
zDpz=xw#qG1nocwrZjy4#?*fco{uk6uS6(6P-`<pbn-D8y+Bk2iF8L673*h`{W!y^1
z)xBOhh&(9WLQG`=0Q@&H20y4RYab#GA0n@SV7NlErA|cWdss>Ff{fx>?#s7&e&`<$
z<>pVYs$l-5uV#L_@V_BR{(!J6mKCR}b#Vhf#OzO}=aU<YBboR@62o#9AlC;$2;d#(
zmN!JC7HwOS={c=Jh2SB&T_2{5kmb~i?Fi7svQt%Zzg_VE4sEIc+eG*B3Xq<+FR(m&
zQPoSALIP9w55w1+`gPrAFEFmRSPQM1E{T;Z-jg^b2cU%a0FXl0JUl3zfPn(vU)U8O
zyeC4Lo>>BsU=expB8(L-p)_V+UeD}=pX#aogk|ODQnCkEQnIqJmbI*$7-?B~<r2Iy
z+(i)*k+NCpB#WF!kN<)t#^*&EX(rZZtjm-mvD5MxW<^+%657QI`?Q=?2oI>JBt;KY
zqgPGLq?%UtYbbS;#u!0aja4yL#aOi%15dSNCanQ?J!z`Ck<7wX)l*$G#zr=i&fL)+
z^G{ySnwW1AtynvYJ=1n8Z4eD<o#2v|&Z?f`4?V@58c`e;Yi?-s+SOfR=7zR7!GXG=
z?xapoVI)~7iJW7kkpiPyGr>rslU);x3e%$2<yX&3TmN?|TZ-oYkxFO)ZV;|?E}KtV
zsIO%U>0EjZ`iC1z=hKCv)#ce@p$UQ?7>{*nC9QNZEvF_lb}2Pa=h7u{Nz)W<S4SYN
zE~l^)LWg>c!)<MAlU+?{>@xJl`b>ic&LVKx&<)bS>&bk29rcaWz!}TX0+Rh=dZTL)
zuE*@~)s!9^t*zj9UoUGH4s^6IdFJ(z4Y<-ra7StvzcDIPQn9)pBO$lDzK55DA4>}9
z@+QC;nd%i!M_!)7&m4*h{YCIDEQ<J~oCn%M$t!46BQ$Du_0P32;$_>~y1;)yU=R4z
z_mrum@hNi}#rtBKhawo32j0*fMIlJM@S5a?B9y{wzk&!ldHzz`svfe>2i7y%bVl#~
zGh#*sio7ySu>$cN%XANlW!gh5Pncm_@-88G9{>c}bS4q_41K?*H55|Y*Ce5mlt|`=
zx^@E@oRC!-rBID`Ptd0fj~u=vcPT0DkaV!T29UD{Ir}(gj{Fe~y+=SXLCKc<F#+<t
z?H3U2RIZqpJAS|K#=*$X>${OSaigyLbNoRdow@TFH;LSVkFnUPsf#ND3VJGkoCcAK
zn(GIHAj!-0@^M3N;3H4OtI4rRJgQX+I{sa}6CE3k4?;W}oeEk-ei`GB5Coed5iL^;
zDw?zO|Ac$xaGOLzBY0mXo=kEbF%M~cj5HqQ*hlR<N^k|QPIH>dPF2O3nU0WL+(1n9
zDt2+OLS34$s$|yY@<Y19pAk@Ro4K#hsE;rk-viLNtsD5w^BSH!ui?$N#GBma3%sV|
z6{vrcGGe`<S6GeJjC<_fKR8$L?}kNBj3wmCHM|WgSigY&buI&7ZO`W>-onEZNlI5}
z0i7vd1#tAEWRRBw2rG%Aeys8X=hec%SD$&muB!XIc+VE<NBWXC<2`Ta_fJ-Pegx6W
z6G@qQp=k6}Rd%SJ7AlWdTBWGFloXtsVQ$|VMB=FLZ<2>lZ(-uE_|@<psOh$D&)c?b
J*){vdKLHlmh7te(

literal 3491
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
W+)aOs#I2%ko5wiC*G;=%Fa8r^vnQAU

diff --git a/server/data_processing/process_lidar_data.py b/server/data_processing/process_lidar_data.py
index 1369d8db..69fbd79e 100644
--- a/server/data_processing/process_lidar_data.py
+++ b/server/data_processing/process_lidar_data.py
@@ -45,13 +45,13 @@ def distance(point1, point2):
     return math.sqrt(abs(x2 - x1)**2 + abs(y2 - y1)**2)
 
 # find the closest point in json list
-def closest_points(point, list):
+def closest_points(point, list, coords_taken):
     closest_point = None
     closest_dist = float('inf')
     for current_point in list:
         lng, lat = current_point['properties']['sub_div_center'][0]
         dist = distance(point, (lat, lng))
-        if dist < closest_dist:
+        if dist < closest_dist and current_point not in coords_taken:
             closest_dist = dist
             closest_point = current_point
     return closest_point
@@ -91,9 +91,11 @@ def calculate_area_data(center, cell_size, body_of_water):
     # container for all the heights in area
     area_heights = []
 
+    # zone coords taken
+    taken_coords = []
+
     # set the limit of the area compared to local coordinates
     area_limit = calculate_corners(center[0],center[1], cell_size_to_meters)
-
     # read json data with path to data for specific water body
     file_name = "server/lake_relations/" + body_of_water + "_div.json"
     with open(file_name) as data:
@@ -138,7 +140,12 @@ def calculate_area_data(center, cell_size, body_of_water):
         xs, ys = start
         xe, ye = end
         sub_center = ((xs + xe)/2, (ys + ye)/2)
-        current_map_zone = closest_points(sub_center, map_data)
+        if len(map_data) > 0:
+            current_map_zone = closest_points(sub_center, map_data, taken_coords)
+            taken_coords.append((current_map_zone['properties']['sub_div_center'][0][1], current_map_zone['properties']['sub_div_center'][0][0]))
+        else:
+            return [0]
+
         current_zone_id = current_map_zone['properties']['sub_div_id']
 
         # filter data within sub-area zones
diff --git a/server/main.py b/server/main.py
index 39b298fa..99816516 100644
--- a/server/main.py
+++ b/server/main.py
@@ -47,7 +47,7 @@ class IceHTTP(BaseHTTPRequestHandler):
             get_weather(self)
 
         elif self.path == '/new_lidar_data':
-            input_new_Lidar_data(self,self.cursor, 'Mjosa')  # hardcoded body of water must change later
+            input_new_Lidar_data(self, self.cursor, 'Mjosa')  # hardcoded body of water must change later
 
 # Start a server on port 8443 using self defined HTTP class
 if __name__ == "__main__":
diff --git a/server/map/__pycache__/get_markers.cpython-39.pyc b/server/map/__pycache__/get_markers.cpython-39.pyc
index 9fc12b022571f0ea96d9af2b5b047407ea06b93b..adc3fd432347ea02913713fee99f4d7ae01b59d9 100644
GIT binary patch
delta 632
zcmYjPziSjh6n<}Zc6avo8KY(su}GD(N+YBQBA8MHwFm|*B=2%0o)_HR1UzPPMXUrN
zaHXg0Hu?wLpI~F<A8=r0C5W|!g>NTHd@$elJ?4Aw!JGNg`H_vECP@e!XDh#YlmL8d
zlmA0-a)(d3$Us0ifE^$~&MVkK!bi}R-}wga?>a60jhMOZdzVi+Lhg^FkkB|9YtT-E
z2&}LfgOU4STrIcY$p_<Uk3<f}XLfR6lonl!o<-lHvKZt*;nX)u``SH*;<Z-V)$E`s
zhhr>0Uu3n=svY}cmAxLtwmunKN-bs<J2_Mi8!qK=inK6wwCZCY=<<|DXn&I%R8qUO
z+wi>!Do;!HiD#nx$vQaK#qY|e#Zw+fS4=oeD|Ha)fKs~pMwoCLh8q&9@C;w}w-8K(
zFuK77*L3t2-id!@+whndZlaTD7@qSwtb>L+q9waPsAI}$xe>ffsFMa-K1l0KhjoWm
z8f;wz{6yDhDE7qcy;O+7?4!GiSv;3zZ?HG_c8`kku$X-HhPXDl=kJFP+c!jsGM#+#
zZ#~Fjv4jdeXF+r@#bqbN7?o4pWLH-dIg{1JTB|Og%jsNgK0l<RLGLzy0VvzQq})II
CaDG?-

delta 732
zcmY+Czi-n}5XbMHpMS)0oKRAz!w*GFHK3|XREDae&<-F7Qd?TJ5<;ctRw-#J>@*V9
zGa1@}1u0Sx3qf)g{(<}j`~yr(Sz$q9f|Y@@%K#_6&)wH|_s)9n{V0Aeb+-!z8`$1{
z`WZZP0luc<U(;CJ<`q>K1cXi4f&fVjkTjB~a!U}dg0Fw)Jk)(0>z(apgLY)9|5|~4
zI_55~=rscL@OX+amR%*nvXUg`AeIUfP;!U}9N`dRy#cYI^d)%mF*cP+ng_APUV6aP
zGa4Dqj8?{6M%x3*56n2HEM;^ce5Z2CP+UQd2OSK*WU8CVM5tUk_Qebrn^ed)a5EM&
zmNK66psjI!!h;i}^8-!g_HYlVJTTME=DEKum67N}&c}9}f1T^J=OX&ev3(ZzFtpny
zO`h;Py3mdDEw^p$=afxFy7)%K`3-2@lF+t$_;Ljyb`XxQa>JBz-opoR)|OUn@@>S<
zE2m|j`B|6+1xcQ~>;xfks6v;9f=?5Y!Vprw?<Pf+PfB!oh-nq+z*l!=^bL2#+;OeC
zSYN6h%&avIf``F&bQA_uU8pWCt}Q=ZeSBxS{%B*`zgfLkUt3;TUwlxlaca{a-Io@k
zJzCYTVYx7tQPA8S8#_l~bQp$$FT8(hw9xPWG8*nWOF)Uzm1v3nu31|zIii9V8rp;?
up^FvGMh7h|yup>e7N)N*oJ^5^2>t(Yo#oh?KRBeLX0X8T3ZitPrT+m!nU~Q3

diff --git a/server/map/__pycache__/get_relation.cpython-39.pyc b/server/map/__pycache__/get_relation.cpython-39.pyc
index 96abab2fe87409b078ffd10fb5cf0856ecce57c0..575c19119750c03dc8752d51d98d0997746e7965 100644
GIT binary patch
literal 2976
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
CnF<sD

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

diff --git a/server/map/__pycache__/input_new_data.cpython-39.pyc b/server/map/__pycache__/input_new_data.cpython-39.pyc
index 895a95e645fe34909fee7a3eabf48363211cab2d..daa9be368b1ba5cafe21554c567abb21b470cc8e 100644
GIT binary patch
delta 1369
zcmY*ZPjBNy6rZujW5-FHG-<cnmIGW6X}6*`77${kf|fl{B=%6P1&Z9vBz5c9+3^In
zVN8(1b)}YE5lSU4TsZLoIB-Bhd;sPIC)Cfdi^LmeONFg@@6G%3dvD(S`6GDR3Zi=5
zNAP_YJm>4pi{K@^cd_%zYeNzej2L0g*C=!teuz5s%J?00u=ZFaxr~RrV_l5araFj@
zva#$Y(WKjt6W+6p<BM+<cn!urjGS5so#V+b3>P-D3c~EdVWglE%~0V=tX$@7pcyVa
zg%=j1%8~YhT%r^3V(wF{EJl>ANS|I>7%6;0i;A4OrOINSvSxPSOHWpmKf^PO(Et@y
z<)35mvGU(TpZ-+TRL!LL#474V0Dk3ch8a1v#m~~ep5IuuP|=XpYkkp7Jt(*Vqp7HB
zynzZjEo-eP14cFwP<sQ(nrhB4&_+pvlGbNfd3~>}{eRvnQ1!kAk^Tl^)o-0*MO7Dd
zwQ>ndcsx;bxgaQombq#&P!+(UeG9OrDD|Yr0K9BTW6``sAfd$y3k(2AE!JSoGA&xP
zjg_II1)$Y(<plb(kgJO|RlUSTD{Wn)8QlOGokAzK7VE0DxXqv_gL;V4w+NCO=hmY$
z04&-VO<sn;mTJ$Id(&8KnpB7AkxAG7vYq-%zK8Ze11G9|Fep#SR|of&0($k{6$X_s
z<jR`gwf?RQzF7V7{$G>t-<`j0|M{jlS{)~>f5@YJEclS8@&OB-hvOq)?tPJsM<7&S
zz7HlYLiYn64~}I%?~vc`T>T2+liGd;rd00Avk{*(qtPgddy$N@^!1ZGODE1)_IK}o
z<E&P<1c3l;52GjZHD`M&OnU8%M4U=(Cp^`5J|2QSPPNldvPfzQa6Dz&HZFcIOH<x6
z(3<wL;V_oEo`bn7cs|O~oa<^iJ?0VPLRXDxDd(D)Vzk4?!%?oC&*5f89Jq)j*OaHd
zjB#Cg|4EOJN_<abNpckRPCKib<UHv^#<9pV5mt{fcJ@*K5H79IUIHtXV-uTX>7W!t
z4~hWK2W<YEvo#GX|J`R@%X?A6yZxvqGogdwP20OM3;jrdq6^PK6gHBWMWSnpE)|*>
zW9SZ}Q8!5kF9hh28-2z_G~nS1v@ITvhh2Fb_fAuu=b;ZE>wp50OuNuMvriiHACTCY
zZ_~%qK5PKO#3C4ei`W#`2ql}(iA(J!u7Qr)o>jA&_%;rVm*v^i-u{QU7N*Pp8TD#b
z&8EbEPF>ITZ6D%1@C_i&!@hlsG_h}qUC7j-ViTBvcMFA`oX?-p-A!{QN~_p0(ha#Y
Kf5+Xln)bhyWpb4O

delta 932
zcmY*XO=}cE5bc`o>FMpA-6VcM5_5>+!KjEQ1yK<E059?2A-Eu6obHX2?9L=Jy=p>F
z7K~RRG6%28QSb+d|3NPv#5v_A0TH|_TD^&iJ@l*YSFgINsCjYZbGse2T9V*;`}Mni
z6~1iG!1<TwP7Z-6ru^rm!xY>jb9~=v=I5XmDl*z6eU0a%any?kJtP*RTt|!Oiel!J
zhpUCw?Hjm@O(0|&Hm)itnes|s(UM!(!9><Gu;cBLWvZz1Ux1}UMJ=;_m+yK&EG)A!
zFuvkj0L1W-$J>HZAQy}{-wJ1~*oOQRvI6feQrsjDo|O#~*oJCMku6Ykh30RJ_;df~
zIYCNk8i)K4%4RCCLW#R+xs{j6VYSk_$LJJ6Y)%m)ZF36{<p|jbeTNG9u5b;k<(6Y2
zED@7%EHAXds65ww%QW!@mUlg;O<hy%;iwx}4tH9+1bg<?m}3@5dW8|w-iGz3K*|uv
z#w_~AZFuk;>c^aZf!rqw{hMJb59~#95gDB1#Qf61aOSTc9!_7+aWZ7%qn!P_s&C$>
znGPL18Pv>;c0)QWX5EDMJycg8=w5piCi>2isM+cZdoMep7{rUQ)~ed`kHL8L%Rf7;
z{nb24O-?berahh3v>5bj+E3Ej@Ak6D)D-=-jI%V=u}QMD!{e;qPfXpo^)%M2BTD31
zulF#DSLRwZD|D}0^LUUKS&m6{iuR7`G#_Sa{cd*w|4F3r*G$ZyrF5s!%hDx0D_u2$
z6V<g~=1lIpa)Riw&Z8yWnZRn2{-D2T9wqTgs*9oq{hH*H)w^JA;WlasFps&-IGg^#
z0^Sl3g20c1L>z}nXgh^t=!Ku$4?XE|CVy})sPsZQ4${k~@ufMxX3IsER=eWTaYy8n
M|HD-ET})%dZ<<8rzW@LL

diff --git a/server/map/input_new_data.py b/server/map/input_new_data.py
index 36f0ea6e..2ecb6ca6 100644
--- a/server/map/input_new_data.py
+++ b/server/map/input_new_data.py
@@ -6,8 +6,8 @@ from server.data_processing.process_lidar_data import calculate_area_data, about
 def input_new_Lidar_data(self, cursor, bodyOfWater):
     try:
         # hard coded coordinates
-        latitude = 60.0
-        longitude = 10.0
+        latitude = 61.0
+        longitude = 11.0
         sensorId = 1
 
         total_measurement_average = 0  # the total average of a measurement
@@ -22,22 +22,22 @@ def input_new_Lidar_data(self, cursor, bodyOfWater):
             INSERT INTO Measurement(  SensorID, TimeMeasured, WaterBodyName, 
                                         WholeAverageThickness, CenterLat, CenterLon) VALUES 
                 (?,?,?,?,?,?);
-        ''', (sensorId, datetime.utcnow().replace(microsecond=0), bodyOfWater, 0, latitude, longitude, scale_factor))
+        ''', (sensorId, datetime.utcnow().replace(microsecond=0), bodyOfWater, 0, latitude, longitude))
 
         # auto generate new measurement id
         measurement_id = cursor.lastrowid
 
         # calculate the area of to be calculated based on the coordinates given to the calculation model
         areas_data = calculate_area_data((latitude, longitude), 0.04, bodyOfWater)
-
-        lidar_json_data = {}
+        print(len(areas_data))
+        lidar_json_data = []
 
         if(areas_data):
             # store lidar data in jason formate
             # calculate data for each zone within the area
             for area in areas_data:
                 # lng and lat relative to map
-                map_lng, map_lat = area
+                map_lng, map_lat = area[2]
 
                 if(len(area[2]) != 0):
                     average = sum(area[2])/len(area[2])
@@ -47,12 +47,12 @@ def input_new_Lidar_data(self, cursor, bodyOfWater):
                     minimum_thickness = 0
 
                 total_measurement_average += average
-
+                print("should be unique ", measurement_id, " ", area[0])
                 # input the data into the database
                 cursor.execute('''
                 INSERT INTO SubDivision(MeasurementID, SubDivisionID, GroupID, MinimumThickness, AverageThickness, CenterLatitude, CenterLongitude, Accuracy) VALUES
                     (?,?,?,?,?,?,?,?);
-                ''',(measurement_id, area[0], area[1], float(minimum_thickness), float(average), float(map_lat), float(map_lng), float(1)))
+                ''', (measurement_id, area[0], area[1], float(minimum_thickness), float(average), float(map_lat), float(map_lng), scale_factor))
 
                 # set up json formate
                 lidar_read = {
@@ -60,7 +60,7 @@ def input_new_Lidar_data(self, cursor, bodyOfWater):
                     'SubId': area[0],
                     'GroupId': area[1],
                     'SubCenter': (map_lat, map_lng),
-                    'Heights': area[2]
+                    'Heights': area[3]
                 }
 
                 lidar_json_data.append(lidar_read)
@@ -91,7 +91,7 @@ def input_new_Lidar_data(self, cursor, bodyOfWater):
             content = json.dumps(lidar_json_data)
         else:
             print('No data found')
-            content = []
+            content = json.dumps([])
 
         # Write content data to response object
         self.wfile.write(content.encode('utf-8'))
-- 
GitLab