rio-tiler 6.7.0__py3-none-any.whl → 7.0.0__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 +1 -1
- rio_tiler/colormap.py +54 -18
- rio_tiler/io/base.py +330 -131
- rio_tiler/io/rasterio.py +36 -102
- rio_tiler/io/stac.py +66 -21
- rio_tiler/io/xarray.py +14 -115
- rio_tiler/models.py +16 -65
- rio_tiler/reader.py +3 -4
- rio_tiler/types.py +3 -2
- rio_tiler/utils.py +36 -12
- {rio_tiler-6.7.0.dist-info → rio_tiler-7.0.0.dist-info}/METADATA +13 -10
- {rio_tiler-6.7.0.dist-info → rio_tiler-7.0.0.dist-info}/RECORD +15 -15
- {rio_tiler-6.7.0.dist-info → rio_tiler-7.0.0.dist-info}/WHEEL +0 -0
- {rio_tiler-6.7.0.dist-info → rio_tiler-7.0.0.dist-info}/licenses/AUTHORS.txt +0 -0
- {rio_tiler-6.7.0.dist-info → rio_tiler-7.0.0.dist-info}/licenses/LICENSE +0 -0
rio_tiler/models.py
CHANGED
|
@@ -21,6 +21,7 @@ from rasterio.io import MemoryFile
|
|
|
21
21
|
from rasterio.plot import reshape_as_image
|
|
22
22
|
from rasterio.transform import from_bounds
|
|
23
23
|
from rasterio.warp import transform_geom
|
|
24
|
+
from typing_extensions import Self
|
|
24
25
|
|
|
25
26
|
from rio_tiler.colormap import apply_cmap
|
|
26
27
|
from rio_tiler.constants import WGS84_CRS
|
|
@@ -44,32 +45,14 @@ from rio_tiler.utils import (
|
|
|
44
45
|
)
|
|
45
46
|
|
|
46
47
|
|
|
47
|
-
class
|
|
48
|
-
"""Provides dictionary access for pydantic models, for backwards compatability."""
|
|
49
|
-
|
|
50
|
-
def __getitem__(self, item):
|
|
51
|
-
"""Access item like in Dict."""
|
|
52
|
-
warnings.warn(
|
|
53
|
-
"'key' access will has been deprecated and will be removed in rio-tiler 7.0.",
|
|
54
|
-
DeprecationWarning,
|
|
55
|
-
)
|
|
56
|
-
return {**self.__dict__, **self.__pydantic_extra__}[item]
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
class Bounds(RioTilerBaseModel):
|
|
48
|
+
class Bounds(BaseModel):
|
|
60
49
|
"""Dataset Bounding box"""
|
|
61
50
|
|
|
62
|
-
bounds:
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
class SpatialInfo(Bounds):
|
|
66
|
-
"""Dataset SpatialInfo"""
|
|
51
|
+
bounds: BBox
|
|
52
|
+
crs: str
|
|
67
53
|
|
|
68
|
-
minzoom: int
|
|
69
|
-
maxzoom: int
|
|
70
54
|
|
|
71
|
-
|
|
72
|
-
class Info(SpatialInfo):
|
|
55
|
+
class Info(Bounds):
|
|
73
56
|
"""Dataset Info."""
|
|
74
57
|
|
|
75
58
|
band_metadata: List[Tuple[str, Dict]]
|
|
@@ -84,7 +67,7 @@ class Info(SpatialInfo):
|
|
|
84
67
|
model_config = {"extra": "allow"}
|
|
85
68
|
|
|
86
69
|
|
|
87
|
-
class BandStatistics(
|
|
70
|
+
class BandStatistics(BaseModel):
|
|
88
71
|
"""Band statistics"""
|
|
89
72
|
|
|
90
73
|
min: float
|
|
@@ -218,7 +201,7 @@ class PointData:
|
|
|
218
201
|
return self.array.shape[0]
|
|
219
202
|
|
|
220
203
|
@classmethod
|
|
221
|
-
def create_from_list(cls, data: Sequence["PointData"]):
|
|
204
|
+
def create_from_list(cls, data: Sequence["PointData"]) -> Self:
|
|
222
205
|
"""Create PointData from a sequence of PointsData objects.
|
|
223
206
|
|
|
224
207
|
Args:
|
|
@@ -263,15 +246,6 @@ class PointData:
|
|
|
263
246
|
metadata=metadata,
|
|
264
247
|
)
|
|
265
248
|
|
|
266
|
-
def as_masked(self) -> numpy.ma.MaskedArray:
|
|
267
|
-
"""return a numpy masked array."""
|
|
268
|
-
warnings.warn(
|
|
269
|
-
"'PointData.as_masked' has been deprecated and will be removed"
|
|
270
|
-
"in rio-tiler 7.0. You can get the masked array directly with `PointData.array` attribute.",
|
|
271
|
-
DeprecationWarning,
|
|
272
|
-
)
|
|
273
|
-
return self.array
|
|
274
|
-
|
|
275
249
|
def apply_expression(self, expression: str) -> "PointData":
|
|
276
250
|
"""Apply expression to the image data."""
|
|
277
251
|
blocks = get_expression_blocks(expression)
|
|
@@ -361,22 +335,7 @@ class ImageData:
|
|
|
361
335
|
yield i
|
|
362
336
|
|
|
363
337
|
@classmethod
|
|
364
|
-
def
|
|
365
|
-
"""Create ImageData from a numpy array.
|
|
366
|
-
|
|
367
|
-
Args:
|
|
368
|
-
arr (numpy.ndarray): Numpy array or Numpy masked array.
|
|
369
|
-
|
|
370
|
-
"""
|
|
371
|
-
warnings.warn(
|
|
372
|
-
"'ImageData.from_array()' has been deprecated and will be removed"
|
|
373
|
-
"in rio-tiler 7.0.",
|
|
374
|
-
DeprecationWarning,
|
|
375
|
-
)
|
|
376
|
-
return cls(arr)
|
|
377
|
-
|
|
378
|
-
@classmethod
|
|
379
|
-
def from_bytes(cls, data: bytes) -> "ImageData":
|
|
338
|
+
def from_bytes(cls, data: bytes) -> Self:
|
|
380
339
|
"""Create ImageData from bytes.
|
|
381
340
|
|
|
382
341
|
Args:
|
|
@@ -425,7 +384,7 @@ class ImageData:
|
|
|
425
384
|
)
|
|
426
385
|
|
|
427
386
|
@classmethod
|
|
428
|
-
def create_from_list(cls, data: Sequence["ImageData"]) ->
|
|
387
|
+
def create_from_list(cls, data: Sequence["ImageData"]) -> Self:
|
|
429
388
|
"""Create ImageData from a sequence of ImageData objects.
|
|
430
389
|
|
|
431
390
|
Args:
|
|
@@ -498,15 +457,6 @@ class ImageData:
|
|
|
498
457
|
metadata=metadata,
|
|
499
458
|
)
|
|
500
459
|
|
|
501
|
-
def as_masked(self) -> numpy.ma.MaskedArray:
|
|
502
|
-
"""return a numpy masked array."""
|
|
503
|
-
warnings.warn(
|
|
504
|
-
"'ImageData.as_masked' has been deprecated and will be removed"
|
|
505
|
-
"in rio-tiler 7.0. You can get the masked array directly with `ImageData.array` attribute.",
|
|
506
|
-
DeprecationWarning,
|
|
507
|
-
)
|
|
508
|
-
return self.array
|
|
509
|
-
|
|
510
460
|
def data_as_image(self) -> numpy.ndarray:
|
|
511
461
|
"""Return the data array reshaped into an image processing/visualization software friendly order.
|
|
512
462
|
|
|
@@ -531,7 +481,7 @@ class ImageData:
|
|
|
531
481
|
return self.array.shape[0]
|
|
532
482
|
|
|
533
483
|
@property
|
|
534
|
-
def transform(self):
|
|
484
|
+
def transform(self) -> Affine:
|
|
535
485
|
"""Returns the affine transform."""
|
|
536
486
|
return (
|
|
537
487
|
from_bounds(*self.bounds, self.width, self.height)
|
|
@@ -544,7 +494,7 @@ class ImageData:
|
|
|
544
494
|
in_range: Sequence[IntervalTuple],
|
|
545
495
|
out_range: Sequence[IntervalTuple] = ((0, 255),),
|
|
546
496
|
out_dtype: Union[str, numpy.number] = "uint8",
|
|
547
|
-
):
|
|
497
|
+
) -> Self:
|
|
548
498
|
"""Rescale data in place."""
|
|
549
499
|
self.array = rescale_image(
|
|
550
500
|
self.array.copy(),
|
|
@@ -552,6 +502,7 @@ class ImageData:
|
|
|
552
502
|
out_range=out_range,
|
|
553
503
|
out_dtype=out_dtype,
|
|
554
504
|
)
|
|
505
|
+
return self
|
|
555
506
|
|
|
556
507
|
def apply_colormap(self, colormap: ColorMapType) -> "ImageData":
|
|
557
508
|
"""Apply colormap to the image data."""
|
|
@@ -570,7 +521,7 @@ class ImageData:
|
|
|
570
521
|
metadata=self.metadata,
|
|
571
522
|
)
|
|
572
523
|
|
|
573
|
-
def apply_color_formula(self, color_formula: Optional[str]):
|
|
524
|
+
def apply_color_formula(self, color_formula: Optional[str]) -> Self:
|
|
574
525
|
"""Apply color-operations formula in place."""
|
|
575
526
|
out = self.array.data.copy()
|
|
576
527
|
out[out < 0] = 0
|
|
@@ -581,6 +532,7 @@ class ImageData:
|
|
|
581
532
|
data = numpy.ma.MaskedArray(out)
|
|
582
533
|
data.mask = self.array.mask
|
|
583
534
|
self.array = data
|
|
535
|
+
return self
|
|
584
536
|
|
|
585
537
|
def apply_expression(self, expression: str) -> "ImageData":
|
|
586
538
|
"""Apply expression to the image data."""
|
|
@@ -796,9 +748,8 @@ class ImageData:
|
|
|
796
748
|
"""Post-process image data.
|
|
797
749
|
|
|
798
750
|
Args:
|
|
799
|
-
|
|
800
|
-
|
|
801
|
-
color_formula (str, optional): color-ops formula (see: https://github.com/vincentsarago/color-ops).
|
|
751
|
+
shape (Dict): GeoJSON geometry or Feature.
|
|
752
|
+
shape_crs (rasterio.crs.CRS): Coordinates Reference System of shape.
|
|
802
753
|
cover_scale (int, optional):
|
|
803
754
|
Scale used when generating coverage estimates of each
|
|
804
755
|
raster cell by vector feature. Coverage is generated by
|
rio_tiler/reader.py
CHANGED
|
@@ -23,6 +23,7 @@ from rio_tiler.types import BBox, Indexes, NoData, RIOResampling, WarpResampling
|
|
|
23
23
|
from rio_tiler.utils import _requested_tile_aligned_with_internal_tile as is_aligned
|
|
24
24
|
from rio_tiler.utils import (
|
|
25
25
|
_round_window,
|
|
26
|
+
cast_to_sequence,
|
|
26
27
|
get_vrt_transform,
|
|
27
28
|
has_alpha_band,
|
|
28
29
|
non_alpha_indexes,
|
|
@@ -120,8 +121,7 @@ def read(
|
|
|
120
121
|
ImageData
|
|
121
122
|
|
|
122
123
|
"""
|
|
123
|
-
|
|
124
|
-
indexes = (indexes,)
|
|
124
|
+
indexes = cast_to_sequence(indexes)
|
|
125
125
|
|
|
126
126
|
if max_size and width and height:
|
|
127
127
|
warnings.warn(
|
|
@@ -529,8 +529,7 @@ def point(
|
|
|
529
529
|
PointData
|
|
530
530
|
|
|
531
531
|
"""
|
|
532
|
-
|
|
533
|
-
indexes = (indexes,)
|
|
532
|
+
indexes = cast_to_sequence(indexes)
|
|
534
533
|
|
|
535
534
|
with contextlib.ExitStack() as ctx:
|
|
536
535
|
# Use WarpedVRT when User provided Nodata or VRT Option (cutline)
|
rio_tiler/types.py
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"""rio-tiler types."""
|
|
2
2
|
|
|
3
|
-
from typing import Dict, Literal, Optional, Sequence, Tuple, TypedDict, Union
|
|
3
|
+
from typing import Any, Dict, Literal, Optional, Sequence, Tuple, TypedDict, Union
|
|
4
4
|
|
|
5
5
|
import numpy
|
|
6
6
|
|
|
@@ -58,7 +58,8 @@ WarpResampling = Literal[
|
|
|
58
58
|
class AssetInfo(TypedDict, total=False):
|
|
59
59
|
"""Asset Reader Options."""
|
|
60
60
|
|
|
61
|
-
url:
|
|
61
|
+
url: Any
|
|
62
|
+
media_type: str
|
|
62
63
|
env: Optional[Dict]
|
|
63
64
|
metadata: Optional[Dict]
|
|
64
65
|
dataset_statistics: Optional[Sequence[Tuple[float, float]]]
|
rio_tiler/utils.py
CHANGED
|
@@ -305,6 +305,7 @@ def get_vrt_transform(
|
|
|
305
305
|
tuple: VRT transform (affine.Affine), width (int) and height (int)
|
|
306
306
|
|
|
307
307
|
"""
|
|
308
|
+
# 1. Get the Dataset Resolution in the output crs
|
|
308
309
|
if src_dst.crs != dst_crs:
|
|
309
310
|
src_width = src_dst.width
|
|
310
311
|
src_height = src_dst.height
|
|
@@ -358,6 +359,7 @@ def get_vrt_transform(
|
|
|
358
359
|
else:
|
|
359
360
|
dst_transform = src_dst.transform
|
|
360
361
|
|
|
362
|
+
# 2. adjust output bounds if needed
|
|
361
363
|
# If bounds window is aligned with the dataset internal tile we align the bounds with the pixels.
|
|
362
364
|
# This is to limit the number of internal block fetched.
|
|
363
365
|
if _requested_tile_aligned_with_internal_tile(src_dst, bounds, bounds_crs=dst_crs):
|
|
@@ -384,6 +386,7 @@ def get_vrt_transform(
|
|
|
384
386
|
|
|
385
387
|
w, s, e, n = bounds
|
|
386
388
|
|
|
389
|
+
# 3. Calculate the VRT Height/Width
|
|
387
390
|
# When no output size (resolution) - Use Dataset Resolution
|
|
388
391
|
# NOTE: When we don't `fix` the output width/height, we're using the reprojected dataset resolution
|
|
389
392
|
# to calculate what is the size/transform of the VRT
|
|
@@ -397,18 +400,13 @@ def get_vrt_transform(
|
|
|
397
400
|
output_transform = from_bounds(w, s, e, n, width, height)
|
|
398
401
|
|
|
399
402
|
# NOTE: Here we check if the Output Resolution is higher thant the dataset resolution (OverZoom)
|
|
400
|
-
# When not
|
|
403
|
+
# When not over-zooming we don't want to use the output Width/Height to calculate the transform
|
|
401
404
|
# See issues https://github.com/cogeotiff/rio-tiler/pull/648
|
|
402
|
-
|
|
403
|
-
output_transform.a
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
h_res = (
|
|
408
|
-
output_transform.e
|
|
409
|
-
if abs(output_transform.e) < abs(dst_transform.e)
|
|
410
|
-
else dst_transform.e
|
|
411
|
-
)
|
|
405
|
+
if abs(dst_transform.a) > abs(output_transform.a):
|
|
406
|
+
w_res = output_transform.a
|
|
407
|
+
|
|
408
|
+
if abs(dst_transform.e) > abs(output_transform.e):
|
|
409
|
+
h_res = output_transform.e
|
|
412
410
|
|
|
413
411
|
vrt_width = max(1, round((e - w) / w_res))
|
|
414
412
|
vrt_height = max(1, round((s - n) / h_res))
|
|
@@ -477,7 +475,7 @@ def _requested_tile_aligned_with_internal_tile(
|
|
|
477
475
|
bounds_crs: CRS = WEB_MERCATOR_CRS,
|
|
478
476
|
) -> bool:
|
|
479
477
|
"""Check if tile is aligned with internal tiles."""
|
|
480
|
-
if
|
|
478
|
+
if src_dst.block_shapes and src_dst.block_shapes[0][1] == src_dst.width:
|
|
481
479
|
return False
|
|
482
480
|
|
|
483
481
|
if src_dst.crs != bounds_crs:
|
|
@@ -783,3 +781,29 @@ def _validate_shape_input(shape: Dict) -> Dict:
|
|
|
783
781
|
raise RioTilerError("Invalid geometry")
|
|
784
782
|
|
|
785
783
|
return shape
|
|
784
|
+
|
|
785
|
+
|
|
786
|
+
def cast_to_sequence(val: Optional[Any] = None) -> Sequence:
|
|
787
|
+
"""Cast input to sequence if not Tuple of List."""
|
|
788
|
+
if val is not None and not isinstance(val, (list, tuple)):
|
|
789
|
+
val = (val,)
|
|
790
|
+
|
|
791
|
+
return val
|
|
792
|
+
|
|
793
|
+
|
|
794
|
+
def CRS_to_uri(crs: CRS) -> Optional[str]:
|
|
795
|
+
"""Convert CRS to URI.
|
|
796
|
+
|
|
797
|
+
Code adapted from https://github.com/developmentseed/morecantile/blob/1829fe12408e4a1feee7493308f3f02257ef4caf/morecantile/models.py#L148-L161
|
|
798
|
+
"""
|
|
799
|
+
# attempt to grab the authority, version, and code from the CRS
|
|
800
|
+
if authority_code := crs.to_authority(confidence_threshold=70):
|
|
801
|
+
version = "0"
|
|
802
|
+
authority, code = authority_code
|
|
803
|
+
# if we have a version number in the authority, split it out
|
|
804
|
+
if "_" in authority:
|
|
805
|
+
authority, version = authority.split("_")
|
|
806
|
+
|
|
807
|
+
return f"http://www.opengis.net/def/crs/{authority}/{version}/{code}"
|
|
808
|
+
|
|
809
|
+
return None
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.3
|
|
2
2
|
Name: rio-tiler
|
|
3
|
-
Version:
|
|
3
|
+
Version: 7.0.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/
|
|
@@ -55,12 +55,13 @@ Requires-Dist: cachetools
|
|
|
55
55
|
Requires-Dist: color-operations
|
|
56
56
|
Requires-Dist: httpx
|
|
57
57
|
Requires-Dist: importlib-resources>=1.1.0; python_version < '3.9'
|
|
58
|
-
Requires-Dist: morecantile<
|
|
58
|
+
Requires-Dist: morecantile<7.0,>=5.0
|
|
59
59
|
Requires-Dist: numexpr
|
|
60
60
|
Requires-Dist: numpy
|
|
61
61
|
Requires-Dist: pydantic~=2.0
|
|
62
62
|
Requires-Dist: pystac>=0.5.4
|
|
63
63
|
Requires-Dist: rasterio>=1.3.0
|
|
64
|
+
Requires-Dist: typing-extensions
|
|
64
65
|
Provides-Extra: benchmark
|
|
65
66
|
Requires-Dist: pytest; extra == 'benchmark'
|
|
66
67
|
Requires-Dist: pytest-benchmark; extra == 'benchmark'
|
|
@@ -68,15 +69,17 @@ Provides-Extra: dev
|
|
|
68
69
|
Requires-Dist: bump-my-version; extra == 'dev'
|
|
69
70
|
Requires-Dist: pre-commit; extra == 'dev'
|
|
70
71
|
Provides-Extra: docs
|
|
71
|
-
Requires-Dist:
|
|
72
|
-
Requires-Dist: mkdocs-jupyter; extra == 'docs'
|
|
73
|
-
Requires-Dist: mkdocs-material; extra == 'docs'
|
|
74
|
-
Requires-Dist:
|
|
72
|
+
Requires-Dist: griffe-inherited-docstrings>=1.0.0; extra == 'docs'
|
|
73
|
+
Requires-Dist: mkdocs-jupyter>=0.24.5; extra == 'docs'
|
|
74
|
+
Requires-Dist: mkdocs-material[imaging]>=9.5; extra == 'docs'
|
|
75
|
+
Requires-Dist: mkdocs>=1.4.3; extra == 'docs'
|
|
76
|
+
Requires-Dist: mkdocstrings[python]>=0.25.1; extra == 'docs'
|
|
75
77
|
Requires-Dist: pygments; extra == 'docs'
|
|
76
78
|
Provides-Extra: s3
|
|
77
79
|
Requires-Dist: boto3; extra == 's3'
|
|
78
80
|
Provides-Extra: test
|
|
79
81
|
Requires-Dist: boto3; extra == 'test'
|
|
82
|
+
Requires-Dist: morecantile<7.0,>=6.0; extra == 'test'
|
|
80
83
|
Requires-Dist: pytest; extra == 'test'
|
|
81
84
|
Requires-Dist: pytest-cov; extra == 'test'
|
|
82
85
|
Requires-Dist: rioxarray; extra == 'test'
|
|
@@ -260,8 +263,8 @@ At the low level, `rio-tiler` is *just* a wrapper around the [rasterio](https://
|
|
|
260
263
|
You can install `rio-tiler` using pip
|
|
261
264
|
|
|
262
265
|
```bash
|
|
263
|
-
$ pip install -U pip
|
|
264
|
-
$ pip install -U rio-tiler
|
|
266
|
+
$ python -m pip install -U pip
|
|
267
|
+
$ python -m pip install -U rio-tiler
|
|
265
268
|
```
|
|
266
269
|
|
|
267
270
|
or install from source:
|
|
@@ -269,8 +272,8 @@ or install from source:
|
|
|
269
272
|
```bash
|
|
270
273
|
$ git clone https://github.com/cogeotiff/rio-tiler.git
|
|
271
274
|
$ cd rio-tiler
|
|
272
|
-
$ pip install -U pip
|
|
273
|
-
$ pip install -e .
|
|
275
|
+
$ python -m pip install -U pip
|
|
276
|
+
$ python -m pip install -e .
|
|
274
277
|
```
|
|
275
278
|
|
|
276
279
|
## Plugins
|
|
@@ -1,16 +1,16 @@
|
|
|
1
|
-
rio_tiler/__init__.py,sha256=
|
|
2
|
-
rio_tiler/colormap.py,sha256=
|
|
1
|
+
rio_tiler/__init__.py,sha256=aPeEGMQpVX93krXti2rZ8cQmXMVjDgepeUDvqG9eUgg,192
|
|
2
|
+
rio_tiler/colormap.py,sha256=xx43D4A5w3VgYB2CvuKvYFmAsYSuZLWbIfextsVYDB4,11085
|
|
3
3
|
rio_tiler/constants.py,sha256=55i-7JZDupTXZdLgxL03KsgM4lAzuGuIVP1zZKktzp0,426
|
|
4
4
|
rio_tiler/errors.py,sha256=4I3i0e1FtkLX5sIX6dfhUMUj3SWWoKqkjCkSG7k5i2M,1901
|
|
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=
|
|
7
|
+
rio_tiler/models.py,sha256=Y1IohWm4KtpdS7qngOe7nuijqcLFr6sutEtw5FGiNN0,26442
|
|
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=
|
|
10
|
+
rio_tiler/reader.py,sha256=FiDQQU_v8mDk2JTxBpLmsTqaCQFOsjOw0LocasLeXjk,22721
|
|
11
11
|
rio_tiler/tasks.py,sha256=tiQo24rZHBVxids40QkNInuMzDFEei08zYW3I_pkSVE,3157
|
|
12
|
-
rio_tiler/types.py,sha256=
|
|
13
|
-
rio_tiler/utils.py,sha256=
|
|
12
|
+
rio_tiler/types.py,sha256=HbgECLqI4KoYVdMZv2pHSME4aiVvWea1ircqP9jQQCA,1468
|
|
13
|
+
rio_tiler/utils.py,sha256=FyOP7sbTZnWVB8fPOs19cJlABL15oJ66tce5pIpNO3c,28713
|
|
14
14
|
rio_tiler/cmap_data/__init__.py,sha256=8FtVmfpTjXlvhxQ5QesN0UC1m_B3MuF3LbGbhMC5Rw4,1039
|
|
15
15
|
rio_tiler/cmap_data/accent.npy,sha256=Qde1ldOoXghe4L05v1QbVvnMA1ldwNjKWPf5xCBbmI4,1152
|
|
16
16
|
rio_tiler/cmap_data/accent_r.npy,sha256=ba-GWSMSPRAcm9CGzlXJeNG4ABbBHDCV602hAWV2idc,1152
|
|
@@ -224,17 +224,17 @@ rio_tiler/cmap_data/ylorbr_r.npy,sha256=LjRoulX86uju7woCI_m4zzmAJMDpg-ky7p4f9vUk
|
|
|
224
224
|
rio_tiler/cmap_data/ylorrd.npy,sha256=9ImXljw40oe60w8uV4EMDPY4aFFVkGbyCBi6SlTX83w,1152
|
|
225
225
|
rio_tiler/cmap_data/ylorrd_r.npy,sha256=K5uiHNHbLxV5SizyT09cSVAxldE-BW5GpOXxUp7UsTE,1152
|
|
226
226
|
rio_tiler/io/__init__.py,sha256=_L4iILm6vSiJ14GEDDOvkuUHRtbWC9oqx6Bu8PxHhvA,270
|
|
227
|
-
rio_tiler/io/base.py,sha256=
|
|
228
|
-
rio_tiler/io/rasterio.py,sha256=
|
|
229
|
-
rio_tiler/io/stac.py,sha256=
|
|
230
|
-
rio_tiler/io/xarray.py,sha256=
|
|
227
|
+
rio_tiler/io/base.py,sha256=nyaAtfodM-5fXd1WsGG5Qh544PNv9Hy4FLQ_nPj8hw8,52154
|
|
228
|
+
rio_tiler/io/rasterio.py,sha256=9GtbUPialsFMnxVUKrJ8ZItC3sWS8zddrO8aiPG07AU,29011
|
|
229
|
+
rio_tiler/io/stac.py,sha256=b7RASmoJHGnHvn3LBNaBlMzigZr_qNn1efczxD-Zplc,12629
|
|
230
|
+
rio_tiler/io/xarray.py,sha256=TgQ34hGEpsZv_j3hivzl5decPisQvseFN8HS9zuOBQo,13997
|
|
231
231
|
rio_tiler/mosaic/__init__.py,sha256=Yj6CKpnFl8PJhLSp-a55wo33hKZ8-6OOBJtWA1HZVy8,118
|
|
232
232
|
rio_tiler/mosaic/reader.py,sha256=_YBwTJwHvXOzKwpNpOmmh0F4yicyxgWo9vHyof3w_Do,9686
|
|
233
233
|
rio_tiler/mosaic/methods/__init__.py,sha256=tgkXM9skaTLXIm5QFoheOEznQXM97KGflcAWHfkrt1g,612
|
|
234
234
|
rio_tiler/mosaic/methods/base.py,sha256=9YZJWVRwH5Fk9KO9q5CW52Q8Mf60tAJ21oM4ixEDXBo,1424
|
|
235
235
|
rio_tiler/mosaic/methods/defaults.py,sha256=z34lna2wGXnAPwculjk_6hDrloqS8wzer68FFoIo7pg,6744
|
|
236
|
-
rio_tiler-
|
|
237
|
-
rio_tiler-
|
|
238
|
-
rio_tiler-
|
|
239
|
-
rio_tiler-
|
|
240
|
-
rio_tiler-
|
|
236
|
+
rio_tiler-7.0.0.dist-info/METADATA,sha256=cnnDZJzFmoSypX6FdXK8wzg95s7ZbqDDoR9bCLCMd3s,12209
|
|
237
|
+
rio_tiler-7.0.0.dist-info/WHEEL,sha256=1yFddiXMmvYK7QYTqtRNtX66WJ0Mz8PYEiEUoOUUxRY,87
|
|
238
|
+
rio_tiler-7.0.0.dist-info/licenses/AUTHORS.txt,sha256=FCVd4Tjg-8syl0ZugCunpXER8X2-XonW2ZfllyTnRvE,158
|
|
239
|
+
rio_tiler-7.0.0.dist-info/licenses/LICENSE,sha256=vq8Tt4KoYQT9JxAjQ4yXMmmhFYRTsBRgrOj-ao-bC5o,1517
|
|
240
|
+
rio_tiler-7.0.0.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|