From 101b0a09d43a515b47a10d08031610e1d0e2ae33 Mon Sep 17 00:00:00 2001 From: Pedro Montero Date: Tue, 13 Jun 2023 21:49:48 +0200 Subject: [PATCH] first changes --- common/Rias_UWWTP.xlsx | Bin 0 -> 238470 bytes common/__init__.py | 3 + common/__pycache__/__init__.cpython-39.pyc | Bin 0 -> 317 bytes common/__pycache__/boundarybox.cpython-39.pyc | Bin 0 -> 999 bytes .../__pycache__/drawcurrents.cpython-39.pyc | Bin 0 -> 2313 bytes common/__pycache__/drawmap.cpython-39.pyc | Bin 0 -> 7338 bytes common/__pycache__/inout.cpython-39.pyc | Bin 0 -> 990 bytes common/__pycache__/map.cpython-39.pyc | Bin 0 -> 2527 bytes common/__pycache__/vector.cpython-39.pyc | Bin 0 -> 2026 bytes common/boundarybox.py | 20 + common/drawcurrents.py | 81 + common/drawmap.json | 28 + common/drawmap.py | 252 ++++ common/drawmap_copia.py | 252 ++++ common/hdf5_to_nc4.py | 164 ++ common/inout.py | 23 + common/map.py | 79 + common/readers/__init__.py | 0 .../__pycache__/__init__.cpython-39.pyc | Bin 0 -> 184 bytes .../readers/__pycache__/reader.cpython-39.pyc | Bin 0 -> 2245 bytes .../__pycache__/reader_HDF.cpython-39.pyc | Bin 0 -> 2388 bytes .../__pycache__/reader_NetCDF.cpython-39.pyc | Bin 0 -> 2424 bytes .../__pycache__/reader_factory.cpython-39.pyc | Bin 0 -> 1974 bytes common/readers/reader.py | 72 + common/readers/reader_HDF.py | 63 + common/readers/reader_NetCDF.py | 59 + common/readers/reader_factory.py | 52 + common/test_readers.py | 27 + common/vector.py | 74 + time90.py | 1339 +++++++++++++++++ 30 files changed, 2588 insertions(+) create mode 100644 common/Rias_UWWTP.xlsx create mode 100644 common/__init__.py create mode 100644 common/__pycache__/__init__.cpython-39.pyc create mode 100644 common/__pycache__/boundarybox.cpython-39.pyc create mode 100644 common/__pycache__/drawcurrents.cpython-39.pyc create mode 100644 common/__pycache__/drawmap.cpython-39.pyc create mode 100644 common/__pycache__/inout.cpython-39.pyc create mode 100644 common/__pycache__/map.cpython-39.pyc create mode 100644 common/__pycache__/vector.cpython-39.pyc create mode 100644 common/boundarybox.py create mode 100644 common/drawcurrents.py create mode 100644 common/drawmap.json create mode 100644 common/drawmap.py create mode 100644 common/drawmap_copia.py create mode 100644 common/hdf5_to_nc4.py create mode 100644 common/inout.py create mode 100644 common/map.py create mode 100644 common/readers/__init__.py create mode 100644 common/readers/__pycache__/__init__.cpython-39.pyc create mode 100644 common/readers/__pycache__/reader.cpython-39.pyc create mode 100644 common/readers/__pycache__/reader_HDF.cpython-39.pyc create mode 100644 common/readers/__pycache__/reader_NetCDF.cpython-39.pyc create mode 100644 common/readers/__pycache__/reader_factory.cpython-39.pyc create mode 100644 common/readers/reader.py create mode 100644 common/readers/reader_HDF.py create mode 100644 common/readers/reader_NetCDF.py create mode 100644 common/readers/reader_factory.py create mode 100644 common/test_readers.py create mode 100644 common/vector.py create mode 100644 time90.py diff --git a/common/Rias_UWWTP.xlsx b/common/Rias_UWWTP.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..d82022564702ad74bc22be692bffe7d53c1c5725 GIT binary patch literal 238470 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±W{!@EY*3Z{nh8L7+*o?jX7v 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%0AL6rU-}J!>^fY3P+sbt~SA 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 literal 0 HcmV?d00001 diff --git a/common/__pycache__/boundarybox.cpython-39.pyc b/common/__pycache__/boundarybox.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..fec69f3f2710d2b9e34f33831cde6a27d0488d13 GIT binary patch literal 999 zcmZ`%&2G~`5T3Q2#C4MXpei85p;sTM5Jwb2en7NRNvbAABC@n{vJNt`y=9%Cv@#MB zd6~Wi&*2ji2OfYMCuVGiq*A)pd^0;c>;1mjb?bEtaEz}4VQB!rXtFtUoV3v52MBLL zfM83s@7f52HUL|nVE)c9aMnVLPY^s9F##j(5ses zSD9&RQp$>Qpcq>KU9|WKLc$W@kZ6c3(Gj)8K-2{wA=a}EMdgZGq)4@*KiH+zh`nIC zZS59R6-)jOx-Xo|*i*4{?g=HGe&oGY{ul4)>CtI#_@?`=ec?QN&W9K6PW$YvPx1MO z;Yq*e3{QuBXClK;M$WkC$5<|oudY**b3gKDoLBIO*hBzU&c2(&jn*Bn$|j6Tia|n1 zLZNY31uFQb@qMNLrq t1VmwjAw3R7EmNeLEGAhNGxJZg%BGR6^=y{;ZJSfGnG=eXoO#^9; z<%F1>S9&p(8DfYzF;5BuBdLknuym@y3AIj{m}G(!2N*PslnycbR#b+Q!VvjW+`x&E z;z2VhK1`J5!`G$R^8xr^N!n1PgSc zrxKs&`*=YUix*l87h25=tvaa=vcS1arcxF^lW8*3#>vVHJ$2$jE-OMOvx7W%TqbkC z1~UR|=ErPiURVtNkIg6twK1awV5GBa(QGu=nSX?k7R`qWdZis0$H@&kjA5WX+I<##@qnHKTsdA<+@tr!7`5QK; zzTK_kGj*34Tw_g{_uV#kkLg(mdi%4PA3pf~`08C|8lpa>w?l zm3NMSOUT-zx!`^Y5FDRzJlALHV`mi}x&dj~ti?yM!K?~qHVK`~@rY5|m$_CLMWKI; z-?$8m4KH-;)LXr4lQa0ls)!amyG1<}(_`I#jh_*<0eUF)ZqR;TW+S(K5Ha<|t>>jq zx~?qj+YU`#mjz1NW0>0ynGZpoh?pJluFYrwN~;z2nr`46P!1us$r#r+Wj2WYZeLbm zP1g$}&uv}l_7#%3k+f#~uGfsh&^vS^ex)@k2c~`mWDcqzW>iktgfw{!zZkI2^j$(c z+Jx-=hk;RErPFr<0FclTP!_v4w%9$ZOql)932hEU0?MuOz6*r}=>aW>xHNpq58BKn z(ikUgUt-6XdWQnx2eErZnarlykl8MC!S@Ut%ORl$c9%-sqd;num6R-O19b!oBnBQ6 zk?R~bA!xSGWr5SEnI=U=Kk}%|bNh&b%Tjl|eJDXM!fg>gV^ z)^9=Ub)_L+qMk&33s}-44ng8+T}s^RNxj$WS$eBw_AkgejKlx{ literal 0 HcmV?d00001 diff --git a/common/__pycache__/drawmap.cpython-39.pyc b/common/__pycache__/drawmap.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..7cf79b154d5345caa7a13c0797ab437e305b3484 GIT binary patch literal 7338 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 yPOao_Zeuk+{&%Txh{-Zr}8iB)21jN&(j@uHX>? z2$u~+n0QRTvNLMP5sj#^I6bE=pm>yxb8Hc4!7eO7uvi9?&OMYZkUwoO_5~TuUVk+X zw<7ok-2QHj2?3Mg&Y1AbG1b1A7-I|~CQ?N98sWm36_Faen?JJ=or`RY&L_UeitHsg z`GOIJG-C25r-M~yBa2V*d*?JgC1G$sWsvxC80n7u&5dTG(^rFmk{ws7p?Tqt^aIT4 z;0m6g07A(mStR#J5%&x&5}RbnELt;Ymr+mgC0i#iBrf!o=i#lpN(O0zQg2%39WkFk Vvr7ZThn`r*2L(aW`Yf5W{s8B4`oaJJ literal 0 HcmV?d00001 diff --git a/common/__pycache__/map.cpython-39.pyc b/common/__pycache__/map.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..494d34fba097ad5beee9a919986118c460b2b9f4 GIT binary patch literal 2527 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 None: + self.wms = None + self.layers = None + self.projection = projection + self.extension = None + self.ax = plt.axes(projection=self.projection) + + def add_figure(self, figure_size=(14, 8)): + fig = plt.figure(figsize=figure_size) + self.ax = fig.add_subplot(1, 1, 1, projection=self.projection) + return fig + + def set_extension(self, lat_south: float, lat_north: float, lon_west: float, lon_east: float) -> None: + self.extension = [lon_west, lon_east, lat_south, lat_north] + self.ax.set_extent(self.extension) + + def add_wms(self, wms: str, layers) -> None: + self.wms = wms + self.layers = layers + if type(layers) is list: + self.ax.add_wms(wms, layers) + elif type(layers) is str: + self.ax.add_wmts(wms, layers) + + + @staticmethod + def show(): + plt.show() + + +def main(): + + arousa = Map() + arousa.set_extension(41.7, 43.4, -9.5, -7.7) + + #arousa.add_wms('http://www.ign.es/wms-inspire/pnoa-ma?', + #['fondo', 'OI.OrthoimageCoverage']) + + #arousa.add_wms('https://ideihm.covam.es/ihm-inspire/wms-regionesmarinas?', ['SR.Shoreline']) + + + + #arousa.add_wms('https://wms.mapama.gob.es/sig/Agua/RiosCompPfafs/wms.aspx?', ['HY.PhysicalWaters.Waterbodies']) + + arousa.add_wms('https://services.arcgisonline.com/arcgis/rest/services/Canvas/World_Light_Gray_Base/MapServer/WMTS?' + , 'Canvas_World_Light_Gray_Base') + #arousa.add_wms('https://ows.emodnet-bathymetry.eu/wms?', ['emodnet:mean_atlas_land', 'coastlines']) + arousa.add_wms('https://ows.emodnet-bathymetry.eu/wms?', ['coastlines']) + #arousa.add_wms('https://map1c.vis.earthdata.nasa.gov/wmts-geo/wmts.cgi', 'VIIRS_CityLights_2012') + #arousa.add_wms('https://services.arcgisonline.com/arcgis/rest/services/Canvas/World_Dark_Gray_Base/MapServer/WMTS?', + #'Canvas_World_Dark_Gray_Base') + #arousa.add_wms("https://wms.mapama.gob.es/sig/EvaluacionAmbiental/Residuos/ParcelasAgric/wms.aspx?", + #["Parcelas agrícolas de aplicación de lodos de EDAR"]) + + arousa.add_wms("https://wms.mapama.gob.es/sig/Agua/EDAR/2021/wms.aspx?", + ["Depuradoras de aguas residuales (Q2021. Dir 91/271/CEE)"]) + arousa.add_wms("https://wms.mapama.gob.es/sig/Agua/PVERT/2021/wms.aspx?", + ["Puntos de vertido de depuradoras urbanas (Q2021. Dir 91/271/CEE)"]) + arousa.add_wms("https://wms.mapama.gob.es/sig/Agua/CNV/wms.aspx?", + ["Censo Nacional de Vertidos"]) + arousa.add_wms("https://wms.mapama.gob.es/sig/Agua/RedHidrograficaMDT/wms.aspx?", + ["Red hidrográfica básica MDT 100x100"]) + + + #manager = plt.get_current_fig_manager() + #manager.window.showMaximized() + arousa.show() + + + +if __name__ == '__main__': + main() + diff --git a/common/readers/__init__.py b/common/readers/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/common/readers/__pycache__/__init__.cpython-39.pyc b/common/readers/__pycache__/__init__.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..ee46a56035832bca180d5641c9c1f1c1089ac7eb GIT binary patch literal 184 zcmYe~<>g`kf|P=s6cGIwL?8o3AjbiSi&=m~3PUi1CZpd2 zB#R<^^HWlD3}gKBQeBEN%Tg6|6+HbyT%CO#gJKMf;zNQQog969{6Xx1$Pf>IznBou v5dWCu{M_99yqKcY#1xQ0@$s2?nI-Y@dIgoYIBatBQ%ZAE?LgLk24V&P4#6!c literal 0 HcmV?d00001 diff --git a/common/readers/__pycache__/reader.cpython-39.pyc b/common/readers/__pycache__/reader.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..7fcacc96ed669499de26033a9f1e0dc8c29693ae GIT binary patch literal 2245 zcmbtV&2QT_6elHFw&jnwZL(p90UWRav$48yiX9qk!yIQ_3p7rUdcdX{5EPL~l**Dz z${k_^yCi?c4$CqBlCC@LyxUHDkN${~bl4#h`1Io=`F>A)?~#73<`8)JIO2a72>BB` z`Nx9J_t4arAUJUer`(9>$Z(C3>6(=MNVv(Z3&Jg7oSUx23$IDj_E#w(POBw_&xLG{ zPg^a=X|dMcM2-_BHe0NFpi=1vDGMTBDV7|v*<6+!oQNQ8vwgjE-ep|)kz&7w>9L*{ z#z*YM_Vce;U!=Y5=S(H>%#cu;XMCC-gX+DIDokRad)j`6{Qd;=68d|B%Y^MDaVlhj zBT*QLSbO%eKlq`y)7?j{6z?XX6l$}DJ?^LI`o{W3=SgS%N#`jluQ@vH_4fK=-h%ta zbjSG%wvjZA%q-*x?n8%YduArm+LK&Q~<90B-OH8dpV4)cM2TDSyOQFD$UU!q*_A zA7%C|B2)H(*xd+LVB~%Ru?ejQO$|Vt(KF(aGx7($1nI&5fHbwVKwHpS8&FZB5}@)K zIk7Kso&&v#)>i@5E(wK%1n-RL7TX<*nEC85j0E#z&W=RNq9i^F(+L+!t0F(m^@1dk zJd7czib+3y+i%u03zuhB0=BXu#M@UQb*r&=ZOE-aZ(%2^1519;xt^HS^w?smTfSaZ z!V#o&8#yPmX0|GfLoZIlk#NgPm=%HuY6p_XQX)E(P_E>P$U1!fdDGh*{-hw=LCT+Z z5-y_7a5om)GJG%CW46fY;rfO**zaz2U%lEzy!XrC#cqE%csbY|2FYlY#KTz`s`(d6 zH!FD_IFWkZCm6$rAc$d8huZKu@YbPCS7s^DUd#>P09ZbVvFRkhtmfo3xuSjT{1ufo zP-#39E7-L`d;v}AY%->mIRS>||BcHBOOxpEZR1tYHFL(RbK`o4?`^#dmLKP=ugyR`J9r4VLJRTHj(QUr-bel#B`dLB;#&yx)>CQTGrT@tH6VzNriCHV-&8VcN-tg2Et zyMo!>l$l|iYKL-8;?W~@v0_bs3{8CwqC_oPsv6WW|GP_aqJ>6_Ufeupy@3aimD{{@_F^Pm6# literal 0 HcmV?d00001 diff --git a/common/readers/__pycache__/reader_HDF.cpython-39.pyc b/common/readers/__pycache__/reader_HDF.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..bbfe34ee6f075ff02c87bfdffe14e5a196cd6bf2 GIT binary patch literal 2388 zcmbVOOK;mo5Z>iWlr77#oy2wyjnSZOh&FLkpqIcX;yTTvaOA=-w1NPF)vjZ?6s0aH z7Z&7`(_{ZZ5BAZ2X|Fx$FZ9s%o24XMwoYAvvqR1-XXl%5hl*xqrWl53$Kp|evA^i% z`fzab0#~{QA(-GXYqBciq+2nsT4uJZwy=d0J59Iha`u`DS9l+o@T7ZYS3P0vu%OV# z8(6@#FQQClji#*hdH%%PmXVOEP7c?Hjhh#^(tQZYs$4JxZyjZ|IE$(7l_jECj{^sSY?!(n>nRenV zT|Jg@tKP^?R`#!{;UtH>D~G)>u&VP(OJ#?@MM{LjmsICulxAa(>XiC$kWRU7;7ad8 zWbB;x*pYPs8QRe79d^kpfuo(nuiGcudDV!eb`D4u0B4lS?2>CImGQwPQ!{wQ-{Hpd z+FmME3aNg4*Ag;*R@+MCOVv1*D^FJ5R(8MJc(=Y?`|_)BcYFQY_07#K(tr4A_sv$N zw)=K>t5$C{o2{g#OnK7590IAQw24+*CbP6h>qH=$1QAq8oEg)7qm#-fmpzm(z_V%&R&Hyi^gJ-&nRXEHxyIwWp>Il z-s4Bs8OZdDr5=+m>}A*iH{W3+s{`xz#%c|%!d+%N;6KRYRl4QX*Qy~_H>0ePbwFaO zqoRWLDR97z9yobkb}SR^riW2m>ggnm2a8hVU4nPj!;`R)+{jtayqDRP^L==xgazYM z0KLQ=BfE=NNR0X4LS#fWI#&M+k?nE3&;!`-maq~&)!I|db^h|3&_8k9UPk?)M31JDb;$Us&rvooh> z2zthi<}9;;1~LvbZ=@AQ8VUl6`+s=Iq*&=rn@o%d`z`_+cIKR=n)GQ$eLBv8r=1fS zDea;GWQW=o5l;MJtE05nY$TmbYA==bRw4p-!0j}HcNaY=R+OZ+8%Y+}hS=ImLhAVF z$pC3WIsGAkpJQd}LojQJukerl?atpuu}<3@4oZVA17Z~lf!L!nPK}fI?9A%noS)l* z58!kFp>yO8&i-2Fofmq}1wVC?2P2D(bHATkgmYn?Vg(>{D{2`L41d)FXvmMqlRuzc z1-^EZs43H&EFY8c5s53BTS;3NGZiIi8%+-InWOL1s_-~c>JzwYryT)xANP&u=UCqC z2qnU6XnckRBl0hqW4(1&Cq;Y~+sB#khkvOcE` z3`l>Y3ypj#K}q{zXtE6TR2Vi}q7%z7)TJ=|wG+j;MSVsg>8oNoy}C!*B8epupOW~3 z#1j%`e^UECn(Y%s2Up=A5YwJA bpF2fp7|%&zw7-@o@D1f{7+c~#ekJ=qkp=`u literal 0 HcmV?d00001 diff --git a/common/readers/__pycache__/reader_NetCDF.cpython-39.pyc b/common/readers/__pycache__/reader_NetCDF.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..71c172256a9754e25ab5499140c80dbc5754765d GIT binary patch literal 2424 zcmcH)O>ZML)b>o0Nt*O)yQ_8)V)zshP{C?XD}-8F7FOC#S8b3W3K~sgw>xFxY3)fR zqUouH8-IWU+Fp?Qlkk;O{{ko8^K_zoNu1UrKR=J(^ZR}d8;u%)!B1oUcZHCDa5Fw! z*lfYnj{$JPX-xX0Lnz`brX9*1?#8U|bR0^)CA`GTSA>^^bLn(k&JIYkatoZKNsY(D zRHRW~v~Fqsr@SvhE>sT*#s`DV7EIj+AP5K{9mXkVSES>hKv>;eRHwu%+=G3YS9uNA z3SZ!LSUuk0i?CMt5?_Y3##i_%tPA`eD79wlx$KrmcXprlP@!U=bO+`ROuY^uC9i2l zPS`cQpcy@JG7>l$Js>x<)pSio+AAKL%5Ip3TBOE3ieh1^=b?(i!&vAhGp-i#k*RC;UfN`yC=o2iq3`qng6WS{$}UJ_I~&CM?rgk`|IuJ z&-W02`D6RLy;isVti9LmCH;OPyUKb}->pGz*5>Ii#!XIztfDDp0EE`5M~5rp#&06U zga^Ve5Z8K%~6GU>#M$U8*U!tM!%H)Q{vZwmXXaUzeW9H8!52dFhz)O`dG0GK+MUJ#Gjp2#`2FIrPZ z)EmG*Yy4ZY#*a8=tjB(1)9yV$#-o42GH3&w{ECr@H5rxY$#mzmx_tN_ErC z4T5Gyj3)>EN7#1MJFvYAWXD4WJ;$6XnuFx}T_D$}3x;v{V8#MV)U#QQL@*G?X_dzW zK;^GN)eTZq3{`mTD4k@0dQ7L2SLpB|&=z%bf35;O%;jPrj?>D=xw`s#0{ZkAa|2XJba4f@;DgC1Am6Rr(7MY$Lnmr#~(jVi`md zn+p8-?ZU|%PN8~VrlT`XFWH5gxf%Zdv*2LRgm4~^vvuIXZg4fm!~T~C@(6g==iPT! z<__ePJ3QJK=|D;UJd6iI`vV=xV?TW*{GF%1PD9B<#eMYKr#{w-b)laqOQNIxX)Nri zpB(uiT#~;7ek5U+zZO0|5u2t_TxM@Dwn{D9f(YTm46jQsOjD(8n?kHv$~)}`cM44jq#A(BdHNvsU zvXZAHS5L;tV@Ex)PkU&@Ifp9uLr@|AdE2x zL7&}060S;FH literal 0 HcmV?d00001 diff --git a/common/readers/__pycache__/reader_factory.cpython-39.pyc b/common/readers/__pycache__/reader_factory.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..5236e5ee136d9add810e1a38e3378eafbefa6b97 GIT binary patch literal 1974 zcmbtVUvC>l5Z~SVYsYpCrGEkbbmL|RP^ zxx6Ibf+Dq#{u+FYd*vx#0U^Q6o}FCU3Ld(rot@d6TmNR}x8tbYZW0*cFcE*)g#3v{ zeZU^M3se6JLJ&a{65`4dnzE3kR%lToEMX^h>V%Hboy1MO&@;N5_-P|-Q1T5Cp72kJ z@FhF3!Y0@a(FD6Gn_#biy&_s*w~P%^w4YJY5m!#_ur26A((9f91~TZe(%RVUmz`)| z7b=R2R2B!hIHT~gM@x54MnWpk8kKf$Ya5JKWejA|-`bAxp!zru^JCbRB&33bOwiC0 zOjxHRw520mVFMsXxTp3B4L#ujB)@D|=WYXzTpdr>HX}WWgE)z_4)Sp@uJ!|EK@g5|Hce`oYaOQk`o?;hkr zCZCRWGr6TEk7e*laDOoTy8mEfZ*==JKHS^b+}PRKMg80Fhxc{|qv8GG?kLXFG|xs0 zaEp~MFs~mTmp+G|pA?+0AVve8POo1Id41_JhukY!9H}hEQY;7RI8Bt8XH!cyy;k`K z(IPih&ITs9IaTbVtbKx|A`alF(luFLaCg*7`jv%AF zY;pecQIss+c$|wo=3L>a%0l6wcpC*KyCx8b@dRBw@2;1M7@w7LT4zLM}uv?|Dq{76sW z3aJJ-_n2~FF=SG2p>`3Xi4McQ4s%)W_g)6IUQ6-ZRafzhcTikIfuH_Q{%(K^ex;EQ zKIBi~&Ku_LY6Y{p;mh=W6d3JTy_CPo>kU%q0pR~m;rkfi;>xVO23tLg>Lwm{Q3s=$ zVywc8ck!h2RN>C6RY#s7Y5VBA1ERo(7F5t@_ETsq&zWE^fN!hhDVwnweN5DCXgF*Y z*n!+AfQd8q8~L4`P)Z8>IdJj?Xu<_%deb{WKhL1w9>qlvEwAi&(cShVEk%%LL2)1h z`J|AUo`8k@4>;PhOP0l*-u&iOJ;m)Un`7w&~udu z7zt83`Y@RkrE{nzSy5X0SeLeZGAVkNDMi?*08OMW8|N@;X*FG>rJxrto7@MOF61t; z88y$}uGgVHZP5-@AHsgGqi(@cTG4*2u$-nrV5`Hw8AJ52Ss5H|rMX*Sd$Cc`Oc}CZ muP{8X0>ZOv(9SDf`d?OU>MQJ;x(mXmUBCm6)m`a&UGHC2JgvO| literal 0 HcmV?d00001 diff --git a/common/readers/reader.py b/common/readers/reader.py new file mode 100644 index 0000000..1baae7c --- /dev/null +++ b/common/readers/reader.py @@ -0,0 +1,72 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- + +""" +**reader.py** + +* *Purpose:* Abstract class of reader object. Reader object deals with reading HDF, NetCDF son classes + +* *python version:* 3.9 +* *author:* Pedro Montero +* *license:* INTECMAR +* *requires:* +* *date:* 2021/10/13 +* *version:* 1.0.0 +* *date version* 2021/10/13 + + +""" + +from abc import ABC, abstractmethod + + +class Reader(ABC): + """ Abstract class of Reader object""" + def __init__(self, file): + """ Open a file and get longitudes and latitudes and coordinates rank""" + self.file = file + self.dataset = self.open() + self.n_longitudes = None + self.n_latitudes = None + self.longitudes = self.get_longitudes() + self.latitudes = self.get_latitudes() + self.coordinates_rank = self.get_rank(self.longitudes) + self.ini_ntime = self.get_ini_ntime() + self.close() + + @abstractmethod + def open(self): + pass + + @abstractmethod + def close(self): + pass + + @abstractmethod + def get_latitudes(self): + pass + + @abstractmethod + def get_longitudes(self): + pass + + @abstractmethod + def get_dates(self): + pass + + @abstractmethod + def get_date(self, n_time): + pass + + @abstractmethod + def get_ini_ntime(self): + pass + + @staticmethod + def get_rank(array) -> int: + """ Number of dimensions of an array""" + return len(array.shape) + + + + diff --git a/common/readers/reader_HDF.py b/common/readers/reader_HDF.py new file mode 100644 index 0000000..ef23993 --- /dev/null +++ b/common/readers/reader_HDF.py @@ -0,0 +1,63 @@ + +from datetime import datetime +import numpy as np +import h5py +from .reader import Reader + + +class ReaderHDF(Reader): + + names = { + 'northward_velocity': '/Results/velocity V/velocity V_', + 'eastward_velocity': '/Results/velocity U/velocity U_' + } + + def open(self): + self.dataset = h5py.File(self.file) + return self.dataset + + def close(self): + self.dataset.close() + + def get_latitudes(self): + lat_in = self.dataset['/Grid/Latitude'] + if len(lat_in.shape) == 1: + self.n_latitudes = lat_in.shape[0] + return lat_in + elif len(lat_in.shape) == 2: + self.n_latitudes = lat_in.shape[1] + return lat_in[0, ] + + def get_longitudes(self): + lon_in = self.dataset['/Grid/Longitude'] + if len(lon_in.shape) == 1: + self.n_longitudes = lon_in.shape[0] + return lon_in + elif len(lon_in.shape) == 2: + self.n_longitudes = lon_in.shape[0] + return lon_in[:, 1] + + def get_dates(self): + return self.dataset['/Time'] + + def get_date(self, n_time): + + date_in = self.dataset['/Time/Time_' + str(n_time).zfill(5)] + return datetime(year=int(date_in[0]), month=int(date_in[1]), day=int(date_in[2]), + hour=int(date_in[3]), minute=int(date_in[4]), second=int(date_in[5])) + + def get_variable(self, name_var, n_time): + path = self.names[name_var] + variable = self.dataset[path + str(n_time).zfill(5)] + if len(variable.shape) == 2: + variable = np.transpose(variable) + elif len(variable.shape) == 3: + variable = np.transpose(variable, (0, 2, 1)) + return variable + + def get_ini_ntime(self): + return 1 + + + + diff --git a/common/readers/reader_NetCDF.py b/common/readers/reader_NetCDF.py new file mode 100644 index 0000000..611f944 --- /dev/null +++ b/common/readers/reader_NetCDF.py @@ -0,0 +1,59 @@ + +from datetime import datetime +import netCDF4 +from .reader import Reader + + +class ReaderNetCDF(Reader): + + def open(self): + dataset = netCDF4.Dataset(self.file) + self.variables = dataset.variables + return dataset + + def close(self): + self.dataset.close() + + def get_latitudes(self): + lat_in = self.get_var('latitude') + if len(lat_in.shape) == 1: + self.n_latitudes = lat_in.shape[0] + elif len(lat_in.shape) == 2: + self.n_latitudes = lat_in.shape[1] + return lat_in + + def get_longitudes(self): + lon_in = self.get_var('longitude') + if len(lon_in.shape) == 1: + self.n_longitudes = lon_in.shape[0] + elif len(lon_in.shape) == 2: + self.n_longitudes = lon_in.shape[0] + return lon_in + + def get_dates(self): + times_in = self.get_var('time') + return netCDF4.num2date(times_in[:], units=times_in.units) + + def get_date(self, n_time): + return self.get_dates()[n_time] + + def get_variable(self, var_name, n_time): + return self.get_var(var_name)[n_time, ] + + def get_var(self, var_name): + """Return values using the CF standard name, long_name or the simple name of a variable in a netCDF file.""" + for var in self.variables: + for atributo in (self.variables[var].ncattrs()): + if atributo == 'standard_name': + nome_atributo = (getattr(self.variables[var], 'standard_name')) + if nome_atributo == var_name: + return self.variables[var] + elif atributo == 'long_name': + nome_atributo = (getattr(self.variables[var], 'long_name')) + if nome_atributo == var_name: + return self.variables[var] + elif var == var_name: + return self.variables[var] + + def get_ini_ntime(self): + return 0 diff --git a/common/readers/reader_factory.py b/common/readers/reader_factory.py new file mode 100644 index 0000000..5738b27 --- /dev/null +++ b/common/readers/reader_factory.py @@ -0,0 +1,52 @@ +import sys +from abc import ABC, abstractmethod +from .reader import Reader +from .reader_HDF import ReaderHDF +from .reader_NetCDF import ReaderNetCDF + + +class ReaderFactory(ABC): + """Basic class of factory readers""" + + def __init__(self, file_in): + self.file_in = file_in + + @abstractmethod + def get_reader(self) -> Reader: + """return a reader class""" + + +class ReaderHDFFactory(ReaderFactory): + """Factory for Reader of HDF files""" + + def get_reader(self) -> Reader: + return ReaderHDF(self.file_in) + + +class ReaderNetCDFFactory(ReaderFactory): + """ Factoyr for Reader of NetCDF files""" + + def get_reader(self) -> Reader: + return ReaderNetCDF(self.file_in) + + +def read_factory(file_in) -> ReaderFactory: + """ Construct a reader factory based on the extension of file""" + + factories = { + "nc": ReaderNetCDFFactory, + "nc4": ReaderNetCDFFactory, + "hdf": ReaderHDFFactory, + "hdf5": ReaderHDFFactory + } + + extension = file_in.split('.')[-1] + if extension in factories: + return factories[extension](file_in) + print(f'Unknown file extension {extension}') + sys.exit(1) + + + + + diff --git a/common/test_readers.py b/common/test_readers.py new file mode 100644 index 0000000..ee43b94 --- /dev/null +++ b/common/test_readers.py @@ -0,0 +1,27 @@ + +from readers.reader_factory import read_factory + + +def main(): + + factory = read_factory('../datos/drawmap/MOHID_Hydrodynamic_Vigo_20180711_0000.hdf5') + reader = factory.get_reader() + print(reader.longitudes) + print(reader.latitudes) + print(reader.get_date(1)) + print(reader.get_date(10)) + + factory = read_factory('../datos/drawmap/wrf_arw_det1km_history_d05_20180711_0000.nc4') + reader = factory.get_reader() + + print(reader.latitudes) + print(reader.longitudes) + print(reader.get_date(1)) + print(reader.get_date(10)) + print(f'number of longitudes = {reader.n_longitudes} and latitudes = {reader.n_latitudes}') + print(reader.get_variable('wind_module', 1)) + reader.close() + + +if __name__ == "__main__": + main() diff --git a/common/vector.py b/common/vector.py new file mode 100644 index 0000000..c47b0ec --- /dev/null +++ b/common/vector.py @@ -0,0 +1,74 @@ +from math import pi, atan2, sin, cos +import numpy as np + + +class Vector: + + def __init__(self, u=None, v=None, mod=None, theta=None, wind=False): + self.wind = wind + + self.u = u + self.v = v + self.mod = mod + self.theta = theta + + self.x = None + self.y = None + + if self.mod is None or self.theta is None: + self.mod, self.theta = self.get_modtheta() + + if self.u is None or self.v is None: + self.u, self.v = self.get_uv() + + def set_point(self, x, y): + self.x = x + self.y = y + + def get_modtheta(self): + """ + From u,v velocity components return module and bearing of current + + """ + if self.wind: + coef = -1 + else: + coef = 1 + deg2rad = 180. / pi + + mod = pow((pow(self.u, 2) + pow(self.v, 2)), .5) + theta = atan2(coef * self.u, coef * self.v) * deg2rad + return mod, theta + + def get_uv(self): + """ + From module, bearing of a current return u,v velocity components + + """ + if self.wind: + coef = -1 + else: + coef = 1 + + rad2deg = pi / 180. + u = coef * self.mod * sin(self.theta * rad2deg) + v = coef * self.mod * cos(self.theta * rad2deg) + return u, v + + +class NumpyVector(Vector): + + def get_modtheta(self): + """ + From u,v velocity components return module and bearing of current + + """ + if self.wind: + coef = -1 + else: + coef = 1 + deg2rad = 180. / pi + + mod = pow((pow(self.u, 2) + pow(self.v, 2)), .5) + theta = np.arctan2(coef * self.u, coef * self.v) * deg2rad + return mod, theta diff --git a/time90.py b/time90.py new file mode 100644 index 0000000..3457645 --- /dev/null +++ b/time90.py @@ -0,0 +1,1339 @@ +# -*- coding: utf-8 -*- +""" +Created on Wed Mar 8 11:18:57 2023 + +@author: josmo +""" + +# Data processing +import numpy as np +# For additional mathematical functions. +import math as m +# For handling data in various formats +import pandas as pd +# For graphical representations +import matplotlib.pyplot as plt +# For dates and times +from datetime import datetime, timedelta +# For directories and system files +import os +# For secure file downloading +import urllib +# To show the progress of the download +from tqdm import tqdm +# For searching for files in a specific directory pattern +import glob +# For handling labeled multidimensional data +import xarray as xr +# For handling regular expressions +import re +# For handling images. +from PIL import Image, ImageTk +# To create graphical user interfaces (GUI). +import tkinter as tk +# To color printed text in the console +from termcolor import colored +# We import functions from other programs +from common.readers.reader_factory import read_factory +from common import read_input +from common.boundarybox import BoundaryBox +from common.drawcurrents import drawcurrents +from common.map import Map +from common.drawmap import* + + +def distancia_esferica(lat1, lon1, lat2, lon2): + """ + Calculates the distance between two points on a sphere given their latitude and longitude coordinates. + + Parameters: + ----------- + lat1 : float + Latitude of the first point in degrees. + lon1 : float + Longitude of the first point in degrees. + lat2 : float + Latitude of the second point in degrees. + lon2 : float + Longitude of the second point in degrees. + + Returns: + -------- + d : float + Distance between the two points in kilometers. + """ + + r_tierra = 6371 # Radius of the Earth in kilometers + d_lat = np.radians(lat2 - lat1) + d_lon = np.radians(lon2 - lon1) + a = np.sin(d_lat/2)**2 + np.cos(np.radians(lat1))*np.cos(np.radians(lat2))*np.sin(d_lon/2)**2 + #c = 2 * np.arctan2(np.sqrt(a), np.sqrt(1-a)) + c = 2*np.arcsin(np.sqrt(a)) + d = r_tierra * c # distance + return d + + +def distancia_pitagoras(lat_input, lon_input, lats, lons): + """ + Calculate the distance between two points using the Pythagorean theorem. + + Parameters: + ----------- + lat_input: float + Latitude of the input point in degrees. + lon_input: float + Longitude of the input point in degrees. + lats: numpy.ndarray + Array of latitudes of the points to calculate the distance to, in degrees. + lons: numpy.ndarray + Array of longitudes of the points to calculate the distance to, in degrees. + + Returns: + -------- + d: numpy.ndarray + Array of distances in kilometers between the input point and each of the points specified by `lats` and `lons`. + + """ + + R_t = 6371 # Radius of the Earth in kilometers + dy = (np.pi/180)*(lat_input-lats)*R_t + dx = (np.pi/180)*(lon_input-lons)*R_t*np.cos(np.radians(lats)) + d = np.sqrt(dx**2+dy**2) # distance + #d = (2*np.pi*6371/360)*np.sqrt((lats-lat_input)**2 + (lons-lon_input)**2) + return d + + +def distancia_min(lat_input, lon_input, lats, lons): + """ + Calculates the minimum distance between an input point and a set of points defined by latitudes and longitudes. + + Parameters + ---------- + lat_input : float + Latitude of the input point in degrees. + lon_input : float + Longitude of the input point in degrees. + lats : array-like + Array of latitudes for the set of points in degrees. + lons : array-like + Array of longitudes for the set of points in degrees. + + Returns + ------- + index_min: int + Index of the station closest to the reference point + dist_min : float + Approximate distance in kilometers between the reference point and the closest station. + + If the function does not find a valid minimum distance (for example, if the reference point is too far away), + the distance and index obtained using the spherical distance method are returned. + """ + + dist_esf = distancia_esferica(lat_input, lon_input, lats, lons) + dist_pit = distancia_pitagoras(lat_input, lon_input, lats, lons) + # Find the minimum distance and the corresponding index to identify the closest point + indice_min_esf = np.argmin(dist_esf) + indice_min_pit = np.argmin(dist_pit) + distancia_min_esf = dist_esf[indice_min_esf] + distancia_min_pit = dist_pit[indice_min_pit] + # If the minimum distances calculated by both methods are approximately the same and the indices of the points with the minimum distances are the same, + #then the function returns the index and the average of the two distances + if (indice_min_esf==indice_min_pit) and np.round(distancia_min_esf,0)==np.round(distancia_min_pit,0): + index_min = indice_min_esf + dist_min = np.round((distancia_min_esf+distancia_min_pit)/2,2) + return (index_min,dist_min) + else: + print('The spill is too far away from the observation stations.') + return (indice_min_esf,distancia_min_esf) # returns the index and distance calculated using the spherical distance method + + +def estaciones_proximas_rad_solar(Lat,Lon): + """ + Given a latitude and longitude coordinate, this function finds the nearest weather observation station for + solar radiation data, based on a pre-defined dataset of station locations. + + Parameters + ---------- + Lat : float + Latitude of the point of interest. + Lon : float + Longitude of the point of interest. + + Returns + ------- + index_rad: int + Index of the closest weather station in the MeteoGz_Rad dataframe. + dist_rad : float + distance between the point of interest and the closest weather observation + station, in kilometers. + + """ + + # Path to the data file + ruta = os.getcwd()+'\\common\\' + datafile = 'Rias_UWWTP.xlsx' + + # Read in the data + MeteoGz_Rad = pd.read_excel(ruta + datafile, sheet_name= 'MeteoGz_Rad') + Data_Links = pd.read_excel(ruta + datafile, sheet_name= 'Data_Links') + + # Coordinates of the MeteoGz weather stations for solar radiation data + MeteoGz_Rad_lats = MeteoGz_Rad.Lat.values + MeteoGz_Rad_lons = MeteoGz_Rad.Lon.values + + # Find the nearest station and its distance + index_rad,dist_rad = distancia_min(Lat, Lon, MeteoGz_Rad_lats, MeteoGz_Rad_lons) + + # Display relevant information + print('You can check the following links to obtain solar radiation data:\n') + print('- Solar Radiation Data from MeteoGalicia:\n', Data_Links.values[2][0]) + print("\nThe nearest weather observation station to ({}, {}) ".format(Lat,Lon)+ + "is {} ".format(MeteoGz_Rad.values[index_rad][0])+ + "located at ({}, {}) and approximately {} km away.".format( + MeteoGz_Rad_lats[index_rad],MeteoGz_Rad_lons[index_rad],dist_rad)) + print('-'*40) + return (index_rad, dist_rad) + + +def estaciones_proximas_TS(Lat,Lon): + """ + Find the closest buoy station to a given latitude and longitude, and return its index and distance. + + Parameters + ---------- + Lat : float + Latitude of the point of interest. + Lon : float + Longitude of the point of interest. + + Returns + ------- + index_TS: int + Index of the closest buoy station in the MeteoGZ_Buoys dataframe. + dist_TS : float + Distance (in km) between the input coordinates and the closest buoy station. + + """ + + # Path of the file of interest + path = os.getcwd()+'\\common\\' + datafile = 'Rias_UWWTP.xlsx' + + # Read the file + MeteoGZ_Buoys = pd.read_excel(path + datafile, sheet_name= 'MeteoGZ_Buoys') + Data_Links = pd.read_excel(path + datafile, sheet_name= 'Data_Links') + + # Coordinates of the MeteoGz stations where to consult salt+temp + MeteoGZ_Buoys_lats = MeteoGZ_Buoys.Lat.values + MeteoGZ_Buoys_lons = MeteoGZ_Buoys.Lon.values + + # Get the closest position and distance + index_TS,dist_TS = distancia_min(Lat, Lon, MeteoGZ_Buoys_lats, MeteoGZ_Buoys_lons) + + # Show the relevant information + print('You can check the following links to obtain the T and S data:\n') + print('- T & S data from MeteoGalicia:\n', Data_Links.values[3][0]) + # Show the result + print("\nThe nearest observation station to ({}, {}) ".format(Lat,Lon)+ + "is {} ".format(MeteoGZ_Buoys.values[index_TS][0])+ + "located at ({}, {}) at a distance of approximately {} km.".format( + MeteoGZ_Buoys_lats[index_TS],MeteoGZ_Buoys_lons[index_TS],dist_TS)) + print('-'*40) + + print('\nYou can also check data from other links such as:') + print('- T & S data from the CTD profiles of INTECMAR:', Data_Links.values[4][0]) + return(index_TS,dist_TS) + + +def tryint(s): + """ + Attempts to convert the input argument `s` into an integer. If it is not possible, returns `s` unchanged. + """ + + try: + return int(s) + except ValueError: + return s + + +def alphanum_key(s): + """ + Turns a string `s` into a list of string and number chunks by splitting it at every number. Returns the resulting list. + + Example: + >>> alphanum_key("z23a") + ["z", 23, "a"] + """ + + return [tryint(c) for c in re.split('([0-9]+)', s)] + + +def human_sort(l): + """ + Sorts a list `l` in the way that humans expect, by splitting each string element into chunks of strings and numbers + and sorting them according to the values of the chunks. The sorting is done in place. + """ + + l.sort(key=alphanum_key) + + +def download_MOHID_files(fecha,key): + """ + Downloads MOHID files for a given date and key + + Parameters + ---------- + fecha : datetime.datetime + Date for which to download files. + key : list + List with two elements, where the first element is the MOHID key and the second element is the file name. + + Returns + ------- + str + 'Done' if all files were downloaded successfully, or None if there was an HTTP error during file download. + + """ + + # Set start and end dates + delta_time = timedelta(days=1) + data = fecha - delta_time + init_time = datetime(data.year, data.month, data.day) + end_time = datetime(data.year, data.month, data.day) + + # Loop through the dates + date = init_time + print('-'*30) + while (date <= end_time): + print('Downloading file...') + print('-'*30) + + # Extract year, month, and day from date object + year = date.strftime("%Y") + month = date.strftime("%m") + day = date.strftime("%d") + + # Define the file URLs and names + file_URL = 'http://mandeo.meteogalicia.gal/thredds/fileServer/mohid_' + key[0] + '/fmrc/files/%s/MOHID_' + key[1] + '_%s_0000.nc4' \ + %(year+month+day,year+month+day) + file_name_out = "MOHID_" + key[1] + "_%s_0000.nc4" %(year+month+day) + + print(file_URL, file_name_out) + + try: + # Download the file + #urllib.request.urlretrieve(file_URL,file_name_out) + with tqdm(unit='B', unit_scale=True, miniters=1, desc=file_name_out) as tqdm_instance: + urllib.request.urlretrieve(file_URL, file_name_out, reporthook=lambda block_num, block_size, total_size: + tqdm_instance.update(block_num * block_size - tqdm_instance.n)) + except urllib.error.HTTPError as e: + # If there is an HTTP error, print the error and return None + print(f' 02 Error downloading file: {e}') + return None + else: + # If the file was downloaded successfully, print a success message + print(file_name_out+' has been downloaded successfully.') + finally: + # Advance the date and print separator lines + date = date + delta_time + print('-'*30) + + # If all files were downloaded successfully, return 'Done' + return 'Done' + + +def delete_nc4_files(): + """ + Deletes all .nc4 files in the current working directory. + This function searches for all files in the current working directory + that have a .nc4 file extension and deletes them if they exist. + + Returns: + None. + The function does not return anything, it simply deletes the files. + + """ + + # Get the current working directory path and create a 'ruta' variable with a backslash at the end + ruta = os.getcwd()+'\\' + + # Use the glob module to find all files with the ".nc4" extension in the 'ruta' directory + all_files = glob.glob(os.path.join(ruta +'*.nc4')) + + # Iterate over the list of files and delete them using os.remove() + for file_path in all_files: + if os.path.exists(file_path): + os.remove(file_path) + print(f"The file {file_path} has been successfully deleted.") + else: + print(f"The file {file_path} does not exist.") + + +def extract_TS_nc_file(time,lat,lon,depth): + """ + Extracts temperature and salinity values from NetCDF files in the current working directory. + + + Parameters + ---------- + time : str or datetime.datetime + Time at which temperature and salinity values are desired. + lat : float + Latitude at which temperature and salinity values are desired. + lon : float + Longitude at which temperature and salinity values are desired. + depth : float + Depth at which temperature and salinity values are desired. + + Returns + ------- + T: float + Temperature value. + S : float + Salinity value. + + """ + + # Get the current working directory and append a backslash + ruta = os.getcwd()+'\\' + # Find all files in the directory with a .nc4 extension + all_files = glob.glob(os.path.join(ruta +'*.nc4')) + # Sort the files in human-readable order + human_sort(all_files) + + # Open the first file in the sorted list as an xarray dataset + ds = xr.open_dataset(all_files[0]) + # Convert the time values in the dataset to pandas datetime objects + datas = pd.to_datetime(ds.time.values) + + # Check if the provided time is in the dataset + if str(time) in datas.astype(str): + # If so, get the index of the corresponding time value + time_index = np.where(datas == time)[0][0] + else: + # If not, print an error message + print("The provided time is not in the dataset.") + + # Find the index of the latitude value closest to the provided latitude + lat_index = np.abs(lat - ds.lat.values).argmin() + # Find the index of the longitude value closest to the provided longitude + lon_index = np.abs(lon - ds.lon.values).argmin() + # Find the index of the depth value closest to the provided depth + depth_index = np.abs(depth - ds.depth.values).argmin() + + # Get the temperature value at the specified time, latitude, longitude, and depth + T = ds.temp.values[time_index][depth_index][lat_index][lon_index] + # Get the salinity value at the specified time, latitude, longitude, and depth + S = ds.salt.values[time_index][depth_index][lat_index][lon_index] + + # Return a tuple of the temperature and salinity values + return (T, S) + +def T90(T,S,iz): + """ + Parameters + ---------- + T : float + Surrounding temperature in ºC. + S : float + Surrounding water salinity (psu). + iz : float + Light radiation (W/m2) at deph z (m). + + Returns + ------- + T90 : float + T90 is the time in which 90% of E.Coli population is no longer detectable + """ + + k = 2.533*(1.04**(T-20))*(1.012**S)+0.113*iz + T90 = (2.303/k)*24 #T90 in hours + return (T90) + +def start_T90(): + """ + Calculates the 90% mortality time of E.Coli by taking input from the user for Temperature (ºC), Salinity (psu), and + Solar Radiation (W/m2) at a given depth z. The user needs to select the study Ria and provide the spill position + (Lat, Lon), and the date in the format YYYY-MM-DD HH. + + Returns None if the user selects to exit the program or if there is an error in the inputs. + + """ + + # Prints the heading of the function + print(colored('\n - T90 CALCULATION: \n', attrs=['underline'])) + #print('\n - T90 CALCULATION: \n') + + # Prompts the user for input and describes the function + print('This function aims to calculate the 90% mortality time of E.Coli.\n' + 'For this, we will need the values of Temperature (ºC), Salinity (psu) and\n' + 'Solar Radiation (W/m2) at a depth z.\n' + 'The first step is to select the study Ria, provide the spill position (Lat, Lon), and the date:') + + # List of keywords to select the Ria + keyword = [['arousa','Arousa'],['vigo','Vigo'],['noiamuros','NoiaMuros','Noiamuros'], + ['artabro','Artabro']] + # Rias list + Rias = ['Ria de Arousa', 'Ria de Pontevedra-Vigo', 'Ria de Noia-Muros', 'Ria do Artabro'] + + nam = None + while nam not in Rias: + # Displays the available options for Rias and prompts the user to select one + print('The available Rias for this study are:') + for i in Rias: + print(f'- {i}') + # Ask user for Ria selection + nam = input('Select one of the above options or type "exit" to exit: ') + if nam == 'exit': + return None + break + if nam not in Rias: + print(f'Error: "{nam}" is not a valid option. Please try again.') + + # Select Ria based on user input + key = keyword[Rias.index(nam)] + # Initialize control variable + continuar = True + + # Prompts the user for latitude + while continuar: + try: + entrada = input("Enter the latitude in decimal format or type 'exit' to exit: ") + if entrada == 'exit': + continuar = False + break + else: + lat = float(entrada) + if -90 <= lat <= 90: + #if not 42.383 <= lat <= 42.680: + #print('La latitud no pertenece a la Ría de Arousa') + break + else: + print("Latitude must be between -90 and 90 degrees.") + except ValueError: + print("Please enter a valid decimal number.") + + # Prompts the user for longitude + while continuar: + try: + entrada = input("Enter the longitude in decimal format or type 'exit' to exit: ") + if entrada == 'exit': + continuar = False + break + else: + lon = float(entrada) + if -180 <= lon <= 180: + break + else: + print("Longitude must be between -180 and 180 degrees.") + except ValueError: + print("Please enter a valid decimal number.") + + # Ask user for date + while continuar: + try: + entrada = input("Enter the date in YYYY-MM-DD HH format or type 'exit' to exit: ") + if entrada == 'exit': + continuar = False + break + else: + fecha = datetime.strptime(entrada, '%Y-%m-%d %H') + break + except ValueError: + print("Please enter a valid date format (YYYY-MM-DD HH).") + + # Asks the user if they have the necessary data to calculate T90, or if they want to exit + while continuar: + try: + entrada = input("Do you know the data to calculate T90? [y/n] or type 'exit' to exit: ") + if entrada == 'exit': + continuar = False + break + elif entrada.lower() in ['y', 'n']: + answer1 = entrada.lower() + + # Ask for the value of z + while answer1=='y': + z_input = input("Enter the value of the depth z (m) or type 'exit' to exit: ") + if z_input == 'exit': + answer1 = False + continuar = False + break + else: + try: + z = float(z_input) + break + except ValueError: + print("Please enter a valid number.") + + # Ask for the value of T + while answer1=='y': + T_input = input("Enter the value of temperature T (ºC) or type 'exit' to exit: ") + if T_input == 'exit': + answer1 = False + continuar = False + break + else: + try: + T = float(T_input) + break + except ValueError: + print("Please enter a valid number.") + + # Ask for the value of S + while answer1=='y': + S_input = input("Enter the value of salinity S (psu) or type 'exit' to exit: ") + if S_input == 'exit': + answer1 = False + continuar = False + break + else: + try: + S = float(S_input) + break + except ValueError: + print("Please enter a valid number.") + + # Ask for the value of iz + while answer1=='y': + iz_input = input("Enter the value of solar radiation iz (W/m2) or type 'exit' to exit: ") + if iz_input == 'exit': + answer1 = False + continuar = False + break + else: + try: + iz = float(iz_input) + break + except ValueError: + print("Please enter a valid number.") + + while answer1=='n': + try: + entrada = input("Do you want the data to calculate T90 from observations[o] \nor numerical models[m]? [o/m] or type 'exit' to exit: ") + if entrada == 'exit': + answer1 = False + continuar = False + break + elif entrada.lower() in ['o', 'm']: + answer2 = entrada.lower() + if answer2 == 'o': + estaciones_proximas_rad_solar(lat,lon) + estaciones_proximas_TS(lat,lon) + + # Ask for the value of z + while answer2 == 'o': + z_input = input("Enter the value of depth z (m) or type 'exit' to exit: ") + if z_input == 'exit': + answer1 = False; answer2 = False + continuar = False + break + else: + try: + z = float(z_input) + break + except ValueError: + print("Please enter a valid number.") + + # Ask for the value of T + while answer2 == 'o': + T_input = input("Enter the value of temperature T (ºC) or type 'exit' to exit: ") + if T_input == 'exit': + answer1 = False; answer2 = False + continuar = False + break + else: + try: + T = float(T_input) + break + except ValueError: + print("Please enter a valid number.") + + # Ask for the value of S + while answer2 == 'o': + S_input = input("Enter the value of salinity S (psu) or type 'exit' to exit: ") + if S_input == 'exit': + answer1 = False; answer2 = False + continuar = False + break + else: + try: + S = float(S_input) + break + except ValueError: + print("Please enter a valid number.") + + # Ask for the value of iz + while answer2 == 'o': + iz_input = input("Enter the value of solar radiation iz (W/m2) or type 'exit' to exit: ") + if iz_input == 'exit': + answer1 = False; answer2 = False + continuar = False + break + else: + try: + iz = float(iz_input) + break + except ValueError: + print("Please enter a valid number.") + + elif answer2 == 'm': + print(colored("\nMeteoGalicia database:\n", attrs=['underline'])) + print("\nWe'll use MOHID model data from MeteoGalicia for T and S.") + print("You can find the data at: http://mandeo.meteogalicia.gal/thredds/catalog.html") + print("You'll have to look up the Solar Rad data.") + estaciones_proximas_rad_solar(lat,lon) + + # Ask for the value of iz + while answer2 == 'm': + iz_input = input("Enter the value of solar radiation iz (W/m2) or type 'exit' to exit: ") + if iz_input == 'exit': + answer1 = False; answer2 = False + continuar = False + break + else: + try: + iz = float(iz_input) + break + except ValueError: + print("Please enter a valid number.") + + # Ask for the value of z + while answer2 == 'm': + z_input = input("Enter the value of depth z (m) or type 'exit' to exit " + + "(If you don't know it, enter 0 to calculate on the surface): ") + if z_input == 'exit': + answer1 = False; answer2 = False + continuar = False + break + else: + try: + z = float(z_input) + break + except ValueError: + print("Please enter a valid number.") + + # Now, we download and perform automatic reading of the MOHID files. + aux = download_MOHID_files(fecha,key) + if aux == 'Done': + # We extract the values of T and S + T,S = extract_TS_nc_file(fecha,lat,lon,z) + # We check if T or S are NaN + if m.isnan(T) or m.isnan(S): + print("Error: one of the variables is 'nan'.") + print("Try to enter values further offshore or shallower.") + answer1 = False; answer2 = False + continuar = False + else: + print("T and S values obtained correctly.") + else: + break + + break + else: + print("Please enter 'o' or 'm'.") + except ValueError: + print("Please enter a valid response.") + break + else: + print("Please enter 'y' or 'n'.") + except ValueError: + print("Please enter a valid response.") + + + # Print user input values + if continuar: + print(colored("\nUser input values:\n", attrs=['underline'])) + print("- Latitude:", lat) + print("- Longitude:", lon) + print("- Date:", fecha) + if answer1=='y' or answer2 == 'o' or aux == 'Done': + print("- T (ºC):", T) + print("- S (psu):", S) + print("- z (m):", z) + print("- iz (W/m2):", iz) + print(colored("\nCalculate T90:\n", attrs=['underline'])) + # Calculate T90 and print the result + time_90 = T90(T,S,iz) + print("- The value of T90 is:", time_90, 'h') + + return(lat,lon,fecha,time_90,key) + +#-------------------LCS PART----------------------------------- +def download_LCS_files(fecha,key): + """ + This function downloads MYCOASTLCS netCDF files for a given date range and location. + + Parameters + ---------- + fecha : datetime + The date to start downloading files (datetime object). + key : list + The location key, containing two strings. + + Returns + ------- + str + A message indicating the function has finished ('Done') or None if there was an error. + """ + + # Calculate start and end dates + delta_time = timedelta(days=1) + init_time = datetime(fecha.year, fecha.month, fecha.day) - timedelta(days=2) + end_time = datetime(fecha.year, fecha.month, fecha.day) + + # Loop through each day in the date range + date = init_time + while (date <= end_time): + print('03: Downloading file...') + print('-' * 30) + + # Extract date info into separate variables + year = date.strftime("%Y") + month = date.strftime("%m") + day = date.strftime("%d") + + # Remove location key if it is 'NoiaMuros' + if key[1] == 'NoiaMuros': + key.pop(1) + + # Define URL and file name based on date and location key + #http: // thredds - gfnl.usc.es / thredds / fileServer / MYCOASTLCS / MYCOASTLCS_Vigo_20230318.nc + file_URL = 'http://thredds-gfnl.usc.es/thredds/fileServer/MYCOASTLCS/MYCOASTLCS_' + key[1] + '_%s.nc' \ + % (year + month + day) + file_name_out = "MYCOASTLCS_" + key[1] + "_%s.nc" % (year + month + day) + + print(file_URL, file_name_out) + + try: + # Download the file + with tqdm(unit='B', unit_scale=True, miniters=1, desc=file_name_out) as tqdm_instance: + urllib.request.urlretrieve(file_URL, file_name_out, reporthook=lambda block_num, block_size, total_size: + tqdm_instance.update(block_num * block_size - tqdm_instance.n)) + except urllib.error.HTTPError as e: + print(f'Error downloading file: {e}') + return None + else: + print(file_name_out + ' downloaded successfully.') + finally: + # Advance the date + date = date + delta_time + print('-' * 30) + + return 'Done' + + +def delete_nc_files(): + """ + This function deletes all netCDF files in the current working directory. + + Returns: + None + """ + + # Get current working directory and find all netCDF files + ruta = os.getcwd()+'\\' + all_files = glob.glob(os.path.join(ruta +'*.nc')) + + # Loop through files and delete them if they exist + for file_path in all_files: + if os.path.exists(file_path): + os.remove(file_path) + print(f"File {file_path} deleted successfully.") + else: + print(f"File {file_path} does not exist.") + + +def delete_png_files(ruta): + """ + This function deletes all PNG files in the specified directory. + + Parameters + ---------- + ruta : str + The path to the directory containing the PNG files. + + Returns + ------- + None. + + """ + + # Find all PNG files in directory + all_files = glob.glob(os.path.join(ruta +'*.png')) + + # Loop through files and delete them if they exist + for file_path in all_files: + if os.path.exists(file_path): + os.remove(file_path) + print(f"File {file_path} deleted successfully.") + else: + print(f"File {file_path} does not exist.") + +def delete_gif_files(): + """ + This function deletes all GIF files in the current working directory. + + Returns: + None + """ + + # Get current working directory and find all GIF files + ruta = os.getcwd()+'\\' + all_files = glob.glob(os.path.join(ruta +'*.gif')) + + # Loop through files and delete them if they exist + for file_path in all_files: + if os.path.exists(file_path): + os.remove(file_path) + print(f"File {file_path} deleted successfully.") + else: + print(f"File {file_path} does not exist.") + + +def extract_time_LCS_file(time): + """ + This function extracts the time index and file index of the nearest time in LCS netCDF files. + + Parameters + ---------- + time : str + A string representing the time to search for, in format YYYY-MM-DDTHH:MM:SS. + + Returns + ------- + list or None + A list containing the time index and file index if the time is found, or None if not found. + + """ + + # Get current working directory and find all netCDF files + ruta = os.getcwd()+'\\' + all_files = glob.glob(os.path.join(ruta +'*.nc')) + human_sort(all_files) + + # Open the first two files and get their time values + ds1 = xr.open_dataset(all_files[0]) + ds2 = xr.open_dataset(all_files[1]) + datas1 = pd.to_datetime(ds1.time.values) + datas2 = pd.to_datetime(ds2.time.values) + + # Check if the time is in either of the files + if str(time) in datas1.astype(str): + time_index = np.where(datas1 == time)[0][0] + file_index = 0 + return [time_index,file_index] + elif str(time) in datas2.astype(str): + time_index = np.where(datas2 == time)[0][0] + file_index = 1 + return [time_index,file_index] + else: + print("The date is not in the files.") + return None + + +def read_inputs(input_file): + """Read keywords for options""" + input_keys = ['path_in', + 'file_in', + 'path_out' + 'file_out', + 'nx', + 'ny', + 'resolution', + 'scale', + 'n_time', + 'n_level', + 'title', + 'style', + 'limits', + 'vector', + 'scalar', + 'wms_url', + 'wms_layers'] + return read_input(input_file, input_keys) + +def crear_gift(ruta_maps, ruta_gift, vel_maps, loop): + """ + Creates an animated GIF file from a directory of PNG images. + + Parameters + ---------- + ruta_maps : str + Path to the directory containing the PNG images. + ruta_gift : str + Path to the output GIF file. + vel_maps : float + Speed of the animation in frames per second. + loop : int + Number of loops for the animation (0 for infinite loop). + + Returns + ------- + None. + + """ + + # Set the path to the directory of images + image_directory = ruta_maps + + # Get the list of file names in the directory + image_files = os.listdir(image_directory) + + # Sort the list of file names alphabetically + image_files = sorted(image_files) + + # Create a list of Image objects from Pillow + image_list = [] + for filename in image_files: + if filename.endswith(".png"): + image_path = os.path.join(image_directory, filename) + image = Image.open(image_path) + image_list.append(image) + + # Save the list of images as an animated GIF file + gif_path = ruta_gift + frame_duration = 1e3 / vel_maps # Duration of each frame in milliseconds + image_list[0].save(gif_path, save_all=True, append_images=image_list[1:], + duration=frame_duration, loop=loop) + + +def mostrar_gift(ruta_gift): + """ + Displays an animated GIF file in a new window. + + Parameters + ---------- + ruta_gift : str + The path to the GIF file to be displayed. + + Returns + ------- + None. + + """ + + # Path of the GIF file to be displayed + gif_path = ruta_gift + + # Open the GIF file using Pillow + gif_im = Image.open(gif_path) + + # Create a new window using Tkinter + root = tk.Tk() + canvas = tk.Canvas(root, width=gif_im.width, height=gif_im.height) + canvas.pack() + + # Convert each frame of the animation into a PhotoImage object + frames = [] + for frame in range(0, gif_im.n_frames): + gif_im.seek(frame) + frame_im = ImageTk.PhotoImage(gif_im) + frames.append(frame_im) + + + def update_frame(frame_number): + """ + Update the canvas with each frame of the animation. + + Parameters + ---------- + frame_number : int + The current frame number. + + Returns + ------- + None. + + """ + # Delete all items on the canvas + canvas.delete("all") + # Add the current frame to the canvas + print(frame_number, frames[frame_number]) + canvas.create_image(0, 0, image=frames[frame_number], anchor="nw") + # Call the update_frame function again after a delay of 500 milliseconds + root.after(500, update_frame, (frame_number + 1) % len(frames)) + + # Start the animation + update_frame(0) + + # Run the tkinter loop + root.mainloop() + +def main_drawmap(inputs,start,end,ref_lon,ref_lat,key,draw_scale): + """ + Creates maps based on user inputs. + + Parameters + ---------- + inputs : dict + A dictionary containing user-defined inputs. + start : int + The start date index of the data to be plotted. + end : int + The end date index of the data to be plotted. + ref_lon : float + A reference longitude for the plot. + ref_lat : float + A reference latitude for the plot. + key : list + The location key, containing two strings. + draw_scale : str + Parameter to change the color scale of the map. If you enter 'jet' use the jet scale. + Otherwise it will use the viridis scale by default. + + Returns + ------- + None. + + """ + + # Start + print(colored("\nCreating maps:\n", attrs=['underline'])) + + if inputs['n_time'] == 'all': + # Draw map for start-end period + draw_map_24(inputs,start,end,ref_lon, ref_lat,key,draw_scale) + else: + if inputs['vector']: + # Draw vector map + draw_map_vector(inputs, inputs['n_time']) + elif inputs['scalar']: + # Draw scalar map + draw_map_scalar(inputs, inputs['n_time']) + else: + # Print error message and quit + print('You must choose between scalar and vector maps in the drawmap.json file.\nWords: vector, scalar') + quit(1) + +def delete_all(): + """ + Deletes all generated files. + + Returns + ------- + None. + + """ + + # Deletes all NetCDF files + delete_nc_files() + + # Deletes all NetCDF4 files + delete_nc4_files() + + # Deletes all PNG files in the maps directory + delete_png_files(os.getcwd()+'\\maps\\') + + # Deletes all PNG files in the current directory + delete_png_files(os.getcwd()+'\\') + + # Deletes all GIF files + delete_gif_files() + + return None + +def jet_map(start_index,file_index,T9,nam,key,ref_lon, ref_lat): + """ + Creates maps based on user inputs. + + Parameters + ---------- + start_index : int + The start date index of the data to be plotted. + file_index : int + The index of the start file of the data to be plotted. + T9 : int + Time duration to be plotted. + nam : str + Name of the variable to represent + key : list + The location key, containing two strings. + ref_lon : float + A reference longitude for the plot. + ref_lat : float + A reference latitude for the plot. + + Returns + ------- + None. + + """ + + # Get all netCDF files in the current directory + all_files = glob.glob(os.path.join('*.nc')) + + # Set the path for the drawmap.json file + json_path = os.getcwd() + '\\common\\' + + # Read the input values from the drawmap.json file + inputs = read_inputs(json_path + 'drawmap.json') + inputs['path_in'] = os.getcwd() + inputs['path_out'] = os.getcwd() + inputs['file_out'] = "MYCOAST_" + nam + "_" + key[1] + "_during_T90" + inputs['scalar_magnitude'] = nam + inputs['title'] = "MYCOAST-" + nam + " Ria " + key[1] + ":" + + # Open the netCDF file for the specified time range + time_nc = xr.open_dataset(all_files[file_index]).isel(time=slice(start_index, (start_index+1))) + + # Open the netCDF file for the entire day + ds_aux = xr.open_dataset(all_files[file_index]) + + # Calculate the sum of the variable values over the specified time range + if (start_index+T9)>=24: + end = 24 + aux = (ds_aux[nam]).isel(time=slice(start_index, end)).sum(dim='time', skipna=False).values + T9 = T9-(end-start_index) + if T9 == 0: + time_nc[nam][0] = aux + time_nc.to_netcdf('condensed.nc') + elif 024: + start_index = 0; end = 24 + ds_aux2 = xr.open_dataset(all_files[file_index+1]) + aux2 = (ds_aux2[nam]).isel(time=slice(start_index, end)).sum(dim='time', skipna=False).values + T9 = T9-(end-start_index) + ds_aux3 = xr.open_dataset(all_files[file_index+2]) + aux3 = (ds_aux3[nam]).isel(time=slice(0, T9)).sum(dim='time', skipna=False).values + time_nc[nam][0] = aux+aux2+aux3 + time_nc.to_netcdf('condensed.nc') + else: + end = start_index+T9 + aux = (ds_aux[nam]).isel(time=slice(start_index, end)).sum(dim='time', skipna=False).values + time_nc[nam][0] = aux + time_nc.to_netcdf('condensed.nc') + + # Set the input file name for main_drawmap function + inputs['file_in'] = 'condensed.nc' + # Set the scale for the map to 'jet' + draw_scale = 'jet' + + # Create the jet map + main_drawmap(inputs,0,1,ref_lon, ref_lat,key,draw_scale) + + # Directory where the images are located + directory = os.getcwd() + # Get the list of files in the directory + files = os.listdir(directory) + # Filter to get the name of the file that meets the conditions + file_name = next((file for file in files if file.startswith(inputs['file_out'])), None) + if file_name is not None: + # Full path of the file + file_path = os.path.join(directory, file_name) + # Open the image + image = Image.open(file_path) + # Show the image + image.show() + else: + print("No image found with the specified name.") + + +def start_MYCOAST(fecha,T90,ref_lon, ref_lat,key): + """ + Downloads MYCOAST data for a given date and key, and creates an animation + of the data for a given time window using the `main_drawmap` function. + + Parameters + ---------- + fecha : str + A string representing the date in the format YYYYMMDD. + T90 : float + A float representing the time window (in hours) for which to create the animation. + ref_lon : float + A reference longitude for the plot. + ref_lat : float + A reference latitude for the plot. + key : list + The location key, containing two strings. + + Returns + ------- + None. + + """ + + print(colored("\nMYCOAST_LCS Analysis:\n", attrs=['underline'])) + + # Download the MYCOAST data for the specified date and variable + aux = download_LCS_files(fecha,key) + if aux == 'Done': + # Get all netCDF files in the current directory + all_files = glob.glob(os.path.join('*.nc')) + + # Extract the start index and file index for the specified time range + T9 = int(np.round(T90,0)) + index = extract_time_LCS_file(fecha) + start = index[0] + file_index = index[1] + + # Get the list of variables in the netCDF file + dt = xr.open_dataset(all_files[0]) + long_names = [] + for i in dt.data_vars: + long_names.append(i) + + nam = None + while nam not in long_names: + # Prompt the user to select the variable to plot + print('The available variables are:') + for ln in long_names: + print(f'- {ln}') + nam = input('Enter the long_name of the variable to plot or type "exit" to quit: ') + if nam == 'exit': + break + if nam not in long_names: + print(f'Error: "{nam}" is not a valid long_name. Please try again.') + + # Create a plot for the specified time range + jet_map(start,file_index,T9,nam,key,ref_lon, ref_lat) + + # Set the input parameters for the plot animation + json_path = os.getcwd() + '\\common\\' + inputs = read_inputs(json_path + 'drawmap.json') + inputs['path_in'] = os.getcwd() + inputs['path_out'] = os.getcwd()+'\\maps' + inputs['file_out'] = "MYCOAST_" + nam + "_" + key[1] + inputs['scalar_magnitude'] = nam + inputs['title'] = "MYCOAST-" + nam + " Ria " + key[1] + ":" + + # Create a plot for each time window within the specified time range + for i in all_files: + inputs['file_in'] = i + + if (start+T9)>=24: + end = 24 + else: + end = start+T9 + + # Set the scale for the map to 'viridis' (default) + draw_scale = 'viridis' + main_drawmap(inputs,start,end,ref_lon, ref_lat,key,draw_scale) + + T9 = T9-(end-start) + if T9 <= 0: + break + else: + start = 0 + + # Create a GIF animation of the plots + # Path where the maps are stored + ruta_maps = os.getcwd()+'\\maps' + # Path to store the generated GIF animation + ruta_gift = os.getcwd() + '\\animacion.gif' + # Create the gift with a duration of 0.5 seconds each frame and in an infinite loop + crear_gift(ruta_maps, ruta_gift, 2, 0) + # Display the generated GIF animation + mostrar_gift(ruta_gift) + +if __name__ == '__main__': + # Delete any existing files from previous executions + delete_all() + # Start the T90 calculation and user input process + lat,lon,fecha,time_90,key = start_T90() + # Start the MYCOAST analysis with the user inputs from the previous step + start_MYCOAST(fecha,time_90,lon,lat,key)