From 5e7028a92179e6d2dd82ea8e161b0ca63ffd58da Mon Sep 17 00:00:00 2001 From: Sara <sarasdj@stud.ntnu.no> Date: Tue, 12 Mar 2024 12:40:30 +0100 Subject: [PATCH] update: divide into horizontal sections --- .../__pycache__/get_relation.cpython-311.pyc | Bin 5443 -> 5437 bytes server/map/get_relation.py | 43 +++++++----------- 2 files changed, 16 insertions(+), 27 deletions(-) diff --git a/server/map/__pycache__/get_relation.cpython-311.pyc b/server/map/__pycache__/get_relation.cpython-311.pyc index 292074eece6f6c20639a8f1279a549c2c84d1952..fb8ec21176d8e459a50cb57a1e64c0b8458ef3d8 100644 GIT binary patch delta 1368 zcmZuvU2Gdg5Z*iA`PS#3vwi-Foz!uDsZ9t?+KQ5rx)CJ-`V*0~L`bEH$t8|0$4<`% zCDmDd0KtJO5m+Al0Mb2~NG(!Oq>3LQAt4@%?xKTOhbox|gy6{nfy5iTHl|Rz+WB_& zX6Cz@o%t&HMbh)3+sy;Kx>C)R%i_nL9*XDi)rRFaFFHnjN9B-{9`;LohOR)#nV~8U z1)c#fo<LKyIOM8f&zr=%wJJ`<DY+w^E2y{>R^yP52^>~jH43|8X)g+3SI@s(?Kd9p zIHQI;fL^sFC^!1Zmf$=UK@l`3`hf|eUu}L$KrFLx+%3`fqH#jWie0hiydD0WucKY2 z0jPK@KFr}KsU#Jz;*<Q6cq>q2a7tL(ivl+uE{mNT067tTz(j0rEkMH19Y$dN3ebWi zkznwD<p3>2Ea8w8uHj$a#M0r#QQ^NiJYHNm$aQs$T7(!F#jiz4G}VPBnV4My^B@t~ z`<$&&;Xk#^-Y;h_oX(u9@zX=W;nNpoLX9@K!APb}(?}&~i(M|}i?YS0^BZevbeDUC z>PAlZnL`$^lSOZCp|9a3N<`g`*N541HosD`Y^&LfMW;6{3hyn8Z+%_Nm5PNDc?a~9 z;~{<;D-JBBW2lRN<5Y+pYyu1__q!d04)1WE9Myv<BbYLSDV1;XAatmj(F4P(qaN(p zenxdP?I6<M1ki!wAhP(r<F4?5E4J^7RTaZEV!B3j*GMB2*L?4-t263M1BwSQx(}n( z#|$`N!U4Ut(Jkk~R732lMokej(d?rwP`SDgGKF4K=zo(@DRrz4`M0^ZxNT~CtUA3j zpmGKrHQ}h<+CQQ`*Di0z)wBlu_TKld93{ld|I7*i5{=@Xp6LA@lt6_kbSsR;w%f%> zHe}FIx-6h?JW=$7$Km@g4b!$fh=|2RY=?+#6QNztq=UWiGs)}PB>Ka1(lHTl_4(Qq zz8!gCZe=~4Eo2Lscxf%Yu`&@)@D`KLmdfq++Lwz(St`k7nB_AB`UyOV!LsF73KqK| zXA5PS@FzH#6fDmWcpBXn&I)}*B`}Mn^a}EN>(|fUDe3c9jM+tVcF}-KCS20tQauz^ zovQO*lTK<^-#=x*qzRKcOyZe<PBmq4-6q#vP49EPI@fy_x^>TU-_Ad;FRU8#8FM~k zz%>)D>2R$cjj4hvG+_7u#`a;XdVS}r**j*yag&APIvn4N`>s&-^CZ1q^qPN;j}w)^ zCTjTK#Uox4pP~lQr{dAk1paEVg_qYiw&Y7hx8c{3$^2UEYQC5*Tg*$vV!l<U97oZ> tAu5AT1m1aeilWA}<t8BK1MnO@L``U16X0WasC9gKv31-Jb4Uyx`3td2S$hBg delta 1441 zcmZuwO-vg{6rRDm_U?MUyI%i*Z6H918>1k85+zd7)UDb;F_h4RDpEs(9M&<Wi`QK* z6`*ygsMJ_d4z!a)4w1T2BWkHV5OG0O8b#`*>dB6*#@Y&%Yj3WqUV7@x5-Nf+(tPjD zd++<+X!h+-eLwdJ-}!tT!0X9iGxJU8k<bn~1|MB`|GkdRz~A6w<ZX$sWnqa?IE<{x zyaPVUmN>&lc>BwAo1Eg^#H{ZL(^)02=~ej1!4Z^rlh>J-V?}s3Zn9YKY{~bM9&h>- z-yuB~%ajC@wmj%BK12&d7}e<TGz6xg2#34eJ%@W7j=1m6zp{t>NDtCN{J({G&?1am zh(`p^L4f{fNk9p)u7t;5l1<t2;+qB0d#(VKQQCFQC0P==YeH6JC7=YA&=28F8b1); z`wIdiaNq;5;72tof?2YobDa|DfC;PsIfa$hO^B&@A5d{BNK%y2rbN&qDgZ+-c!Gp4 z3>Lx%wN@)mgj@lujTCs4s3V1{bSnda0<MBYY<rB}gyOgGF)bVMH>dR$%pE~)Pw$xR z*7S5fo5}90?Il;G%X%)G%cs?@DNS9;YWW0hx1^VCdQMX{-DWdNHnZ>2X|*t)wrMqe zGozxnJ^e6(KJomB&M+UqAiBeRIl_FZ8?$OIpRu{QC1bXL1!sqCUQHK`*<xnS$Z2_- zHgamFXuEFZvO4+9Hs=Ip7m8ZG7{q}tbe4UM8^azMlHwhdWp7_d&_WYnD0}{KgYe0U zXXkV^l&po4^-!|RH8~LO*cdCbjZix=O*e@2G=a?aVnC<3?zO<NCV;+(wYt^)u;jQ6 zsSTHP#GAnF>vv#-+3gtE;&<kMp=%wJ^^VC6ZcmCmmwKK_J=Xb3`r*ZzG*p*{s?rc< zcJ)=dACxxu4Sp}&W%=(dmPgB@FB-d9BFo0h@9xI>E7`5(;isWmY_uL5El=$6t<U++ zXME><v+~x1wHiNA=Lf3%0H(Gcw}$R%L}!ojp>^(BXM<vIr`A&&J@-c{^E-3ZvFo3w zYSc`fnyFGVyC~}2;wbz`&fhI;*S!nS<v08&CP$rFC{c!pG$DFQfgj^C0Cb#n90wHF z(J53wiAL`W7g=iZPa?W{0sSrv`mPq#oY7UBPZu()NgPR{b}`y#!xcS_i)^@TyVMN+ zv;{qvH*`Wwcy!W8PZ1bLia0KwATEI$co+N76R{zV*O-YqGf`zG8sTW!i++`&;^i7M zRcEHE%v2-VSr)gW{u|JJg^-V<&*UpyFL4Qcfo%C}cnmEDF2R#%J8*iUA4hFEzqD9b z(LW@<t7zyt86}&(rD|!zrfzDQ>fFMS&;^{+$<*mGhJTsY7d2%`&Ag$jXgK&)Y6`+3 hYpw~1eFZMGbi?zOrwOpxI^me7(~da`DdY<c{s+bfarFQI diff --git a/server/map/get_relation.py b/server/map/get_relation.py index 93038137..7b411154 100644 --- a/server/map/get_relation.py +++ b/server/map/get_relation.py @@ -33,8 +33,8 @@ def get_relation(self, body_of_water: str): #hrz_lines = grid_lines[0] # Horizontal coordinates #vrt_lines = grid_lines[1] # Vertical coordinates - hrz_lines = [60.7530] # Horizontal coordinates - vrt_lines = [11.2267] # Vertical coordinates + hrz_lines = [60.7530, 60.5931] # Horizontal coordinates + vrt_lines = [11.0413] # Vertical coordinates # Cut polygon into horizontal sections for hrz_line in hrz_lines: @@ -43,38 +43,23 @@ def get_relation(self, body_of_water: str): cut_poly_1 = cut_polygon_in_two(polygon, hrz_line, True) polygon_part = cut_poly_1[0] # Save upper horizontal section - if not polygon_part or not cut_poly_1[0]: - continue - - # Cut each horizontal section into vertical sections - 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] + divided_map.append(polygon_part) polygon = cut_poly_1[1] # Set polygon to the remaining, un-split shape for next iteration - # Split last remainder into horizontal lines - for vrt_line in vrt_lines: - last_section = cut_polygon_in_two(polygon, vrt_line, False) - - divided_map.append(last_section[0]) # Append part to final list of shapes - - # Set polygon_part to the remaining, un-split, horizontal section for next iteration - polygon = last_section[1] - - break # NB: temporary break to ensure treatment of only the first polygon + divided_map.append(polygon) tiles = gpd.GeoDataFrame(geometry=divided_map) - # NB: test plots + # NB test plot fig, ax = plt.subplots() ax.set_aspect(1.5) ax.xaxis.set_major_locator(ticker.MultipleLocator(0.2)) - tiles.plot(ax=ax, color='blue', edgecolor='orange', alpha=0.5, label='Original Polygon') + + for polygon in tiles['geometry']: + x, y = polygon.exterior.xy + ax.plot(x, y, color='blue', alpha=0.5) # Plot the exterior of the polygon + plt.show() # Convert GeoDataFrame to GeoJSON @@ -115,13 +100,17 @@ 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") + 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") + 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 # Return split polygons as Shapely Polygon objects return Polygon(split_shape), Polygon(remaining_shape) -- GitLab