From e89e806c7b40d3baf9aef5e06646bf1a0848a490 Mon Sep 17 00:00:00 2001 From: giancastro Date: Thu, 29 Apr 2021 12:32:43 -0300 Subject: [PATCH 1/9] add tif_to_netcdf CLI command --- mapshader/commands/__init__.py | 0 mapshader/commands/tif_to_netcdf.py | 141 ++++++++++++++++++++++++++++ scripts/tif_to_netcdf.py | 68 -------------- 3 files changed, 141 insertions(+), 68 deletions(-) create mode 100644 mapshader/commands/__init__.py create mode 100644 mapshader/commands/tif_to_netcdf.py delete mode 100644 scripts/tif_to_netcdf.py diff --git a/mapshader/commands/__init__.py b/mapshader/commands/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/mapshader/commands/tif_to_netcdf.py b/mapshader/commands/tif_to_netcdf.py new file mode 100644 index 0000000..572f465 --- /dev/null +++ b/mapshader/commands/tif_to_netcdf.py @@ -0,0 +1,141 @@ +from os import path +import sys + +import click +import xarray as xr + +from mapshader.transforms import cast +from mapshader.transforms import flip_coords +from mapshader.transforms import orient_array +from mapshader.transforms import reproject_raster +from mapshader.transforms import squeeze + + +@click.command( + no_args_is_help=True, + context_settings=dict(help_option_names=['-h', '--help']), + short_help='Convert GeoTIFF raster file format into a NetCDF file.', + help=( + 'Convert GeoTIFF raster file format into a NetCDF file ' + 'given the `FILEPATH` relative path.' + ), +) +@click.argument( + 'filepath', + type=str, + required=True, +) +@click.option( + '--x', + type=str, + default='x', + show_default=True, + help='The x dimension name.', +) +@click.option( + '--y', + type=str, + default='y', + show_default=True, + help='The y dimension name.', +) +@click.option( + '--chunks', + type=tuple, + default=(512, 512), + show_default=True, + help='Coerce into dask arrays with the given chunks.', +) +@click.option( + '--data_variable', + type=str, + default='data', + show_default=True, + help='The data variable name.', +) +@click.option( + '--fill_na', + type=int, + default=-9999, + show_default=True, + help='Fill NaN values with the given value.', +) +@click.option( + '-c', + '--cast', + 'dtype', + default='int16', + show_default=True, + help='Cast the data to the given type.', +) +@click.option( + '-r', + '--reproject', + 'crs', + type=int, + default=3857, + show_default=True, + help='Reproject the data to the given CRS.', +) +def tif_to_netcdf( + filepath, + x, + y, + chunks, + data_variable, + fill_na, + dtype, + crs, +): + ''' + Convert GeoTIFF raster file format into a NetCDF file given the + `FILEPATH` relative path. + + Parameters + ---------- + filepath : str + GeoTIFF raster file relative path. + x : str + The x dimension name. + y : str + The y dimension name. + chunks : tuple of int + The dask array chunk size for the x and y dimension. + data_variable : str + The data variable name. + fill_na : int or float + Fill NaN values with the given value. + dtype : str + Cast the data to the given type. + crs : int + Reproject the data to the given CRS. + ''' + input_file = path.abspath(path.expanduser(filepath)) + output_file = input_file.replace('.tif', '.nc') + + print( + 'Converting {0} from GeoTIFF to NetCDF file'.format(input_file), + file=sys.stdout, + ) + + arr = xr.open_rasterio(input_file) + arr = squeeze(arr, [d for d in arr.dims if d != x and d != y]) + arr = cast(arr, dtype=dtype) + arr = orient_array(arr) + arr = flip_coords(arr, dim=y) + arr = reproject_raster(arr, epsg=crs) + + dataset = xr.Dataset( + data_vars={data_variable: (['y', 'x'], arr.chunk(chunks))}, + coords={'x': arr.coords[x], 'y': arr.coords[y]} + ) + dataset.attrs = dict(name=data_variable) + dataset.to_netcdf( + path=output_file, + encoding={data_variable: {'_FillValue': fill_na}}, + ) + + print( + 'Conversion complete: {0}'.format(output_file), + file=sys.stdout, + ) diff --git a/scripts/tif_to_netcdf.py b/scripts/tif_to_netcdf.py deleted file mode 100644 index 05b4bf2..0000000 --- a/scripts/tif_to_netcdf.py +++ /dev/null @@ -1,68 +0,0 @@ -import xarray as xr - -from mapshader.transforms import squeeze -from mapshader.transforms import cast -from mapshader.transforms import orient_array -from mapshader.transforms import flip_coords -from mapshader.transforms import reproject_raster - - -def run_float(input_file, output_file, chunks=(512, 512), - name='data', scale_factor=0.1, fill_value=-9999): - arr = xr.open_rasterio(input_file) - arr = squeeze(arr, 'band') - arr = cast(arr, dtype='float64') - arr = orient_array(arr) - arr = flip_coords(arr, dim='y') # do we need this? - arr = reproject_raster(arr, epsg=3857) - - dataset = xr.Dataset({name: (['y', 'x'], arr.chunk(chunks))}, - coords={'x': arr.coords['x'], - 'y': arr.coords['y']}) - dataset.attrs = dict(name=name) - dataset.to_netcdf(output_file, encoding={'data': {'dtype': 'int16', - 'scale_factor': 0.1, - '_FillValue': -9999}}) - - -def run_int(input_file, output_file, chunks=(512, 512), - name='data', fill_value=-9999): - arr = xr.open_rasterio(input_file) - arr = squeeze(arr, 'band') - arr = orient_array(arr) - arr = flip_coords(arr, dim='y') # do we need this? - arr = reproject_raster(arr, epsg=3857) - - dataset = xr.Dataset({name: (['y', 'x'], arr.chunk(chunks))}, - coords={'x': arr.coords['x'], - 'y': arr.coords['y']}) - dataset.attrs = dict(name=name) - dataset.to_netcdf(output_file, encoding={'data': {'dtype': 'int16', - '_FillValue': fill_value}}) - - -if __name__ == '__main__': - - import sys - from argparse import ArgumentParser - from os import path - - parser = ArgumentParser() - parser.add_argument('-i') - parser.add_argument('-o') - parser.add_argument('-f') - parsed = parser.parse_args() - - input_file = path.abspath(path.expanduser(parsed.i)) - print(f'Converting {input_file} from TIFF to NetCDF File', file=sys.stdout) - - if not parsed.o: - output_file = input_file.replace('.tif', '.nc') - else: - output_file = path.abspath(path.expanduser(parsed.o)) - - if parsed.f: - run_float(input_file, output_file) - else: - run_int(input_file, output_file) - print(f'Conversion Complete: {output_file}', file=sys.stdout) From 51f8233468bbe24cec9bcba8ecefe0ac94f9322c Mon Sep 17 00:00:00 2001 From: giancastro Date: Fri, 30 Apr 2021 11:22:43 -0300 Subject: [PATCH 2/9] add tif_to_netcdf tests --- mapshader/commands/__init__.py | 4 ++ mapshader/commands/tif_to_netcdf.py | 10 +++- mapshader/tests/fixtures/shade.nc | Bin 0 -> 2115676 bytes mapshader/tests/fixtures/shade.tif | Bin 0 -> 1050234 bytes mapshader/tests/test_tif_to_netcdf.py | 81 ++++++++++++++++++++++++++ pytest.ini | 2 + 6 files changed, 96 insertions(+), 1 deletion(-) create mode 100644 mapshader/tests/fixtures/shade.nc create mode 100644 mapshader/tests/fixtures/shade.tif create mode 100644 mapshader/tests/test_tif_to_netcdf.py create mode 100644 pytest.ini diff --git a/mapshader/commands/__init__.py b/mapshader/commands/__init__.py index e69de29..5ec2395 100644 --- a/mapshader/commands/__init__.py +++ b/mapshader/commands/__init__.py @@ -0,0 +1,4 @@ +from .tif_to_netcdf import tif_to_netcdf + + +__all__ = ['tif_to_netcdf'] diff --git a/mapshader/commands/tif_to_netcdf.py b/mapshader/commands/tif_to_netcdf.py index 572f465..5bec56c 100644 --- a/mapshader/commands/tif_to_netcdf.py +++ b/mapshader/commands/tif_to_netcdf.py @@ -119,6 +119,14 @@ def tif_to_netcdf( ) arr = xr.open_rasterio(input_file) + + # Check if the given dimensions exist + for dimension in (x, y): + if dimension not in arr.dims: + raise click.BadParameter( + "The dimension name {} doesn't exist.".format(dimension) + ) + arr = squeeze(arr, [d for d in arr.dims if d != x and d != y]) arr = cast(arr, dtype=dtype) arr = orient_array(arr) @@ -127,7 +135,7 @@ def tif_to_netcdf( dataset = xr.Dataset( data_vars={data_variable: (['y', 'x'], arr.chunk(chunks))}, - coords={'x': arr.coords[x], 'y': arr.coords[y]} + coords={'x': arr.coords[x], 'y': arr.coords[y]}, ) dataset.attrs = dict(name=data_variable) dataset.to_netcdf( diff --git a/mapshader/tests/fixtures/shade.nc b/mapshader/tests/fixtures/shade.nc new file mode 100644 index 0000000000000000000000000000000000000000..5d703ebe38adada9661866aa3ee47ac192deace1 GIT binary patch literal 2115676 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 literal 0 HcmV?d00001 diff --git a/mapshader/tests/fixtures/shade.tif b/mapshader/tests/fixtures/shade.tif new file mode 100644 index 0000000000000000000000000000000000000000..9ea0f3f0abefbd17e8c6efee26886b66c23055b9 GIT binary patch literal 1050234 zcmeEvOSbJeZskj-mzNuExKq6vK@Fp9H?r;d)nIBMHI*p-KmsKA5k(zQ1Y#{e;k&Un zDCwMg<3;)(|M*{j{_o%a{m;Ms`SZ8G|M}Y=^UpsU6WRY1?0+?>zX#ja{R^`H2eSWX zu>Z-_{O@2};Qv7OfBx;C|NOhj|3CA8{}t^2W94r&4e6Ye_F*sMY735__c(|tSb2DMNk6UJ!u#ba$2#VUi23*#^xTyKXl zE#SzcG+J#@ShFZrS#VsLhT-UHJ4|W9CMLNx)YdE_@{xW#sSR)|J0hP_#KaKak_8l& z84`gqe+?-%NZJ-TZcq=4vO!*}5z1OMHV1X?8j4AbJ{3K zL2i{2)Km*n0!q!*2T{P9sq!r=BZS=wB`B$+Nf>I))yGl5nxyz0Cu4+Mo(~l8SrUa( zcXb&Oc}0G)@{Ce)iIn7of)uD)3CdcojD)I<4<-uv^dlPc<5`3XK8d3k%Gx%EVz~5i zJE>0AU%^D2sL8YPHGGalDHzdD>VE2=M=qK_}=6GY=G5M%YgV1 z^ZFB>qv&0ZEyPm81q+(-^+LNXb*;6YRr(`7CQ9vCa>1Yo-n-E5N?li_sdyeLbRQYT zc0G0v-bKQ_$zj6UxSWp_F#VP~7|8%K3C=hc2>Of#F5rhNRN!ms!%=K!AjZYn8+HP| z0peQ`DL}Oeu)}p`Oa|fH2^`axcOm3Fb=^P?Cvv%+1MHQd)k{Xgh4k=pXAo#lcSdiSLN2-3|pxMsMXXbh1=Oq=Nc9J5R!X7F6ffHuK!(VE{ji>AOMCBJg|FEgMQuA{_g8}6bR@NmUmHZZi;ab~!S^w9)((>Qz}Iz&_$Ct8f?_Fk%?#n=NdbgFOtxOfJ_aJdb?=cBY*n1HJ22Y3ys12?Vl2RTMhlS6w;5hp{OxYVmFhr3$z)MTqeZeg1R8&uPCvZ>G%;& zHbMfyVU_qG{E6Bi#CD;&mraJA4Y91)ga`0{qAncf(NOW5rXxxS*a!&(rxkZ7xXTBM zFo(Natftev(Rr$%6=xx4t~mSw+cCe!(~HGDNd6b~V<`i6xiX}Gpnt0pOZ_6DvL)%i z2=#usqkf4-DIb0LyM**|@#LwM`X_;2mT$%b@k>lhQ&tZ!c|0rI(RI{s5{vRbsQ;#P z*BR$r%SrFAP`v#Ey0I2@YzPgmSZa_Dn z8_*5t26O|uf#n;J{gVOvALT9Iu>$G_bOX8p-GFXDH=rBP4d@1R1G)j-fNnrHpc~K) z=mvBHx&hsQZa_Dn8_*5t26O|u0o{OZKsTTp&<(8IfbhTZvT~J*r5n%<=mvBHx&hsQ zZa_Dn8_*5t26O|u0o{OZKsTTp&<*GYbOX8p-GFXDH=r93vH|_yT$26oS@rzIpTFn@ znEPM#3;C?$Wa{~gzW?p<3x58ce7X9)e6jk2d`bGr!!AyL_PE=FHzDq0@yJ*>?<2L1 zh!U<}xcu<{sb%CwIkLtd|B=#$L^=Jm(u8Q>V2_i^#ZFy8dD8ZVI92U{E|ssxKX98I zSz_;f^H0zgjU%-ZQ9*JhU(N!=>-P(=2Od`8z7~^vp;>iB-gFM^|$dvW%ym)?Bx zekSs7K78-vo8kN$0PDy0`O4${54V4i5BGwM4LH$p6~bQrMz_@;s~kf=|WQ8ex-g<^3hiw za{R$DyMXYaSN8ltYng=1G1unZ-b@~{g2owp`Thww_Bm+i51)iq`myhU<}Ds>fYyq> z{uCsMjFOZ*_4e;5Olf922ZVb1dijs9AjzxT-?8B1LV5a8UG?n_6@35KqoB@QD^fy5 zCHwI(lCS#tv-B(CbKj4q8=#`)=-c0Djtgk&uOtr$cl6uz0V=B!I`ZicJz*6mZ3Oh! z7L*P@{k4Dt_1EO5xL=g@&w3(~uB4T-Qr%hlM~~C%H;=<%^0~9-VnKg;3vfjT$3VaE z;}4l9)X^vCD_ zuu~nEqvvloFut!1D%Y}gH^2s}#wn~lF6sK+4?yF~-=K2s`P+|x4Mbg_@HM^{qz#n{ z*Z;MTtD!T!P^9`l_P)AswmX#C*Ngj7F!;v~oELH!RGrEe&fWkj=^C^);JlE+plDRK zaQN#`NY<$NI_HH1Mm6KQh2!6b!m@_#w@I&?KP;IPuABch5|K6Ryv;hBf8%GPVacR0 zoBy(Fsm)R#vWA`6X^-?d*0adNl1bt0v?uy*$-nfSKds;i9n+YW)@*ZY&#*a%|Syn?^17T6&`2-zzNUokPnuzh8~qT0j_13J|{g~P*kLcL-Q!>=nu^xQ9L zDYDJd$e4#vFPLN4YpZ~sMYVSJFE3r>>O{c2dc8VlL4Bm?u-svj6Q9u^F)tbml7KN=wD;&6{8RP zL`7s6z@s0HiK(&oiZL-~K}%#<(?2yMqK+F=bM7}0f(Fj{>E54t`T>PNcb)rErVt1( zkdO3FfuffO!EZT}gYLGqDB0W`eh-z&&kefW#W2C4Nqh`3W={^f-PUF|3*ScNva^%! z_HkTdY!*BM3>&kPZuiv~+E?H-cn!1~pPqEPF;KEN1-ohR0;w06o^-p>GxIPR%W3Qk zr|V7+TF_Y6KM&p&Obg}*E$DPqJdQU}U=p6HYkHFt7Pck1i0D0h1k^F_%~{gz85*ca z^)_ro>KeC4-3JKz6V+9a39)Y7pLH7{BX=9m0A!F2cg3`u7?j;jFyBrgo8FRnw?Htx zTR^E9L$+^mVK$ z^wmwv_umnX(yOKHfrkWk%su!nX3^1%(~Bo>0f+VV>@5f{CehQ3@{1>L0f*#u%`FHo zCean03Kmb^11`zyS$ptZ&Y~w9^2-Nr0totg*G=fIrqPoP`PFlG!2^B0>n?m(^XTag z`PE~0!5ftS?r%JvTh^%jL-h~KSN+f3gD)ZvpZ|*-pByb*|FHZsAOCUrs{hHS@FnaE z$A9Gci`DN=^NRZA|Hk2^JKm2iln?y-?^g-mA5Na%Out3XLZy43!ixw_PMV*o8<9`; zmykYT1-X%HDZhXGpVg1Vx&cbOTdP2YZ{3=m*eGU5gDE_IV5h+Kj;KHF0R)k{(t)yX zUO|s#@9d~Q>VcBVHP(I708y4a*!~*j&~V|!x;+icx6Ul8F(uLVMr_LBxf|=YG%~i9 zqYZ@%%I5OZ(ohj+ZYdj);y91Q?4le@yBJN{)@&=NWTTo&-iKq=j>hmk%t(xSm|P0Q zsvQkOGt%;ui-$ZZ$*rt2PX|9%?Pyqz1+S53nluKb?4>~8DnMjp%vd=%80&E`vt!Mk zhGAPJmMJlXG?E%=oOr2dOUrPr^CCiQT@moTG)%lY_#PQUwm}3-F=fcLc5FoP%#0~`ed1b9E;CwKn(f|sTjfyN))t}8YZr1rT7cuG0gwkGJ%)5r@VFRGj z6=#2FUm*asqx4*Tr5Lc{wNm$RIF28=0YmX9C10LZ!yGi2t;^aTaxshkh)~@xv=snN zt8El#q3WH-KTZc)lx*gO>MY8;2$>Z4K`09*srrorqy4ot6Q5bD4stDIgGJNMgU%mb zBa7}#Q)y~KeYZN5@*Qz5GCZgWjG(Wo869VNj>!**wgLS^`JzNJU5RmN=_a0~3HqCq zoE}r*uEBA=s4L}&g(`M4laO3X&NNge{iY!AaW&;1In+MB=L(uAFM7YaN?Q=+c@y`< zRA%6sy=+Rf#m!aPg4j~%kD1(P;l7;1RGU<6p(}_TeiNxFCUPT{>}WY%mU5Gv)8s0g z75_+0F_asrwe)W31h^WmOAdE)AgY4q#LpOPqrI+K=APvXz+uv5&d=+paf#H?{ z_qlkf7jAzKxs>JVbtct#u_=lzuRlb>GQtJQ_$XxWUoHN96b@kk*^3L!-f?6Qr4U6) z`vh?FreY4a-f7eIY%Ajlw<=5y7kS%HLo-8|WKp^^pp(X^>{e|-2ZK!q;9jpU^9aO_ zpa6ugF?rVjP={lj0?!r{!I8jVmm?7HobCJ4P#+|Jj*K6wNvO8mcuW@?Wa?%^mP6?E zbesdB@O=1;`*U_q*@r;wIOCQzzl~T%*+fi|NoUoUTnud*i_s1&=W}Vo{bJ0~*!KYu z0>U;?9)0mhG=0cK6dz!c(4Bsc(F0StF|}A^SSz>}NASkHhxJUiXZQ@ZL5&O8RDSKT zT(pq=Bqe#=My;pJob()B;Q>OJAp4Z!l-^Yf6UIvIoo@a^a84j9E>k<-1z{O1wo2sETy@ml9qIwn%>EUjfE{P0$=u-CeV5uVn2|{PEYa zUW2XKOU)`aL48Nw`SRPx+s>{!i{InK({Bsx+#PM+JKsBF`tK>Y*WKRj&1^$HVr{E# z4%)Q+j(*p>sjfj(KNmUecc_60To}{Pg$38prQ;k>yWulYxO9KLbF`KRO03(oNAZH_hh zOw^B4)c)}2BB*zt?D@yLNd}?GqRO3TF_`ctLY6y_PgX&_k@C+;(eaT05@t-;L`lAp zY4(*!n?|gPy8c$C)wikGf|e8C6j`+RfN!iMKNAk}Yd3l0gpbhQk?-Dcm9q@3mFx$? z_RM>S*nBWt^9O{o6fJqb05;tV`o-1P)9Zgb4`;_IsJ#p@=M(f}J;>%(g3`_e`6IP? z?+!j3|16hp>ksT_#lvg!?h@zc-|K|Kn??ZubDhR`uMybKGJt-6oke-C5BT>P@TUv? z;o67Us{-ivSyk?C0QjbUVBeST{$G+XWq|Ny{fw+4R5^a~_BT5y`nC@ELmQ!3mlh5_ zTt=|=sd1!-=p3nkT)z3ykXutYbadgWwvCPJ=j0>R$=p^eN9>mVq#0Y>m~CU0_$)ar z8ridOuk@{#KfTUZ^w+-AbjhFt&&+P?Ou_tJ+L<H~_3Sx9Nl>-k7i;=E@SrfC~+|Wa1aqcLNT6 z7{pdzDITsxg+y=ept>cd#~+6pS8soE9mh?Txnk<4x;2(VUjtR3bmUjoL-pofG30K* z47dw1*IyZ&3(owxSvz(K*Kg02JC^LcbC+vb8msYII>i50kA(wx3|#-b4MbK? z0$lPHAO#!NY9{aCC4p&vinXj%|6wZ$Od?W@SmgDWsy}UEfgl9OYBtn<{fhMkEjU!Q zzpgv-PYNNFB6SOD54c8=K}+;o#sRuP0?5pLh;vt{J>u#Gf)q|}5rg6*u1TGdlbnWi zglrJe&{<1C>qoBbU({qG8@GU!OTHz4LqDZVJ+C0FAj-*B;{Ko0$K=Nhs|8V}9!g-7 z=*NjK+C=`K09e3axt8e$bOX8p-GFXDH=rBP4d@1R1G)j-K-d8Kc?!&Uomf)rHO53c z*J2^FIG)1TS#`@z-OTUTT8(Tjp;?P9xg7MEq>YX#JW|_sie3_E_m)}Gyhwk-O!HEV zwNhc{)py^?ThUPh0WbO3G#&2kjd3A*??Bz-%uG4g&cy(rKJa&7IFBnUFZ~pXkdI2?c=<0tm57G(CL>i z*^Ku%<*bo$$FUe%SDLTXGCWb}0ut)t%?nt+JN|MKB7ci9!g1ymu#(lK?hC~^OYC2O zVQyHAWbIpMmzu8>=PZ$b1*SYO1mw(nXqUP#6z43le*tE(`~vO@l}oi)Z)RV?$y!VI z3K;V&U27k&E{UedI7)F`2?VSQVB+PM>%6qR3&n6c%yk@vX)Z$JXr{90zV^{^VOBXQ zM#fQMOWha;vy}zTwe}0u#iSG%MoBGIYZ%KH7C0CC$IFXJF|Yyyz{as$CA7us#r_NB zaYSJZgA|=*U>M64-tC{8mOpf(C?(q>G742u|Jchf@Unc3nb964owaf9D3q}YoeAR7$E5l+fJ9X9h$0-8_OJtz$UI{yO^p`c2<`}+2 zEp}n!62kRjJc`(3P^5)%#!y@p(``Z*047TLnJzkp)&Q`nF%Vb9BV7QPDCKAR=onlJ zVSD-6CqC8kTm5u)^u|ccR>d)#F$BsrqSz3ID?&}k9Pgj1M3WeE0Fvp#p#cOa!EMQg z>@(LihqDG|a&0I!fB+?^3z?98=86V!=D<*{4aEi!LJ4ZZ<~YDiC7#6CeMqK>g!%}f zf^;QkxPPiJ&Ec&+DBqW&eFR^TI;b_;KUYU*6a zF^2mHp(1urW4M2+kj^T-E@;_8BVB-4K>NUp=_d>rQoVMERy!flMSucmpjXJQztTAs zuQ#^Rmcl)Nlutd_O8K=Gp3$&-LmRC=)dNU*7AmFJTI{eg*dJQ<&`2KvDrjHuAi4O; z&SHW?W0}4b8bYu|sRdcX-Iof{fQ~r^+X5LwFjXwbaQAp2JEsyHMXj`(@F)VWf4qCB zvQD#-8A7#1mHwOhhsO^URykG^L$I#sJ_Ls_KEGed;rC*F)KF0ex&txXJ5X3>SkDZ= zhLZaj48r*MZY6_05bDClf+|?7=ot(`uVpyTU=M|c2i$-CaeT(dw<|g9p;#LhXRC0y zsAV$%t?~;w26;3zKBbB{3c&!3wzlgS;L%VUm}IMvq^jYR0FB}csSGe_$cr;c=Wik~|rjiM9%}m+# z5C=RQyELwXI)=eDk99VyIM@rZCU%kJfr~OW!1S_p*Mbb{rO>r${Ext67!0kk#zqx` zc`?)gucXW`JF*#-!YrIMSvRY=>@tuSLzhSThHT0RO4j1sk-kO^2YE5pKyRnWoOY?t zk_PXLv^8oN#LJ-ud?$rRbxK_t*9Uu~tzN?bUJupbo0)7-vo<8N7UPa|RclJPsYn&S zl_(~)iXm4t-O*oyO-6v-g)1{@q`Pbz>0)Y1pc@eezZ2qyby{4y>>KGSYD$ij)Idk@~1sm&-A&-5#cZfw>i8Ml?dzQH>s-VmiA$WdVb7 zFI0|bMe4I!T`tG8c6*8f2IO9-n9vT?hqe2PpBEfZuP4jbhfim+34OOZsn^Oh_F71u z>AxK!1IC={%w9Xw*lQtqrhhg>aIZP_ksTbSvC~1*O#eiPVorGVnQbtpuicPm8Gy^7 z9P_&07}*A68ruz7mg&D5$`EJV*2p$q+1akovSs__NQOA&wuZI=%g%N^&6eF)BNT7a zYY%OKmYuEYELS#Pj%0|FZhLGCwCrqE(_GnmIYI&Fz2@KsY}wZ+rm3>^dW0h0@LHoA zuuNN{nxvT4%OL`I%V~{n0GDlzVv;I5Cn5y#j?QLxj+J(vc`wj;R}ppC{OIf6noOCd>H<~+c< zbsZetoIx>~rI4g8QyxIwx{gk651}aSTAy_t{J%A!V0CX~Ot+>EPcvlGBC?RD_4 zq}zi~whf93jd`V(b`E)M_-omrfwrg(OJT0m(#`>|4SqE{FwmE@fho+DTH4w5+R)dt z-GNZhfrc`7?bOb`0D7=9dBVHpbihe#r*=+%4|Fb1c(krqdok zS}&B6zPi&!ypgSs%rng)w76ADD+j$6;Jw@+0aMnTLtz@Fv~bL8z%5FR@Mw;r0QFK@ zH{{j9)@4SBG^Y`OMkT2mavER@Qv+0*(@1~4l9Y`&b*QzO0WPh9w7p(Q>$+YYXmzGb zrTPBLx~t@}x}ICbc_7i_($b&zR_W!1ZNCchM50Z_Wou)L*5SgU69;N2Yvb^-jwe^_ z+TfymxUlFB`r! zk5p>HRt@0cc%tA2B{x|7_@eCg@$+*Yk0K$r^w)?Y{H9s!e>P4jnOQLaR%L#y17oxf z>a%O5{o!y%!nuA2aT65=MJHcZl+^-!`@>O|%$)uTQ+5Iqth7HHW_Xwo-1t6QVUV|0 z$|zRel>A!zqj5LBU>I+F&#uBCQTHg7vI0Hp3vR9Z*|-^Q24sxvND|^XkdoR*Ux7ut zqQ{T;Q8co!Mwp3XJPlj{U2G*OLAbuc8tl?I z;TVxg)HpG5$)G5gT7O#{iTbh8jm8|E*lvwEh&x>uW&%??4(xQDB#{8DH3@Q~&CMU` zPfQo7Pk>+z@mO6{-vBue;7G2P3#qz7jv!g*O7qfMem13KJ^art0vIUSw;)HF?I^a6 z3p-x1I?+PseLgHTK_*481zG-zE3eu-qKRGw8mQ-Hp*EjJfn;)>DVFLg zRs}gBFjfWXMwl6rt=Uy@6WCS=at$OF3Q4T^3;{I0IP0BqvkBfUk+?gLZG~V7kwrow zjzVwsii=m+{Gd@}zB@z*Kx`!{Yr?rCD!yU%=8Qr&aYjL6T@x)NWATh(cfE2*8|wnY zHW1EU04+-~P{S@8E0G3o!bJ6D@2V%vPfu7Nl z0y_p6gqWK&7|4N8F>Ih`yre*fKmh@X`D+2$55!^p(#eWAff_j)%}#kaWZf^}>$P_? z5Xef+ z(l8kaPB8%zv)2N!62SPClEq;>G1|q9n3*#Qyh;F}S1MMA(ZpmHLsDwWD)1_S1YRjv zA5J5Ym5o7}rfJ)_f(#D31vV6Yu6S`Q&Z-*Oz-paM*jl)zKHQR`$;$G( zVRNVynW+l}gPC&PDk~n0AZ`GqyiI+jxVq-DotjrW6~+-tkm=yD;v+dhzeT}@+OBW zlNozbC|NP-j1>QoMaNe>#D%LsY1V|EX3`b06^{miTl0z-;5rm;o4$#!nF8dYW};?1 zdX6y}WG7%0bvQsKW@c2+zbv=a zEB}f5InYu0w>U)xjKPsw9D}JGtjoECvA6=r)sxk(m;eIIHP$?8*uk{{A?3JrYHI0T z++p*7^je?Khs}8X=1*=SALT09m_udtv*o`F8nK`_a(rNV#Ljo{z^p5ffsSp7cfpnZ z(ORoNNe`bnqs>p&Ia1vLH}8JbEs8q z*J%H_3HAH-1*ENP3uFKJy?~n&7jSl}o%-*|zqviv{=rjUAvbIU|(6EJ?)=j)c}nZ{>0n3$X5HJEivcjj+`c<1$Fu%j%+>uI#~8aeEW%*p z9_0FN%q_QXP0PW8e+%=0<_b+0zB8_ddk6E0-WpFEzca6fdk6E0-WpFK`djjEoj?3b z<9xsqXLtiMr$_wHl znvKmPKG9iY3GwNf08m_~5g%zR=;eXgsX0#cX91t-i?nLS?ARLK$L{}obh#zWF7%l` zjv#D?_oh4idl1XJ`R#>%w~`5bBc>nz*M<#vt@3C@ZNJtSXbw+;~MgHA38+FaZ? zd46XfxL>(udZ0B6f5Qdxm#$QrYo(#jc$Z|SVyy4W@@xOoOi3wkA^pAp1wLi+^19Ka zF_fmjx2&#Gz95P8`Q(4i;`Q~SNTn%7-q*~Y&|3a$I)QIZ&(%2Kec*ak+ED!mbX$r; zTBeHjU%-^C@usxh%~mlkVO8Z;3%Dh!|G=bUhoAVj`uMx0-YV$-YJy%{V9V!w1E-`hhYQqLfhpqK=I z=>!79BTap+7PNG(xILBP=nw5kz|V|s)2Q)lHpL|Fj=}0uarJsT&A(z*d5nPIW?YZs zzq0ZCD|X~(o1$Zk0gzfbj*r@8_GnY88(>>00SuQ0$6hP-C|s+?@j;vJey}N(AyU`P z1VgPZ5-KOPC_ZZ5(@&;fcB&kENT`vPqQsbK+Q$mnDmwhK$6~r*4az1d<*c#}S!P0O znHY{_!>_vaIW;8LK~Aiwtb=A5=*+@bT!5Imb_Q{nWlLFA)>I*Bi&Ci1lplKWU8P@DV{7^;k}go zg~c)8V}{MuWg{R~3(6z&`WzN~EQscI%rQJtg%C*`9F)&ZD0%vt&#n7&OadO;ym}Tp zq#dkNC^K!OTGr#R*>VI#*zzZWFmUKPMZhDot@WX7`2)c^13u#@T>QkbNIZ3ZM!lX# zxf883sASBrtNiNql^OMhJ5ssc27y{C!PHJQRd~xF<)N6UO{sM7IP=l!_~3) zjRq)~>7oJSRgvnMY70#iqu2oLF&vv??BZ)0(6cIoQCp>= z8}<;f3?U{nW)~Z2Lf5KHPJNYvZrCHlvIK~%m|bh230<=`IX2b`dT|GkiU5y%7^L)4 z3ucX6D}z&OrJxt~0I>@2Yyj-|x`|bbj5uJ#;Af&vzMvO%0I3M@Yy|A5^hf+5BM?ed zorPPo)R=1lP$l5m5ZE}6N^hGHf6M?zXl~YsGLvQkglRT13D#*#vj(k5$pSMyop}Rk z1d3)1G|rTuVS}cbQmdRHQ1(Rhkg|SRwI~vY4I6eaUmPge0F-C8L@B2Jn%Z25k!JR-Yf^e!0)H}pMo@E#mZ8#i4mQ;v1oH1
;Tns;3fvUs-%lBLbPL^ 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 Date: Fri, 30 Apr 2021 16:12:47 -0300 Subject: [PATCH 3/9] Add basic CLI and examples command (#80) * add basic CLI and examples command --- mapshader/commands/__init__.py | 17 ++++++ mapshader/commands/examples.py | 31 +++++++++++ pyproject.toml | 6 +++ setup.py | 99 +++++++++++++++++++++++----------- 4 files changed, 121 insertions(+), 32 deletions(-) create mode 100644 mapshader/commands/__init__.py create mode 100644 mapshader/commands/examples.py create mode 100644 pyproject.toml diff --git a/mapshader/commands/__init__.py b/mapshader/commands/__init__.py new file mode 100644 index 0000000..214d9a4 --- /dev/null +++ b/mapshader/commands/__init__.py @@ -0,0 +1,17 @@ +from pkg_resources import iter_entry_points as entry_points + +import click +from click_plugins import with_plugins + + +@with_plugins(cmd for cmd in list(entry_points('mapshader.commands'))) +@click.group(context_settings=dict(help_option_names=['-h', '--help'])) +def main(args=None): + ''' + mapshader command line interface. + ''' + pass + + +if __name__ == '__main__': + main() diff --git a/mapshader/commands/examples.py b/mapshader/commands/examples.py new file mode 100644 index 0000000..a27c3ef --- /dev/null +++ b/mapshader/commands/examples.py @@ -0,0 +1,31 @@ +import click +import pyct.cmd + + +@click.command( + context_settings=dict(help_option_names=['-h', '--help']), + help='Copy examples and fetch data to the supplied path.', + short_help='Copy examples and fetch data to the supplied path.', +) +@click.option( + '--path', + 'path', + default='.', + show_default=True, + help='Relative path to copy the examples.', +) +@click.option( + '--force', + 'force', + is_flag=True, + help='Force overwrite examples if they already exist.', +) +def examples(path, force): + try: + pyct.cmd.substitute_main( + 'mapshader', + cmds='examples', + args=dict(path=path, fornce=force), + ) + except ValueError as e: + raise click.BadArgumentUsage(e) diff --git a/pyproject.toml b/pyproject.toml new file mode 100644 index 0000000..a207dee --- /dev/null +++ b/pyproject.toml @@ -0,0 +1,6 @@ +[build-system] +requires = [ + 'pyct', + 'setuptools', + 'wheel', +] diff --git a/setup.py b/setup.py index 7be3ca0..858435c 100644 --- a/setup.py +++ b/setup.py @@ -1,33 +1,68 @@ +import os from setuptools import setup -setup(name='mapshader', - use_scm_version={ - "write_to": "mapshader/_version.py", - "write_to_template": '__version__ = "{version}"', - "tag_regex": r"^(?Pv)?(?P[^\+]+)(?P.*)?$", - }, - description='Simple Python GIS Web Services', - url='https://github.com/makepath/mapshader', - packages=['mapshader', - 'mapshader.tests'], - install_requires=['xarray-spatial', - 'datashader', - 'geopandas', - 'click', - 'jinja2', - 'spatialpandas', - 'pytest', - 'tbb', - 'rtree', - 'rioxarray', - 'matplotlib', - 'descartes', - 'flask', - 'flask-cors>=3.0.10', - 'rasterio', - 'jupyter', - 'pyarrow', 'psutil'], - zip_safe=False, - classifiers=["Programming Language :: Python :: 3", - "License :: OSI Approved :: MIT License", - "Operating System :: OS Independent"], - include_package_data=True) +import shutil +import sys + +import pyct.build + + +setup_args = dict( + name='mapshader', + use_scm_version={ + 'write_to': 'mapshader/_version.py', + 'write_to_template': '__version__ = "{version}"', + 'tag_regex': r'^(?Pv)?(?P[^\+]+)(?P.*)?$', + }, + description='Simple Python GIS Web Services', + url='https://github.com/makepath/mapshader', + packages=[ + 'mapshader', + 'mapshader.tests', + ], + install_requires=[ + 'xarray-spatial', + 'datashader', + 'geopandas', + 'click', + 'click_plugins', + 'jinja2', + 'spatialpandas', + 'pytest', + 'tbb', + 'rtree', + 'rioxarray', + 'matplotlib', + 'descartes', + 'flask', + 'flask-cors>=3.0.10', + 'rasterio', + 'jupyter', + 'pyarrow', + 'psutil', + 'pyct', + ], + zip_safe=False, + classifiers=[ + 'Programming Language :: Python :: 3', + 'License :: OSI Approved :: MIT License', + 'Operating System :: OS Independent', + ], + include_package_data=True, + entry_points=''' + [console_scripts] + mapshader=mapshader.commands:main + + [mapshader.commands] + examples=mapshader.commands.examples:examples + ''', +) + +if __name__ == '__main__': + example_path = os.path.join(os.path.dirname(os.path.abspath(__file__)), + 'mapshader', 'examples') + if 'develop' not in sys.argv: + pyct.build.examples(example_path, __file__, force=True) + setup(**setup_args) + + if os.path.isdir(example_path): + shutil.rmtree(example_path) From 778e9866ccf5b4d2055ed02a1eef2098c1e61a52 Mon Sep 17 00:00:00 2001 From: Giancarlo Castro Date: Fri, 30 Apr 2021 16:13:43 -0300 Subject: [PATCH 4/9] add flake8 Github Action (#77) * add flake8 Github Action * format code --- .github/workflows/flake8.yml | 18 ++ .github/workflows/python-test-suite.yml | 7 - conda.recipe/run_test.py | 5 +- mapshader/__init__.py | 7 +- mapshader/core.py | 2 +- mapshader/flask_app.py | 141 +++++++----- mapshader/io.py | 10 +- mapshader/mercator.py | 22 +- mapshader/sources.py | 2 +- mapshader/transforms.py | 5 +- mapshader/utils.py | 284 ++++++++++++------------ 11 files changed, 268 insertions(+), 235 deletions(-) create mode 100644 .github/workflows/flake8.yml diff --git a/.github/workflows/flake8.yml b/.github/workflows/flake8.yml new file mode 100644 index 0000000..dd88038 --- /dev/null +++ b/.github/workflows/flake8.yml @@ -0,0 +1,18 @@ +name: flake8 Lint + +on: [push, pull_request] + +jobs: + flake8-lint: + runs-on: ubuntu-latest + name: Lint with flake8 + steps: + - uses: actions/checkout@v1 + - uses: ricardochaves/python-lint@v1.3.0 + with: + use-pylint: false + use-pycodestyle: false + use-flake8: true + use-black: false + use-mypy: false + use-isort: false diff --git a/.github/workflows/python-test-suite.yml b/.github/workflows/python-test-suite.yml index f9952d4..51fb73d 100644 --- a/.github/workflows/python-test-suite.yml +++ b/.github/workflows/python-test-suite.yml @@ -28,13 +28,6 @@ jobs: - name: Install Mapshader code run: | $CONDA/bin/pip install -e . - - name: Lint with flake8 - run: | - # $CONDA/bin/conda install flake8 - # stop the build if there are Python syntax errors or undefined names - # $CONDA/bin/flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics - # exit-zero treats all errors as warnings. The GitHub editor is 127 chars wide - # $CONDA/bin/flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics - name: Test with pytest run: | $CONDA/bin/pip install pytest diff --git a/conda.recipe/run_test.py b/conda.recipe/run_test.py index 7e342f8..1042d3d 100644 --- a/conda.recipe/run_test.py +++ b/conda.recipe/run_test.py @@ -1 +1,4 @@ -import mapshader;mapshader.test() +import mapshader + + +mapshader.test() diff --git a/mapshader/__init__.py b/mapshader/__init__.py index 049f32d..5546248 100644 --- a/mapshader/__init__.py +++ b/mapshader/__init__.py @@ -32,5 +32,10 @@ def hello(services=None): print('\tServices', file=sys.stdout) print('\t--------\n', file=sys.stdout) for s in services: - service_msg = f'\t > {s.name} - {s.service_type} - {s.source.geometry_type} - {s.source.description}' + service_msg = '\t > {0} - {1} - {2} - {3}'.format( + s.name, + s.service_type, + s.source.geometry_type, + s.source.description + ) print(service_msg, file=sys.stdout) diff --git a/mapshader/core.py b/mapshader/core.py index 75d8074..cc60d09 100644 --- a/mapshader/core.py +++ b/mapshader/core.py @@ -278,7 +278,7 @@ def to_raster(source: MapSource, return create_agg(source, xmin, ymin, xmax, ymax, None, None, None, height, width) -def render_map(source: MapSource, +def render_map(source: MapSource, # noqa: C901 xmin: float = None, ymin: float = None, xmax: float = None, ymax: float = None, x: float = None, y: float = None, diff --git a/mapshader/flask_app.py b/mapshader/flask_app.py index 5af5ca6..c7a8432 100644 --- a/mapshader/flask_app.py +++ b/mapshader/flask_app.py @@ -74,12 +74,6 @@ def flask_to_geojson(source: MapSource): if not source.is_loaded: source.load() - q = request.args.get('q') - limit = request.args.get('limit') - offset = request.args.get('offset') - simplify = request.args.get('simplify') - bbox = request.args.get('bbox') - resp = render_geojson(source) return resp @@ -128,58 +122,89 @@ def service_page(service: MapService): plot = build_previewer(service) script, div = components(dict(preview=plot)) - template = Template(''' - - - - - {{service.name}} - {{ resources }} - {{ script }} - - - - {{ psutils_html }} -
-

{{service.name}}

-
-
Client URL: {{service.client_url}}
-
Description: {{service.source.description}}
-
Geometry Type: {{service.source.geometry_type.capitalize()}}
-
-
-
- {% for key in div.keys() %} - {{ div[key] }} - {% endfor %} -
-
-
-

Details

-
-
Data Path: {{service.source.filepath}}
-
Span: {{service.source.span}}
-
Overviews: {{service.source.overviews.keys()}}
-
Aggregation Method: {{service.source.agg_func}}
-
Colormap Interpolation Method: {{service.source.shade_how}}
-
- - - ''') + template = Template( + ''' + + + + + + {{service.name}} + {{ resources }} + {{ script }} + + + + {{ psutils_html }} +
+

{{service.name}}

+
+
Client URL: + {{service.client_url}} +
+
Description: + {{service.source.description}} +
+
Geometry Type: + {{service.source.geometry_type.capitalize()}} +
+
+
+
+ {% for key in div.keys() %} + {{ div[key] }} + {% endfor %} +
+
+
+

Details

+
+
+ + Data Path: + + {{service.source.filepath}} +
+
+ + Span: + + {{service.source.span}} +
+
+ + Overviews: + + {{service.source.overviews.keys()}} +
+
+ + Aggregation Method: + + {{service.source.agg_func}} +
+
+ + Colormap Interpolation Method: + + {{service.source.shade_how}} +
+
+ + + ''' + ) resources = INLINE.render() html = template.render(resources=resources, diff --git a/mapshader/io.py b/mapshader/io.py index 92ae6d3..de2af9b 100644 --- a/mapshader/io.py +++ b/mapshader/io.py @@ -1,12 +1,8 @@ -import rioxarray -import xarray as xr -import datashader as ds -import geopandas as gpd -import numpy as np -from affine import Affine - from os.path import expanduser +import geopandas as gpd +import numpy as np +import xarray as xr def load_raster(file_path, xmin=None, ymin=None, diff --git a/mapshader/mercator.py b/mapshader/mercator.py index 0f2e7b4..685a7f0 100644 --- a/mapshader/mercator.py +++ b/mapshader/mercator.py @@ -54,14 +54,12 @@ def to_ogc_tile_metadata(self, output_file_path): ''' pass - def to_esri_tile_metadata(self, output_file_path): ''' Create ESRI tile metadata JSON ''' pass - def is_valid_tile(self, x, y, z): if x < 0 or x >= math.pow(2, z): @@ -72,18 +70,15 @@ def is_valid_tile(self, x, y, z): return True - # TODO ngjit? def _get_resolution(self, z): return self.initial_resolution / (2 ** z) - def get_resolution_by_extent(self, extent, height, width): x_rs = (extent[2] - extent[0]) / width y_rs = (extent[3] - extent[1]) / height return [x_rs, y_rs] - def get_level_by_extent(self, extent, height, width): x_rs = (extent[2] - extent[0]) / width y_rs = (extent[3] - extent[1]) / height @@ -100,21 +95,18 @@ def get_level_by_extent(self, extent, height, width): i += 1 return (i-1) - def pixels_to_meters(self, px, py, level): res = self._get_resolution(level) mx = (px * res) - self.x_origin_offset my = (py * res) - self.y_origin_offset return (mx, my) - def meters_to_pixels(self, mx, my, level): res = self._get_resolution(level) px = (mx + self.x_origin_offset) / res py = (my + self.y_origin_offset) / res return (px, py) - def pixels_to_tile(self, px, py, level): tx = math.ceil(px / self.tile_size) tx = tx if tx == 0 else tx - 1 @@ -122,19 +114,15 @@ def pixels_to_tile(self, px, py, level): # convert from TMS y coordinate return (int(tx), invert_y_tile(int(ty), level)) - def pixels_to_raster(self, px, py, level): map_size = self.tile_size << level return (px, map_size - py) - def meters_to_tile(self, mx, my, level): px, py = self.meters_to_pixels(mx, my, level) return self.pixels_to_tile(px, py, level) - def get_tiles_by_extent(self, extent, level): - # unpack extent and convert to tile coordinates xmin, ymin, xmax, ymax = extent # note y coordinates are reversed since they are in opposite direction to meters @@ -151,10 +139,12 @@ def get_tiles_by_extent(self, extent, level): return tiles - def get_tile_meters(self, tx, ty, level): - ty = invert_y_tile(ty, level) # convert to TMS for conversion to meters + ty = invert_y_tile(ty, level) # convert to TMS for conversion to meters xmin, ymin = self.pixels_to_meters(tx * self.tile_size, ty * self.tile_size, level) - xmax, ymax = self.pixels_to_meters((tx + 1) * self.tile_size, (ty + 1) * self.tile_size, level) + xmax, ymax = self.pixels_to_meters( + (tx + 1) * self.tile_size, + (ty + 1) * self.tile_size, + level, + ) return (xmin, ymin, xmax, ymax) - diff --git a/mapshader/sources.py b/mapshader/sources.py index 10c90c1..a8d74fe 100644 --- a/mapshader/sources.py +++ b/mapshader/sources.py @@ -16,7 +16,7 @@ class MapSource(object): - def __init__(self, + def __init__(self, # noqa: C901 name=None, description=None, filepath=None, diff --git a/mapshader/transforms.py b/mapshader/transforms.py index e153895..6b15ab5 100644 --- a/mapshader/transforms.py +++ b/mapshader/transforms.py @@ -13,7 +13,10 @@ wgs84_proj_str = '+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs' -us_national_equal_area_str = '+proj=laea +lat_0=45 +lon_0=-100 +x_0=0 +y_0=0 +a=6370997 +b=6370997 +units=m +no_defs' +us_national_equal_area_str = ( + '+proj=laea +lat_0=45 +lon_0=-100 +x_0=0 +y_0=0 +a=6370997 ' + '+b=6370997 +units=m +no_defs' +) projections = { 3857: wb_proj_str, diff --git a/mapshader/utils.py b/mapshader/utils.py index e9e4936..7f69c57 100644 --- a/mapshader/utils.py +++ b/mapshader/utils.py @@ -40,7 +40,7 @@ def find_and_set_categoricals(df): def psutil_fetching(): # CPU logs - cpu_usage_percentage = psutil.cpu_percent(interval = 1) + cpu_usage_percentage = psutil.cpu_percent(interval=1) cpu_number_logical = psutil.cpu_count() cpu_number_physical = psutil.cpu_count(logical=False) @@ -49,16 +49,16 @@ def psutil_fetching(): cpu_per_cpu_percentage = psutil.cpu_percent(interval=1, percpu=True) # Disks - disk_usage = psutil.disk_usage("/") # Root disk usage + disk_usage = psutil.disk_usage("/") # Root disk usage log = { 'cpu': { - 'cpu_usage_percentage': cpu_usage_percentage, - 'cpu_number_logical': cpu_number_logical, - 'cpu_number_physical': cpu_number_physical, - 'cpu_per_cpu_percentage': cpu_per_cpu_percentage, - 'cpu_times': cpu_times._asdict(), + 'cpu_usage_percentage': cpu_usage_percentage, + 'cpu_number_logical': cpu_number_logical, + 'cpu_number_physical': cpu_number_physical, + 'cpu_per_cpu_percentage': cpu_per_cpu_percentage, + 'cpu_times': cpu_times._asdict(), }, 'memory': psutil.virtual_memory()._asdict(), 'disk': disk_usage._asdict(), @@ -68,138 +68,138 @@ def psutil_fetching(): def psutils_html(): return ''' - -
-
-
- - CPU:  - 0,0% - -
-
-
-
-
-
-
- - MEMORY:  - 0,0% - -
-
-
-
-
-
-
- - DISK:  - 0,0% - -
-
-
-
-
-
- - ''' \ No newline at end of file + +
+
+
+ + CPU:  + 0,0% + +
+
+
+
+
+
+
+ + MEMORY:  + 0,0% + +
+
+
+
+
+
+
+ + DISK:  + 0,0% + +
+
+
+
+
+
+ + ''' From 2187a337ee939bd433bad90fec11d79d68e8bd18 Mon Sep 17 00:00:00 2001 From: giancastro Date: Wed, 5 May 2021 12:35:07 -0300 Subject: [PATCH 5/9] solve branch conflits --- mapshader/commands/__init__.py | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/mapshader/commands/__init__.py b/mapshader/commands/__init__.py index 5ec2395..214d9a4 100644 --- a/mapshader/commands/__init__.py +++ b/mapshader/commands/__init__.py @@ -1,4 +1,17 @@ -from .tif_to_netcdf import tif_to_netcdf +from pkg_resources import iter_entry_points as entry_points +import click +from click_plugins import with_plugins -__all__ = ['tif_to_netcdf'] + +@with_plugins(cmd for cmd in list(entry_points('mapshader.commands'))) +@click.group(context_settings=dict(help_option_names=['-h', '--help'])) +def main(args=None): + ''' + mapshader command line interface. + ''' + pass + + +if __name__ == '__main__': + main() From a530a60d856a105f5c829d7fbd21cba69e249909 Mon Sep 17 00:00:00 2001 From: giancastro Date: Thu, 29 Apr 2021 12:32:43 -0300 Subject: [PATCH 6/9] add tif_to_netcdf CLI command --- mapshader/commands/tif_to_netcdf.py | 141 ++++++++++++++++++++++++++++ scripts/tif_to_netcdf.py | 68 -------------- 2 files changed, 141 insertions(+), 68 deletions(-) create mode 100644 mapshader/commands/tif_to_netcdf.py delete mode 100644 scripts/tif_to_netcdf.py diff --git a/mapshader/commands/tif_to_netcdf.py b/mapshader/commands/tif_to_netcdf.py new file mode 100644 index 0000000..572f465 --- /dev/null +++ b/mapshader/commands/tif_to_netcdf.py @@ -0,0 +1,141 @@ +from os import path +import sys + +import click +import xarray as xr + +from mapshader.transforms import cast +from mapshader.transforms import flip_coords +from mapshader.transforms import orient_array +from mapshader.transforms import reproject_raster +from mapshader.transforms import squeeze + + +@click.command( + no_args_is_help=True, + context_settings=dict(help_option_names=['-h', '--help']), + short_help='Convert GeoTIFF raster file format into a NetCDF file.', + help=( + 'Convert GeoTIFF raster file format into a NetCDF file ' + 'given the `FILEPATH` relative path.' + ), +) +@click.argument( + 'filepath', + type=str, + required=True, +) +@click.option( + '--x', + type=str, + default='x', + show_default=True, + help='The x dimension name.', +) +@click.option( + '--y', + type=str, + default='y', + show_default=True, + help='The y dimension name.', +) +@click.option( + '--chunks', + type=tuple, + default=(512, 512), + show_default=True, + help='Coerce into dask arrays with the given chunks.', +) +@click.option( + '--data_variable', + type=str, + default='data', + show_default=True, + help='The data variable name.', +) +@click.option( + '--fill_na', + type=int, + default=-9999, + show_default=True, + help='Fill NaN values with the given value.', +) +@click.option( + '-c', + '--cast', + 'dtype', + default='int16', + show_default=True, + help='Cast the data to the given type.', +) +@click.option( + '-r', + '--reproject', + 'crs', + type=int, + default=3857, + show_default=True, + help='Reproject the data to the given CRS.', +) +def tif_to_netcdf( + filepath, + x, + y, + chunks, + data_variable, + fill_na, + dtype, + crs, +): + ''' + Convert GeoTIFF raster file format into a NetCDF file given the + `FILEPATH` relative path. + + Parameters + ---------- + filepath : str + GeoTIFF raster file relative path. + x : str + The x dimension name. + y : str + The y dimension name. + chunks : tuple of int + The dask array chunk size for the x and y dimension. + data_variable : str + The data variable name. + fill_na : int or float + Fill NaN values with the given value. + dtype : str + Cast the data to the given type. + crs : int + Reproject the data to the given CRS. + ''' + input_file = path.abspath(path.expanduser(filepath)) + output_file = input_file.replace('.tif', '.nc') + + print( + 'Converting {0} from GeoTIFF to NetCDF file'.format(input_file), + file=sys.stdout, + ) + + arr = xr.open_rasterio(input_file) + arr = squeeze(arr, [d for d in arr.dims if d != x and d != y]) + arr = cast(arr, dtype=dtype) + arr = orient_array(arr) + arr = flip_coords(arr, dim=y) + arr = reproject_raster(arr, epsg=crs) + + dataset = xr.Dataset( + data_vars={data_variable: (['y', 'x'], arr.chunk(chunks))}, + coords={'x': arr.coords[x], 'y': arr.coords[y]} + ) + dataset.attrs = dict(name=data_variable) + dataset.to_netcdf( + path=output_file, + encoding={data_variable: {'_FillValue': fill_na}}, + ) + + print( + 'Conversion complete: {0}'.format(output_file), + file=sys.stdout, + ) diff --git a/scripts/tif_to_netcdf.py b/scripts/tif_to_netcdf.py deleted file mode 100644 index 05b4bf2..0000000 --- a/scripts/tif_to_netcdf.py +++ /dev/null @@ -1,68 +0,0 @@ -import xarray as xr - -from mapshader.transforms import squeeze -from mapshader.transforms import cast -from mapshader.transforms import orient_array -from mapshader.transforms import flip_coords -from mapshader.transforms import reproject_raster - - -def run_float(input_file, output_file, chunks=(512, 512), - name='data', scale_factor=0.1, fill_value=-9999): - arr = xr.open_rasterio(input_file) - arr = squeeze(arr, 'band') - arr = cast(arr, dtype='float64') - arr = orient_array(arr) - arr = flip_coords(arr, dim='y') # do we need this? - arr = reproject_raster(arr, epsg=3857) - - dataset = xr.Dataset({name: (['y', 'x'], arr.chunk(chunks))}, - coords={'x': arr.coords['x'], - 'y': arr.coords['y']}) - dataset.attrs = dict(name=name) - dataset.to_netcdf(output_file, encoding={'data': {'dtype': 'int16', - 'scale_factor': 0.1, - '_FillValue': -9999}}) - - -def run_int(input_file, output_file, chunks=(512, 512), - name='data', fill_value=-9999): - arr = xr.open_rasterio(input_file) - arr = squeeze(arr, 'band') - arr = orient_array(arr) - arr = flip_coords(arr, dim='y') # do we need this? - arr = reproject_raster(arr, epsg=3857) - - dataset = xr.Dataset({name: (['y', 'x'], arr.chunk(chunks))}, - coords={'x': arr.coords['x'], - 'y': arr.coords['y']}) - dataset.attrs = dict(name=name) - dataset.to_netcdf(output_file, encoding={'data': {'dtype': 'int16', - '_FillValue': fill_value}}) - - -if __name__ == '__main__': - - import sys - from argparse import ArgumentParser - from os import path - - parser = ArgumentParser() - parser.add_argument('-i') - parser.add_argument('-o') - parser.add_argument('-f') - parsed = parser.parse_args() - - input_file = path.abspath(path.expanduser(parsed.i)) - print(f'Converting {input_file} from TIFF to NetCDF File', file=sys.stdout) - - if not parsed.o: - output_file = input_file.replace('.tif', '.nc') - else: - output_file = path.abspath(path.expanduser(parsed.o)) - - if parsed.f: - run_float(input_file, output_file) - else: - run_int(input_file, output_file) - print(f'Conversion Complete: {output_file}', file=sys.stdout) From a8a07bf1681c89911a2281e4a053b42614976858 Mon Sep 17 00:00:00 2001 From: giancastro Date: Fri, 30 Apr 2021 11:22:43 -0300 Subject: [PATCH 7/9] add tif_to_netcdf tests --- mapshader/commands/tif_to_netcdf.py | 10 +++- mapshader/tests/fixtures/shade.nc | Bin 0 -> 2115676 bytes mapshader/tests/fixtures/shade.tif | Bin 0 -> 1050234 bytes mapshader/tests/test_tif_to_netcdf.py | 81 ++++++++++++++++++++++++++ pytest.ini | 2 + 5 files changed, 92 insertions(+), 1 deletion(-) create mode 100644 mapshader/tests/fixtures/shade.nc create mode 100644 mapshader/tests/fixtures/shade.tif create mode 100644 mapshader/tests/test_tif_to_netcdf.py create mode 100644 pytest.ini diff --git a/mapshader/commands/tif_to_netcdf.py b/mapshader/commands/tif_to_netcdf.py index 572f465..5bec56c 100644 --- a/mapshader/commands/tif_to_netcdf.py +++ b/mapshader/commands/tif_to_netcdf.py @@ -119,6 +119,14 @@ def tif_to_netcdf( ) arr = xr.open_rasterio(input_file) + + # Check if the given dimensions exist + for dimension in (x, y): + if dimension not in arr.dims: + raise click.BadParameter( + "The dimension name {} doesn't exist.".format(dimension) + ) + arr = squeeze(arr, [d for d in arr.dims if d != x and d != y]) arr = cast(arr, dtype=dtype) arr = orient_array(arr) @@ -127,7 +135,7 @@ def tif_to_netcdf( dataset = xr.Dataset( data_vars={data_variable: (['y', 'x'], arr.chunk(chunks))}, - coords={'x': arr.coords[x], 'y': arr.coords[y]} + coords={'x': arr.coords[x], 'y': arr.coords[y]}, ) dataset.attrs = dict(name=data_variable) dataset.to_netcdf( diff --git a/mapshader/tests/fixtures/shade.nc b/mapshader/tests/fixtures/shade.nc new file mode 100644 index 0000000000000000000000000000000000000000..5d703ebe38adada9661866aa3ee47ac192deace1 GIT binary patch literal 2115676 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 literal 0 HcmV?d00001 diff --git a/mapshader/tests/fixtures/shade.tif b/mapshader/tests/fixtures/shade.tif new file mode 100644 index 0000000000000000000000000000000000000000..9ea0f3f0abefbd17e8c6efee26886b66c23055b9 GIT binary patch literal 1050234 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
;Tns;3fvUs-%lBLbPL^ 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 Date: Wed, 5 May 2021 12:44:14 -0300 Subject: [PATCH 8/9] fix tif_to_netcdf import --- mapshader/tests/test_tif_to_netcdf.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mapshader/tests/test_tif_to_netcdf.py b/mapshader/tests/test_tif_to_netcdf.py index 7b66606..8b2a34c 100644 --- a/mapshader/tests/test_tif_to_netcdf.py +++ b/mapshader/tests/test_tif_to_netcdf.py @@ -6,7 +6,7 @@ from click.testing import CliRunner from rasterio.errors import RasterioIOError -from mapshader.commands import tif_to_netcdf +from mapshader.commands.tif_to_netcdf import tif_to_netcdf from mapshader.tests.data import FIXTURES_DIR From cdb75c4aa104b97c2a00daef4058812bfb0cba90 Mon Sep 17 00:00:00 2001 From: giancastro Date: Wed, 5 May 2021 12:44:33 -0300 Subject: [PATCH 9/9] include tif_to_netcdf command on the CLI --- setup.py | 1 + 1 file changed, 1 insertion(+) diff --git a/setup.py b/setup.py index 858435c..13a1c3b 100644 --- a/setup.py +++ b/setup.py @@ -54,6 +54,7 @@ [mapshader.commands] examples=mapshader.commands.examples:examples + tif_to_netcdf=mapshader.commands.tif_to_netcdf:tif_to_netcdf ''', )