rio-tiler 6.6.1__tar.gz → 6.8.0__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.
Files changed (241) hide show
  1. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/PKG-INFO +2 -1
  2. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/pyproject.toml +15 -0
  3. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/__init__.py +1 -1
  4. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/errors.py +8 -0
  5. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/io/base.py +2 -2
  6. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/io/rasterio.py +1 -1
  7. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/io/stac.py +34 -5
  8. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/io/xarray.py +24 -2
  9. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/reader.py +19 -3
  10. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/.gitignore +0 -0
  11. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/AUTHORS.txt +0 -0
  12. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/LICENSE +0 -0
  13. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/README.md +0 -0
  14. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/cmap_data/__init__.py +0 -0
  15. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/cmap_data/accent.npy +0 -0
  16. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/cmap_data/accent_r.npy +0 -0
  17. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/cmap_data/afmhot.npy +0 -0
  18. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/cmap_data/afmhot_r.npy +0 -0
  19. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/cmap_data/algae.npy +0 -0
  20. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/cmap_data/algae_r.npy +0 -0
  21. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/cmap_data/amp.npy +0 -0
  22. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/cmap_data/amp_r.npy +0 -0
  23. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/cmap_data/autumn.npy +0 -0
  24. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/cmap_data/autumn_r.npy +0 -0
  25. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/cmap_data/balance.npy +0 -0
  26. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/cmap_data/balance_r.npy +0 -0
  27. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/cmap_data/binary.npy +0 -0
  28. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/cmap_data/binary_r.npy +0 -0
  29. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/cmap_data/blues.npy +0 -0
  30. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/cmap_data/blues_r.npy +0 -0
  31. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/cmap_data/bone.npy +0 -0
  32. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/cmap_data/bone_r.npy +0 -0
  33. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/cmap_data/brbg.npy +0 -0
  34. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/cmap_data/brbg_r.npy +0 -0
  35. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/cmap_data/brg.npy +0 -0
  36. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/cmap_data/brg_r.npy +0 -0
  37. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/cmap_data/bugn.npy +0 -0
  38. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/cmap_data/bugn_r.npy +0 -0
  39. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/cmap_data/bupu.npy +0 -0
  40. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/cmap_data/bupu_r.npy +0 -0
  41. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/cmap_data/bwr.npy +0 -0
  42. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/cmap_data/bwr_r.npy +0 -0
  43. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/cmap_data/cfastie.npy +0 -0
  44. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/cmap_data/cividis.npy +0 -0
  45. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/cmap_data/cividis_r.npy +0 -0
  46. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/cmap_data/cmrmap.npy +0 -0
  47. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/cmap_data/cmrmap_r.npy +0 -0
  48. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/cmap_data/cool.npy +0 -0
  49. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/cmap_data/cool_r.npy +0 -0
  50. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/cmap_data/coolwarm.npy +0 -0
  51. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/cmap_data/coolwarm_r.npy +0 -0
  52. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/cmap_data/copper.npy +0 -0
  53. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/cmap_data/copper_r.npy +0 -0
  54. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/cmap_data/cubehelix.npy +0 -0
  55. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/cmap_data/cubehelix_r.npy +0 -0
  56. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/cmap_data/curl.npy +0 -0
  57. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/cmap_data/curl_r.npy +0 -0
  58. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/cmap_data/dark2.npy +0 -0
  59. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/cmap_data/dark2_r.npy +0 -0
  60. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/cmap_data/deep.npy +0 -0
  61. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/cmap_data/deep_r.npy +0 -0
  62. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/cmap_data/delta.npy +0 -0
  63. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/cmap_data/delta_r.npy +0 -0
  64. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/cmap_data/dense.npy +0 -0
  65. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/cmap_data/dense_r.npy +0 -0
  66. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/cmap_data/diff.npy +0 -0
  67. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/cmap_data/diff_r.npy +0 -0
  68. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/cmap_data/flag.npy +0 -0
  69. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/cmap_data/flag_r.npy +0 -0
  70. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/cmap_data/gist_earth.npy +0 -0
  71. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/cmap_data/gist_earth_r.npy +0 -0
  72. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/cmap_data/gist_gray.npy +0 -0
  73. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/cmap_data/gist_gray_r.npy +0 -0
  74. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/cmap_data/gist_heat.npy +0 -0
  75. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/cmap_data/gist_heat_r.npy +0 -0
  76. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/cmap_data/gist_ncar.npy +0 -0
  77. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/cmap_data/gist_ncar_r.npy +0 -0
  78. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/cmap_data/gist_rainbow.npy +0 -0
  79. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/cmap_data/gist_rainbow_r.npy +0 -0
  80. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/cmap_data/gist_stern.npy +0 -0
  81. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/cmap_data/gist_stern_r.npy +0 -0
  82. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/cmap_data/gist_yarg.npy +0 -0
  83. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/cmap_data/gist_yarg_r.npy +0 -0
  84. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/cmap_data/gnbu.npy +0 -0
  85. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/cmap_data/gnbu_r.npy +0 -0
  86. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/cmap_data/gnuplot.npy +0 -0
  87. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/cmap_data/gnuplot2.npy +0 -0
  88. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/cmap_data/gnuplot2_r.npy +0 -0
  89. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/cmap_data/gnuplot_r.npy +0 -0
  90. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/cmap_data/gray.npy +0 -0
  91. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/cmap_data/gray_r.npy +0 -0
  92. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/cmap_data/greens.npy +0 -0
  93. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/cmap_data/greens_r.npy +0 -0
  94. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/cmap_data/greys.npy +0 -0
  95. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/cmap_data/greys_r.npy +0 -0
  96. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/cmap_data/haline.npy +0 -0
  97. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/cmap_data/haline_r.npy +0 -0
  98. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/cmap_data/hot.npy +0 -0
  99. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/cmap_data/hot_r.npy +0 -0
  100. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/cmap_data/hsv.npy +0 -0
  101. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/cmap_data/hsv_r.npy +0 -0
  102. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/cmap_data/ice.npy +0 -0
  103. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/cmap_data/ice_r.npy +0 -0
  104. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/cmap_data/inferno.npy +0 -0
  105. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/cmap_data/inferno_r.npy +0 -0
  106. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/cmap_data/jet.npy +0 -0
  107. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/cmap_data/jet_r.npy +0 -0
  108. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/cmap_data/magma.npy +0 -0
  109. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/cmap_data/magma_r.npy +0 -0
  110. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/cmap_data/matter.npy +0 -0
  111. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/cmap_data/matter_r.npy +0 -0
  112. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/cmap_data/nipy_spectral.npy +0 -0
  113. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/cmap_data/nipy_spectral_r.npy +0 -0
  114. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/cmap_data/ocean.npy +0 -0
  115. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/cmap_data/ocean_r.npy +0 -0
  116. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/cmap_data/oranges.npy +0 -0
  117. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/cmap_data/oranges_r.npy +0 -0
  118. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/cmap_data/orrd.npy +0 -0
  119. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/cmap_data/orrd_r.npy +0 -0
  120. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/cmap_data/oxy.npy +0 -0
  121. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/cmap_data/oxy_r.npy +0 -0
  122. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/cmap_data/paired.npy +0 -0
  123. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/cmap_data/paired_r.npy +0 -0
  124. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/cmap_data/pastel1.npy +0 -0
  125. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/cmap_data/pastel1_r.npy +0 -0
  126. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/cmap_data/pastel2.npy +0 -0
  127. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/cmap_data/pastel2_r.npy +0 -0
  128. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/cmap_data/phase.npy +0 -0
  129. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/cmap_data/phase_r.npy +0 -0
  130. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/cmap_data/pink.npy +0 -0
  131. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/cmap_data/pink_r.npy +0 -0
  132. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/cmap_data/piyg.npy +0 -0
  133. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/cmap_data/piyg_r.npy +0 -0
  134. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/cmap_data/plasma.npy +0 -0
  135. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/cmap_data/plasma_r.npy +0 -0
  136. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/cmap_data/prgn.npy +0 -0
  137. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/cmap_data/prgn_r.npy +0 -0
  138. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/cmap_data/prism.npy +0 -0
  139. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/cmap_data/prism_r.npy +0 -0
  140. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/cmap_data/pubu.npy +0 -0
  141. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/cmap_data/pubu_r.npy +0 -0
  142. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/cmap_data/pubugn.npy +0 -0
  143. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/cmap_data/pubugn_r.npy +0 -0
  144. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/cmap_data/puor.npy +0 -0
  145. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/cmap_data/puor_r.npy +0 -0
  146. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/cmap_data/purd.npy +0 -0
  147. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/cmap_data/purd_r.npy +0 -0
  148. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/cmap_data/purples.npy +0 -0
  149. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/cmap_data/purples_r.npy +0 -0
  150. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/cmap_data/rain.npy +0 -0
  151. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/cmap_data/rain_r.npy +0 -0
  152. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/cmap_data/rainbow.npy +0 -0
  153. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/cmap_data/rainbow_r.npy +0 -0
  154. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/cmap_data/rdbu.npy +0 -0
  155. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/cmap_data/rdbu_r.npy +0 -0
  156. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/cmap_data/rdgy.npy +0 -0
  157. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/cmap_data/rdgy_r.npy +0 -0
  158. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/cmap_data/rdpu.npy +0 -0
  159. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/cmap_data/rdpu_r.npy +0 -0
  160. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/cmap_data/rdylbu.npy +0 -0
  161. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/cmap_data/rdylbu_r.npy +0 -0
  162. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/cmap_data/rdylgn.npy +0 -0
  163. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/cmap_data/rdylgn_r.npy +0 -0
  164. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/cmap_data/reds.npy +0 -0
  165. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/cmap_data/reds_r.npy +0 -0
  166. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/cmap_data/rplumbo.npy +0 -0
  167. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/cmap_data/schwarzwald.npy +0 -0
  168. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/cmap_data/seismic.npy +0 -0
  169. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/cmap_data/seismic_r.npy +0 -0
  170. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/cmap_data/set1.npy +0 -0
  171. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/cmap_data/set1_r.npy +0 -0
  172. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/cmap_data/set2.npy +0 -0
  173. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/cmap_data/set2_r.npy +0 -0
  174. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/cmap_data/set3.npy +0 -0
  175. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/cmap_data/set3_r.npy +0 -0
  176. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/cmap_data/solar.npy +0 -0
  177. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/cmap_data/solar_r.npy +0 -0
  178. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/cmap_data/spectral.npy +0 -0
  179. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/cmap_data/spectral_r.npy +0 -0
  180. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/cmap_data/speed.npy +0 -0
  181. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/cmap_data/speed_r.npy +0 -0
  182. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/cmap_data/spring.npy +0 -0
  183. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/cmap_data/spring_r.npy +0 -0
  184. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/cmap_data/summer.npy +0 -0
  185. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/cmap_data/summer_r.npy +0 -0
  186. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/cmap_data/tab10.npy +0 -0
  187. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/cmap_data/tab10_r.npy +0 -0
  188. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/cmap_data/tab20.npy +0 -0
  189. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/cmap_data/tab20_r.npy +0 -0
  190. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/cmap_data/tab20b.npy +0 -0
  191. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/cmap_data/tab20b_r.npy +0 -0
  192. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/cmap_data/tab20c.npy +0 -0
  193. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/cmap_data/tab20c_r.npy +0 -0
  194. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/cmap_data/tarn.npy +0 -0
  195. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/cmap_data/tarn_r.npy +0 -0
  196. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/cmap_data/tempo.npy +0 -0
  197. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/cmap_data/tempo_r.npy +0 -0
  198. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/cmap_data/terrain.npy +0 -0
  199. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/cmap_data/terrain_r.npy +0 -0
  200. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/cmap_data/thermal.npy +0 -0
  201. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/cmap_data/thermal_r.npy +0 -0
  202. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/cmap_data/topo.npy +0 -0
  203. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/cmap_data/topo_r.npy +0 -0
  204. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/cmap_data/turbid.npy +0 -0
  205. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/cmap_data/turbid_r.npy +0 -0
  206. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/cmap_data/turbo.npy +0 -0
  207. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/cmap_data/turbo_r.npy +0 -0
  208. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/cmap_data/twilight.npy +0 -0
  209. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/cmap_data/twilight_r.npy +0 -0
  210. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/cmap_data/twilight_shifted.npy +0 -0
  211. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/cmap_data/twilight_shifted_r.npy +0 -0
  212. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/cmap_data/viridis.npy +0 -0
  213. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/cmap_data/viridis_r.npy +0 -0
  214. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/cmap_data/winter.npy +0 -0
  215. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/cmap_data/winter_r.npy +0 -0
  216. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/cmap_data/wistia.npy +0 -0
  217. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/cmap_data/wistia_r.npy +0 -0
  218. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/cmap_data/ylgn.npy +0 -0
  219. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/cmap_data/ylgn_r.npy +0 -0
  220. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/cmap_data/ylgnbu.npy +0 -0
  221. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/cmap_data/ylgnbu_r.npy +0 -0
  222. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/cmap_data/ylorbr.npy +0 -0
  223. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/cmap_data/ylorbr_r.npy +0 -0
  224. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/cmap_data/ylorrd.npy +0 -0
  225. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/cmap_data/ylorrd_r.npy +0 -0
  226. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/colormap.py +0 -0
  227. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/constants.py +0 -0
  228. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/expression.py +0 -0
  229. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/io/__init__.py +0 -0
  230. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/logger.py +0 -0
  231. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/models.py +0 -0
  232. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/mosaic/__init__.py +0 -0
  233. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/mosaic/methods/__init__.py +0 -0
  234. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/mosaic/methods/base.py +0 -0
  235. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/mosaic/methods/defaults.py +0 -0
  236. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/mosaic/reader.py +0 -0
  237. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/profiles.py +0 -0
  238. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/py.typed +0 -0
  239. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/tasks.py +0 -0
  240. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/types.py +0 -0
  241. {rio_tiler-6.6.1 → rio_tiler-6.8.0}/rio_tiler/utils.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: rio-tiler
3
- Version: 6.6.1
3
+ Version: 6.8.0
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/
@@ -65,6 +65,7 @@ Provides-Extra: benchmark
65
65
  Requires-Dist: pytest; extra == 'benchmark'
66
66
  Requires-Dist: pytest-benchmark; extra == 'benchmark'
67
67
  Provides-Extra: dev
68
+ Requires-Dist: bump-my-version; extra == 'dev'
68
69
  Requires-Dist: pre-commit; extra == 'dev'
69
70
  Provides-Extra: docs
70
71
  Requires-Dist: mkdocs; extra == 'docs'
@@ -58,6 +58,7 @@ tilebench = [
58
58
 
59
59
  dev = [
60
60
  "pre-commit",
61
+ "bump-my-version",
61
62
  ]
62
63
  s3 = [
63
64
  "boto3",
@@ -150,3 +151,17 @@ ignore = [
150
151
 
151
152
  [tool.ruff.lint.mccabe]
152
153
  max-complexity = 14
154
+
155
+ [tool.bumpversion]
156
+ current_version = "6.8.0"
157
+ search = "{current_version}"
158
+ replace = "{new_version}"
159
+ regex = false
160
+ tag = true
161
+ commit = true
162
+ tag_name = "{new_version}"
163
+
164
+ [[tool.bumpversion.files]]
165
+ filename = "rio_tiler/__init__.py"
166
+ search = '__version__ = "{current_version}"'
167
+ replace = '__version__ = "{new_version}"'
@@ -1,6 +1,6 @@
1
1
  """rio-tiler."""
2
2
 
3
- __version__ = "6.6.1"
3
+ __version__ = "6.8.0"
4
4
 
5
5
  from . import ( # noqa
6
6
  colormap,
@@ -83,3 +83,11 @@ class AssetAsBandError(RioTilerError):
83
83
 
84
84
  class InvalidPointDataError(RioTilerError):
85
85
  """Invalid PointData."""
86
+
87
+
88
+ class MissingCRS(RioTilerError):
89
+ """Dataset doesn't have CRS information."""
90
+
91
+
92
+ class InvalidGeographicBounds(RioTilerError):
93
+ """Invalid Geographic bounds."""
@@ -480,7 +480,7 @@ class MultiBaseReader(SpatialMixin, metaclass=abc.ABCMeta):
480
480
  """
481
481
  if not self.tile_exists(tile_x, tile_y, tile_z):
482
482
  raise TileOutsideBounds(
483
- f"Tile {tile_z}/{tile_x}/{tile_y} is outside image bounds"
483
+ f"Tile(x={tile_x}, y={tile_y}, z={tile_z}) is outside bounds"
484
484
  )
485
485
 
486
486
  if isinstance(assets, str):
@@ -1036,7 +1036,7 @@ class MultiBandReader(SpatialMixin, metaclass=abc.ABCMeta):
1036
1036
  """
1037
1037
  if not self.tile_exists(tile_x, tile_y, tile_z):
1038
1038
  raise TileOutsideBounds(
1039
- f"Tile {tile_z}/{tile_x}/{tile_y} is outside image bounds"
1039
+ f"Tile(x={tile_x}, y={tile_y}, z={tile_z}) is outside bounds"
1040
1040
  )
1041
1041
 
1042
1042
  if isinstance(bands, str):
@@ -343,7 +343,7 @@ class Reader(BaseReader):
343
343
  """
344
344
  if not self.tile_exists(tile_x, tile_y, tile_z):
345
345
  raise TileOutsideBounds(
346
- f"Tile {tile_z}/{tile_x}/{tile_y} is outside {self.input} bounds"
346
+ f"Tile(x={tile_x}, y={tile_y}, z={tile_z}) is outside bounds"
347
347
  )
348
348
 
349
349
  tile_bounds = self.tms.xy_bounds(Tile(x=tile_x, y=tile_y, z=tile_z))
@@ -3,7 +3,7 @@
3
3
  import json
4
4
  import os
5
5
  import warnings
6
- from typing import Any, Dict, Iterator, Optional, Set, Type, Union
6
+ from typing import Any, Dict, Iterator, Optional, Set, Tuple, Type, Union
7
7
  from urllib.parse import urlparse
8
8
 
9
9
  import attr
@@ -41,6 +41,8 @@ DEFAULT_VALID_TYPE = {
41
41
  "application/x-hdf",
42
42
  }
43
43
 
44
+ STAC_ALTERNATE_KEY = os.environ.get("RIO_TILER_STAC_ALTERNATE_KEY", None)
45
+
44
46
 
45
47
  def aws_get_object(
46
48
  bucket: str,
@@ -275,16 +277,34 @@ class STACReader(MultiBaseReader):
275
277
  def _maxzoom(self):
276
278
  return self.tms.maxzoom
277
279
 
280
+ def _parse_vrt_asset(self, asset: str) -> Tuple[str, Optional[str]]:
281
+ if asset.startswith("vrt://") and asset not in self.assets:
282
+ parsed = urlparse(asset)
283
+ if not parsed.netloc:
284
+ raise InvalidAssetName(
285
+ f"'{asset}' is not valid, couldn't find valid asset"
286
+ )
287
+
288
+ if parsed.netloc not in self.assets:
289
+ raise InvalidAssetName(
290
+ f"'{parsed.netloc}' is not valid, should be one of {self.assets}"
291
+ )
292
+
293
+ return parsed.netloc, parsed.query
294
+
295
+ return asset, None
296
+
278
297
  def _get_asset_info(self, asset: str) -> AssetInfo:
279
- """Validate asset names and return asset's url.
298
+ """Validate asset names and return asset's info.
280
299
 
281
300
  Args:
282
301
  asset (str): STAC asset name.
283
302
 
284
303
  Returns:
285
- str: STAC asset href.
304
+ AssetInfo: STAC asset info.
286
305
 
287
306
  """
307
+ asset, vrt_options = self._parse_vrt_asset(asset)
288
308
  if asset not in self.assets:
289
309
  raise InvalidAssetName(
290
310
  f"'{asset}' is not valid, should be one of {self.assets}"
@@ -295,13 +315,19 @@ class STACReader(MultiBaseReader):
295
315
 
296
316
  info = AssetInfo(
297
317
  url=asset_info.get_absolute_href() or asset_info.href,
298
- metadata=extras,
318
+ metadata=extras if not vrt_options else None,
299
319
  )
300
320
 
321
+ if STAC_ALTERNATE_KEY and extras.get("alternate"):
322
+ if alternate := extras["alternate"].get(STAC_ALTERNATE_KEY):
323
+ info["url"] = alternate["href"]
324
+
325
+ # https://github.com/stac-extensions/file
301
326
  if head := extras.get("file:header_size"):
302
327
  info["env"] = {"GDAL_INGESTED_BYTES_AT_OPEN": head}
303
328
 
304
- if bands := extras.get("raster:bands"):
329
+ # https://github.com/stac-extensions/raster
330
+ if (bands := extras.get("raster:bands")) and not vrt_options:
305
331
  stats = [
306
332
  (b["statistics"]["minimum"], b["statistics"]["maximum"])
307
333
  for b in bands
@@ -319,4 +345,7 @@ class STACReader(MultiBaseReader):
319
345
  "Some statistics data in STAC are invalid, they will be ignored."
320
346
  )
321
347
 
348
+ if vrt_options:
349
+ info["url"] = f"vrt://{info['url']}?{vrt_options}"
350
+
322
351
  return info
@@ -15,7 +15,12 @@ from rasterio.warp import calculate_default_transform
15
15
  from rasterio.warp import transform as transform_coords
16
16
 
17
17
  from rio_tiler.constants import WEB_MERCATOR_TMS, WGS84_CRS
18
- from rio_tiler.errors import PointOutsideBounds, TileOutsideBounds
18
+ from rio_tiler.errors import (
19
+ InvalidGeographicBounds,
20
+ MissingCRS,
21
+ PointOutsideBounds,
22
+ TileOutsideBounds,
23
+ )
19
24
  from rio_tiler.io.base import BaseReader
20
25
  from rio_tiler.models import BandStatistics, ImageData, Info, PointData
21
26
  from rio_tiler.types import BBox, NoData, WarpResampling
@@ -70,8 +75,23 @@ class XarrayReader(BaseReader):
70
75
  assert xarray is not None, "xarray must be installed to use XarrayReader"
71
76
  assert rioxarray is not None, "rioxarray must be installed to use XarrayReader"
72
77
 
78
+ # NOTE: rioxarray returns **ordered** bounds in form of (minx, miny, maxx, maxx)
73
79
  self.bounds = tuple(self.input.rio.bounds())
74
80
  self.crs = self.input.rio.crs
81
+ if not self.crs:
82
+ raise MissingCRS(
83
+ "Dataset doesn't have CRS information, please add it before using rio-tiler (e.g. `ds.rio.write_crs('epsg:4326', inplace=True)`)"
84
+ )
85
+
86
+ if self.crs == WGS84_CRS and (
87
+ self.bounds[0] < -180
88
+ or self.bounds[1] < -90
89
+ or self.bounds[2] > 180
90
+ or self.bounds[3] > 90
91
+ ):
92
+ raise InvalidGeographicBounds(
93
+ f"Invalid geographic bounds: {self.bounds}. Must be within (-180, -90, 180, 90)."
94
+ )
75
95
 
76
96
  self._dims = [
77
97
  d
@@ -232,7 +252,9 @@ class XarrayReader(BaseReader):
232
252
  reproject_method = resampling_method
233
253
 
234
254
  if not self.tile_exists(tile_x, tile_y, tile_z):
235
- raise TileOutsideBounds(f"Tile {tile_z}/{tile_x}/{tile_y} is outside bounds")
255
+ raise TileOutsideBounds(
256
+ f"Tile(x={tile_x}, y={tile_y}, z={tile_z}) is outside bounds"
257
+ )
236
258
 
237
259
  ds = self.input
238
260
  if nodata is not None:
@@ -199,7 +199,9 @@ def read(
199
199
  values = dataset.read(
200
200
  indexes=indexes,
201
201
  window=window,
202
- out_shape=(len(indexes), height, width) if height and width else None,
202
+ out_shape=(
203
+ (len(indexes), height, width) if height and width else None
204
+ ),
203
205
  resampling=io_resampling,
204
206
  boundless=boundless,
205
207
  )
@@ -559,9 +561,23 @@ def point(
559
561
  xs, ys = transform_coords(coord_crs, dataset.crs, [lon], [lat])
560
562
  lon, lat = xs[0], ys[0]
561
563
 
564
+ dataset_min_lon, dataset_min_lat, dataset_max_lon, dataset_max_lat = (
565
+ dataset.bounds
566
+ )
567
+ # check if latitude is inverted
568
+ if dataset_min_lat > dataset_max_lat:
569
+ warnings.warn(
570
+ "BoundingBox of the dataset is inverted (minLat > maxLat).",
571
+ UserWarning,
572
+ )
573
+
574
+ dataset_min_lat, dataset_max_lat = (
575
+ min(dataset_min_lat, dataset_max_lat),
576
+ max(dataset_min_lat, dataset_max_lat),
577
+ )
562
578
  if not (
563
- (dataset.bounds[0] < lon < dataset.bounds[2])
564
- and (dataset.bounds[1] < lat < dataset.bounds[3])
579
+ (dataset_min_lon < lon < dataset_max_lon)
580
+ and (dataset_min_lat < lat < dataset_max_lat)
565
581
  ):
566
582
  raise PointOutsideBounds("Point is outside dataset bounds")
567
583
 
File without changes
File without changes
File without changes
File without changes