From 0c769f2714333df6fac95f4934714459f6cdd955 Mon Sep 17 00:00:00 2001
From: Sara <sarasdj@stud.ntnu.no>
Date: Tue, 12 Mar 2024 17:32:11 +0100
Subject: [PATCH] update: attempt to add points to cut dedges

---
 .../__pycache__/get_relation.cpython-311.pyc  | Bin 5954 -> 6572 bytes
 server/map/get_relation.py                    |  41 ++++++++++++------
 2 files changed, 28 insertions(+), 13 deletions(-)

diff --git a/server/map/__pycache__/get_relation.cpython-311.pyc b/server/map/__pycache__/get_relation.cpython-311.pyc
index 6d7c237fe1158ac5b62ed78021efb4298eee0deb..b358dc3736955c52454f2a9a260eaad50c0aa21b 100644
GIT binary patch
delta 2116
zcma)6U2Gdg5Wcm2cfRxaeEy9cCv}|Prll5bNeeEdf)H9#C#hQX4~kqj=R|Q`Cp{m6
zrgsW|0!u_9VIxs0giZp2p?R>Bmw-TxDtP0;PAzII1yZC+RJ<4=q`rXIb$W>tKw_kw
zo!R+jcV~8HZ-(ag@}F9*EP?3Q>y`Mc^)tL0un$wB`3=)^4v~x-MLKRDHi-<<ogz3+
zbh0y_p91Hh0em03sZt`X(y|5nuaQD2^qhepuA{L=s#!6MW}mJSDuZ;UMrRfFY2t-9
zRf}w02N7r=i$cSg!Fi(A*Q#)vd@02$nbBGeCJm-S3WIh$q4Kh=W=CtntZNAd#stqJ
zB732_A{hXY>e_U?RpCX;oDl_r#u}+Mh16IWv$>5n(F~(Py;reqx{Y<}<kVXaK<!~b
z$Uyfch{Sr56mp)MLze67R#lKU@<Al5@M~ib@bC`l4p=uM0iie&>p^J(!nnM0OU*G3
zT^4zG&=de2FlyRsv}rC3ZIXBDW^^NuE{kSSSbH>_7Wk8i3~Z#TPDh<ZPpZ0AkK)k0
zI17wh@rZWOG4F&y(g_Wu?<vJ4GV{(k6ABKEH3G!c*rxF6b;}$QuImbcLK8GUz9syK
zbb<yPzT5SW@CmIETNt<Kd2r=hWHSs>PD?=FN^7b<Qk@pWNcbITgZ(Cf5(!kj-h~<J
z9pII4dEUbha1X!l$hG$|eQ^UmV@`u+_@%jL!Nl|fmKlmClhO3(L>wMvTi|8(Gs_^t
zGiaoLF~D7xHz!+3zCs|Dp;ujX8Ro9LBTMIe1^0oX`#^?Wb#1$PX|_MZlysp&5x(XM
z;bHbyS?2H`6wwgMj^tim@)i6?ivA;+NGZ508~Zqr=eDhSnzh}tW0^y%&bA5xtiJ5o
z#o&CjDwYIqg@Q-8FnzKRJXH*yf>Yd1aDU+@_cmyhy3rkn){7S@6dG9ny<~)!_=9eP
z2rg7#N%~7MqJBA~QZfzy<m(M81%Ke5H11JI_#5A8JS<z`6``IN4G-{|Vp?086pa(;
z^Vld}l~(8kjSi`jViLiIZDSq#h$hTcvuxMVXpKZ)1Em<Y7La0A^rKI2!rSSs^#SkL
zd>sgmH%C`lufk!&R%A7}x<mgDi&3Z%@L#51C3ia2w>fW=N-0!=hAaFNTXSbXAI2?P
zCjjW%@B=IKA#R3Ug1+KJ3HAdgd`}2WG6QSXiAz+%?L4xpr{UM1_thVq;8XFJqH%E~
z9!<tm;id^&6QcDJ4L6mIheu_}iF`WQvMD*5mL(4F(u5h#h18E(5Hs8^QUtLwIWCQ+
zWC_<sCnH&SY&eQp_q+DT0%bNCOUu#mF@z~|wHHX^Hh?!=Uiuso((MNLyuH1}Y@go!
zn)-@ba<^6pk_lB=rgz2VyV^DrnT=$6OYlc~c=E1=&s-^3{6&lZYHZmO$Xf!dzSd8U
zXZ?k?u3}qPE>>vUU-Uhi>09-;eeig8XD&7$D((mu{Ncru1%FQ_vclQ(j%F>A-_x^n
zroasrxxqX)i2BPJ(0t2|9eKx&6~R3npW$Y?X|5#rZwt-K0&+m@**Y9v?E5N`Z+W&L
z^c97^ywFz?0=I?sWuZOG<<1ngcQ3KuaQTk@f-q1N2J*r{NodfRg3vk5RhXJ1?pJui
zgL?BnL;ZFk>&OB}HQx;=QJt(*O>s9o?@F?bXhp*88Z5aMc~_YkiI0uPQerGEdEtld
z-rg2uEZZ-}<niQ~oE$wLl1GOw#3gAv_IwB%$<&J%$1h9guxvzcF5y3_Ob#c<VzRUi
y$x<T>c^W|)Mm$R2F#vXJLlpwg|H4y-eITsS6#`8;6c?J7daKh`CPPQv!+!(hN#m>l

delta 1588
zcmZuxO>7%Q6rS<^*!$zPz4qF1+{9UzSTRv8q7+r6LZJ}SsI;j_1FiV0oQxCfxOP}C
z5`<j^q^ejXh(?n`q+X1KLexZ}QY6%4%Yk!(q7oTZ3fw9V7@^*o@n+My@U-*IdvD&G
z_cJrQHTY9j`QGmr0ioZ=nt2pkQS78T!z15y_MI@|@(dF4p&1s5M2;YM31p;|+n3>2
z*aIIdKCpRHqP`AUJo0Y&);$1hlHri;wY*4(yCSfCL>8Zt1<N-A-dAnW^dA`kBw1qn
zJ`gO2ErD3xuq89#SWeN&;w=fu>kJ7>hC{Y&$!$UXmf!HT>#A@$-3tAdt(YO#lkDd&
z3a(TX@wcAXpntBVFgy^HUvz_0mF2e-q&yQlU~zQ`-w$d`010>?)Y)eR+A8)hzfDqk
zx(EF7mxoSi{4Nvdm)!&`ZY!`3Noiy_WCzWJ%L7nU@ZVe%Z!!`LkdToc6l^z#z*37r
z*P$MwM%`wws~|gsT^@xTS5k76g}}_<Q|ut4)-~$WX`XQHh)>Mrk$}SZ7ON+pw5-Ej
zdym`!TeG8<T94Cq;3mt)BS_nduCt^fG902Q);p<1Mzf+;1d0E(Sgy2Hogh`mnPB}G
zO$~p>g<%)vd?<EU!mnJ4MI9)Pcgb4v&`JrCP@vf32CnNgC=;uv9Oup__4^<|fZX-O
zc7gu}rZcc1Oy^6btJT6n-k^8;5j~Iv{(PaFAL^NWL~q_G4*II_IKJ+Cjpyc#LfPE@
z**6YxQcQ7di5TKn#M{!F#F93vDlz!6cw;fmDNR72=6%eAXy1nS?%<9#ysHiGX~Q+~
zAkw||(dvbou<tSlk*+3yLaGI|k%w~VX5ZS#uB`9L`cCU>@*qx@qe8j`wK1~svFyg|
zolovXb`zs}iP75mef`8n?z`lU47>3k(uDW&u6|`tzk*N8{n9}+RUcTb)Xvt<ZqLd~
z@VSQgVZ|scRLW+qG=22ONDcG|sr=8Y9vo1HIfgvX&+%17XFSF!yr`UkC-HrypF3yq
zMIJ8(Uxss3X1*{3_%9^^A@+tc&_muxf?VGV1R*XQX+ro1q6raw=fxQhISgjph>&Ql
z{%3>+>1ow8=u<IL6lgZaMGD6$j8o7l&=fOXL!tZxg-h5}UrJTIgzs_4pnnvj#|8Rh
zsh)xOPc^NpdJ{-owgolrVNko7Uy)bk8n-WLO&|zaJQzL=5AezG5dJ!{<T2E3P1}TO
zD|8pxC?h(dRs2h|gnv^7xP-@IcNMK6%;qcexiZRCjW||1UVnqW%SPy0&YUk*%u-=0
zYZj*G@`mv|O)N_nx$?)?=07z)pgcp$H|Tw8a5JS!&TOz#l}gE}q8qPubU_3E*kPTU
lgm9of-2`<0A2d9@aH#HW0y5p{ZB6$kThp^Jfvxxp{{jshR;B;|

diff --git a/server/map/get_relation.py b/server/map/get_relation.py
index e97ffba0..a4de9724 100644
--- a/server/map/get_relation.py
+++ b/server/map/get_relation.py
@@ -27,22 +27,22 @@ def get_relation(self, body_of_water: str):
     # Divide all polygons into sections
     for polygon in polygons:
 
+        cell_size = 0.1
         # Divide the length and with of polygon into a grid of equally sized parts
-        grid_lines = create_grid_coords(polygon, cell_size=0.1)
+        grid_lines = create_grid_coords(polygon, cell_size)
 
         vrt_lines = grid_lines[0]  # Vertical grid coordinates
         hrz_lines = grid_lines[1]  # Horizontal grid coordinates
 
-        for line in vrt_lines:
-            print("Line: ", line)
-
         # 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
-            divided_poly = cut_polygon_in_two(polygon, hrz_line, True)
+            divided_poly = cut_polygon_in_two(polygon, hrz_line, cell_size)
             horizontal_section = divided_poly[0]  # Save upper horizontal section
 
+            polygon = divided_poly[1]  # Set polygon to the remaining, un-split shape for next iteration
+
             if not horizontal_section or not divided_poly[0]:
                 continue
 
@@ -52,15 +52,13 @@ def get_relation(self, body_of_water: str):
                     break # Break from loop im remaining section has no coordinates
 
                 # Split the horizontal section into two vertical parts
-                vertical_parts = cut_polygon_in_two(horizontal_section, vrt_line, False)
+                vertical_parts = cut_polygon_in_two(horizontal_section, vrt_line, -0.1)
 
                 divided_map.append(vertical_parts[0])  # Append split vertical sections to final list of shapes
 
                 # Set horizontal_section to the remaining, un-split, horizontal section for next iteration
                 horizontal_section = vertical_parts[1]
 
-            polygon = divided_poly[1]  # Set polygon to the remaining, un-split shape for next iteration
-
         divided_map.append(polygon)
 
         break
@@ -95,7 +93,7 @@ def get_relation(self, body_of_water: str):
 
 # Takes a polygon and divides its coordinates into two shapes, where divisor is a
 # coordinate that defines the point of division
-def cut_polygon_in_two(polygon: Polygon, divisor: float, horizontal: bool):
+def cut_polygon_in_two(polygon: Polygon, divisor: float, cell_size: float):
     # Extract polygon exterior coordinates
     exterior_coords = list(polygon.exterior.coords)
 
@@ -104,14 +102,31 @@ def cut_polygon_in_two(polygon: Polygon, divisor: float, horizontal: bool):
     remaining_shape = []
 
     # Loop through points and check which side of the division line they are
-    for point in exterior_coords:
-        point = Point(point)  # Convert coordinates to Shapely Point object
-        if horizontal:  # Horizontal split
+    if cell_size > 0:  # Horizontal split
+        for point in exterior_coords:
+            point = Point(point)  # Convert coordinates to Shapely Point object
             if point.y < divisor:
                 split_shape.append(point)
             else:
                 remaining_shape.append(point)
-        else:  # Vertical split
+
+        if len(split_shape) > 2:
+            # Get last point added to
+            last_point = split_shape[len(split_shape)-1]
+            # Get length of the newly created edge
+            new_edge_len = last_point.x - split_shape[0].x - 0.0001
+            print("new_edge_len: ", new_edge_len, "    cell_size: ", cell_size)
+
+            # Add points along the new edge to allow horizontal sections to be split into vertical ones
+            while new_edge_len > cell_size:
+                print("Hit")
+                split_shape.append((new_edge_len-cell_size, last_point.y))
+                remaining_shape.append((new_edge_len-cell_size, last_point.y))
+                new_edge_len -= cell_size
+
+    else:  # Vertical split
+        for point in exterior_coords:
+            point = Point(point)  # Convert coordinates to Shapely Point object
             if point.x < divisor:
                 split_shape.append(point)
             else:
-- 
GitLab