From f94c0b61859827f9f67a7a8f2d7cb09d67c12c91 Mon Sep 17 00:00:00 2001 From: Sara <sarasdj@stud.ntnu.no> Date: Mon, 18 Mar 2024 19:48:38 +0100 Subject: [PATCH] dix: coloroed map on app --- app/lib/pages/widgets/cloropleth_map.dart | 41 +++++++++++++----- .../__pycache__/get_relation.cpython-311.pyc | Bin 6692 -> 5761 bytes server/map/get_relation.py | 4 +- 3 files changed, 34 insertions(+), 11 deletions(-) diff --git a/app/lib/pages/widgets/cloropleth_map.dart b/app/lib/pages/widgets/cloropleth_map.dart index 55afa8df..632a504b 100644 --- a/app/lib/pages/widgets/cloropleth_map.dart +++ b/app/lib/pages/widgets/cloropleth_map.dart @@ -7,10 +7,11 @@ import 'dart:convert'; /// A class containing thickness data for each subdivision of the map. class IceThicknessModel { - IceThicknessModel(this.subDivID, this.thickness); + IceThicknessModel(this.sub_div_id, this.thickness, this.color); - final String subDivID; + final String sub_div_id; final int thickness; + final Color color; } /// ChoroplethMap is a stateful widget that contains a choropleth map. @@ -30,6 +31,7 @@ class ChoroplethMap extends StatefulWidget { } class _ChoroplethMapState extends State<ChoroplethMap> { + int selectedIndex = -1; late MapShapeSource mapShapeSource; late final MapZoomPanBehavior _zoomPanBehavior = MapZoomPanBehavior(); List<IceThicknessModel> iceThicknessList = <IceThicknessModel>[]; @@ -39,9 +41,15 @@ class _ChoroplethMapState extends State<ChoroplethMap> { super.initState(); final Random random = Random(); - for (int i = 0; i <= 60; i++) { + for (int i = 0; i <= 120; i++) { + int red = random.nextInt(256); + int green = random.nextInt(256); + int blue = random.nextInt(256); + + Color randomColor = Color.fromRGBO(red, green, blue, 1); + int randomNumber = random.nextInt(21); // 0 -> 20, NB: temp test data - iceThicknessList.add(IceThicknessModel(i.toString(), randomNumber)); + iceThicknessList.add(IceThicknessModel(i.toString(), randomNumber, randomColor)); } } @@ -54,14 +62,27 @@ class _ChoroplethMapState extends State<ChoroplethMap> { MapShapeLayer( source: MapShapeSource.memory( // Map polygon widget.relation, // JSON coordinates from server - shapeDataField: 'properties.sub_div_id', + shapeDataField: 'sub_div_id', dataCount: iceThicknessList.length, - primaryValueMapper: (int index) => iceThicknessList[index].subDivID, - shapeColorValueMapper: (int index) => iceThicknessList[index].thickness, + primaryValueMapper: (int index) => iceThicknessList[index].sub_div_id, + shapeColorValueMapper: (int index) => iceThicknessList[index].color, + ), + //color: Colors.blue.shade400, // Map color + //zoomPanBehavior: _zoomPanBehavior, + //strokeColor: Colors.black, + // Shape selection + selectedIndex: selectedIndex, + onSelectionChanged: (int index) { + setState(() { + selectedIndex = index; + }); + print("Selection triggered"); + }, + selectionSettings: MapSelectionSettings( + color: Colors.orange, + strokeColor: Colors.red[900], + strokeWidth: 3, ), - color: Colors.blue.shade400, // Map color - zoomPanBehavior: _zoomPanBehavior, - strokeColor: Colors.black, ), ], ), diff --git a/server/map/__pycache__/get_relation.cpython-311.pyc b/server/map/__pycache__/get_relation.cpython-311.pyc index aa9d38516dd833f6e5af95e22894dbd1ee066866..5fa72e24fbe220c417ab4c9ccf18c4749e3298ba 100644 GIT binary patch delta 1264 zcma)5UuY9a9G=-^x5;ic*=*A$ZQ7_wYHhWJUaOH_Jvgj)8WlVc|Dv^IVo7PUx!Em< z>|VXM!ue2`2Pxzr4@WJi=n;f_xQ9EAgL_bDG;npHD1vW31W~B>bTeC48}-2-yWe~> z-|sj3{dQ-68ToM_cvF@|K;!OD8+oYy8cad%rMEf^pTl`Sm;#m``7F`o$H9fSmSl9Z z)XgxZ>5$8(6_+7jhf6^d_b+n*+@kkpe8x`DN4ojw{0D`XIV(VI$wtcE3IJ0w((h-@ z55g1FXsfHfH%c2iXa$>W1V3eXzgzl2D!--Ak1d8wnf%E|3!!C5yQcSMKyZEB=y7M% zxZJE;3KEUJExOpOn*k)1Ia8T#b8}Fj?6Jb8pFNFi@S!dUOcC){WdJPk`hQ3^{U})G zEY$>+c2eUa?dT&<REjbwh7=TTetUE`P>C^-JQiA|cRg1+=~`QF#<c;!beGFbwb^u~ zo7HnjC3m?lGSSikTdPwoKR_O{(?AZ0=V1p~5=VuE?U^be@<cShz}j39*}h!9Xke{? zY$2y<80ofH&<jP~m@MY<*h8yvkb>>e4NM+NmtZRy41A|xW(7x?;x!60d2%O^fV;_q zz&K3^%k5;h9FY!DnH_w+!jY`}I_(YfzQ#_VsMiiZ3#-?%Yf8KUB7Dq&1@9XHs8P}t z8k=8BY+v=o*QK^a^z*khDP5P+4dC_fU+YYi2kM=J4Zz7?I<P3LCwo_fmG5u+?+w+G zd+W))_vd~)^~cx0pZy2cGTC}2ySn4(VsK4K{j2mpQu<fEswty&WpvfK*5k?5)V^9g zQ;%mBjx_|(mUxlaAyoR8w6a$HI~3<scIx{i{0$xO7=t6^Rrt8behtjvboGcD;NW3$ zDzYt(_poK2K`(=y415gI<VK_?b%N286m*ueodpiFwOuY~)u)jmZp`LOxKK1~PSf#e zs@X#RN<lYtoMaQPR>~Lgh(pobY^l%dB;hk`m$M`r?c;Nl&XX(A*Dyh5W9Nr$Pie-m z1w2_q+N@KGFS6_b2JAyQ%{V@6FDm2=oFf~tZa72QI~IDf5FUb+Tmv}d)5AIPSI6Z4 D3jhZ= delta 2153 zcma)7U2M}v96viw>LgB@kH%?QNJB$EvOz})D^jVLpkL6bXwXd>6vRT#Eh+ip>@o&6 zEfdo+DQMk{v_9~V2h>%9NlX=5A9&zxuSsR8m8D8(5)V94X>6MI(%m_@BOTgyvVZrx z`+wf~f9IQf?;UV|?{YZ+Za?Y23*UNwbVn(ApKU2l{X$JZ_7;$>17HD*?-L!PDRyb6 z$pL`&1qw^?TWu7OT1*bWl*i<?KF-nrC=SIbJ4;@*LN|0l$96Ze9XcWR1syUyfB|ss zw8BAG$%jn>Egf3|Fx6mk=!W$R*!g{0Jwo$46qmG>8O|nPs>$3GPZa1<kc6L+ow5sh z9(Wfl*c89jMuFm)n$<L#lG@c!U=k>9=vL}w>l>0@RX8bbS^|J$H<_cUW`oUOgzmpr zTEl(S^_V9A;cB}l>uX-Od77XV4^G@Gb2C#rO!u!c!b7~>{fe(9obP`p=7awp*e`oa zHZvwrb=t|x{_Q1D9FPvFFPNrQr2+codf5XT?$UC@RM<3xfx8wZAiGO8@)h^Uf$bjT zdT71o!nIakT!XyqhQYhE!por4LJWA=_zwe6iV#sF48f+_ji&&%+eL)x*H*u?)l8xk z#dCp<<K`IGS)0jazBWLqo!HZ`S>3cosU1sE+YM?a`C5qrD>n7x_t#zw-{HcN!MR3- zswv|weVLl19)Q{q-_XU-7>H3Z3OTWh7_D0-^HAr8h1@_wN(`YyMu^d<9?Nt_N~Hy_ zh|dd%M35JE$cI67)wRw<FcCX3%z`pETzwuMxIL!1b}lldD`i(##nq*`y0(Ofq<yXZ zgLF=kQrXF_uCB<37gJ&+llUwmB`ygOF_#e{QYs^0(InQz?T`1K@5SBoJ`C6DqSt%( z^;}gD$)_W=xw(lm%;vH}%%anYtGaz6kra}-bPnlu0Zvw_x==SxMOB*ZwRIpK8>&ZH z`J+5aWhLE`PfI#0PG895oJ8Fr3ex$6m=}_gZkx!VOak{Pk%hU8UPpRjW5@e6CZLoc z8r!Ec#8zj-i@8tL$85-f+&BgzSA@F3enJJ+llGINx|M9Cs9PpdlZYH8L~aV5t2#e# z<c!+M{4O$YOA1*@K)N60rn69hSRsdS^n`??9#$*%0XB&BBDkp`M~CxcJRo<pc+{f4 z?|3<51FmBf-uLB07%JSb#tqL7K4a`<$NmZv*O+*ji9d6Di|Mbj#q7=D+5UoWjj??> z`uXTww8HQj!<QL;!v?(k+=Y4HoN$NR0JL?Ss$zjz3r1Fh9V@|(A8ZfY4=*owRyzB& z&i+bpKno5Oxby3*v*?<GcQO@rx5n;XWn(LBZ1L1`UwQ0wnT=K0Ga7rQY&^f&fR(*< z?B>X=k=YR((&L*w_SEZ}9a-}<&mWyf^MjhFbp!aUjRq8$buX_boqaP;!;v!Eyv8@( z$!PprI5Yb}0}4ay;b>`SvHRZf#mkj&w-)Yx^zJhMgnAr$a-<R;(&9tqox_C_Yh24J z*S^BFmu^(J9*yfM8_#+$TyEK43C6Wxyujgv0^z6O&b8Lg4XdTuy#WZYAk?<h!`W#c zsm+)ZoyHv+C2&?f=^l0LA(X(_(xRKAsd4p@r=?YQq{LKKloHvbfXFdM`v|;4fF-b3 zec@?~CJ80wFA^Q{jbEL-ZXzIXY3ZQ1o9;#XG1uvwh%OOg6RxI2Nkngx0h7xMSu|)+ zIGxGI7()rA@eInS_xv&I6-=+IEB==hum0RHegctS5IRVJ*rCf9bc-k<M9RxpjuBmF xU@9pgVvg|535;WH+zo%SeVH7bP78<84OI*j+J-1<kSZlNfI;5eol+xw;xA0-<MRLj diff --git a/server/map/get_relation.py b/server/map/get_relation.py index 5a384e04..0df98873 100644 --- a/server/map/get_relation.py +++ b/server/map/get_relation.py @@ -28,6 +28,7 @@ def get_relation(self, body_of_water: str): # NB: implement body_of_water divided_map.extend(combine_grid_with_poly(polygon, lines)) + ''' ####################### PLOTTIND ############################ tiles = [gpd.GeoDataFrame(geometry=[tile]) for tile in divided_map] @@ -44,6 +45,7 @@ def get_relation(self, body_of_water: str): # NB: implement body_of_water plt.show() ##################### PLOTTIND END ########################### + ''' features = [] @@ -62,7 +64,7 @@ def get_relation(self, body_of_water: str): # NB: implement body_of_water tile_feature = { 'type': 'Feature', 'properties': { - 'sub_div_id': sub_div_id, + 'sub_div_id': str(sub_div_id), 'sub_div_center': center }, 'geometry': rounded_tile.__geo_interface__ -- GitLab