rio-tiler 6.4.3__tar.gz → 6.4.5__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/PKG-INFO +2 -1
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/pyproject.toml +8 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/__init__.py +1 -1
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/colormap.py +7 -6
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/io/base.py +1 -3
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/io/rasterio.py +1 -3
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/io/stac.py +1 -3
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/io/xarray.py +2 -3
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/models.py +7 -13
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/reader.py +12 -24
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/tasks.py +2 -4
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/utils.py +9 -8
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/.gitignore +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/AUTHORS.txt +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/LICENSE +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/README.md +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/cmap_data/__init__.py +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/cmap_data/accent.npy +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/cmap_data/accent_r.npy +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/cmap_data/afmhot.npy +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/cmap_data/afmhot_r.npy +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/cmap_data/algae.npy +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/cmap_data/algae_r.npy +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/cmap_data/amp.npy +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/cmap_data/amp_r.npy +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/cmap_data/autumn.npy +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/cmap_data/autumn_r.npy +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/cmap_data/balance.npy +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/cmap_data/balance_r.npy +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/cmap_data/binary.npy +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/cmap_data/binary_r.npy +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/cmap_data/blues.npy +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/cmap_data/blues_r.npy +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/cmap_data/bone.npy +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/cmap_data/bone_r.npy +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/cmap_data/brbg.npy +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/cmap_data/brbg_r.npy +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/cmap_data/brg.npy +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/cmap_data/brg_r.npy +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/cmap_data/bugn.npy +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/cmap_data/bugn_r.npy +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/cmap_data/bupu.npy +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/cmap_data/bupu_r.npy +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/cmap_data/bwr.npy +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/cmap_data/bwr_r.npy +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/cmap_data/cfastie.npy +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/cmap_data/cividis.npy +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/cmap_data/cividis_r.npy +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/cmap_data/cmrmap.npy +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/cmap_data/cmrmap_r.npy +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/cmap_data/cool.npy +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/cmap_data/cool_r.npy +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/cmap_data/coolwarm.npy +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/cmap_data/coolwarm_r.npy +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/cmap_data/copper.npy +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/cmap_data/copper_r.npy +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/cmap_data/cubehelix.npy +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/cmap_data/cubehelix_r.npy +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/cmap_data/curl.npy +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/cmap_data/curl_r.npy +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/cmap_data/dark2.npy +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/cmap_data/dark2_r.npy +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/cmap_data/deep.npy +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/cmap_data/deep_r.npy +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/cmap_data/delta.npy +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/cmap_data/delta_r.npy +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/cmap_data/dense.npy +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/cmap_data/dense_r.npy +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/cmap_data/diff.npy +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/cmap_data/diff_r.npy +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/cmap_data/flag.npy +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/cmap_data/flag_r.npy +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/cmap_data/gist_earth.npy +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/cmap_data/gist_earth_r.npy +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/cmap_data/gist_gray.npy +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/cmap_data/gist_gray_r.npy +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/cmap_data/gist_heat.npy +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/cmap_data/gist_heat_r.npy +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/cmap_data/gist_ncar.npy +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/cmap_data/gist_ncar_r.npy +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/cmap_data/gist_rainbow.npy +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/cmap_data/gist_rainbow_r.npy +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/cmap_data/gist_stern.npy +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/cmap_data/gist_stern_r.npy +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/cmap_data/gist_yarg.npy +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/cmap_data/gist_yarg_r.npy +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/cmap_data/gnbu.npy +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/cmap_data/gnbu_r.npy +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/cmap_data/gnuplot.npy +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/cmap_data/gnuplot2.npy +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/cmap_data/gnuplot2_r.npy +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/cmap_data/gnuplot_r.npy +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/cmap_data/gray.npy +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/cmap_data/gray_r.npy +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/cmap_data/greens.npy +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/cmap_data/greens_r.npy +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/cmap_data/greys.npy +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/cmap_data/greys_r.npy +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/cmap_data/haline.npy +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/cmap_data/haline_r.npy +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/cmap_data/hot.npy +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/cmap_data/hot_r.npy +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/cmap_data/hsv.npy +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/cmap_data/hsv_r.npy +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/cmap_data/ice.npy +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/cmap_data/ice_r.npy +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/cmap_data/inferno.npy +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/cmap_data/inferno_r.npy +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/cmap_data/jet.npy +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/cmap_data/jet_r.npy +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/cmap_data/magma.npy +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/cmap_data/magma_r.npy +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/cmap_data/matter.npy +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/cmap_data/matter_r.npy +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/cmap_data/nipy_spectral.npy +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/cmap_data/nipy_spectral_r.npy +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/cmap_data/ocean.npy +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/cmap_data/ocean_r.npy +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/cmap_data/oranges.npy +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/cmap_data/oranges_r.npy +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/cmap_data/orrd.npy +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/cmap_data/orrd_r.npy +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/cmap_data/oxy.npy +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/cmap_data/oxy_r.npy +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/cmap_data/paired.npy +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/cmap_data/paired_r.npy +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/cmap_data/pastel1.npy +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/cmap_data/pastel1_r.npy +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/cmap_data/pastel2.npy +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/cmap_data/pastel2_r.npy +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/cmap_data/phase.npy +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/cmap_data/phase_r.npy +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/cmap_data/pink.npy +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/cmap_data/pink_r.npy +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/cmap_data/piyg.npy +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/cmap_data/piyg_r.npy +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/cmap_data/plasma.npy +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/cmap_data/plasma_r.npy +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/cmap_data/prgn.npy +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/cmap_data/prgn_r.npy +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/cmap_data/prism.npy +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/cmap_data/prism_r.npy +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/cmap_data/pubu.npy +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/cmap_data/pubu_r.npy +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/cmap_data/pubugn.npy +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/cmap_data/pubugn_r.npy +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/cmap_data/puor.npy +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/cmap_data/puor_r.npy +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/cmap_data/purd.npy +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/cmap_data/purd_r.npy +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/cmap_data/purples.npy +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/cmap_data/purples_r.npy +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/cmap_data/rain.npy +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/cmap_data/rain_r.npy +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/cmap_data/rainbow.npy +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/cmap_data/rainbow_r.npy +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/cmap_data/rdbu.npy +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/cmap_data/rdbu_r.npy +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/cmap_data/rdgy.npy +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/cmap_data/rdgy_r.npy +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/cmap_data/rdpu.npy +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/cmap_data/rdpu_r.npy +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/cmap_data/rdylbu.npy +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/cmap_data/rdylbu_r.npy +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/cmap_data/rdylgn.npy +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/cmap_data/rdylgn_r.npy +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/cmap_data/reds.npy +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/cmap_data/reds_r.npy +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/cmap_data/rplumbo.npy +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/cmap_data/schwarzwald.npy +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/cmap_data/seismic.npy +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/cmap_data/seismic_r.npy +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/cmap_data/set1.npy +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/cmap_data/set1_r.npy +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/cmap_data/set2.npy +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/cmap_data/set2_r.npy +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/cmap_data/set3.npy +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/cmap_data/set3_r.npy +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/cmap_data/solar.npy +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/cmap_data/solar_r.npy +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/cmap_data/spectral.npy +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/cmap_data/spectral_r.npy +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/cmap_data/speed.npy +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/cmap_data/speed_r.npy +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/cmap_data/spring.npy +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/cmap_data/spring_r.npy +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/cmap_data/summer.npy +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/cmap_data/summer_r.npy +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/cmap_data/tab10.npy +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/cmap_data/tab10_r.npy +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/cmap_data/tab20.npy +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/cmap_data/tab20_r.npy +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/cmap_data/tab20b.npy +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/cmap_data/tab20b_r.npy +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/cmap_data/tab20c.npy +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/cmap_data/tab20c_r.npy +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/cmap_data/tarn.npy +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/cmap_data/tarn_r.npy +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/cmap_data/tempo.npy +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/cmap_data/tempo_r.npy +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/cmap_data/terrain.npy +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/cmap_data/terrain_r.npy +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/cmap_data/thermal.npy +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/cmap_data/thermal_r.npy +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/cmap_data/topo.npy +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/cmap_data/topo_r.npy +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/cmap_data/turbid.npy +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/cmap_data/turbid_r.npy +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/cmap_data/turbo.npy +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/cmap_data/turbo_r.npy +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/cmap_data/twilight.npy +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/cmap_data/twilight_r.npy +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/cmap_data/twilight_shifted.npy +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/cmap_data/twilight_shifted_r.npy +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/cmap_data/viridis.npy +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/cmap_data/viridis_r.npy +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/cmap_data/winter.npy +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/cmap_data/winter_r.npy +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/cmap_data/wistia.npy +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/cmap_data/wistia_r.npy +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/cmap_data/ylgn.npy +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/cmap_data/ylgn_r.npy +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/cmap_data/ylgnbu.npy +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/cmap_data/ylgnbu_r.npy +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/cmap_data/ylorbr.npy +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/cmap_data/ylorbr_r.npy +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/cmap_data/ylorrd.npy +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/cmap_data/ylorrd_r.npy +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/constants.py +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/errors.py +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/expression.py +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/io/__init__.py +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/logger.py +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/mosaic/__init__.py +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/mosaic/methods/__init__.py +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/mosaic/methods/base.py +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/mosaic/methods/defaults.py +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/mosaic/reader.py +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/profiles.py +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/py.typed +0 -0
- {rio_tiler-6.4.3 → rio_tiler-6.4.5}/rio_tiler/types.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.3
|
|
2
2
|
Name: rio-tiler
|
|
3
|
-
Version: 6.4.
|
|
3
|
+
Version: 6.4.5
|
|
4
4
|
Summary: User friendly Rasterio plugin to read raster datasets.
|
|
5
5
|
Project-URL: Homepage, https://cogeotiff.github.io/rio-tiler/
|
|
6
6
|
Project-URL: Documentation, https://cogeotiff.github.io/rio-tiler/
|
|
@@ -47,6 +47,7 @@ Classifier: Programming Language :: Python :: 3.8
|
|
|
47
47
|
Classifier: Programming Language :: Python :: 3.9
|
|
48
48
|
Classifier: Programming Language :: Python :: 3.10
|
|
49
49
|
Classifier: Programming Language :: Python :: 3.11
|
|
50
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
50
51
|
Classifier: Topic :: Scientific/Engineering :: GIS
|
|
51
52
|
Requires-Python: >=3.8
|
|
52
53
|
Requires-Dist: attrs
|
|
@@ -16,6 +16,7 @@ classifiers = [
|
|
|
16
16
|
"Programming Language :: Python :: 3.9",
|
|
17
17
|
"Programming Language :: Python :: 3.10",
|
|
18
18
|
"Programming Language :: Python :: 3.11",
|
|
19
|
+
"Programming Language :: Python :: 3.12",
|
|
19
20
|
"Topic :: Scientific/Engineering :: GIS",
|
|
20
21
|
]
|
|
21
22
|
dynamic = ["version"]
|
|
@@ -129,6 +130,9 @@ default_section = "THIRDPARTY"
|
|
|
129
130
|
no_strict_optional = true
|
|
130
131
|
|
|
131
132
|
[tool.ruff]
|
|
133
|
+
line-length = 90
|
|
134
|
+
|
|
135
|
+
[tool.ruff.lint]
|
|
132
136
|
select = [
|
|
133
137
|
"D1", # pydocstyle errors
|
|
134
138
|
"E", # pycodestyle errors
|
|
@@ -141,4 +145,8 @@ ignore = [
|
|
|
141
145
|
"E501", # line too long, handled by black
|
|
142
146
|
"B008", # do not perform function calls in argument defaults
|
|
143
147
|
"B905", # ignore zip() without an explicit strict= parameter, only support with python >3.10
|
|
148
|
+
"B028",
|
|
144
149
|
]
|
|
150
|
+
|
|
151
|
+
[tool.ruff.lint.mccabe]
|
|
152
|
+
max-complexity = 14
|
|
@@ -31,7 +31,8 @@ except ImportError:
|
|
|
31
31
|
EMPTY_COLORMAP: GDALColorMapType = {i: (0, 0, 0, 0) for i in range(256)}
|
|
32
32
|
|
|
33
33
|
DEFAULT_CMAPS_FILES = {
|
|
34
|
-
f.stem: str(f)
|
|
34
|
+
f.stem: str(f)
|
|
35
|
+
for f in (resources_files(__package__) / "cmap_data").glob("*.npy") # type: ignore
|
|
35
36
|
}
|
|
36
37
|
|
|
37
38
|
USER_CMAPS_DIR = os.environ.get("COLORMAP_DIRECTORY", None)
|
|
@@ -123,9 +124,7 @@ def apply_cmap(data: numpy.ndarray, colormap: ColorMapType) -> DataMaskType:
|
|
|
123
124
|
return data[:-1], data[-1]
|
|
124
125
|
|
|
125
126
|
|
|
126
|
-
def apply_discrete_cmap(
|
|
127
|
-
data: numpy.ndarray, colormap: GDALColorMapType
|
|
128
|
-
) -> DataMaskType:
|
|
127
|
+
def apply_discrete_cmap(data: numpy.ndarray, colormap: GDALColorMapType) -> DataMaskType:
|
|
129
128
|
"""Apply discrete colormap.
|
|
130
129
|
|
|
131
130
|
Args:
|
|
@@ -189,7 +188,7 @@ def apply_intervals_cmap(
|
|
|
189
188
|
"""
|
|
190
189
|
res = numpy.zeros((data.shape[1], data.shape[2], 4), dtype=numpy.uint8)
|
|
191
190
|
|
|
192
|
-
for
|
|
191
|
+
for k, v in colormap:
|
|
193
192
|
res[(data[0] >= k[0]) & (data[0] < k[1])] = numpy.array(v)
|
|
194
193
|
|
|
195
194
|
data = numpy.transpose(res, [2, 0, 1])
|
|
@@ -251,7 +250,9 @@ def parse_color(rgba: Union[Sequence[int], str]) -> Tuple[int, int, int, int]:
|
|
|
251
250
|
|
|
252
251
|
match = re.match(hex_pattern, rgba)
|
|
253
252
|
rgba = [
|
|
254
|
-
int(n * factor, 16)
|
|
253
|
+
int(n * factor, 16)
|
|
254
|
+
for n in match.groupdict().values()
|
|
255
|
+
if n is not None # type: ignore
|
|
255
256
|
]
|
|
256
257
|
|
|
257
258
|
if len(rgba) > 4 or len(rgba) < 3:
|
|
@@ -901,9 +901,7 @@ class MultiBandReader(SpatialMixin, metaclass=abc.ABCMeta):
|
|
|
901
901
|
|
|
902
902
|
return bands
|
|
903
903
|
|
|
904
|
-
def info(
|
|
905
|
-
self, bands: Union[Sequence[str], str] = None, *args, **kwargs: Any
|
|
906
|
-
) -> Info:
|
|
904
|
+
def info(self, bands: Union[Sequence[str], str] = None, *args, **kwargs: Any) -> Info:
|
|
907
905
|
"""Return metadata from multiple bands.
|
|
908
906
|
|
|
909
907
|
Args:
|
|
@@ -275,9 +275,7 @@ class Reader(BaseReader):
|
|
|
275
275
|
meta.update({"colormap": self.colormap})
|
|
276
276
|
|
|
277
277
|
if nodata_type == "Nodata":
|
|
278
|
-
meta.update(
|
|
279
|
-
{"nodata_value": self.options.get("nodata", self.dataset.nodata)}
|
|
280
|
-
)
|
|
278
|
+
meta.update({"nodata_value": self.options.get("nodata", self.dataset.nodata)})
|
|
281
279
|
|
|
282
280
|
return Info(**meta)
|
|
283
281
|
|
|
@@ -264,9 +264,7 @@ class STACReader(MultiBaseReader):
|
|
|
264
264
|
)
|
|
265
265
|
)
|
|
266
266
|
if not self.assets:
|
|
267
|
-
raise MissingAssets(
|
|
268
|
-
"No valid asset found. Asset's media types not supported"
|
|
269
|
-
)
|
|
267
|
+
raise MissingAssets("No valid asset found. Asset's media types not supported")
|
|
270
268
|
|
|
271
269
|
@minzoom.default
|
|
272
270
|
def _minzoom(self):
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
"""rio_tiler.io.xarray: Xarray Reader."""
|
|
2
|
+
|
|
2
3
|
from __future__ import annotations
|
|
3
4
|
|
|
4
5
|
import warnings
|
|
@@ -231,9 +232,7 @@ class XarrayReader(BaseReader):
|
|
|
231
232
|
reproject_method = resampling_method
|
|
232
233
|
|
|
233
234
|
if not self.tile_exists(tile_x, tile_y, tile_z):
|
|
234
|
-
raise TileOutsideBounds(
|
|
235
|
-
f"Tile {tile_z}/{tile_x}/{tile_y} is outside bounds"
|
|
236
|
-
)
|
|
235
|
+
raise TileOutsideBounds(f"Tile {tile_z}/{tile_x}/{tile_y} is outside bounds")
|
|
237
236
|
|
|
238
237
|
ds = self.input
|
|
239
238
|
if nodata is not None:
|
|
@@ -229,7 +229,7 @@ class PointData:
|
|
|
229
229
|
raise InvalidPointDataError("Empty PointData list.")
|
|
230
230
|
|
|
231
231
|
# validate coordinates
|
|
232
|
-
if all(
|
|
232
|
+
if all(pt.coordinates or pt.crs or None for pt in data):
|
|
233
233
|
lon, lat, crs = zip(*[(*(pt.coordinates or []), pt.crs) for pt in data])
|
|
234
234
|
if len(set(lon)) > 1 or len(set(lat)) > 1 or len(set(crs)) > 1:
|
|
235
235
|
raise InvalidPointDataError(
|
|
@@ -245,9 +245,7 @@ class PointData:
|
|
|
245
245
|
)
|
|
246
246
|
|
|
247
247
|
band_names = list(
|
|
248
|
-
itertools.chain.from_iterable(
|
|
249
|
-
[pt.band_names for pt in data if pt.band_names]
|
|
250
|
-
)
|
|
248
|
+
itertools.chain.from_iterable([pt.band_names for pt in data if pt.band_names])
|
|
251
249
|
)
|
|
252
250
|
|
|
253
251
|
metadata = dict(
|
|
@@ -439,9 +437,7 @@ class ImageData:
|
|
|
439
437
|
# Get cutline mask at highest resolution.
|
|
440
438
|
max_h, max_w = max(h), max(w)
|
|
441
439
|
cutline_mask = next(
|
|
442
|
-
img.cutline_mask
|
|
443
|
-
for img in data
|
|
444
|
-
if img.height == max_h and img.width == max_w
|
|
440
|
+
img.cutline_mask for img in data if img.height == max_h and img.width == max_w
|
|
445
441
|
)
|
|
446
442
|
|
|
447
443
|
if len(set(h)) > 1 or len(set(w)) > 1:
|
|
@@ -462,9 +458,7 @@ class ImageData:
|
|
|
462
458
|
|
|
463
459
|
assets = list(
|
|
464
460
|
dict.fromkeys(
|
|
465
|
-
itertools.chain.from_iterable(
|
|
466
|
-
[img.assets for img in data if img.assets]
|
|
467
|
-
)
|
|
461
|
+
itertools.chain.from_iterable([img.assets for img in data if img.assets])
|
|
468
462
|
)
|
|
469
463
|
)
|
|
470
464
|
|
|
@@ -627,9 +621,9 @@ class ImageData:
|
|
|
627
621
|
) -> "ImageData":
|
|
628
622
|
"""Resize data and mask."""
|
|
629
623
|
data = resize_array(self.array.data, height, width, resampling_method)
|
|
630
|
-
mask = resize_array(
|
|
631
|
-
|
|
632
|
-
)
|
|
624
|
+
mask = resize_array(self.array.mask * 1, height, width, resampling_method).astype(
|
|
625
|
+
"bool"
|
|
626
|
+
)
|
|
633
627
|
|
|
634
628
|
return ImageData(
|
|
635
629
|
numpy.ma.MaskedArray(data, mask=mask),
|
|
@@ -3,14 +3,13 @@
|
|
|
3
3
|
import contextlib
|
|
4
4
|
import math
|
|
5
5
|
import warnings
|
|
6
|
-
from enum import IntEnum
|
|
7
6
|
from typing import Callable, Dict, Optional, Tuple, TypedDict, Union
|
|
8
7
|
|
|
9
8
|
import numpy
|
|
10
9
|
from affine import Affine
|
|
11
10
|
from rasterio import windows
|
|
12
11
|
from rasterio.crs import CRS
|
|
13
|
-
from rasterio.enums import ColorInterp,
|
|
12
|
+
from rasterio.enums import ColorInterp, Resampling
|
|
14
13
|
from rasterio.io import DatasetReader, DatasetWriter
|
|
15
14
|
from rasterio.transform import array_bounds
|
|
16
15
|
from rasterio.vrt import WarpedVRT
|
|
@@ -97,9 +96,7 @@ def read(
|
|
|
97
96
|
resampling_method: RIOResampling = "nearest",
|
|
98
97
|
reproject_method: WarpResampling = "nearest",
|
|
99
98
|
unscale: bool = False,
|
|
100
|
-
post_process: Optional[
|
|
101
|
-
Callable[[numpy.ma.MaskedArray], numpy.ma.MaskedArray]
|
|
102
|
-
] = None,
|
|
99
|
+
post_process: Optional[Callable[[numpy.ma.MaskedArray], numpy.ma.MaskedArray]] = None,
|
|
103
100
|
) -> ImageData:
|
|
104
101
|
"""Low level read function.
|
|
105
102
|
|
|
@@ -196,9 +193,7 @@ def read(
|
|
|
196
193
|
values = dataset.read(
|
|
197
194
|
indexes=indexes,
|
|
198
195
|
window=window,
|
|
199
|
-
out_shape=(len(indexes), height, width)
|
|
200
|
-
if height and width
|
|
201
|
-
else None,
|
|
196
|
+
out_shape=(len(indexes), height, width) if height and width else None,
|
|
202
197
|
resampling=io_resampling,
|
|
203
198
|
boundless=boundless,
|
|
204
199
|
)
|
|
@@ -238,14 +233,15 @@ def read(
|
|
|
238
233
|
|
|
239
234
|
# if data has Nodata then we simply make sure the mask == the nodata
|
|
240
235
|
if nodata is not None:
|
|
241
|
-
|
|
236
|
+
if numpy.isnan(nodata):
|
|
237
|
+
data.mask = numpy.isnan(data.data)
|
|
238
|
+
else:
|
|
239
|
+
data.mask = data.data == nodata
|
|
242
240
|
|
|
243
241
|
stats = []
|
|
244
242
|
for ix in indexes:
|
|
245
243
|
tags = dataset.tags(ix)
|
|
246
|
-
if all(
|
|
247
|
-
stat in tags for stat in ["STATISTICS_MINIMUM", "STATISTICS_MAXIMUM"]
|
|
248
|
-
):
|
|
244
|
+
if all(stat in tags for stat in ["STATISTICS_MINIMUM", "STATISTICS_MAXIMUM"]):
|
|
249
245
|
stat_min = float(tags.get("STATISTICS_MINIMUM"))
|
|
250
246
|
stat_max = float(tags.get("STATISTICS_MAXIMUM"))
|
|
251
247
|
stats.append((stat_min, stat_max))
|
|
@@ -299,9 +295,7 @@ def part(
|
|
|
299
295
|
resampling_method: RIOResampling = "nearest",
|
|
300
296
|
reproject_method: WarpResampling = "nearest",
|
|
301
297
|
unscale: bool = False,
|
|
302
|
-
post_process: Optional[
|
|
303
|
-
Callable[[numpy.ma.MaskedArray], numpy.ma.MaskedArray]
|
|
304
|
-
] = None,
|
|
298
|
+
post_process: Optional[Callable[[numpy.ma.MaskedArray], numpy.ma.MaskedArray]] = None,
|
|
305
299
|
) -> ImageData:
|
|
306
300
|
"""Read part of a dataset.
|
|
307
301
|
|
|
@@ -349,12 +343,8 @@ def part(
|
|
|
349
343
|
src_bounds = transform_bounds(
|
|
350
344
|
src_dst.crs, dst_crs, *src_dst.bounds, densify_pts=21
|
|
351
345
|
)
|
|
352
|
-
x_overlap = max(
|
|
353
|
-
|
|
354
|
-
)
|
|
355
|
-
y_overlap = max(
|
|
356
|
-
0, min(src_bounds[3], bounds[3]) - max(src_bounds[1], bounds[1])
|
|
357
|
-
)
|
|
346
|
+
x_overlap = max(0, min(src_bounds[2], bounds[2]) - max(src_bounds[0], bounds[0]))
|
|
347
|
+
y_overlap = max(0, min(src_bounds[3], bounds[3]) - max(src_bounds[1], bounds[1]))
|
|
358
348
|
cover_ratio = (x_overlap * y_overlap) / (
|
|
359
349
|
(bounds[2] - bounds[0]) * (bounds[3] - bounds[1])
|
|
360
350
|
)
|
|
@@ -497,9 +487,7 @@ def point(
|
|
|
497
487
|
resampling_method: RIOResampling = "nearest",
|
|
498
488
|
reproject_method: WarpResampling = "nearest",
|
|
499
489
|
unscale: bool = False,
|
|
500
|
-
post_process: Optional[
|
|
501
|
-
Callable[[numpy.ma.MaskedArray], numpy.ma.MaskedArray]
|
|
502
|
-
] = None,
|
|
490
|
+
post_process: Optional[Callable[[numpy.ma.MaskedArray], numpy.ma.MaskedArray]] = None,
|
|
503
491
|
) -> PointData:
|
|
504
492
|
"""Read a pixel value for a point.
|
|
505
493
|
|
|
@@ -28,7 +28,7 @@ def filter_tasks(
|
|
|
28
28
|
if allowed_exceptions is None:
|
|
29
29
|
allowed_exceptions = ()
|
|
30
30
|
|
|
31
|
-
for
|
|
31
|
+
for future, asset in tasks:
|
|
32
32
|
try:
|
|
33
33
|
if isinstance(future, futures.Future):
|
|
34
34
|
yield future.result(), asset
|
|
@@ -52,9 +52,7 @@ def create_tasks(
|
|
|
52
52
|
]
|
|
53
53
|
else:
|
|
54
54
|
logger.debug(f"Running tasks outside ThreadsPool (max_workers={threads})")
|
|
55
|
-
return [
|
|
56
|
-
(partial(reader, asset, *args, **kwargs), asset) for asset in asset_list
|
|
57
|
-
]
|
|
55
|
+
return [(partial(reader, asset, *args, **kwargs), asset) for asset in asset_list]
|
|
58
56
|
|
|
59
57
|
|
|
60
58
|
def multi_arrays(
|
|
@@ -112,9 +112,12 @@ def get_array_statistics(
|
|
|
112
112
|
percentiles_names = [f"percentile_{int(p)}" for p in percentiles]
|
|
113
113
|
|
|
114
114
|
if coverage is not None:
|
|
115
|
-
assert
|
|
116
|
-
|
|
117
|
-
|
|
115
|
+
assert (
|
|
116
|
+
coverage.shape
|
|
117
|
+
== (
|
|
118
|
+
data.shape[1],
|
|
119
|
+
data.shape[2],
|
|
120
|
+
)
|
|
118
121
|
), f"Invalid shape ({coverage.shape}) for Coverage, expected {(data.shape[1], data.shape[2])}"
|
|
119
122
|
|
|
120
123
|
else:
|
|
@@ -395,7 +398,7 @@ def get_vrt_transform(
|
|
|
395
398
|
def has_alpha_band(src_dst: Union[DatasetReader, DatasetWriter, WarpedVRT]) -> bool:
|
|
396
399
|
"""Check for alpha band or mask in source."""
|
|
397
400
|
if (
|
|
398
|
-
any(
|
|
401
|
+
any(MaskFlags.alpha in flags for flags in src_dst.mask_flag_enums)
|
|
399
402
|
or ColorInterp.alpha in src_dst.colorinterp
|
|
400
403
|
):
|
|
401
404
|
return True
|
|
@@ -405,10 +408,8 @@ def has_alpha_band(src_dst: Union[DatasetReader, DatasetWriter, WarpedVRT]) -> b
|
|
|
405
408
|
def has_mask_band(src_dst: Union[DatasetReader, DatasetWriter, WarpedVRT]) -> bool:
|
|
406
409
|
"""Check for mask band in source."""
|
|
407
410
|
if any(
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
for flags in src_dst.mask_flag_enums
|
|
411
|
-
]
|
|
411
|
+
(MaskFlags.per_dataset in flags and MaskFlags.alpha not in flags)
|
|
412
|
+
for flags in src_dst.mask_flag_enums
|
|
412
413
|
):
|
|
413
414
|
return True
|
|
414
415
|
return False
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|