rio-tiler 7.5.1__py3-none-any.whl → 7.6.1__py3-none-any.whl

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/__init__.py CHANGED
@@ -1,6 +1,6 @@
1
1
  """rio-tiler."""
2
2
 
3
- __version__ = "7.5.1"
3
+ __version__ = "7.6.1"
4
4
 
5
5
  from . import ( # noqa
6
6
  colormap,
rio_tiler/io/rasterio.py CHANGED
@@ -638,6 +638,7 @@ class ImageReader(Reader):
638
638
  indexes: Optional[Indexes] = None,
639
639
  expression: Optional[str] = None,
640
640
  force_binary_mask: bool = True,
641
+ out_dtype: Optional[Union[str, numpy.dtype]] = None,
641
642
  resampling_method: RIOResampling = "nearest",
642
643
  unscale: bool = False,
643
644
  post_process: Optional[
@@ -675,6 +676,7 @@ class ImageReader(Reader):
675
676
  indexes=indexes,
676
677
  expression=expression,
677
678
  force_binary_mask=force_binary_mask,
679
+ out_dtype=out_dtype,
678
680
  resampling_method=resampling_method,
679
681
  unscale=unscale,
680
682
  post_process=post_process,
@@ -689,6 +691,7 @@ class ImageReader(Reader):
689
691
  height: Optional[int] = None,
690
692
  width: Optional[int] = None,
691
693
  force_binary_mask: bool = True,
694
+ out_dtype: Optional[Union[str, numpy.dtype]] = None,
692
695
  resampling_method: RIOResampling = "nearest",
693
696
  unscale: bool = False,
694
697
  post_process: Optional[
@@ -731,6 +734,7 @@ class ImageReader(Reader):
731
734
  height=height,
732
735
  indexes=indexes,
733
736
  force_binary_mask=force_binary_mask,
737
+ out_dtype=out_dtype,
734
738
  resampling_method=resampling_method,
735
739
  unscale=unscale,
736
740
  post_process=post_process,
@@ -748,6 +752,8 @@ class ImageReader(Reader):
748
752
  y: float,
749
753
  indexes: Optional[Indexes] = None,
750
754
  expression: Optional[str] = None,
755
+ out_dtype: Optional[Union[str, numpy.dtype]] = None,
756
+ resampling_method: RIOResampling = "nearest",
751
757
  unscale: bool = False,
752
758
  post_process: Optional[
753
759
  Callable[[numpy.ma.MaskedArray], numpy.ma.MaskedArray]
@@ -760,6 +766,7 @@ class ImageReader(Reader):
760
766
  y (float): Y coordinate.
761
767
  indexes (sequence of int or int, optional): Band indexes.
762
768
  expression (str, optional): rio-tiler expression (e.g. b1/b2+b3).
769
+ resampling_method (RIOResampling, optional): RasterIO resampling algorithm. Defaults to `nearest`.
763
770
  unscale (bool, optional): Apply 'scales' and 'offsets' on output data value. Defaults to `False`.
764
771
  post_process (callable, optional): Function to apply on output data and mask values.
765
772
 
@@ -775,6 +782,8 @@ class ImageReader(Reader):
775
782
  expression=expression,
776
783
  unscale=unscale,
777
784
  post_process=post_process,
785
+ out_dtype=out_dtype,
786
+ resampling_method=resampling_method,
778
787
  window=Window(col_off=x, row_off=y, width=1, height=1),
779
788
  )
780
789
 
@@ -784,6 +793,7 @@ class ImageReader(Reader):
784
793
  coordinates=self.dataset.xy(x, y),
785
794
  crs=self.dataset.crs,
786
795
  band_names=img.band_names,
796
+ pixel_location=(x, y),
787
797
  )
788
798
 
789
799
  def feature( # type: ignore
@@ -795,6 +805,7 @@ class ImageReader(Reader):
795
805
  height: Optional[int] = None,
796
806
  width: Optional[int] = None,
797
807
  force_binary_mask: bool = True,
808
+ out_dtype: Optional[Union[str, numpy.dtype]] = None,
798
809
  resampling_method: RIOResampling = "nearest",
799
810
  unscale: bool = False,
800
811
  post_process: Optional[
@@ -814,6 +825,7 @@ class ImageReader(Reader):
814
825
  height=height,
815
826
  width=width,
816
827
  force_binary_mask=force_binary_mask,
828
+ out_dtype=out_dtype,
817
829
  resampling_method=resampling_method,
818
830
  unscale=unscale,
819
831
  post_process=post_process,
rio_tiler/io/xarray.py CHANGED
@@ -173,7 +173,7 @@ class XarrayReader(BaseReader):
173
173
  if indexes := cast_to_sequence(indexes):
174
174
  assert all(v > 0 for v in indexes), "Indexes value must be >= 1"
175
175
  if da.ndim == 2:
176
- if indexes != (1,):
176
+ if set(indexes) != set({1}):
177
177
  raise ValueError(
178
178
  f"Invalid indexes {indexes} for array of shape {da.shape}"
179
179
  )
@@ -227,6 +227,7 @@ class XarrayReader(BaseReader):
227
227
  auto_expand: bool = True,
228
228
  nodata: Optional[NoData] = None,
229
229
  indexes: Optional[Indexes] = None,
230
+ out_dtype: str | numpy.dtype | None = None,
230
231
  **kwargs: Any,
231
232
  ) -> ImageData:
232
233
  """Read a Web Map tile from a dataset.
@@ -278,6 +279,8 @@ class XarrayReader(BaseReader):
278
279
  stats = ((minv, maxv),) * da.rio.count
279
280
 
280
281
  arr = da.to_masked_array()
282
+ if out_dtype:
283
+ arr = arr.astype(out_dtype)
281
284
  arr.mask |= arr.data == da.rio.nodata
282
285
 
283
286
  output_bounds = da.rio._unordered_bounds()
@@ -306,6 +309,7 @@ class XarrayReader(BaseReader):
306
309
  height: Optional[int] = None,
307
310
  width: Optional[int] = None,
308
311
  resampling_method: RIOResampling = "nearest",
312
+ out_dtype: str | numpy.dtype | None = None,
309
313
  **kwargs: Any,
310
314
  ) -> ImageData:
311
315
  """Read part of a dataset.
@@ -368,6 +372,8 @@ class XarrayReader(BaseReader):
368
372
  stats = ((minv, maxv),) * da.rio.count
369
373
 
370
374
  arr = da.to_masked_array()
375
+ if out_dtype:
376
+ arr = arr.astype(out_dtype)
371
377
  arr.mask |= arr.data == da.rio.nodata
372
378
 
373
379
  output_bounds = da.rio._unordered_bounds()
@@ -407,6 +413,7 @@ class XarrayReader(BaseReader):
407
413
  dst_crs: Optional[CRS] = None,
408
414
  reproject_method: WarpResampling = "nearest",
409
415
  resampling_method: RIOResampling = "nearest",
416
+ out_dtype: str | numpy.dtype | None = None,
410
417
  **kwargs: Any,
411
418
  ) -> ImageData:
412
419
  """Return a preview of a dataset.
@@ -458,6 +465,8 @@ class XarrayReader(BaseReader):
458
465
  stats = ((minv, maxv),) * da.rio.count
459
466
 
460
467
  arr = da.to_masked_array()
468
+ if out_dtype:
469
+ arr = arr.astype(out_dtype)
461
470
  arr.mask |= arr.data == da.rio.nodata
462
471
 
463
472
  output_bounds = da.rio._unordered_bounds()
@@ -494,6 +503,7 @@ class XarrayReader(BaseReader):
494
503
  coord_crs: CRS = WGS84_CRS,
495
504
  nodata: Optional[NoData] = None,
496
505
  indexes: Optional[Indexes] = None,
506
+ out_dtype: str | numpy.dtype | None = None,
497
507
  **kwargs: Any,
498
508
  ) -> PointData:
499
509
  """Read a pixel value from a dataset.
@@ -528,6 +538,8 @@ class XarrayReader(BaseReader):
528
538
  else:
529
539
  arr = da[:, int(y[0]), int(x[0])].to_masked_array()
530
540
 
541
+ if out_dtype:
542
+ arr = arr.astype(out_dtype)
531
543
  arr.mask |= arr.data == da.rio.nodata
532
544
 
533
545
  return PointData(
@@ -535,6 +547,7 @@ class XarrayReader(BaseReader):
535
547
  coordinates=(lon, lat),
536
548
  crs=coord_crs,
537
549
  band_names=band_names,
550
+ pixel_location=(x, y),
538
551
  )
539
552
 
540
553
  def feature(
@@ -550,6 +563,7 @@ class XarrayReader(BaseReader):
550
563
  height: Optional[int] = None,
551
564
  width: Optional[int] = None,
552
565
  resampling_method: RIOResampling = "nearest",
566
+ out_dtype: str | numpy.dtype | None = None,
553
567
  **kwargs: Any,
554
568
  ) -> ImageData:
555
569
  """Read part of a dataset defined by a geojson feature.
@@ -589,6 +603,7 @@ class XarrayReader(BaseReader):
589
603
  height=height,
590
604
  reproject_method=reproject_method,
591
605
  resampling_method=resampling_method,
606
+ out_dtype=out_dtype,
592
607
  )
593
608
 
594
609
  if dst_crs != shape_crs:
rio_tiler/models.py CHANGED
@@ -158,6 +158,9 @@ class PointData:
158
158
  crs: Optional[CRS] = attr.ib(default=None, kw_only=True)
159
159
  assets: Optional[List] = attr.ib(default=None, kw_only=True)
160
160
  metadata: Optional[Dict] = attr.ib(factory=dict, kw_only=True)
161
+ pixel_location: Optional[Tuple[NumType, NumType]] = attr.ib(
162
+ default=None, kw_only=True
163
+ )
161
164
 
162
165
  @array.validator
163
166
  def _validate_data(self, attribute, value):
@@ -241,9 +244,9 @@ class PointData:
241
244
  return cls(
242
245
  arr,
243
246
  assets=assets,
244
- crs=data[0].crs,
245
- coordinates=data[0].coordinates,
246
247
  band_names=band_names,
248
+ coordinates=data[0].coordinates,
249
+ crs=data[0].crs,
247
250
  metadata=metadata,
248
251
  )
249
252
 
@@ -262,6 +265,7 @@ class PointData:
262
265
  coordinates=self.coordinates,
263
266
  band_names=blocks,
264
267
  metadata=self.metadata,
268
+ pixel_location=self.pixel_location,
265
269
  )
266
270
 
267
271
 
rio_tiler/reader.py CHANGED
@@ -11,7 +11,7 @@ from rasterio import windows
11
11
  from rasterio.crs import CRS
12
12
  from rasterio.enums import ColorInterp, Resampling
13
13
  from rasterio.io import DatasetReader, DatasetWriter
14
- from rasterio.transform import array_bounds
14
+ from rasterio.transform import array_bounds, rowcol
15
15
  from rasterio.vrt import WarpedVRT
16
16
  from rasterio.warp import transform as transform_coords
17
17
  from rasterio.warp import transform_bounds
@@ -94,6 +94,7 @@ def read(
94
94
  force_binary_mask: bool = True,
95
95
  nodata: Optional[NoData] = None,
96
96
  vrt_options: Optional[Dict] = None,
97
+ out_dtype: Optional[Union[str, numpy.dtype]] = None,
97
98
  resampling_method: RIOResampling = "nearest",
98
99
  reproject_method: WarpResampling = "nearest",
99
100
  unscale: bool = False,
@@ -151,7 +152,6 @@ def read(
151
152
  "nodata": nodata,
152
153
  "add_alpha": False,
153
154
  "src_nodata": nodata,
154
- "dtype": src_dst.dtypes[0],
155
155
  }
156
156
  )
157
157
 
@@ -204,6 +204,7 @@ def read(
204
204
  ),
205
205
  resampling=io_resampling,
206
206
  boundless=boundless,
207
+ out_dtype=out_dtype,
207
208
  )
208
209
  mask = dataset.read(
209
210
  indexes=(alpha_idx,),
@@ -211,6 +212,7 @@ def read(
211
212
  out_shape=(1, height, width) if height and width else None,
212
213
  resampling=io_resampling,
213
214
  boundless=boundless,
215
+ out_dtype=out_dtype,
214
216
  )
215
217
  data = numpy.ma.MaskedArray(values)
216
218
  data.mask = ~mask.astype("bool")
@@ -223,6 +225,7 @@ def read(
223
225
  out_shape=(len(idx), height, width) if height and width else None,
224
226
  resampling=io_resampling,
225
227
  boundless=boundless,
228
+ out_dtype=out_dtype,
226
229
  )
227
230
  mask = ~values[-1].astype("bool")
228
231
  data = numpy.ma.MaskedArray(values[0:-1])
@@ -237,6 +240,7 @@ def read(
237
240
  boundless=boundless,
238
241
  masked=True,
239
242
  fill_value=nodata,
243
+ out_dtype=out_dtype,
240
244
  )
241
245
 
242
246
  # if data has Nodata then we simply make sure the mask == the nodata
@@ -308,6 +312,7 @@ def part(
308
312
  force_binary_mask: bool = True,
309
313
  nodata: Optional[NoData] = None,
310
314
  vrt_options: Optional[Dict] = None,
315
+ out_dtype: Optional[Union[str, numpy.dtype]] = None,
311
316
  align_bounds_with_dataset: bool = False,
312
317
  resampling_method: RIOResampling = "nearest",
313
318
  reproject_method: WarpResampling = "nearest",
@@ -430,6 +435,7 @@ def part(
430
435
  window=window,
431
436
  nodata=nodata,
432
437
  vrt_options=vrt_params,
438
+ out_dtype=out_dtype,
433
439
  resampling_method=resampling_method,
434
440
  reproject_method=reproject_method,
435
441
  force_binary_mask=force_binary_mask,
@@ -467,6 +473,7 @@ def part(
467
473
  height=height,
468
474
  window=window,
469
475
  nodata=nodata,
476
+ out_dtype=out_dtype,
470
477
  resampling_method=resampling_method,
471
478
  reproject_method=reproject_method,
472
479
  force_binary_mask=force_binary_mask,
@@ -490,6 +497,7 @@ def part(
490
497
  height=height,
491
498
  window=window,
492
499
  nodata=nodata,
500
+ out_dtype=out_dtype,
493
501
  resampling_method=resampling_method,
494
502
  reproject_method=reproject_method,
495
503
  force_binary_mask=force_binary_mask,
@@ -506,8 +514,10 @@ def point(
506
514
  force_binary_mask: bool = True,
507
515
  nodata: Optional[NoData] = None,
508
516
  vrt_options: Optional[Dict] = None,
517
+ out_dtype: Optional[Union[str, numpy.dtype]] = None,
509
518
  resampling_method: RIOResampling = "nearest",
510
519
  reproject_method: WarpResampling = "nearest",
520
+ interpolate: bool = False,
511
521
  unscale: bool = False,
512
522
  post_process: Optional[Callable[[numpy.ma.MaskedArray], numpy.ma.MaskedArray]] = None,
513
523
  ) -> PointData:
@@ -520,8 +530,9 @@ def point(
520
530
  coord_crs (rasterio.crs.CRS, optional): Coordinate Reference System of the input coords. Defaults to `epsg:4326`.
521
531
  nodata (int or float, optional): Overwrite dataset internal nodata value.
522
532
  vrt_options (dict, optional): Options to be passed to the rasterio.warp.WarpedVRT class.
523
- resampling_method (RIOResampling, optional): RasterIO resampling algorithm. Defaults to `nearest`.
533
+ resampling_method (RIOResampling, optional): RasterIO resampling algorithm. Only used when `interpolate=True`. Defaults to `nearest`.
524
534
  reproject_method (WarpResampling, optional): WarpKernel resampling algorithm. Defaults to `nearest`.
535
+ interpolate (bool, optional): Interpolate pixels around the coordinates. Defaults to `False`.
525
536
  unscale (bool, optional): Apply 'scales' and 'offsets' on output data value. Defaults to `False`.
526
537
  post_process (callable, optional): Function to apply on output data and mask values.
527
538
 
@@ -537,6 +548,7 @@ def point(
537
548
  vrt_params = {
538
549
  "add_alpha": True,
539
550
  "resampling": Resampling[reproject_method],
551
+ "dtype": src_dst.dtypes[0],
540
552
  }
541
553
  nodata = nodata if nodata is not None else src_dst.nodata
542
554
  if nodata is not None:
@@ -580,11 +592,30 @@ def point(
580
592
  ):
581
593
  raise PointOutsideBounds("Point is outside dataset bounds")
582
594
 
583
- row, col = dataset.index(lon, lat)
595
+ if interpolate:
596
+ # Ref: https://github.com/cogeotiff/rio-tiler/issues/793
597
+ # https://github.com/OSGeo/gdal/blob/a3d68b069e6b3676ba437faca5dca6ae2076ce24/swig/python/gdal-utils/osgeo_utils/samples/gdallocationinfo.py#L185-L197
598
+ rows, cols = rowcol(dataset.transform, xs=[lon], ys=[lat], op=lambda x: x)
599
+ row, col = float(rows[0]), float(cols[0])
600
+ row_off, col_off = row - 0.5, col - 0.5
601
+
602
+ else:
603
+ if resampling_method != "nearest":
604
+ warnings.warn(
605
+ f"{resampling_method} resampling will be ignored when `interpolate=False`.",
606
+ UserWarning,
607
+ )
608
+
609
+ row, col = dataset.index(lon, lat)
610
+ row_off, col_off = row, col
611
+
612
+ window = windows.Window(row_off=row_off, col_off=col_off, width=1, height=1)
613
+
584
614
  img = read(
585
615
  dataset,
586
616
  indexes=indexes,
587
- window=windows.Window(row_off=row, col_off=col, width=1, height=1),
617
+ window=window,
618
+ out_dtype=out_dtype,
588
619
  resampling_method=resampling_method,
589
620
  force_binary_mask=force_binary_mask,
590
621
  unscale=unscale,
@@ -593,8 +624,9 @@ def point(
593
624
 
594
625
  return PointData(
595
626
  img.array[:, 0, 0],
627
+ band_names=img.band_names,
596
628
  coordinates=coordinates,
597
629
  crs=coord_crs,
598
- band_names=img.band_names,
599
630
  metadata=dataset.tags(),
631
+ pixel_location=(col, row),
600
632
  )
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: rio-tiler
3
- Version: 7.5.1
3
+ Version: 7.6.1
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/
@@ -58,7 +58,7 @@ Requires-Dist: morecantile<7.0,>=5.0
58
58
  Requires-Dist: numexpr
59
59
  Requires-Dist: numpy
60
60
  Requires-Dist: pydantic~=2.0
61
- Requires-Dist: pystac>=0.5.4
61
+ Requires-Dist: pystac<2.0,>=1.9
62
62
  Requires-Dist: rasterio>=1.4.0
63
63
  Requires-Dist: typing-extensions
64
64
  Provides-Extra: benchmark
@@ -1,13 +1,13 @@
1
- rio_tiler/__init__.py,sha256=F5UhzpbBi4ZXUWqnpllv1a9P6HKq42umdO-eaGbWoGI,192
1
+ rio_tiler/__init__.py,sha256=NgOJMHNbvepJT4EulIhtQrgLUPQU3uS4Dz6TrWxuE24,192
2
2
  rio_tiler/colormap.py,sha256=E2FYp6AysmnSAhj2901XUrgB2q-8OvO8zoe_hmM_UZU,11186
3
3
  rio_tiler/constants.py,sha256=55i-7JZDupTXZdLgxL03KsgM4lAzuGuIVP1zZKktzp0,426
4
4
  rio_tiler/errors.py,sha256=dnaAHPc5VL7SNKXm00gzlrU_4XIuw5rwzD-9Q2kFJsc,2018
5
5
  rio_tiler/expression.py,sha256=EVHWgjMqIn4TTPfqT_HV1RWCQlxqOj3OtEr1iUDiFHE,2282
6
6
  rio_tiler/logger.py,sha256=RR8lnW3uVXkFkPa3nNJS_tTndmdiNNDVXpCDGDxGf0A,81
7
- rio_tiler/models.py,sha256=jZl-AWiCVYgOtws640kB8_XrzBn7ID32CHTL9lOP_KM,27724
7
+ rio_tiler/models.py,sha256=jmFmqrJghjLlPdxceccGvhhsQg9zqkIZUbST6BzAJbQ,27878
8
8
  rio_tiler/profiles.py,sha256=EAx2JdcaOcMw5PZjxbCqQBXXWMac9mjtpHoVFPJEDNQ,1562
9
9
  rio_tiler/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
10
- rio_tiler/reader.py,sha256=FiDQQU_v8mDk2JTxBpLmsTqaCQFOsjOw0LocasLeXjk,22721
10
+ rio_tiler/reader.py,sha256=bUcl68xbnb431oo_nIAOvmPrJBGS3xPfmIdMt_mBvQQ,24156
11
11
  rio_tiler/tasks.py,sha256=tiQo24rZHBVxids40QkNInuMzDFEei08zYW3I_pkSVE,3157
12
12
  rio_tiler/types.py,sha256=wrGiiGBQ-WdzHf-lEypiH3cub7Knu_rXJw7EWZ2FAS8,1632
13
13
  rio_tiler/utils.py,sha256=uX8C0RxB_u1sJI3MCvQMdlolDJcWW5G4waU08VfYRF4,30249
@@ -227,16 +227,16 @@ rio_tiler/experimental/__init__.py,sha256=dgW817h5U9OQt4V68L912g3DivPfhoWKvS-mI8
227
227
  rio_tiler/experimental/vsifile.py,sha256=t1tJviPmFkjWIbr86BEnsK7pU4iiqLh1pKYZyNNb1AY,960
228
228
  rio_tiler/io/__init__.py,sha256=_L4iILm6vSiJ14GEDDOvkuUHRtbWC9oqx6Bu8PxHhvA,270
229
229
  rio_tiler/io/base.py,sha256=nyaAtfodM-5fXd1WsGG5Qh544PNv9Hy4FLQ_nPj8hw8,52154
230
- rio_tiler/io/rasterio.py,sha256=9GtbUPialsFMnxVUKrJ8ZItC3sWS8zddrO8aiPG07AU,29011
230
+ rio_tiler/io/rasterio.py,sha256=4j4ffxsBHD7wg2R1p6x6JE_7UZjMZQGx29qtO6JEs8U,29636
231
231
  rio_tiler/io/stac.py,sha256=kIEW4F71PouXF-Ubpz-VVXujnp8LqftptPKDo_J3BTw,12831
232
- rio_tiler/io/xarray.py,sha256=Z4uOk0W0Wrao8aIsBa3sRiQC5uMEIjRi11iarbb85Dg,22204
232
+ rio_tiler/io/xarray.py,sha256=ia1bstgTg_lnpV5JMqeFnoem8F8CVYJpoxllWGVrhjk,22789
233
233
  rio_tiler/mosaic/__init__.py,sha256=Yj6CKpnFl8PJhLSp-a55wo33hKZ8-6OOBJtWA1HZVy8,118
234
234
  rio_tiler/mosaic/reader.py,sha256=_YBwTJwHvXOzKwpNpOmmh0F4yicyxgWo9vHyof3w_Do,9686
235
235
  rio_tiler/mosaic/methods/__init__.py,sha256=tgkXM9skaTLXIm5QFoheOEznQXM97KGflcAWHfkrt1g,612
236
236
  rio_tiler/mosaic/methods/base.py,sha256=9YZJWVRwH5Fk9KO9q5CW52Q8Mf60tAJ21oM4ixEDXBo,1424
237
237
  rio_tiler/mosaic/methods/defaults.py,sha256=z34lna2wGXnAPwculjk_6hDrloqS8wzer68FFoIo7pg,6744
238
- rio_tiler-7.5.1.dist-info/METADATA,sha256=bfMelVekvdymq27sGan75xpgbLgFRQWfuK3suHSOF4U,12230
239
- rio_tiler-7.5.1.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
240
- rio_tiler-7.5.1.dist-info/licenses/AUTHORS.txt,sha256=FCVd4Tjg-8syl0ZugCunpXER8X2-XonW2ZfllyTnRvE,158
241
- rio_tiler-7.5.1.dist-info/licenses/LICENSE,sha256=vq8Tt4KoYQT9JxAjQ4yXMmmhFYRTsBRgrOj-ao-bC5o,1517
242
- rio_tiler-7.5.1.dist-info/RECORD,,
238
+ rio_tiler-7.6.1.dist-info/METADATA,sha256=Yl0OYYTGfxeu5aTKJ0WEE1wjk9EN08OMKYH1bRLEeF8,12233
239
+ rio_tiler-7.6.1.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
240
+ rio_tiler-7.6.1.dist-info/licenses/AUTHORS.txt,sha256=FCVd4Tjg-8syl0ZugCunpXER8X2-XonW2ZfllyTnRvE,158
241
+ rio_tiler-7.6.1.dist-info/licenses/LICENSE,sha256=vq8Tt4KoYQT9JxAjQ4yXMmmhFYRTsBRgrOj-ao-bC5o,1517
242
+ rio_tiler-7.6.1.dist-info/RECORD,,