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