From 1aec79010840b1ea55bcc3a28926737d66b09c9d Mon Sep 17 00:00:00 2001
From: Sara <sarasdj@stud.ntnu.no>
Date: Tue, 12 Mar 2024 13:03:07 +0100
Subject: [PATCH] update: colored plotting for testing

---
 .../__pycache__/get_relation.cpython-311.pyc  | Bin 5724 -> 5825 bytes
 server/map/get_relation.py                    |  37 +++++++++++-------
 2 files changed, 23 insertions(+), 14 deletions(-)

diff --git a/server/map/__pycache__/get_relation.cpython-311.pyc b/server/map/__pycache__/get_relation.cpython-311.pyc
index 61a991605c9616d12954c7a67b412e78d41c1477..1f9d6fb9f61cc81a841db10607e1f3e3d2ff0e9a 100644
GIT binary patch
delta 1761
zcmZ`(U2NM_6uvk9i=Eg>oWx1CrA@n^H2V>2w{~JM%2>BOkhPomd8jt3P&;WNH|`u4
zt(^mtKqH_cI^8{N2&7D!%EX3LsS+EHdqE&xnh~_h0;v+(11~5NLP7{>-0Lh=LF3r>
z^Y!sL-#O>rbN$oa`}?HNMNt4)21i<2uX06-!?&-b4~{`ynD&kPAW(q{b^o~EeTw6f
zN@;<-N2TAR$Ac=PQ7Ws2R8Eugtm?(Ou&d*>P@Yx={2o!^D<I>$^3?#6;5MHZN22if
zJ<Fg$_#?cFe4fE!P8AX)2Un`R&5wX{a#gUzjt&6TXA4Un0B+;a76=x?wijC#(5xqY
zW;26mi>BB1Z)UB)g<UT1P*t)59S#6&(Uw$k3Fma1<mE~=U^8_ux<N-+J3vTKgG!_W
zD!(a7ap4dSuvx<{Om*DQeo;mNY7Y#e=co)9s>-%p_hZ5+x<tvMT-qqCE|D;3g&LBr
z?Vb2ItDx#}!zw{sVEHUAx*D#sYN##~dykbyXXuEa3aZ>*6r7>5qZ+Z<QnbTTQaUr&
zJz7<85;5Z5Wk+pA4Xcqm(Ipxejz?P{z$S5GvYVLLk*Ap~7}iD%07?mTj!sa)`WCm4
zkLUmsvq60;ev3wxC5Y+q*q{gXZRjYYC~Ew_n~9y0Pbj1yP6U*?I)3$T@`1Kv^%S9n
z3G_YH#i{@|)|Qov%ndkXlCGF%v&FJ@IQ8m@3^aMHD6|Rw94>rvoyd2?^W64}hxZR%
zs1_eTehg5S%fcRXoxA_6!)xW)Y0b=8n#1M|b2?`^teGpT#<atcXR&OVe$3~1F3dUf
zjBZ#CoiFM-DtgEGxI<SoJ#TX8zW2ahiI@omv#3t!IH8KePnq+b>074tWJ;5dD8=u5
z$J<dl!sM(qF=Oa+69W!o6?N=P<%<Q!le^%+qT_F8G%;!DhUq}8n{x!$Y@$>#%9S{d
zocbRzNz*(2f@V#anx3<YM%f(2DjwkNul#~O<KN%i!$>WFp~n5e0;TU3ckjSzbhr^6
zZbpY|!g{3Z+WD)eYW!NH3!N1D#1;z@y)7W~J20Skg`TtF?iPSzqCUUebF=DB*Mf0u
zmfY0>thmpGMeonaXO{i<roLqw$<bzVbWvCjZhaW+eGu%eAHJ2ld885SZwC8UgZ<bu
zwfk1jr`1LOq95HA=3acHbk~`BshR3;C<9GppamFa(1j0#8mt{!i=`gM(hp+kFWEcN
z^7(sxjlN^ezGIEpNHaE4^RJ`hzP{v|SNNFwkXwX{{nxU~RE=wR4>r9ASKS-U_%5>{
zyfCJO{`Tz@$l-ARSTC*Y@s}W^(5l!&wNGap`K6s$qe~kaj}<~+NLyhDNzxXyE-|O5
z(O-$b+oBoX!P{PW(n{>4VVG*gBq7W!ffRw4F*ua2l}+N8;Y`v{<`{v~=<C3V2-!)q
zy94L&q;eF6gFnD^1VaZfo(>&pmmsg8&}}HcMr^lX$OvsR8J!Ln0xnOId?RofeG^^@
zlgcwuhc9Tx3~u{e#f+nc$Z^<<ev8D$)5LfW28Y4NWoFKNgUl&hklRZRlh+M=a_Bb=
zLvLs3());;yQU=MU*6}Z4Ru!6UNBAkN`4QOM`%2nJ=wbo{&lYb@sfM30eQ7^x7aZV
U`|Fb}K%P&*DdbUJr%AYf07q7}>i_@%

delta 1730
zcmb7EUu+ab7@xV_+wSh|-v4b6uEJ6%a8N-+jG_n{X~X~x9u`u;a&-2#ckb;Tvs>hv
zy);In#PC2fFX)TMOHD)*lO`mZ_|QilOs;ywvcUu%O?bG(7eiv=%pHfe;)7pizWwH#
z`M&whH^14Xr|*tLzf@HjQ2G8)+bE~!qZ#<={I=)b;ViilnTS-B38kV=s1P84pcSpe
zCSs55_(THnMzR<};g9%<6cP*$^%-d-8d_0667}_We6o=)@+d;b0|@3pPMQDe*{wM)
zkgSqzR19nyL1e}*;M(MjU2^O|t~yrDbnMcsF@JY3(nqmzwEzAZPdIoRen{@Xefz}M
z!P#V8@>B-BD@gXGg%AKYXzvOHS5hcq!n*9U^)HZPp>3+Vt~U+pDp?Ax+pI1?8by0A
z%2$x|k5$5z7uh=UZ8Sj+b30*_T;OuySUv8?$roG>#>p*i{CPi$LVpL*?RL}!UnnPf
zY0Jr;b%p}0C+bN*-bfKBXt{)+L<yAqI<>%4AhdUd!r$p>y%7NAG@0Z21ql3TLn9}`
zo5Lv|H2TSPPSeu=Is<47u$ci3^{=f8jmpsYp*T$i%8x-e)-yC*s*z=ZaDYI5gMa|N
zvdm&$xDKD071)*S*Uh5~^60R(_0UPoYMp~vp&zr0^pAt)=btgTb&%{3kHSInzPJ>_
zF*+NBF4Y3QYB?UcAdN}sfOie6h-Gq1+6xopPbnMc*$#np5qp!&a>;gi_;lDSS%w>M
z#gZ9>3YP*%TP=_~-pR7-*lwC;*PkGm6+KW)!<)p0Rq!ak@Eg=6(eA!Yn(`+?HXLn(
zEIAv=gxfOEHj)n_+tc^7!K+6uOKkzH8)^el+Cmk%8QGLl27XaC{G@ES<}WKFEoG#s
zjF7!bO}m%MTwC8t(RHEl?vA?Lw?ZB$+qtH=i|kQ978pdFAU~+XvOvuarEe}iP|Gl;
zdyiQH01A;kvBAvRJ42w(+gYC{OR)itM;zJBXUKeP+e@p1d5;zPk@(@&tXP|qd>7jU
zJDKJn@KU`n0DOLR;HtSbNsA#$knr)}*nwsb9Ctk3u$>umTAy+pj7oOFGhE$s^eJpm
zQ@>cSN=Se7#P{p@s#WrIcW$~+rNrvcY4+9so8&E{QYhIa+tl4|o}3&|BDr3dbwUS;
zi`m1%qfBjP>M&ISXBjr$1n4Wn>;Snw%&r0-Vd_mX7avVC2H~NeI!O)pBDoX)Is2=q
zHlxRWbes8im&YbsW0T9`xt4gYDV|#)-z4@9cIHpq&W|@w6_@j7D{n4~(=BnjDNe7D
z`-uZxMrey$k~d&-jBT)ys+`<KpppA2GuGK$XLC%|$*J^WiV-Q72_(~Sss$SrT%09O
zX@}>AsXvHxDqz)iIaL?4UndrsVtfx0m4e3}pH(`)%PUR2XJEX8`NQ^1rCP(Mna$Cn
zbzVpiE?Q2(3;6SnV|CB3(*-!nRENt9+e7i?ii2h>;}tAd=$QRP-G`*59X+$Z3I4OK
hfT8B<wgQsPUTX`Z5bkMAwE_D+L5~x&f1GC^{sMbgp-KP%

diff --git a/server/map/get_relation.py b/server/map/get_relation.py
index 0ca4075b..ba0a3d1d 100644
--- a/server/map/get_relation.py
+++ b/server/map/get_relation.py
@@ -1,8 +1,8 @@
 import geopandas as gpd
 from shapely.geometry import Polygon, Point, LineString, MultiPolygon
 import matplotlib.pyplot as plt
-from shapely.ops import linemerge, unary_union, polygonize
 import matplotlib.ticker as ticker
+import random
 import numpy as np
 
 
@@ -30,23 +30,29 @@ def get_relation(self, body_of_water: str):
         # Divide the length and with of polygon into a grid
         grid_lines = create_grid_coords(polygon, cell_size=0.1)
 
-        #hrz_lines = grid_lines[0]  # Horizontal coordinates
-        #vrt_lines = grid_lines[1]  # Vertical coordinates
-
         hrz_lines = grid_lines[1]  # Horizontal coordinates
-        for line in hrz_lines:
-            print("line: ", line)
-
-        vrt_lines = [11.0413]  # Vertical coordinates
+        vrt_lines = grid_lines[0]  # Vertical coordinates
+        for line in vrt_lines:
+            print("Line: ", line)
 
-        # Cut polygon into horizontal sections
+        # Cut polygon into horizontal sections, bottom to top
         for hrz_line in hrz_lines:
 
             # Split shape into upper and lower section as hrz_line as divider
             cut_poly_1 = cut_polygon_in_two(polygon, hrz_line, True)
             polygon_part = cut_poly_1[0]  # Save upper horizontal section
 
-            divided_map.append(polygon_part)
+            if not polygon_part or not cut_poly_1[0]:
+                continue
+
+                # Cut each horizontal section into vertical sections, right to left
+            for vrt_line in vrt_lines:
+                cut_poly_2 = cut_polygon_in_two(polygon_part, vrt_line, False)
+
+                divided_map.append(cut_poly_2[0])  # Append part to final list of shapes
+
+                # Set polygon_part to the remaining, un-split, horizontal section for next iteration
+                polygon_part = cut_poly_2[1]
 
             polygon = cut_poly_1[1]  # Set polygon to the remaining, un-split shape for next iteration
 
@@ -61,9 +67,12 @@ def get_relation(self, body_of_water: str):
     ax.set_aspect(1.5)
     ax.xaxis.set_major_locator(ticker.MultipleLocator(0.2))
 
-    for polygon in tiles['geometry']:
+    for i, polygon in enumerate(tiles['geometry']):
+        random_color = "#{:06x}".format(random.randint(0, 0xFFFFFF))
+
         x, y = polygon.exterior.xy
-        ax.plot(x, y, color='blue', alpha=0.5)  # Plot the exterior of the polygon
+        ax.plot(x, y, color='blue', alpha=0.5)
+        ax.fill(x, y, color=random_color, alpha=0.5)
 
     plt.show()
 
@@ -105,14 +114,14 @@ def cut_polygon_in_two(polygon: Polygon, divisor: float, horizontal: bool):
 
     # Check if the split_shape has enough coordinates to create a polygon
     if len(split_shape) < 3:
-        print("Not enough coordinates to create valid polygon: Split shape: ", len(split_shape))
+        # print("Not enough coordinates to create valid polygon: Split shape: ", len(split_shape))
         split_shape = None
     else:
         split_shape.append(split_shape[0])  # Append first coord to create closed loop
 
     # Check if the remaining_shape has enough coordinates to create a polygon
     if len(remaining_shape) < 3:
-        print("Not enough coordinates to create valid polygon: Remaining shape: ", len(remaining_shape))
+        # print("Not enough coordinates to create valid polygon: Remaining shape: ", len(remaining_shape))
         remaining_shape = None
     else:
         remaining_shape.append(remaining_shape[0])  # Append first coord to create closed loop
-- 
GitLab