From 48f8158b0e940eb8726ef60bb163ec3f3f287a68 Mon Sep 17 00:00:00 2001
From: Sara <sarasdj@stud.ntnu.no>
Date: Tue, 5 Mar 2024 14:03:42 +0100
Subject: [PATCH] update: divided into tiles

---
 server/main.py                                |   7 +--
 .../__pycache__/get_relation.cpython-311.pyc  | Bin 3400 -> 3310 bytes
 server/map/get_relation.py                    |  54 ++++++++----------
 3 files changed, 27 insertions(+), 34 deletions(-)

diff --git a/server/main.py b/server/main.py
index 989e1c30..647d223d 100644
--- a/server/main.py
+++ b/server/main.py
@@ -37,10 +37,10 @@ class IceHTTP(BaseHTTPRequestHandler):
             self.wfile.write(b"Root path hit!")
 
         elif self.path == '/update_map':  # NB: should be POST?
-            get_all_markers(self, self.cursor, False, 'Mjosa')  # Get all markers
+            get_all_markers(self.cursor, False, 'Mjosa')  # Get all markers
             # NB: temporary hardcoded waterBodyName
         elif self.path == '/get_valid_markers':  # NB: should be POST?
-            get_all_markers(self, self.cursor, True, 'Mjosa')  # Get only valid markers
+            get_all_markers(self.cursor, True, 'Mjosa')  # Get only valid markers
             # NB: temporary hardcoded waterBodyName
         elif self.path == '/get_relation':
             get_relation(self, 'Mjosa') # NB temp hardcoded value
@@ -49,9 +49,6 @@ class IceHTTP(BaseHTTPRequestHandler):
         if self.path == '/get_weather_data':
             get_weather(self)
 
-        elif self.path == '/new_lidar_data':
-            input_new_Lidar_data(self,self.cursor, 1, 'Mjosa') # hardcoded body of water must change later
-
 # Terminate server on key press q
 def on_key_press(server, event, cursor, conn):
     if event.name == 'q':
diff --git a/server/map/__pycache__/get_relation.cpython-311.pyc b/server/map/__pycache__/get_relation.cpython-311.pyc
index 1760906d6404076504fcbd8abf46308b0a8dab2a..52d93ce095e8b69937d65db4bbf026a67c5c6a81 100644
GIT binary patch
delta 1856
zcma)5TWH&66#jL!<V&3Rk~Cf2gfty>*CjM0T|)=UR=Xwbwvwe|Y%I;3NOj$$mXVZR
zTnTxj1FvLYPl33jV}2N2pfFnYlD>tpLD^tf;0Gf}mpzQZ9)?TX_nlvkn>y{o4${&2
z&-u>L`OoG4&VRdo-}`)S1oT_y-{PU7FXv(4K*9Uy0Z}ad)USH5wL$0Erlk6t5<(hn
zE)u&~ozYO4GanMcE+n{a5eVIew?PB~8;@-sBya+Miv%laddWWXBQofD`irs`V;H0{
zWgnI(B)B2?ZdO2(DC+s~S297E0p?Yr%^YL)Md<U2l(rdR;X+2S{X*(uN)V@IaXz7@
zq_p`ZGe)rH@615ZCyPo(N-N?tc2Mvw%>C?6Pd^Cwp!|c(Q|!5}CoBqgFP-?tSh;NV
z9Io~pwnC%T(5UHm8HN{dPFV&Z_hlpyIw6ocnM69Jp%|K4*J+JD51<BpOe3T-I;*>M
zPQ`wkq;VRXg@S8D7H-{IC7o|Ux-@1BX>5bKHC~|RAQi}-)!a>4CKlr=?%*bAe5)TM
zn%6xo2={Y{i@H~JH6uW(jONu0A`4-&pw(E-1KDq$&XU+HkdEc4_WxqG`!%9%MaOX(
z7;}P;Fg}ec(|9fnq>-9Wpl_0`$-|tHfcHV|$;C^HUo1X&c6>Fe6)li+&V<T-6+D_G
zFs&#83G6kbQ89E2Ah#Wufw|tMwZT-n-c4Q&{c!xx?6o&!ycIHTN|dy@$%UC%>f(4z
z#^assKbA<%i$bp|^)?2zHzUnoNy0exrqZBP!K%zY-57AeEeOK<=nSxBl!P6c+OHED
zA)x+lP&G(>#sy5omc^W+`}PauO|nQXz5<C-^2^}jWD_MF+4jszk}Ras2~||g>-4Z|
zPa`+;9u+Z;09uIw%b_|V0^M7zGAEVP@`-BC;4k#r>HE>2r>pU)YFx0!#Ojz>37myz
z3++g98w85FY<5OkNDGQh!KH0RPNb8fjMu|v6Pb*d7UU2d<S?+ls9)~G79N*oT1jO^
zn@kBd<5bGIhWWXBpJ7w7bjhY>rTI<d%#3u|b~~uXzT>X+wvvq3S>DlPJs>FGLM3x(
zqdk-xukr5OTQzT6F1`_bsg63B9S+O8YI_fScgEuS@=SiAAeP==_Zxviyc93KQ~uBj
z4p{!ds(&y~ulrx5-SGGe2d|IjM@w{>_?j>AHE-yz;EqzLcx35F9q~N;1z7&*de^Sf
z>EhL;t98WrKnbist?$}X3-2sVmPc<)Tj2vM;+@&m@w<{?4a6&<W7srXe)C3hrQ3=O
zS>d5O@ztYi(R-(?;ggln+b=Rtt{uGh!F}F(eZm@^sD$3z7F}7LxO-_WY8^Uh4d4)U
zp4l6Ch?q$5F=hq6?nND)%ZB$W?@HflcO`NZ9;-c8ZI4yjW3~1`AyIS{$O2jKz?Y!l
zW=}d1=gE(Jn!T1SOnheKjCIaeX&bh<kt#P*;YR9obIfXit~v#Whj{QFW0pIy;R#ph
zaAS}-xf5Du^GR_~$|TZ4LXkVLqFp(c$cXb-29lz5K~&`{jp3pcRhIjmZkwy#h<gk~
gyf?}x<{#dJuXPf`<=Hxd&vrJno9L{g=b4kme_sg6<^TWy

delta 1884
zcmZ`(Uu@H65dZu)cI-4slZ>VXno_FuZ(y|5&?-?FrKMG=Hi5KF8mdC=g_M#6+icXe
zmw?a|P$km2i0~Gqshfl}740RwO?%lMV<`_PQ>E^KX-`uo*7x1#G-c`7$=~_DyWgGf
z^WA-ahJR`IeCzSJ5zw8T-{pI2o~*#ahJy7fO0E@t^2L$K81w|XeAHwOrpQ=Nh=3Pq
z9_&*mgSEaS4xT5_YLDc)iwtH0ZGh!z!;Vas=H1(%MXn(mt_=cku<B%T1}gIS13Z$r
zy3P87IMOEZl6!*$D6BdW2%rLnT09vP#D>1;!8!&RT(Jd96p{p-9Y-JuT||B24>}nm
zPAu$w6C4>>0a&k21ABzx5c+b5NofDV7=-mRcSKktR}Wr93O;}p;7904T-K~P{?Kqc
zXw)8HSyc9q*PqSc!=rg^-K-oKuv-T!t%G|Or3DB0l^P<v7Ekx~u<|WUPD)j;l=wU$
z$@7Z56w?x^WR+f2fiu$0>uJ@RqfZmO^?;5>87;9StBL?os%}S~cYq#6R@14ZDmz=1
z2YVzEvC4G2FaR<xtU5qgJM`6$Yb^43v*)%09W_KS#~hY(z2H0##QWmI`Qk@*Xs8kz
zvbku5i<X@STv|^PaEMX}nC&00_{Xy|J1h!?*Jld49qg|J`z?*hjN!zb4w`{_Jwg&;
z5(ZiXWt~2y5i&`WGHH|1Fm9I&#-OZIY}n5>X=#JR+KdZ2kuz9{yykR)${MbQtdMai
zu7(S_OA=*}5^Yct^e()a4XD}Ey~ZP&u`EP&K{G;LPhr&wFs_D-kilk}dld#EYw}Hy
zeccR*r0Ldh6?VxW4Yxt)kfshAgEIKnyU$2$l{m-pCd^rI`G3%U$2#(Lc>FPmvzA<4
zi~zIYOmPMoLi3?ugj1`xn`V1=3>!y~xNFW>DBh;O&F_z6a4>A{x%f)(`>EgbyW<M3
zna*8F-AqdAdl8+CMDz>=-Kn!m>I<ylVY8500#U)2h2A|GgD#gMS}IZ>i%2@Pv>Z<*
zBZ(yFoVM?CRoQyTDg|04431Ssi6!H*f*Y&K#?on+ETs)LePVrLc<ef_CUio!M0amS
z>BUG2(x_69K(%haawT<3#n%d?wMPn8C>;%k9o2jAKeA}s7tBs?clCaA*rpF>&*et*
zJ%!Mg(2{2g%$lbdw!QtfFi;T&vJ?BXnO*g^*aGwD5^^{0EN7SV6NNKhPv@s!c>Ov4
zCC%sh^K#)*arC>M%}|Lh$u>P%p(o4q<QCX^0X<OEY<jRl50>e{m)>Ch(!G_{l^Wuh
zqYleaTY<JhaBXaTtcF}XD1qh9Znbr0UijZC1PaTKJ8ge2gzql#&yLysXUe|!v8B66
zJbt_Qi5-sG{^%xCqDqP9Ui<h|*?0a;=0NGj^8-Il+b1vB$1jw9bNhl1m;BG(EhX#|
zQ+7WNQRA6RSIb|B348y>EH_;fk*D>+?ETq7*cQ7hVt3hjYF@~9rxkHRZuGW(SI>WV
zCzH)=ah`I^u+5EBxREk9vMu<sv(Dw($0-M)I8{C_r_!;c6jPND-uu+6v9!Fj90mP#
zSyPr3%KAX$S$sVz9oD>f$bAY#+~R7?`bvD~WG69FT&N*<?Pn9jA;Mon|7A`F{{Zw-
B$qxVk

diff --git a/server/map/get_relation.py b/server/map/get_relation.py
index a24d62ae..616adfa3 100644
--- a/server/map/get_relation.py
+++ b/server/map/get_relation.py
@@ -16,16 +16,8 @@ def get_relation(self, body_of_water: str):
     if len(polygons) <= 1:
         print("Failed to convert to polygons")
 
-    tiles = []
-
-    for polygon in polygons:
-        tiles.extend(divide_relation(polygon))  # Divide each polygon from relation and append to tiles
-
-    # Convert polygon coordinates to lists
-    tiles_json = [list(tile.exterior.coords) for tile in tiles]
-
     # Convert response data to JSON string
-    response_json = json.dumps(tiles_json)
+    response_json = json.dumps(divide_relation(polygons))
 
     # Set headers
     self.send_response(200)
@@ -36,30 +28,34 @@ def get_relation(self, body_of_water: str):
     self.wfile.write(response_json.encode('utf-8'))
 
 
-def divide_relation(polygon):
+def divide_relation(polygons):
     # Define tile size
     tile_size = 0.01
-
-    x_min, y_min, x_max, y_max = polygon.bounds
-    rows = int((y_max - y_min) / tile_size)
-    cols = int((x_max - x_min) / tile_size)
-
+    id = 1
     tiles = []
 
-    if rows == 0 or cols == 0:  # Return if the polygon is too small
-        return []
-
-    for row in range(rows):
-        for col in range(cols):
-            tile_bbox = Polygon([
-                (x_min + col * tile_size, y_min + row * tile_size),
-                (x_min + (col + 1) * tile_size, y_min + row * tile_size),
-                (x_min + (col + 1) * tile_size, y_min + (row + 1) * tile_size),
-                (x_min + col * tile_size, y_min + (row + 1) * tile_size)
-            ])
-            tiles.append(tile_bbox)
+    for polygon in polygons:
+        x_min, y_min, x_max, y_max = polygon.bounds
+        rows = int((y_max - y_min) / tile_size)
+        cols = int((x_max - x_min) / tile_size)
+
+        if rows == 0 or cols == 0:  # Skip small polygons
+            continue
+
+        for row in range(rows):
+            for col in range(cols):
+                tile_bbox = Polygon([
+                    (x_min + col * tile_size, y_min + row * tile_size),
+                    (x_min + (col + 1) * tile_size, y_min + row * tile_size),
+                    (x_min + (col + 1) * tile_size, y_min + (row + 1) * tile_size),
+                    (x_min + col * tile_size, y_min + (row + 1) * tile_size)
+                ])
+                tiles.append({"SubDivID": id, "polygon": tile_bbox})
+                id += 1
 
     if len(tiles) <= 1:
-        print("Failed to divide polygon into tiles")
+        print("Failed to divide polygons into tiles")
 
-    return tiles
+    tiles_json = [{"SubDivID": tile["SubDivID"], "coordinates": list(tile["polygon"].exterior.coords)} for tile in
+                  tiles]
+    return tiles_json
-- 
GitLab