rio-tiler 8.0.2__tar.gz → 8.0.4__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-8.0.2 → rio_tiler-8.0.4}/PKG-INFO +2 -1
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/pyproject.toml +7 -1
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/__init__.py +1 -1
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/colormap.py +1 -1
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/experimental/zarr.py +2 -2
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/io/base.py +4 -2
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/io/rasterio.py +4 -4
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/io/xarray.py +9 -12
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/models.py +18 -15
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/reader.py +6 -2
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/utils.py +1 -1
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/.gitignore +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/AUTHORS.txt +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/LICENSE +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/README.md +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/cmap_data/__init__.py +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/cmap_data/accent.npy +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/cmap_data/accent_r.npy +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/cmap_data/afmhot.npy +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/cmap_data/afmhot_r.npy +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/cmap_data/algae.npy +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/cmap_data/algae_r.npy +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/cmap_data/amp.npy +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/cmap_data/amp_r.npy +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/cmap_data/autumn.npy +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/cmap_data/autumn_r.npy +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/cmap_data/balance.npy +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/cmap_data/balance_r.npy +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/cmap_data/binary.npy +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/cmap_data/binary_r.npy +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/cmap_data/blues.npy +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/cmap_data/blues_r.npy +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/cmap_data/bone.npy +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/cmap_data/bone_r.npy +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/cmap_data/brbg.npy +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/cmap_data/brbg_r.npy +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/cmap_data/brg.npy +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/cmap_data/brg_r.npy +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/cmap_data/bugn.npy +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/cmap_data/bugn_r.npy +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/cmap_data/bupu.npy +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/cmap_data/bupu_r.npy +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/cmap_data/bwr.npy +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/cmap_data/bwr_r.npy +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/cmap_data/cfastie.npy +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/cmap_data/cividis.npy +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/cmap_data/cividis_r.npy +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/cmap_data/cmrmap.npy +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/cmap_data/cmrmap_r.npy +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/cmap_data/cool.npy +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/cmap_data/cool_r.npy +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/cmap_data/coolwarm.npy +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/cmap_data/coolwarm_r.npy +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/cmap_data/copper.npy +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/cmap_data/copper_r.npy +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/cmap_data/cubehelix.npy +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/cmap_data/cubehelix_r.npy +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/cmap_data/curl.npy +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/cmap_data/curl_r.npy +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/cmap_data/dark2.npy +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/cmap_data/dark2_r.npy +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/cmap_data/deep.npy +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/cmap_data/deep_r.npy +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/cmap_data/delta.npy +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/cmap_data/delta_r.npy +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/cmap_data/dense.npy +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/cmap_data/dense_r.npy +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/cmap_data/diff.npy +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/cmap_data/diff_r.npy +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/cmap_data/flag.npy +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/cmap_data/flag_r.npy +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/cmap_data/gist_earth.npy +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/cmap_data/gist_earth_r.npy +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/cmap_data/gist_gray.npy +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/cmap_data/gist_gray_r.npy +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/cmap_data/gist_heat.npy +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/cmap_data/gist_heat_r.npy +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/cmap_data/gist_ncar.npy +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/cmap_data/gist_ncar_r.npy +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/cmap_data/gist_rainbow.npy +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/cmap_data/gist_rainbow_r.npy +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/cmap_data/gist_stern.npy +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/cmap_data/gist_stern_r.npy +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/cmap_data/gist_yarg.npy +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/cmap_data/gist_yarg_r.npy +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/cmap_data/gnbu.npy +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/cmap_data/gnbu_r.npy +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/cmap_data/gnuplot.npy +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/cmap_data/gnuplot2.npy +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/cmap_data/gnuplot2_r.npy +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/cmap_data/gnuplot_r.npy +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/cmap_data/gray.npy +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/cmap_data/gray_r.npy +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/cmap_data/greens.npy +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/cmap_data/greens_r.npy +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/cmap_data/greys.npy +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/cmap_data/greys_r.npy +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/cmap_data/haline.npy +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/cmap_data/haline_r.npy +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/cmap_data/hot.npy +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/cmap_data/hot_r.npy +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/cmap_data/hsv.npy +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/cmap_data/hsv_r.npy +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/cmap_data/ice.npy +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/cmap_data/ice_r.npy +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/cmap_data/inferno.npy +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/cmap_data/inferno_r.npy +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/cmap_data/jet.npy +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/cmap_data/jet_r.npy +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/cmap_data/magma.npy +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/cmap_data/magma_r.npy +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/cmap_data/matter.npy +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/cmap_data/matter_r.npy +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/cmap_data/nipy_spectral.npy +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/cmap_data/nipy_spectral_r.npy +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/cmap_data/ocean.npy +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/cmap_data/ocean_r.npy +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/cmap_data/oranges.npy +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/cmap_data/oranges_r.npy +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/cmap_data/orrd.npy +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/cmap_data/orrd_r.npy +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/cmap_data/oxy.npy +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/cmap_data/oxy_r.npy +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/cmap_data/paired.npy +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/cmap_data/paired_r.npy +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/cmap_data/pastel1.npy +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/cmap_data/pastel1_r.npy +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/cmap_data/pastel2.npy +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/cmap_data/pastel2_r.npy +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/cmap_data/phase.npy +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/cmap_data/phase_r.npy +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/cmap_data/pink.npy +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/cmap_data/pink_r.npy +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/cmap_data/piyg.npy +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/cmap_data/piyg_r.npy +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/cmap_data/plasma.npy +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/cmap_data/plasma_r.npy +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/cmap_data/prgn.npy +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/cmap_data/prgn_r.npy +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/cmap_data/prism.npy +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/cmap_data/prism_r.npy +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/cmap_data/pubu.npy +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/cmap_data/pubu_r.npy +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/cmap_data/pubugn.npy +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/cmap_data/pubugn_r.npy +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/cmap_data/puor.npy +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/cmap_data/puor_r.npy +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/cmap_data/purd.npy +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/cmap_data/purd_r.npy +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/cmap_data/purples.npy +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/cmap_data/purples_r.npy +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/cmap_data/rain.npy +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/cmap_data/rain_r.npy +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/cmap_data/rainbow.npy +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/cmap_data/rainbow_r.npy +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/cmap_data/rdbu.npy +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/cmap_data/rdbu_r.npy +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/cmap_data/rdgy.npy +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/cmap_data/rdgy_r.npy +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/cmap_data/rdpu.npy +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/cmap_data/rdpu_r.npy +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/cmap_data/rdylbu.npy +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/cmap_data/rdylbu_r.npy +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/cmap_data/rdylgn.npy +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/cmap_data/rdylgn_r.npy +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/cmap_data/reds.npy +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/cmap_data/reds_r.npy +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/cmap_data/rplumbo.npy +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/cmap_data/schwarzwald.npy +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/cmap_data/seismic.npy +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/cmap_data/seismic_r.npy +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/cmap_data/set1.npy +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/cmap_data/set1_r.npy +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/cmap_data/set2.npy +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/cmap_data/set2_r.npy +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/cmap_data/set3.npy +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/cmap_data/set3_r.npy +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/cmap_data/solar.npy +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/cmap_data/solar_r.npy +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/cmap_data/spectral.npy +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/cmap_data/spectral_r.npy +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/cmap_data/speed.npy +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/cmap_data/speed_r.npy +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/cmap_data/spring.npy +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/cmap_data/spring_r.npy +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/cmap_data/summer.npy +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/cmap_data/summer_r.npy +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/cmap_data/tab10.npy +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/cmap_data/tab10_r.npy +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/cmap_data/tab20.npy +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/cmap_data/tab20_r.npy +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/cmap_data/tab20b.npy +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/cmap_data/tab20b_r.npy +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/cmap_data/tab20c.npy +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/cmap_data/tab20c_r.npy +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/cmap_data/tarn.npy +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/cmap_data/tarn_r.npy +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/cmap_data/tempo.npy +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/cmap_data/tempo_r.npy +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/cmap_data/terrain.npy +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/cmap_data/terrain_r.npy +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/cmap_data/thermal.npy +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/cmap_data/thermal_r.npy +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/cmap_data/topo.npy +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/cmap_data/topo_r.npy +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/cmap_data/turbid.npy +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/cmap_data/turbid_r.npy +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/cmap_data/turbo.npy +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/cmap_data/turbo_r.npy +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/cmap_data/twilight.npy +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/cmap_data/twilight_r.npy +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/cmap_data/twilight_shifted.npy +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/cmap_data/twilight_shifted_r.npy +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/cmap_data/viridis.npy +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/cmap_data/viridis_r.npy +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/cmap_data/winter.npy +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/cmap_data/winter_r.npy +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/cmap_data/wistia.npy +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/cmap_data/wistia_r.npy +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/cmap_data/ylgn.npy +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/cmap_data/ylgn_r.npy +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/cmap_data/ylgnbu.npy +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/cmap_data/ylgnbu_r.npy +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/cmap_data/ylorbr.npy +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/cmap_data/ylorbr_r.npy +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/cmap_data/ylorrd.npy +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/cmap_data/ylorrd_r.npy +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/constants.py +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/errors.py +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/experimental/__init__.py +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/experimental/vsifile.py +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/expression.py +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/io/__init__.py +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/io/stac.py +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/logger.py +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/mosaic/__init__.py +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/mosaic/backend.py +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/mosaic/methods/__init__.py +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/mosaic/methods/base.py +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/mosaic/methods/defaults.py +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/mosaic/reader.py +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/profiles.py +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/py.typed +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/tasks.py +0 -0
- {rio_tiler-8.0.2 → rio_tiler-8.0.4}/rio_tiler/types.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: rio-tiler
|
|
3
|
-
Version: 8.0.
|
|
3
|
+
Version: 8.0.4
|
|
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/
|
|
@@ -46,6 +46,7 @@ Classifier: License :: OSI Approved :: BSD License
|
|
|
46
46
|
Classifier: Programming Language :: Python :: 3.11
|
|
47
47
|
Classifier: Programming Language :: Python :: 3.12
|
|
48
48
|
Classifier: Programming Language :: Python :: 3.13
|
|
49
|
+
Classifier: Programming Language :: Python :: 3.14
|
|
49
50
|
Classifier: Topic :: Scientific/Engineering :: GIS
|
|
50
51
|
Requires-Python: >=3.11
|
|
51
52
|
Requires-Dist: attrs
|
|
@@ -15,6 +15,7 @@ classifiers = [
|
|
|
15
15
|
"Programming Language :: Python :: 3.11",
|
|
16
16
|
"Programming Language :: Python :: 3.12",
|
|
17
17
|
"Programming Language :: Python :: 3.13",
|
|
18
|
+
"Programming Language :: Python :: 3.14",
|
|
18
19
|
"Topic :: Scientific/Engineering :: GIS",
|
|
19
20
|
]
|
|
20
21
|
dynamic = ["version"]
|
|
@@ -70,6 +71,11 @@ docs = [
|
|
|
70
71
|
deploy = [
|
|
71
72
|
"hatch",
|
|
72
73
|
]
|
|
74
|
+
notebook = [
|
|
75
|
+
"IPython",
|
|
76
|
+
"jupyter",
|
|
77
|
+
"matplotlib",
|
|
78
|
+
]
|
|
73
79
|
|
|
74
80
|
[project.optional-dependencies]
|
|
75
81
|
s3 = [
|
|
@@ -155,7 +161,7 @@ exclude = [
|
|
|
155
161
|
max-complexity = 14
|
|
156
162
|
|
|
157
163
|
[tool.bumpversion]
|
|
158
|
-
current_version = "8.0.
|
|
164
|
+
current_version = "8.0.4"
|
|
159
165
|
parse = """(?x)
|
|
160
166
|
(?P<major>\\d+)\\.
|
|
161
167
|
(?P<minor>\\d+)\\.
|
|
@@ -54,7 +54,7 @@ def open_dataset(src_path: str, **kwargs: Any) -> xarray.Dataset:
|
|
|
54
54
|
store = obstore.store.from_url(src_path, **kwargs)
|
|
55
55
|
zarr_store = ObjectStore(store=store, read_only=True)
|
|
56
56
|
ds = xarray.open_dataset(
|
|
57
|
-
zarr_store,
|
|
57
|
+
zarr_store, # type: ignore
|
|
58
58
|
decode_times=True,
|
|
59
59
|
decode_coords="all",
|
|
60
60
|
consolidated=True,
|
|
@@ -144,7 +144,7 @@ class ZarrReader(BaseReader):
|
|
|
144
144
|
@property
|
|
145
145
|
def variables(self) -> List[str]:
|
|
146
146
|
"""Return dataset variable names"""
|
|
147
|
-
return list(self.dataset.data_vars)
|
|
147
|
+
return list(self.dataset.data_vars) # type: ignore
|
|
148
148
|
|
|
149
149
|
def _arrange_dims(self, da: xarray.DataArray) -> xarray.DataArray:
|
|
150
150
|
"""Arrange coordinates and time dimensions.
|
|
@@ -5,7 +5,7 @@ import contextlib
|
|
|
5
5
|
import re
|
|
6
6
|
import warnings
|
|
7
7
|
from functools import cached_property
|
|
8
|
-
from typing import Any, Dict, List, Optional, Sequence, Tuple, Type, Union
|
|
8
|
+
from typing import Any, Dict, List, Optional, Sequence, Tuple, Type, Union, cast
|
|
9
9
|
|
|
10
10
|
import attr
|
|
11
11
|
import numpy
|
|
@@ -189,6 +189,8 @@ class SpatialMixin:
|
|
|
189
189
|
densify_pts=21,
|
|
190
190
|
)
|
|
191
191
|
|
|
192
|
+
tile_bounds = cast(BBox, tile_bounds)
|
|
193
|
+
|
|
192
194
|
# If tile_bounds has non-finite value in the dataset CRS we return True
|
|
193
195
|
if not all(numpy.isfinite(tile_bounds)):
|
|
194
196
|
return True
|
|
@@ -1115,7 +1117,7 @@ class MultiBandReader(SpatialMixin, metaclass=abc.ABCMeta):
|
|
|
1115
1117
|
bands_metadata[band].colorinterp[0] for _, band in enumerate(bands)
|
|
1116
1118
|
]
|
|
1117
1119
|
meta["nodata_type"] = bands_metadata[bands[0]].nodata_type
|
|
1118
|
-
return Info(
|
|
1120
|
+
return Info.model_validate(meta)
|
|
1119
1121
|
|
|
1120
1122
|
def statistics(
|
|
1121
1123
|
self,
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
import contextlib
|
|
4
4
|
import warnings
|
|
5
|
-
from typing import Any, Callable, Dict, List, Optional, Sequence, Union
|
|
5
|
+
from typing import Any, Callable, Dict, List, Optional, Sequence, Union, cast
|
|
6
6
|
|
|
7
7
|
import attr
|
|
8
8
|
import numpy
|
|
@@ -281,7 +281,7 @@ class Reader(BaseReader):
|
|
|
281
281
|
)
|
|
282
282
|
|
|
283
283
|
return self.part(
|
|
284
|
-
|
|
284
|
+
cast(BBox, self.tms.xy_bounds(Tile(x=tile_x, y=tile_y, z=tile_z))),
|
|
285
285
|
dst_crs=self.tms.rasterio_crs,
|
|
286
286
|
bounds_crs=self.tms.rasterio_crs,
|
|
287
287
|
height=tilesize,
|
|
@@ -667,7 +667,7 @@ class ImageReader(Reader):
|
|
|
667
667
|
)
|
|
668
668
|
|
|
669
669
|
return self.part(
|
|
670
|
-
|
|
670
|
+
cast(BBox, self.tms.xy_bounds(Tile(x=tile_x, y=tile_y, z=tile_z))),
|
|
671
671
|
height=tilesize,
|
|
672
672
|
width=tilesize,
|
|
673
673
|
max_size=None,
|
|
@@ -810,7 +810,7 @@ class ImageReader(Reader):
|
|
|
810
810
|
bbox = featureBounds(shape)
|
|
811
811
|
|
|
812
812
|
# If Image Origin is top Left (non-geo) we need to invert the bbox
|
|
813
|
-
bbox =
|
|
813
|
+
bbox = (bbox[0], bbox[3], bbox[2], bbox[1])
|
|
814
814
|
|
|
815
815
|
img = self.part(
|
|
816
816
|
bbox,
|
|
@@ -5,7 +5,7 @@ from __future__ import annotations
|
|
|
5
5
|
import math
|
|
6
6
|
import os
|
|
7
7
|
import warnings
|
|
8
|
-
from typing import Any, Dict, List, Tuple
|
|
8
|
+
from typing import Any, Dict, List, Tuple, cast
|
|
9
9
|
|
|
10
10
|
import attr
|
|
11
11
|
import numpy
|
|
@@ -52,7 +52,7 @@ except ImportError: # pragma: nocover
|
|
|
52
52
|
rioxarray = None # type: ignore
|
|
53
53
|
|
|
54
54
|
|
|
55
|
-
MAX_ARRAY_SIZE = os.environ.get("RIO_TILER_MAX_ARRAY_SIZE", 1_000_000_000) # 1Gb
|
|
55
|
+
MAX_ARRAY_SIZE = int(os.environ.get("RIO_TILER_MAX_ARRAY_SIZE", 1_000_000_000)) # 1Gb
|
|
56
56
|
|
|
57
57
|
|
|
58
58
|
@attr.s
|
|
@@ -160,7 +160,7 @@ class XarrayReader(BaseReader):
|
|
|
160
160
|
if coords_name:
|
|
161
161
|
return [str(self.input.coords[coords_name[0]].data)]
|
|
162
162
|
|
|
163
|
-
return [self.input.name or ""]
|
|
163
|
+
return [self.input.name or ""] # type: ignore
|
|
164
164
|
|
|
165
165
|
return [str(band) for d in self._dims for band in self.input[d].values]
|
|
166
166
|
|
|
@@ -281,13 +281,10 @@ class XarrayReader(BaseReader):
|
|
|
281
281
|
f"Tile(x={tile_x}, y={tile_y}, z={tile_z}) is outside bounds"
|
|
282
282
|
)
|
|
283
283
|
|
|
284
|
-
tile_bounds = tuple(self.tms.xy_bounds(Tile(x=tile_x, y=tile_y, z=tile_z)))
|
|
285
|
-
dst_crs = self.tms.rasterio_crs
|
|
286
|
-
|
|
287
284
|
return self.part(
|
|
288
|
-
|
|
289
|
-
dst_crs=
|
|
290
|
-
bounds_crs=
|
|
285
|
+
cast(BBox, self.tms.xy_bounds(Tile(x=tile_x, y=tile_y, z=tile_z))),
|
|
286
|
+
dst_crs=self.tms.rasterio_crs,
|
|
287
|
+
bounds_crs=self.tms.rasterio_crs,
|
|
291
288
|
reproject_method=reproject_method,
|
|
292
289
|
auto_expand=auto_expand,
|
|
293
290
|
nodata=nodata,
|
|
@@ -568,13 +565,13 @@ class XarrayReader(BaseReader):
|
|
|
568
565
|
|
|
569
566
|
arr = da.to_masked_array()
|
|
570
567
|
if out_dtype:
|
|
571
|
-
arr = arr.astype(out_dtype)
|
|
568
|
+
arr = cast(numpy.ma.MaskedArray, arr.astype(out_dtype))
|
|
572
569
|
arr.mask |= arr.data == da.rio.nodata
|
|
573
570
|
|
|
574
571
|
output_bounds = da.rio._unordered_bounds()
|
|
575
572
|
if output_bounds[1] > output_bounds[3] and da.rio.transform().e > 0:
|
|
576
573
|
yaxis = self.input.dims.index(self.input.rio.y_dim)
|
|
577
|
-
arr = numpy.flip(arr, axis=yaxis)
|
|
574
|
+
arr = cast(numpy.ma.MaskedArray, numpy.flip(arr, axis=yaxis))
|
|
578
575
|
|
|
579
576
|
img = ImageData(
|
|
580
577
|
arr,
|
|
@@ -645,7 +642,7 @@ class XarrayReader(BaseReader):
|
|
|
645
642
|
|
|
646
643
|
if out_dtype:
|
|
647
644
|
arr = arr.astype(out_dtype)
|
|
648
|
-
arr.mask |= arr.data == da.rio.nodata
|
|
645
|
+
arr.mask |= arr.data == da.rio.nodata # type: ignore [attr-defined]
|
|
649
646
|
|
|
650
647
|
return PointData(
|
|
651
648
|
arr,
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
import itertools
|
|
4
4
|
import warnings
|
|
5
|
-
from typing import Any, Dict, List, Literal, Optional, Sequence, Tuple, Union
|
|
5
|
+
from typing import Any, Dict, List, Literal, Optional, Sequence, Tuple, Union, cast
|
|
6
6
|
|
|
7
7
|
import attr
|
|
8
8
|
import numpy
|
|
@@ -104,7 +104,7 @@ def rescale_image(
|
|
|
104
104
|
) -> numpy.ma.MaskedArray:
|
|
105
105
|
"""Rescale image data in-place."""
|
|
106
106
|
if len(array.shape) < 3:
|
|
107
|
-
array = numpy.expand_dims(array, axis=0)
|
|
107
|
+
array = numpy.expand_dims(array, axis=0) # type: ignore [assignment]
|
|
108
108
|
|
|
109
109
|
nbands = array.shape[0]
|
|
110
110
|
|
|
@@ -116,14 +116,14 @@ def rescale_image(
|
|
|
116
116
|
|
|
117
117
|
for bdx in range(nbands):
|
|
118
118
|
array.data[bdx] = numpy.where(
|
|
119
|
-
~array.mask[bdx],
|
|
119
|
+
~array.mask[bdx], # type: ignore [index]
|
|
120
120
|
linear_rescale(
|
|
121
121
|
array.data[bdx], in_range=in_range[bdx], out_range=out_range[bdx]
|
|
122
122
|
),
|
|
123
123
|
0,
|
|
124
124
|
)
|
|
125
125
|
|
|
126
|
-
return array.astype(out_dtype)
|
|
126
|
+
return array.astype(out_dtype) # type: ignore [return-value]
|
|
127
127
|
|
|
128
128
|
|
|
129
129
|
def to_masked(array: numpy.ndarray) -> numpy.ma.MaskedArray:
|
|
@@ -131,6 +131,7 @@ def to_masked(array: numpy.ndarray) -> numpy.ma.MaskedArray:
|
|
|
131
131
|
if not numpy.ma.isarray(array):
|
|
132
132
|
array = numpy.ma.asarray(array)
|
|
133
133
|
|
|
134
|
+
array = cast(numpy.ma.MaskedArray, array)
|
|
134
135
|
# when a masked array is totally valid, the mask is set to numpy.ma.nomask
|
|
135
136
|
# https://numpy.org/doc/stable/reference/maskedarray.baseclass.html#numpy.ma.nomask
|
|
136
137
|
# doing `array.mask = False` force the creation of the mask array
|
|
@@ -156,14 +157,14 @@ class PointData:
|
|
|
156
157
|
|
|
157
158
|
array: numpy.ma.MaskedArray = attr.ib(converter=to_masked)
|
|
158
159
|
band_names: List[str] = attr.ib(kw_only=True)
|
|
159
|
-
band_descriptions:
|
|
160
|
+
band_descriptions: List[str] = attr.ib(kw_only=True)
|
|
160
161
|
coordinates: Optional[Tuple[float, float]] = attr.ib(default=None, kw_only=True)
|
|
161
162
|
crs: Optional[CRS] = attr.ib(default=None, kw_only=True)
|
|
162
163
|
assets: Optional[List] = attr.ib(default=None, kw_only=True)
|
|
163
164
|
metadata: Optional[Dict] = attr.ib(factory=dict, kw_only=True)
|
|
164
165
|
nodata: Optional[NoData] = attr.ib(default=None, kw_only=True)
|
|
165
|
-
scales:
|
|
166
|
-
offsets:
|
|
166
|
+
scales: List[NumType] = attr.ib(kw_only=True)
|
|
167
|
+
offsets: List[NumType] = attr.ib(kw_only=True)
|
|
167
168
|
pixel_location: Optional[Tuple[NumType, NumType]] = attr.ib(
|
|
168
169
|
default=None, kw_only=True
|
|
169
170
|
)
|
|
@@ -310,6 +311,8 @@ def masked_and_3d(array: numpy.ndarray) -> numpy.ma.MaskedArray:
|
|
|
310
311
|
if len(array.shape) < 3:
|
|
311
312
|
array = numpy.expand_dims(array, axis=0)
|
|
312
313
|
|
|
314
|
+
array = cast(numpy.ma.MaskedArray, array)
|
|
315
|
+
|
|
313
316
|
# when a masked array is totally valid, the mask is set to numpy.ma.nomask
|
|
314
317
|
# https://numpy.org/doc/stable/reference/maskedarray.baseclass.html#numpy.ma.nomask
|
|
315
318
|
# doing `array.mask = False` force the creation of the mask array
|
|
@@ -344,10 +347,10 @@ class ImageData:
|
|
|
344
347
|
crs: Optional[CRS] = attr.ib(default=None, kw_only=True)
|
|
345
348
|
metadata: Optional[Dict] = attr.ib(factory=dict, kw_only=True)
|
|
346
349
|
nodata: Optional[NoData] = attr.ib(default=None, kw_only=True)
|
|
347
|
-
scales:
|
|
348
|
-
offsets:
|
|
349
|
-
band_names:
|
|
350
|
-
band_descriptions:
|
|
350
|
+
scales: List[NumType] = attr.ib(kw_only=True)
|
|
351
|
+
offsets: List[NumType] = attr.ib(kw_only=True)
|
|
352
|
+
band_names: List[str] = attr.ib(kw_only=True)
|
|
353
|
+
band_descriptions: List[str] = attr.ib(kw_only=True)
|
|
351
354
|
dataset_statistics: Optional[Sequence[Tuple[float, float]]] = attr.ib(
|
|
352
355
|
default=None, kw_only=True
|
|
353
356
|
)
|
|
@@ -495,8 +498,8 @@ class ImageData:
|
|
|
495
498
|
if img.height == max_h and img.width == max_w:
|
|
496
499
|
continue
|
|
497
500
|
arr = numpy.ma.MaskedArray(
|
|
498
|
-
resize_array(img.array.data, max_h, max_w),
|
|
499
|
-
mask=resize_array(img.array.mask * 1, max_h, max_w).astype("bool"),
|
|
501
|
+
resize_array(img.array.data, max_h, max_w), # type: ignore [arg-type]
|
|
502
|
+
mask=resize_array(img.array.mask * 1, max_h, max_w).astype("bool"), # type: ignore [arg-type]
|
|
500
503
|
)
|
|
501
504
|
img.array = arr
|
|
502
505
|
|
|
@@ -708,8 +711,8 @@ class ImageData:
|
|
|
708
711
|
resampling_method: RIOResampling = "nearest",
|
|
709
712
|
) -> "ImageData":
|
|
710
713
|
"""Resize data and mask."""
|
|
711
|
-
data = resize_array(self.array.data, height, width, resampling_method)
|
|
712
|
-
mask = resize_array(self.array.mask * 1, height, width, resampling_method).astype(
|
|
714
|
+
data = resize_array(self.array.data, height, width, resampling_method) # type: ignore [arg-type]
|
|
715
|
+
mask = resize_array(self.array.mask * 1, height, width, resampling_method).astype( # type: ignore [arg-type]
|
|
713
716
|
"bool"
|
|
714
717
|
)
|
|
715
718
|
alpha_mask = self.alpha_mask
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
import contextlib
|
|
4
4
|
import math
|
|
5
5
|
import warnings
|
|
6
|
-
from typing import Callable, Dict, Optional, Tuple, TypedDict, Union
|
|
6
|
+
from typing import Callable, Dict, Optional, Tuple, TypedDict, Union, cast
|
|
7
7
|
|
|
8
8
|
import numpy
|
|
9
9
|
from affine import Affine
|
|
@@ -258,7 +258,11 @@ def read(
|
|
|
258
258
|
scales = numpy.array(dataset.scales)[numpy.array(indexes) - 1]
|
|
259
259
|
offsets = numpy.array(dataset.offsets)[numpy.array(indexes) - 1]
|
|
260
260
|
if unscale:
|
|
261
|
-
data =
|
|
261
|
+
data = cast(
|
|
262
|
+
numpy.ma.MaskedArray,
|
|
263
|
+
data.astype("float32", casting="unsafe"),
|
|
264
|
+
)
|
|
265
|
+
|
|
262
266
|
numpy.multiply(data, scales.reshape((-1, 1, 1)), out=data, casting="unsafe")
|
|
263
267
|
numpy.add(data, offsets.reshape((-1, 1, 1)), out=data, casting="unsafe")
|
|
264
268
|
|
|
@@ -139,7 +139,7 @@ def get_array_statistics(
|
|
|
139
139
|
percentiles = percentiles or [2, 98]
|
|
140
140
|
|
|
141
141
|
if len(data.shape) < 3:
|
|
142
|
-
data = numpy.ma.expand_dims(data, axis=0)
|
|
142
|
+
data = numpy.ma.expand_dims(data, axis=0) # type: ignore [assignment]
|
|
143
143
|
|
|
144
144
|
output: List[Dict[Any, Any]] = []
|
|
145
145
|
percentiles_names = [f"percentile_{int(p)}" for p in percentiles]
|
|
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
|
|
File without changes
|