From 437bccaecc2abaaeadc54d50cc164a0da42137c4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Albert=20Gallego=20Jim=C3=A9nez?= <91949040+AlbertGallegoJimenez@users.noreply.github.com> Date: Mon, 29 Jan 2024 16:54:29 +0100 Subject: [PATCH] v1.1.2 Modification of some plots in the dedicated tool. Basemaps from the contextily package have been added to the map type plots (i.e. LRR, NSM and SCE). The numbering of the "Plot Results" tool has been corrected (it used to say 5 and it is actually 4). --- README.md | 4 +- requirements.txt | 1 + ...alysis Toolbox.ComputeIntersection.pyt.xml | 2 + ... Analysis Toolbox.CorrectTransects.pyt.xml | 2 + ...n Analysis Toolbox.PerformAnalysis.pyt.xml | 2 + ...ution Analysis Toolbox.PlotResults.pyt.xml | 2 + src/Shoreline Evolution Analysis Toolbox.pyt | 13 +++--- ...oreline Evolution Analysis Toolbox.pyt.xml | 2 +- .../computeIntersections.cpython-39.pyc | Bin 5677 -> 5815 bytes .../correctTransects.cpython-39.pyc | Bin 3636 -> 3882 bytes .../generateTransects.cpython-39.pyc | Bin 3923 -> 3964 bytes .../performAnalysis.cpython-39.pyc | Bin 5139 -> 5580 bytes .../__pycache__/plotResults.cpython-39.pyc | Bin 0 -> 4388 bytes src/tools/computeIntersections.py | 2 +- src/tools/performAnalysis.py | 2 +- src/tools/plotResults.py | 4 +- .../intersect_lines.cpython-39.pyc | Bin 3011 -> 3056 bytes .../__pycache__/plot_results.cpython-39.pyc | Bin 10671 -> 11876 bytes .../shoreline_evolution.cpython-39.pyc | Bin 3552 -> 3597 bytes .../transect_processor.cpython-39.pyc | Bin 2894 -> 2939 bytes src/tools/utils/plot_results.py | 42 ++++++++++++++++-- src/tools/utils/transect_processor.py | 2 - 22 files changed, 62 insertions(+), 18 deletions(-) create mode 100644 src/Shoreline Evolution Analysis Toolbox.ComputeIntersection.pyt.xml create mode 100644 src/Shoreline Evolution Analysis Toolbox.CorrectTransects.pyt.xml create mode 100644 src/Shoreline Evolution Analysis Toolbox.PerformAnalysis.pyt.xml create mode 100644 src/Shoreline Evolution Analysis Toolbox.PlotResults.pyt.xml create mode 100644 src/tools/__pycache__/plotResults.cpython-39.pyc diff --git a/README.md b/README.md index 1345f98..f80e05c 100644 --- a/README.md +++ b/README.md @@ -42,6 +42,8 @@ Check that you have installed all the required libraries used in the toolbox. Al * ```shapely``` * ```statsmodels``` (from ArcGIS version 3.2 this package is included in the base ArcGIS ```anaconda``` environment) * ```cartopy``` +* ```seaborn``` +* ```contextily``` In terms of data, this tool relies on the use of the following two files: * **Baseline** (Vector - Polyline). This is the reference line used to assess the evolution of the coastal stretch. It can be digitized manually by the user with the help of a background orthophoto, it is recommended to place the baseline **inland**. The baseline must capture the general orientation of the coast. @@ -51,7 +53,7 @@ In terms of data, this tool relies on the use of the following two files: ### Installation 0. Make sure you have cloned the base ArcGIS ```anaconda``` environment so you can install more packages. More info [here](https://pro.arcgis.com/en/pro-app/latest/arcpy/get-started/clone-an-environment.htm). -1. Install ```shapely```, ```statsmodels``` and ```cartopy``` packages if you do not have it installed yet. +1. Install the required packages listed in the *Prerequisites* section if they are not already installed. 2. Download the content in the [src](https://github.com/AlbertGallegoJimenez/shoreline-evolution-tool/tree/main/src) folder. 3. Open the Catalog Pane in ArcGIS Pro and open the downloaded Toolbox (.pyt) to see the tools.
diff --git a/requirements.txt b/requirements.txt index 4e34f5d..31403b3 100644 --- a/requirements.txt +++ b/requirements.txt @@ -2,6 +2,7 @@ arcgispro (software) 3.1 arcpy 3.1 cartopy 0.21.1 +contextily 1.5.0 matplotlib 3.6.0 numpy 1.20.1 pandas 1.4.4 diff --git a/src/Shoreline Evolution Analysis Toolbox.ComputeIntersection.pyt.xml b/src/Shoreline Evolution Analysis Toolbox.ComputeIntersection.pyt.xml new file mode 100644 index 0000000..49ddda9 --- /dev/null +++ b/src/Shoreline Evolution Analysis Toolbox.ComputeIntersection.pyt.xml @@ -0,0 +1,2 @@ + +20240129115315001.0TRUE diff --git a/src/Shoreline Evolution Analysis Toolbox.CorrectTransects.pyt.xml b/src/Shoreline Evolution Analysis Toolbox.CorrectTransects.pyt.xml new file mode 100644 index 0000000..2d9931b --- /dev/null +++ b/src/Shoreline Evolution Analysis Toolbox.CorrectTransects.pyt.xml @@ -0,0 +1,2 @@ + +20240129115826001.0TRUE diff --git a/src/Shoreline Evolution Analysis Toolbox.PerformAnalysis.pyt.xml b/src/Shoreline Evolution Analysis Toolbox.PerformAnalysis.pyt.xml new file mode 100644 index 0000000..35106ca --- /dev/null +++ b/src/Shoreline Evolution Analysis Toolbox.PerformAnalysis.pyt.xml @@ -0,0 +1,2 @@ + +20240129115304001.0TRUE diff --git a/src/Shoreline Evolution Analysis Toolbox.PlotResults.pyt.xml b/src/Shoreline Evolution Analysis Toolbox.PlotResults.pyt.xml new file mode 100644 index 0000000..4e46fb0 --- /dev/null +++ b/src/Shoreline Evolution Analysis Toolbox.PlotResults.pyt.xml @@ -0,0 +1,2 @@ + +20240129095749001.0TRUE diff --git a/src/Shoreline Evolution Analysis Toolbox.pyt b/src/Shoreline Evolution Analysis Toolbox.pyt index bcccdf5..37172c5 100644 --- a/src/Shoreline Evolution Analysis Toolbox.pyt +++ b/src/Shoreline Evolution Analysis Toolbox.pyt @@ -1,22 +1,23 @@ import arcpy -# 1. Generate Transects Along Baseline +# 1a. Generate Transects Along Baseline from tools.generateTransects import GenerateTransects -# 2. Correct Transects +# 1b. Correct Transects from tools.correctTransects import CorrectTransects -# 3. Compute Intersections +# 2. Compute Intersections from tools.computeIntersections import ComputeIntersection -# 4. Perform the Shoreline Evolution Analysis +# 3. Perform the Shoreline Evolution Analysis from tools.performAnalysis import PerformAnalysis -# 5. Plot The Analysis Results +# 4. Plot The Analysis Results from tools.plotResults import PlotResults class Toolbox(object): def __init__(self): # List of tool classes associated with this toolbox - self.tools = [GenerateTransects, CorrectTransects, ComputeIntersection, PerformAnalysis, PlotResults] + self.tools = [GenerateTransects, CorrectTransects, ComputeIntersection, + PerformAnalysis, PlotResults] diff --git a/src/Shoreline Evolution Analysis Toolbox.pyt.xml b/src/Shoreline Evolution Analysis Toolbox.pyt.xml index b05ffc7..8436fbc 100644 --- a/src/Shoreline Evolution Analysis Toolbox.pyt.xml +++ b/src/Shoreline Evolution Analysis Toolbox.pyt.xml @@ -1,2 +1,2 @@ -20231121191525001.0TRUE20231121191525c:\program files\arcgis\pro\Resources\Help\gpShoreline Evolution Analysis ToolboxArcToolbox Toolbox +20231121191525001.0TRUE20240129115229c:\program files\arcgis\pro\Resources\Help\gpShoreline Evolution Analysis ToolboxArcToolbox Toolbox diff --git a/src/tools/__pycache__/computeIntersections.cpython-39.pyc b/src/tools/__pycache__/computeIntersections.cpython-39.pyc index ab4b4c3e806f7a4b6dec2a6e1d54aeb9723de47f..856e01fd36b3c86ad58559bf114f20ce8d0c0b08 100644 GIT binary patch delta 1331 zcmah}O>Y}j6n%GQVvi>t&y2rfr=fOPltv^dNh?aBs35r#kx&Y0pdv~Yg}!GespG+( z7f7Wy^1?_#NEN1osMy(vML}gzS)yAOh$V|IjfA>J`~WsZy>A>GLxS+gSMTHc+;h&o zE=bb0yp zHSh16S@xk@-Q`eW1&nJA%&eMn1R5;rs{d(+ij?yIi^H;ZlnUwig97I6hDb_ zb)k2m*@i|t)Q+2>cKwKUeMGx~Ug)2Yp%>wv+SD2GMnCXo69ps>yjk)sJ|V0Y@bpck ztu&q$R;fv@Px-0PvSesk>d>;bQder(@GkXlJ5lW)N7O3b@~GMh@zYp57dB>fP4P2+ z771jB1is_>B|a$+T7V```4b}DIUzDs$rFrfo|F~o3KIDgiTu~y=3(Q4{rD@*lyLsh z7^VLB2vyZv7^S*T%0Sa7Qpa9Q39XBKTHxoxS$syiEj0Y*XokjU_I4CIby5xqw$eNp z8FUP(?#jh^3;|e|&isG=S7Cne$ZDQGhs*w0d5cx)x3C%w{}dKWgCaxx`@u){ zgK3$%s!5i|ariOB#4vp-c-tvYMlSDddEDzeC01pet?z8qHY#j~)p+oO^B5L-casIk zy()ht>-3{+kKNeiY!x@&o#2;LVa5PM(Ln*_uZU`^Nr=Nsss>5WAqO+6p~S(!_29mj kNyh+w4horSWLtvX3_i~+KsER&b2f589;kRQ5u~&Er%^{e`2YX_ delta 1139 zcmah|%}*0S6rZ=d(CxO{?ruM5`H-HBC`LX6jY8zWg~T8cf{{QBGD~SKY-ra6<7}Ex z6TGM-L%h-&FCIJ)4jMlaqy7P&@nGaH@N7cjo29{`Chlb4zS)_5zmGTj>g>yIeO}i! zg4gz&6ZZa&egGYpMla1y6rFqag6m|ab0v3v(kaYNIZolWv$lI(I)Fs$`24b+aTYUU zqnXJir)U>)EB3CfJa2+8T+=qnc{LxT8Vk@63)Ao;1&B-XY8BtGW~$d@e;%raaYrNz zHR;KDFT(VyUL&JquGNdONHs#E)ObKxG#?!$6{rD_)ekoa4Jt$-6|Asg^pet#9s>Tj ziIGa4fjFUR*$_Z};UO#>!J;QU6N{Rzg)p%i7Gy@6;0`Ry3@TqBp0Nq5@nZm1FWH3B z^+pIc&O%J9NS-AG`6AW7M5^Tml|r@pkQ}M@=hUQDg9~cig(W0w)m<3(qHcmkE8tpp zq)jOPWaz_OyBG7liTU2detU!D_g0erTAb$oFb)?#|D{YSoo-Z?C0-oClYR?kW+gA- zC6Pd~PCzQIyDe@?%q!p%X<_kdns0{_f!hdN&qE_eO)&V^@a34v%wrx)tFQTYJyzBl zu{X#f&;&|ST~cjjN(~Vz;H7+z+k|~g!8=8hG)P+>1@QQ^iwQM-aYyiWSNCq+RLiEb1|L=e5 z@8`ot8T$EqBhw^`yx{xBPFFu>GfLKWmj4Cx-v1CoS0{gGF7jdP8}#mW#5&>DkXRCo z_5${ry>QpHXK+$_jDg6iq`~1(#8dWj*^)I$1xbv9X2p;#2*aSPfCVa~p!?YB?shx~ d@QJ@j6q>VGvbe%w$k&qtzW@@1|1SUl diff --git a/src/tools/__pycache__/correctTransects.cpython-39.pyc b/src/tools/__pycache__/correctTransects.cpython-39.pyc index 79bc4f545905ccebc437b9f295cda0d5635591ea..4c334389bc4aaf3274b38eea3dae50deabc4296f 100644 GIT binary patch delta 497 zcmY*VL2DC16y7(p+3e2lj= z{Z9UXyZzQ`w-e_@)P9`lcr-}ksFP)*?QA#d+}~{7-dykIe>=^1CmW56L6$a)6Haqw znQk}N4^c8)vsFbodzA?*tRX001&XUs$=`3>z|c;>@LoloGJNRtss;=*JmC}D*lnv( z!|&`XPWe8Zo3`v*45H~vX9i#aUsaz%9UV7?pE!1($e}-RioiIAKWAX!zPkt>esCAA zhldterg|Vx;{UvY9gs1NC=zx^I^~mTfPr_3ELOY(-r{R-5jOC%cL%q;8%z2s?Mi$9 zpxm8aCg_&QHG<>HdYX*l4Vt|s&cZC#Mf*%RNOxjg^!jBhKW6HY<~SBhcqGn4gx|#0 ze4Vrw6Ck;S8JOb&T<$ROr<$(%HK5P#1-r!m60G?t(Q{dfY?R@H+6Bt=#S$);(7ThEuiT?J zEbN@rVy6-Yd)r|c9ENpVBv@j?5aylHAhG6yNDEs~!NtJ;jY{x!4`X=R(mg2%v{tRzZ6Uw5U@}P)WYZ5kb#ab`)jB?cr z+>PQuk6k*!g+hpD(JK6BoW6ERh{4iE5InevV%;v-x0BZQ%;5; zPrCEz3_uRcc3mkx>=HXrf*SA3DC&GSGp4p^ybsfTn88!NY~>p|(6Ovk7q7a;sUzD1YnU|^%lAoWGlwY9` x;veMV8sr#L43p7KEz8d-Ey>K!(=CCh(KXZq!kFTsm1im)_eT)?L diff --git a/src/tools/__pycache__/performAnalysis.cpython-39.pyc b/src/tools/__pycache__/performAnalysis.cpython-39.pyc index cada5f089c7f1d0d54cce632642512e049d0fc8b..37ad74ee0ab43a960c9fdb0ba3ac9a5a5c233336 100644 GIT binary patch delta 1600 zcmZ`(%}*Og6yMpkjqSCKu^}-bC7U=jI24!9(o#x9v8y&R1lcrAEK<672YcQ1F3hY6 zSc_1S_EafNH2(nfP>CGUrc~;!Qm<7%4!vz#sh0|INv~B;o!JG4L}FL_o43FBF>l_y z8PfYxUqlXvgB*P>fASqXpLh~k1>=p^=O9`(P)#x`P|B$~l#!H&Wdt!+4PBbjWo-ki zSfVnNOBKmPvW{WNOp`lcY$iaX{r6F3d|@79Qz}#p1T`8%nl}t>$yk@>ujMn@{L}(I z()7bML#vxKbie7^^be-#yMR$??+@@Z0DkgF7!p}v z{AO@dw0zqgR!jAi6}0@zd?&XZ-Qjis;2wb0FF)XvGak;v-4g((#|9~f{~~RH2a=N_ zgA{M`=>c0n#%*^+Zt~=Zz&D_Wn89RnxS1Q<9@{^m$+aa#p3E@5k3u6weh(zcpTPil zjqC?A!$Xuz@rY;Ue0~UxG0Qg?xWSn;PT?IUun6c)@}W2chR8!P-hGnwyN)%vDUOXE zpTLu!DP&Ka;%ak>x7ZXT$32C@^vRC7rsE`YtUTv9TbMa<#@VLh6)MfzzRb1v-_B)I zr)_af*6MHy&%<>SC8*No71<6IXj7Le({+Rmghog@Tmb##Zg?;N^?D5=*@WatIPP;h zi2N9?CV^^$MYontRh@llf$OkTHzC_DoFlg)?|Gvj3MR-`kxQ*1N(zS`?gr%V$oGon z*^VpW9k3}X5lgHF7Tc9pXY5d-&Ui{`bH>wUPKkX1m|RU%qt#Bu+sReWEOsgJ=efnR zH0Dc|$huEyFL0?2vfFwCTqJxnJL)tWKy5S&+8e!eu)UhR0nsi%*XiG}-ndMEON{Cx zR&y z(gUN7#4J78SS{=7vRaaLvw2^nJO_7KoazxAC`@7#%%-~06ssOekk8ugdr_W}b_T!v-_E~~oAt_{1T0%b+j%f(n7!|ZxVtFw!$uu)qwv|=kfBBnK&>Wh&kk&~C; zaf3sT5OzFstWMbWmJH26w$E7;K4*JxtBP5%!}xd#snFqNLvF@;K#^?4dInLErdkx1 z(8oogq}JS0FH#OUts|}&*vz`^!z}R#`6c#pTnGw&!4KG*05KuRH@e83Xcvjadxu5l ze2#&{-~xjrg9QekGH}lNGYFDeygPXbu`Nsm-2V5i$hsn9G(tJsOWS>A16?JL<74S( Zevag%>7S?>N?n7KfSO}=9^B+Y{Qn$qeboQ} delta 1164 zcmZ`%OHUI~6rMYM&-4XtMSSqEv@k#r3SN0lu8kaqRG%1d00B-PRqkgS1yf; zxqkp$m|&t&apMO40lIKI8#lT$F}l=^b7rt0Nhg`_o_oIY-SfEjV;gDl3LXzb>EB%H zr1UNH+PjQsjUw+5-vsX8e7tWah2?cAQ;-{`7LK^0Vud zc+5&!srwd0<*K`=4WxV}IoC#mQ6>OKYjj7aX2J5R*_GJ!M^0JxmyPNMhD6*u7Dr-i|+0H|@ z`TvB;^jO7Y$+GZ*ZY4E)eEizrXo5SUu||Ivl}Tx>fNOP9qeVe;rzHVr=7)+{kumNi z4?JnqLB4ppYKnPLC`c3Xs%FW`8P2`;v`Eam$k{S-F;~E?kj$8_F=yk-9MYPUDHbHC zSV@uh-b*ek@*^iYirR_C*X)BR%igbipvaJK*DiX}6z3(9e;P%|u0PQShjIv4!$MIs;h`6&#P9NMPM=jkun%tAd*}F4}!av zJgt7jYAz{PT#~TfHt7wtcx*bwvH$x16Nn&G?CR{l)MNIce^2|0iY2e4A2B{6F>zp=C}_miH7RJ9EMSGF7v|dc_AkX3hvc? YnoX}YzmBhvxe)K)*BKT|UWV%a0*L+c^8f$< diff --git a/src/tools/__pycache__/plotResults.cpython-39.pyc b/src/tools/__pycache__/plotResults.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..559a88216f6027237f8d10df08a13b9d4aab81df GIT binary patch literal 4388 zcmb7H&2QVt73Y^ET9zH>1KA`95VpJMT16tH+bjySu8}m(1}+lUu)SMAa7)mfkwlv! zl^H6r3Hef|x9*|;feo}kbLqAJ%UpZPxwrPP{k@??$&S0bCBerb=j(m`-kV@yp>E(x z-u{FC?1o|dlRjoI2Op2|$Yl^_Ff%sV^tNKNZ?!Gccy2J8Id2W-aQnn=JIvfRnw9q$ zZEQ46wXhkdSr#STFS96?A^o1cEPOo1BVT}Uqir&yZ84KsZ;iHHEQ}>9tcvdnt1%bv zDw|_cPKa(Ng{3p&^Uu-mORf&T=9;0 z76!@IFj-H26@&*}kq#5~&Qy-%ap#>O<{;O_(==*t`y-e{gJzasX|+WBjx&jlth{DS4fdn5W}jP zRWrXaqxsfk&^Z&(j2a$of_*eHW8WmZlg-KAUssMzR_mH0bKml9-Rr{c(_V|!(QB2x z@CEq6WUkE?*_Ez^5w`D)Fm7ab?PF&|W?jnfj?Fp<1T2|x;W4svM8eDb{(3SP&Zta! z>j}n49#X%znMO$_y)Sr>!FFmrs%+(vKirzW@s9Xp6`8DOn-Av;n zvU`5#;2AK3Q(c)dt$(y{O@B;y84s-jzSKbF$#Bn$irdATRVjm6bl!Hsz>t0c*c*>EeWy=E5A9* z+;m8&yJ-k6YG20IUtgvy>KtjXdQH}qUXUzF3iQSK4&cth=(7Dsb0#cD-7Zo0z(rCe+^Xx)78txdV$17Jn_O_kaV%i zhStP8OS_D?2U#wvW@$LU_PjK?Y++ELAm_aGE)M)aO*Up~>s>=*1Pr=uoFWyRnI;k& z(89_8IHR;amon%=PoY4-L$bZ2Qaj#^R-g}$2Vqa!zLd1o?Eh3$&>=LM=zC_x)_byP zzWTJs!vjx7-6ZNnNB|+97zwyfK#_F4GJ?G2O>Jdw#e3L#_<6HM8TqQ@*>3}pVC2g} z8u3FceNn}Wh33XXbSy~l??)@67t)`N1J6b#jqwQ)Fl*{~e7&$@|8!jh1!W zKnoDfY_!bd3PJc=V^mo)PVhA{POVX8$n23bvXL6BYTyFN7enx2!+Ad zFc;cY=3jk2AAWOC_h1JbtzOGf6w`8m)r~n4Q2!em8S)|3@*|VN`NWi;WacSqJPNK1_5F$Y2Qx$PpMYi+dY_mFw)nLk z<%~x;(^0H)V2PgYt&V%E)LWbkGIPIrS{qqxu4|rI8bIt~RZ#48%MgFjb9It%tI!dLDo{i1C;zl9v}@5;mq0^Iv2D)Km%PVLoxC$ z2(aMBv6(?TnVDG~>%{sBkoL-A0F0(dWj{)QD3KY#ys{Cns?v$mAQMf@zUY;6D_tbn z!+}`sQSSqg{IglBT@s_fhzVFsCg+dV6U}@nthc^)AGw+GPN|6XwZiF=VIR>O;>fd2 z=b18wvTeH?WtQ+a(VEwEzZrF6s^7q3(tQQUo~yYEC&u{=>r z(-KrNDO;p(F6c?zN5>l)s5SJ{@2{Z}fYtnjS-@QW^#9Src*%P3Q0wv)LtT9 zOEe}hrsH5is9+XU8i#n~9T1~(4dCV4H#BW%ddFPCJHPiG>e*<{(=m|FFut$qzTZ#T zFs63H_g@Wzxabj7j|-2;4~TqBu{6V`W?1uTql0WOmq1+8t-AMI2ejsX z>{bNz;&efZ!`Xq3sVy90LCJ~y@gZ90B2`WI_ThMX%4It#ccox|m7rMCp03%j{tF)v BynO%w literal 0 HcmV?d00001 diff --git a/src/tools/computeIntersections.py b/src/tools/computeIntersections.py index 9f14178..3bfd39d 100644 --- a/src/tools/computeIntersections.py +++ b/src/tools/computeIntersections.py @@ -29,7 +29,7 @@ def getParameterInfo(self): shoreline_param.filter.list = ['Polyline'] shore_id_param = arcpy.Parameter( - displayName="Name of ID Shoreline Field", + displayName="Name of Shorelines ID Field", name="id_shore", datatype="Field", parameterType="Required", diff --git a/src/tools/performAnalysis.py b/src/tools/performAnalysis.py index 432ad2e..adfdb8b 100644 --- a/src/tools/performAnalysis.py +++ b/src/tools/performAnalysis.py @@ -7,7 +7,7 @@ class PerformAnalysis(object): def __init__(self): """Define the tool (tool name is the name of the class).""" self.label = "3. Perform The Analysis" - self.description = "" + self.description = "Perform the Linear Regression Analysis on each transect." self.canRunInBackground = False def getParameterInfo(self): diff --git a/src/tools/plotResults.py b/src/tools/plotResults.py index b695d67..7652a05 100644 --- a/src/tools/plotResults.py +++ b/src/tools/plotResults.py @@ -4,8 +4,8 @@ class PlotResults(object): def __init__(self): """Define the tool (tool name is the name of the class).""" - self.label = "5. Plot The Analysis Results" - self.description = "" + self.label = "4. Plot The Analysis Results" + self.description = "Plot some figures to see the analysis results." self.canRunInBackground = False def getParameterInfo(self): diff --git a/src/tools/utils/__pycache__/intersect_lines.cpython-39.pyc b/src/tools/utils/__pycache__/intersect_lines.cpython-39.pyc index 11a22c90dd9ff85ad22125fe921e1b822a724730..c951706bf7bf72c1140279e00da98360b617b8b9 100644 GIT binary patch delta 94 zcmX>s{z05Ok(ZZ?0SH=p=WXPk#N?9ZVigmTT3n(KoRMFYnvJO&nYd*%+J#;fvC|n)C0oJTbTGc0k%XRo&W#< delta 49 zcmew$epsA4k(ZZ?0SMe?G;QRb#3XL%Vii-8T3n(~oRMFYnvSjYkQqKYwyN8YkTdT*fISP6%?ygS|=%`E;MoFbnA4P-8){- zdUnUXGfsBhF&45Z4T@2cE7F1lbqX&Ll%HB@5kZhbUnmlyf~S#65meBK2VVNZk0|Hd zbwY^312dZMo_o%jbAQgyz27_b-hABX?Cg->+4%YE<~vj8;%V}`bK{5B3!PM=#E#dx z3f)8kTDE&;u~qCut+&uy+f&#h_#yj_T3?}0(8S(bOBVVC9kvH*sX~fKX1JQ(-bW)B z3GmyXH%QefiM9)>1E{E=VpFJ@sYtZ*WkUPoTSTzCrlcbh?WR4O67AWL3)-tBO~@?Y zC(p!aVpA$aY40&f-?LMf?^LGC)A!BKny#lETXdLdTXj>LbsW3oG_=`IADupQ^x(XE zU2?!Y>DVit<-L6lq%eZs9j|y!FzK7s*&j3(DrJ76Ab$`e7jul;F4d5x;Fgh8+qU>xBO# zmWwwuqfWJ^W?MDObNL4`jhB=xY?kX4-9=;Bw3}L=iAl<(JH+E-YQ=x?06_YNiLeRvjGBvb5l^n&D~rlZL%w>O9t=tv8A=w3f#KVTebe z(N0<3qUJ4{n(GkFQ2zhQ>A=MFt`i3D<^sVi&} zTow>7APu%3$QFzvbtk}cNZbXmI`J9X@o7G2XTHkz;`zE{oizT7?Q*9a;f z2iP^s3P1;>c{{^jL|rs|4bxB$1rf1TZlD+?mpzQqBPdYW7&L|0&3-C`Y^Ux58lGEF z8%1Yf0cJxBYIBzi!eX<7u-L6zh7UUaGxt@n?ZyG5Sb`*!BuU~YuO|Q3Vt4fJtSqy6 z{%GRfNEQBLOZ@r7aJPk|=+|4!D~XH5+BwmCfkZC=$DIO@l%0R=Nh?u`Dm8=!o=fJ* zB7ZEIB`bV6nIv_7Iyp4JoLMq z*#q#AuFSE*8Vg!*SY{^p;Li2h(PUNW`iZ5!xj;u2rmNsc|kmXdO#1cI5NM= z-yXco1(2iC6ltsP8mafPOS;z!K4+oJl6z*C*kV{Q=o=;>lANvkk z`8ooIitsvn38|M6L?mF4Fb_e5lt|HU^Nq|5`2l}Bqfet#nQ(6dC_T-Fpb0`{XSo^3 z)MLLyxp4EdNWF@%gK!x^cy*oMuchumX9#byD@dUW*^d$MOkh6+2vm1v*|R*`WN#o3 zU6Q%`XFwLB;&>|7oI0!@9VDE>-b6|ikr29v{RaEL+bY%Wtp7{J7uc$NV-L^*d>7E5av+`bjrGJTylh;olg_63VX* z^{;;pbdz+Drf7OgCQ?1=6Pj6)&k}Y)NVMyc)j_YnI^ehaZP2Ew>FPe3r9*UhD@>$0 zsh%bhzTV(=hK_7&KDh`lk)D*`td@LfJL^kTxE8?tde#zt`}UCEgYx4*4*O6xhy>IK z&FxY-I@+SDqkeaV&@q~)`j!G(YIV%ZSM}}vU~ru7-yKS(<8*=^Kn*Iv2{_69;TiG* ze``3^^$czxmZ?C7{HgH|hI0>#s`XbCh#DXYNw{PiTR ziA0QjlN%!g5zHm_E&lnDk3x}pedOpO`xS7mMNm5=v>{`h6;?JGnkjS}p2w_`xQ`UE zG_BtIpy8TOLA0{7VpFZ|cv{KS3`$L^d5$Z2$LTb>C8DJ#q%U8+Ma@$S>ym$lv%6^GoC(d_*rt(f44L#E8nz>Y0B7KA17V delta 2251 zcmZuxYit`;7M?rf*yBfR=YbO^PV6Lhnn{|l{Xs=(C>6AH1r#l%Rl$U2$G#J1oEeWf zGl3+ygpxuLBHgwZ@s^sfNTn;J)vgiZEg^w~5b$$X8m;&NtCjMn5+ET2h~=JZ3J5Wy z`R3en&b@c$eBV9)o%#FialO4gBJpb^`n<8W>ufwj{&jX@|Ek?yj1!4URJIa_@vT@% zyQA1)cNRN^KVWs)-NkNU6YB~)RqPRVo7HQli)kVmZPmVwej3~)+#lkj3{|Hk8WvWB zTTx-frZID%BGL922#v23;q6FFO9v#Hq#Y+E+OZ}V2b(I%5ONDE$Oi+rOIm010r?L~ z&(3|<%y@?D<=lA(49lz;InQw{_GQ~R>1_@K6`Aa2L+W{QEqhm8Av>DW;a6p{xA|3c zEI^7Zlf1ckcXv*fw+LHJ?F`QHLcpKdo2ilHF*L=v+;Uz@ZIWZnGd)j|=>6Q|PIHjt z=8kkmiQa)JC4?foBQr*3*on+gUzI!jpsmA#0e+7&aw2sh&s=`7YQ6=`v!8m@5aSs2ewqqy_16$@B_;RfUnHi9{h!SilMSz z7dxEgql+>;g}KMr`GIv(W|MCL&Fu3P zz2y1{*YIYSJhQxD=_SK*p@C_U%4M$$OWXkup*P_!mT*CLR;SfPzS6_&|Jf^(k6=u$ zxIQs`;=w7lH<#k|I-0wIoNqpt8D z&Y?0VuK!)91t5;j(;WOni!*~(jIv`n074XxV;srW6c7}LQFr&5)SJh-Z0|^T75!o% zt<4Yexr=tqmrKiV3YU%A1~v6s9h|!B$L^aqT`mwYg1_RtClJmdAkFY3!ZQehdQ=6N z2uLyzgcmqyF<-e!uldT2Mu~kevWL9HLV0Z!X$C>KjY%08<}W``cIsSu)PwgiE{LzA zbrIoj2rnZb&){+3Iu;-82dG*0{7}hR5^N)Za2%nDfV9Ia2qzF;le+j+)m^N6re_)O z20D?)-dz#chJ!ab6rW?i8)O#>w~{*hx^VQ$a5dV9R%4A=BSfQ(b{cy=aGJNFdv5aDtMQ7&n@yOu(+G{z z#Cq^}oShs!O0H-B86Dy$_lME+>b;F{wU-XkewtaAiB#)t5Sm?(&k#5*BDu>EIz)$0 zN)4$R+=y&S`=m8;Jkbbmr1{ggDbdcf_NH5V5?@|g=BH)~S3_dq zEOw=Gc9)tB{s|Z&(yT#ly%G9!wu8*%8p&%!#>yY?V9X| z=Jgu23>Pl2?0C;@ztMXEj^aKya^RvbgIiRN96tCf!H;63&GZc0g&|B8y8j1SLj0H5 zsqt)3w58YC%j22rg|H9cELAjxk`B;@=|cMth=6ElmTAKuG4RV7!Nw-^-xKkJa}L( zO6gQ`WS9iy00}56kz4ookx)wMCY}6_DXg$PS?DHxB*O0`SxNmq54UPjMz`;pc@+14 z58*R}ZxMd^o}WJou>JP%#}y})sA)B!_NhZ^UcF8&h^Ur@6i@I&uA!G4sKGzaO-_(y qwtcd{D_YjU<9%w1)7FyY7i?j2fqcdOJy{Ot`81WNB*yknWq$+(l}88w diff --git a/src/tools/utils/__pycache__/shoreline_evolution.cpython-39.pyc b/src/tools/utils/__pycache__/shoreline_evolution.cpython-39.pyc index e230549c125a0080852c64151218167570af67fd..35ba9aebb6222a7f55a17dc7bf55877b9dc4864d 100644 GIT binary patch delta 94 zcmaDL-7CYL$ji&c00b?)^EPq|vbbcqSjB{-7MCalXXF>9=49rjDum?c=OpD9=49rjDwO2s=WI@3S<49k DNRJNa diff --git a/src/tools/utils/__pycache__/transect_processor.cpython-39.pyc b/src/tools/utils/__pycache__/transect_processor.cpython-39.pyc index 3dbc1eab9529c2a0d76cca7a205af56a18b617c6..1c2eca8694e2cd818def293305d9dea812919f6a 100644 GIT binary patch delta 96 zcmX>n_FIfMk(ZZ?0SHK!(=CCh(KXZq!p$v=r#Jx{RUu0N delta 51 zcmew@c20~pk(ZZ?0SI