Unreleased¶
- drop python 3.8 support
- add python 3.13 support
7.2.2 (2024-11-18)¶
- Catch and expand error message when GDAL cannot encode data using specified image driver (cogeotiff/rio-tiler!767)
7.2.1 (2024-11-14)¶
- add official support for floating point values in ColorMap
- cast data to
uint8
datatype when applying linear colormap
7.2.0 (2024-11-05)¶
-
Ensure compatibility between XarrayReader and other Readers by adding
**kwargs
on class methods (cogeotiff/rio-tiler!762) -
add
STACReader.get_asset_list()
method to enable easier customization of the asset listing/validation (cogeotiff/rio-tiler!762)
7.1.0 (2024-10-29)¶
-
Add
preview()
andstatistics()
methods to XarrayReader (cogeotiff/rio-tiler!755) -
Add output size (
max_size
|width
,height
) options for XarrayReader'spreview()
,part()
andfeature()
methods (cogeotiff/rio-tiler!755) -
Add half X/Y resolution on bounds before checking the geographic bounds in XarrayReader (cogeotiff/rio-tiler!755)
-
Check if the Y bounds are inverted and flip the image on the Y axis in XarrayReader (cogeotiff/rio-tiler!756)
-
Add support for 2D arrays in XarrayReader (cogeotiff/rio-tiler!755)
-
Cast Xarray
attrs
values in XarrayReader'sinfo()
response to avoid JSON encoding issues (cogeotiff/rio-tiler!755) -
Refactor XarrayReader's
feature()
method to use thepart
method (cogeotiff/rio-tiler!755) -
Allow
op
parameter forcreate_cutline
and_convert_to_raster_space
functions to better control rasterio'srowcol
behaviour (author @Martenz, cogeotiff/rio-tiler!759)
7.0.1 (2024-10-22)¶
- Add
CRS_to_urn
method and update internals forCRS_to_uri
(author @AndrewAnnex, cogeotiff/rio-tiler!752)
7.0.0 (2024-10-21)¶
-
Enable dynamic definition of Asset reader in
MultiBaseReader
(cogeotiff/rio-tiler!711, cogeotiff/rio-tiler!728) -
Adding
default_assets
for MultiBaseReader and STACReader (author @mccarthyryanc, cogeotiff/rio-tiler!722) -
Adding
default_bands
for MultiBandReader (cogeotiff/rio-tiler!722) -
Adding support for the STAC
Projection
extension to derive thebounds
,crs
,minzoom
andmaxzoom
properties breaking change -
Refactor internal function and base classes for the
minzoom/maxzoom
calculation breaking change -
Adding
transform
,height
andwidth
attributes (outside init) forSpatialMixin
class -
Moved
_dst_geom_in_tms_crs
from Reader toSpatialMixin
class breaking change -
Removed use of rasterio's
is_tiled
method -
Enable Alternate asset's HREF for STAC by using
RIO_TILER_STAC_ALTERNATE_KEY
environment variable -
Adding support for GDAL VRT Connection string for STAC Assets
-
Improve type hint definition
-
make
ImageData.rescale
andImageData.apply_color_formula
to returnself
-
add support for
.json
colormap files -
do no
lowercase
colormap name inColorMaps.get
method breaking changefrom rio_tiler.colormap import cmap # before assert cmap.get("Viridis") # now assert cmap.get("Viridis") >> InvalidColorMapName: Invalid colormap name: Viridis
-
removed
geographic_crs
attribute inSpatialMixin
class breaking change -
removed
geographic_bounds
property inSpatialMixin
class breaking change -
add
get_geographic_bounds(crs: CRS)
method inSpatialMixin
classfrom rasterio.crs import CRS from rio_tiler.io import Reader # before with Reader("cog.tif", geographic_crs=CRS.from_epsg(4326)) as src: bounds = src.geographic_bounds # now with Reader("cog.tif") as src: bounds = src.get_geographic_bounds(CRS.from_epsg(4326))
-
replace
geographic bounds
with dataset bounds inReader.info()
method's response breaking changefrom rio_tiler.io import Reader # before with Reader("cog.tif") as src: assert src.geographic_bounds == src.info().bounds # now with Reader("cog.tif") as src: assert src.bounds == src.info().bounds
-
add
crs: str
property inInfo
model -
remove
minzoom
andmaxzoom
properties inInfo
model breaking change -
update
morecantile
dependency to allow6.x
version -
remove deprecated method and attributes
-
round
xarray dataset's bounds to avoid precision errors when checking for valid geographic bounding box -
fix
bounds
type information
6.8.0 (2024-10-23)¶
-
Enable Alternate asset's HREF for STAC by using
RIO_TILER_STAC_ALTERNATE_KEY
environment variable [Backported from7.0
] -
Adding support for GDAL VRT Connection string for STAC Assets [Backported from
7.0
]
6.7.0 (2024-09-05)¶
- raise
MissingCRS
orInvalidGeographicBounds
errors when Xarray datasets have wrong geographic metadata - better error message for
TileOutsideBounds
errors (author @abarciauskas-bgse, cogeotiff/rio-tiler!712) - handle of inverted latitude in
reader.point
(author @georgespill, cogeotiff/rio-tiler!716)
6.6.1 (2024-05-17)¶
- fix/support
scale/offset
indexes selection (author @jddeal, cogeotiff/rio-tiler!709)
6.6.0 (2024-05-16)¶
- fix type hint for
ImageData.band_names
(author @n8sty, cogeotiff/rio-tiler!704) - enable
per-band
scale/offset rescaling (co-author @jddeal, cogeotiff/rio-tiler!707) -
replace
scale
andoffset
byscales
andoffsets
inrio_tiler.models.Info
model# before with Reader("tests/fixtures/cog_scale.tif") as src: info = src.info() print(info.scale, info.offset) >> 0.0001 1000.0 # now with Reader("tests/fixtures/cog_scale.tif") as src: info = src.info() print(info.scales, info.offsets) >> [0.0001, 0.001] [1000.0, 2000.0]
6.5.0 (2024-05-03)¶
- Revert #648 and refactor
get_vrt_transform
method to better handle over-zooming a dataset
6.4.7 (2024-04-17)¶
- Better handle dataset with inverted origin
- make sure datatype is forwarded to the WarpedVRT
6.4.6 (2024-04-09)¶
- Ignore STAC statistics object when they contain invalid type (author @emmanuelmathot, cogeotiff/rio-tiler!695)
6.4.5 (2024-04-05)¶
- add python 3.12 official support
- change code formatter to
ruff-format
6.4.4 (2024-04-02)¶
- better handler
NaN
nodata values for masking (author @cerolinx, cogeotiff/rio-tiler!691)
6.4.3 (2024-03-22)¶
- make sure
scale
andoffset
are set inInfo
even whenoffset=0.
orscale=1.0
(cogeotiff/rio-tiler!687)
6.4.2 (2024-03-22)¶
- better account for coverage in statistics (cogeotiff/rio-tiler!684)
6.4.1 (2024-02-19)¶
- add
CountMethod
mosaic method (author @mccarthyryanc, cogeotiff/rio-tiler!676)
6.4.0 (2024-01-24)¶
-
deprecate
resampling_method
inrio_tiler.io.xarray.XarrayReader
method and addreproject_method
(to match therio_tiler.io.Reader
options)# before with XarrayReader(data) as dst: img = dst.tile(0, 0, 1, resampling_method="cubic") # now with XarrayReader(data) as dst: img_cubic = dst.tile(0, 0, 1, reproject_method="cubic")
6.3.1 (2024-01-22)¶
- When overriding nodata, do not mix mask and only use the provided nodata value
6.3.0 (2024-01-16)¶
-
do not use
warpedVRT
when overwriting the dataset nodata value -
add
align_bounds_with_dataset
option inrio_tiler.reader.part
to align input bounds with the dataset resolution
6.2.10 (2024-01-08)¶
- remove default Endpoint URL in AWS S3 Client for STAC Reader
6.2.9 (2023-12-21)¶
- fix AWS endpoint credential for STAC
fetch
function, using same defaults as GDAL vsis3 configuration
6.2.8 (2023-12-11)¶
- apply
discrete
colormap when the provided colormap does not have 256 values
6.2.7 (2023-11-29)¶
- Adjusting dataset latitude for WarpedVRT parameters calculation when EPSG:4326 dataset latitudes overflows EPSG:3857 min/max latitude (cogeotiff/rio-tiler!660)
6.2.6 (2023-11-10)¶
- validate
shape
inImageData.get_coverage_array
to avoid rasterio error when re-projecting the geometry
6.2.5 (2023-11-06)¶
- avoid
indexes
collision inMultiBaseReader
6.2.4 (2023-10-19)¶
-
fix issue with
WarpedVRT
when doing re-projection (ref: cogeotiff/rio-tiler!648) -
move benchmark outside pytest suite
-
add GET/HEAD request tests using tilebench (outside pytest suite) (ref: cogeotiff/rio-tiler!649)
6.2.3.post1 (2023-11-16)¶
- validate
shape
inImageData.get_coverage_array
to avoid rasterio error when re-projecting the geometry [Backported from 6.2.6] - avoid
indexes
collision inMultiBaseReader
[Backported from 6.2.5]
This release was made while we waited on a fix for cogeotiff/rio-tiler#654
6.2.3 (2023-10-11)¶
- in
STACReader
usehref
ifget_absolute_href()
returnsNone
6.2.2 (2023-10-05)¶
- add list of assets in
InvalidAssetName
message inSTACReader
6.2.1 (2023-09-28)¶
- allow GeoJSON
Feature
inImageData.get_coverage_array
method
6.2.0 (2023-09-27)¶
-
allow area-weighted statistics by adding
coverage
option inrio_tiler.utils.get_array_statistics
# Data Array # 1, 2 # 3, 4 data = numpy.ma.array((1, 2, 3, 4)).reshape((1, 2, 2)) # Coverage Array # 0.5, 0 # 1, 0.25 coverage = numpy.array((0.5, 0, 1, 0.25)).reshape((2, 2)) stats = utils.get_array_statistics(data, coverage=coverage) assert len(stats) == 1 assert stats[0]["min"] == 1 assert stats[0]["max"] == 4 assert stats[0]["mean"] == 1.125 # (1 * 0.5 + 2 * 0.0 + 3 * 1.0 + 4 * 0.25) / 4 assert stats[0]["count"] == 1.75 # (0.5 + 0 + 1 + 0.25) sum of the coverage array stats = utils.get_array_statistics(data) assert len(stats) == 1 assert stats[0]["min"] == 1 assert stats[0]["max"] == 4 assert stats[0]["mean"] == 2.5 assert stats[0]["count"] == 4
-
add
rio_tiler.utils.get_coverage_array
method to create acoverage %
array -
add
cmocean
colormaps -
allow uppercase in
cmap.get
methodfrom rio_tiler.colormap import cmap # Before cm = cmap.get("greys") # Now cm = cmap.get("Greys")
6.1.0 (2023-09-15)¶
- add
width
,height
andcount
properties inMosaicMethodBase
- make sure we mosaic ImageData/PointData with same number of bands
- resize
ImageData.array
to the first asset's width/height inmosaic_reader
6.0.3 (2023-09-13)¶
- return a 1x1 image when bbox is smaller than a single pixel (author @JackDunnNZ, cogeotiff/rio-tiler!637)
6.0.2 (2023-08-21)¶
- Update
data_as_image
to return masked values (author @JackDunnNZ, cogeotiff/rio-tiler!635)
6.0.1 (2023-07-25)¶
- fix
key
access forInfo
andBandStatistics
models forextra
attributes - update deprecation notice to
7.0
6.0.0 (2023-07-25)¶
- update
morecantile
requirement to>=5.0,<6.0
- delete
rio_tiler.models.NodataTypes
(replaced with Literal within theInfo
model)
5.0.3 (2023-07-18)¶
- Filter useless
NotGeoreferencedWarning
warnings inReader.feature()
andImageData.from_bytes()
methods - Ensure that dataset is still open when reading tags (author @JackDunnNZ, cogeotiff/rio-tiler!628)
5.0.2 (2023-07-11)¶
- fix
ImageData.apply_color_formula()
method
5.0.1 (2023-06-22)¶
- raise
InvalidExpression
when passing invalidasset
orband
in an expression
5.0.0 (2023-06-01)¶
-
Fix potential issue when getting statistics for non-valid data
-
add
rio-tiler.mosaic.methods.PixelSelectionMethod
enums with all defaults methods -
Add
rio-tiler.utils._validate_shape_input
function to check geojson feature inputs -
Change cutline handling in the
rio-tiler.io.rasterio.Reader.feature
method. Feature cutlines are now rasterized into numpy arrays and applied as masks instead of using the cutline vrt_option. These masks are tracked in therio-tiler.models.ImageData.cutline_mask
attribute, which are used inrio-tiler.mosaic.methods.base.MosaicMethodBase
to stop mosaic building as soon as all pixels in a feature are populated -
Fix missing
nodata/alpha/mask
forwarding for dataset with internal GCPS -
in
rio_tiler.io.XarrayReader
, addauto_expand
options to avoid returning 1D array (incompatible with rio-tiler) (author @abarciauskas-bgse, cogeotiff/rio-tiler!608) -
handle internal and user provided
nodata
values inrio_tiler.io.XarrayReader
to create mask -
add
AWS_ACCESS_KEY_ID
,AWS_SECRET_ACCESS_KEY
,AWS_SESSION_TOKEN
,AWS_PROFILE
andAWS_REGION
environnement overrides forrio_tiler.io.stac.aws_get_object
function
breaking changes
-
remove support for non-binary mask values (e.g non-binary alpha bands, ref: rasterio/rasterio#1721)
-
switch from PER-DATASET to PER-BAND mask (cogeotiff/rio-tiler!580)
# before with COGReader("cog.tif") as src: img = src.preview(width=128, height=128, max_size=None) assert img.data.shape == (3, 128, 128) assert img.mask.shape == (128, 128) # now with COGReader("cog.tif") as src: img = src.preview(width=128, height=128, max_size=None) assert isinstance(img.array, numpy.ma.MaskedArray) assert img.array.data.shape == (3, 128, 128) assert img.array.mask.shape == (3, 128, 128))
-
use numpy masked array in ImageData and PointData to store the data
# before arr = numpy.zeros((1, 256, 256), dtype="uint16") img = ImageData(arr) assert isintance(img.data, numpy.ndarray) # Attribute # now arr = numpy.zeros((1, 256, 256), dtype="uint16") img = ImageData(arr) assert isintance(img.array, numpy.ma.MaskedArray) # Attribute assert isintance(img.data, numpy.ndarray) # property assert isintance(img.mask, numpy.ndarray) # property
-
remove
ImageData.from_array
method (because we now support MaskedArray directly) -
rio_tiler.expression.apply_expression
input/output type change tonumpy.ma.MaskedArray
-
rio-tiler
mosaic
methods returnnumpy.ma.MaskedArray
-
reader's
post_process
should be a Callable withnumpy.ma.MaskedArray
input/output -
add
reproject_method
option inrio_tiler.reader
's method to select theresampling
method used during reprojection# before with Reader("cog.tif") as src: im = src.preview( dst_crs="epsg:4326", resampling_method="bilinear", # use `bilinear` for both resizing and reprojection ) # now with Reader("cog.tif") as src: im = src.preview( dst_crs="epsg:4326", resampling_method="cubic", # use `cubic` for resizing reproject_method="bilinear", # use `bilinear` for reprojection )
-
refactored the
MosaicMethodBase
to use python's dataclass -
changed variable names in
MosaicMethodBase
(tile
->mosaic
) -
rio_tiler.mosaic.methods.defaults.LastBandHigh
renamedLastBandHighMethod
-
rio_tiler.mosaic.methods.defaults.LastBandLow
renamedLastBandLowMethod
-
move
aws_get_object
fromrio_tiler.utils
torio_tiler.io.stac
-
make
boto3
an optional dependency (python -m pip install rio-tiler["s3"]
) -
update
morecantile
dependency to>=4.0
-
add
metadata
in ImageData/PointData from rasterio datasettags
-
forward statistics from the raster STAC extension to the ImageData object
with STACReader(STAC_RASTER_PATH) as stac: info = stac._get_asset_info("green") assert info["dataset_statistics"] == [(6883, 62785)] assert info["metadata"] assert "raster:bands" in info["metadata"] img = stac.preview(assets=("green", "red")) assert img.dataset_statistics == [(6883, 62785), (6101, 65035)] assert img.metadata["green"] # extra_fields from the STAC assets (e.g `"raster:bands"`) assert img.metadata["red"]
-
add Deprecation warning for
ImageData.from_array
,ImageData.as_masked
,PointData.as_masked
methods
4.1.13 (2023-06-22)¶
- raise InvalidExpression when passing invalid asset or band in an expression (Backported from 5.0.1)
4.1.12 (2023-06-16)¶
- fix issue with
rio_tiler.utils.get_array_statistics
when passing data with novalid
value
4.1.11 (2023-05-18)¶
- in
rio_tiler.io.XarrayReader
, addauto_expand
options to avoid returning 1D array (incompatible with rio-tiler) (author @abarciauskas-bgse, cogeotiff/rio-tiler!608)
4.1.10 (2023-03-24)¶
- enable
boundless
geometry for cutline (author @yellowcap, cogeotiff/rio-tiler!586)
4.1.9 (2023-02-28)¶
- Automatically expand 2D numpy array to 3D when creating ImageData
4.1.8 (2023-02-15)¶
- Fix dtype issue when working with Mosaics Methods. Mask should always been of type
Uint8
. - Fix
ImageData.from_array
method when working with Masked array
4.1.7 (2023-02-07)¶
- add
from_array
andfrom_bytes
ImageData creation methods - add
statistics
method to ImageData
4.1.6 (2023-01-18)¶
- add
apply_colormap
method to the ImageData class - fix potential datatype overflow when calculating the intersection of mask and alpha band when using Colormap
4.1.5 (2022-12-20)¶
- Fix inverted col/row check when doing window read of a non WarpedVRT dataset
4.1.4 (2022-12-16)¶
- add
rio_tiler.mosaic.mosaic_point_reader
function to create Point value from multiple observationdef reader(asset: str, *args, **kwargs) -> PointData: with Reader(asset) as src: return src.point(*args, **kwargs) pt: PointData = mosaic_point_reader(["cog.tif", "cog2.tif"], reader, 0, 0)
4.1.3 (2022-12-15)¶
- fix invalid definition of
PointData.mask
when mask is not provided. Makes sure it's a one element array.
4.1.2 (2022-12-15)¶
- raise
InvalidPointDataError
error when trying to create PointData from an empty list inPointData.create_from_list
4.1.1 (2022-12-12)¶
- fix invalid coordinates slicing for
XArrayReader.point()
method (author @benjaminleighton, cogeotiff/rio-tiler!559)
4.1.0 (2022-11-24)¶
- add
asset_as_band
option inMultiBaseReader
tile, part, preview, feature and point methods
with STACReader(STAC_PATH) as stac:
img = stac.tile(71, 102, 8, assets="green")
assert img.band_names == ["green_b1"]
with STACReader(STAC_PATH) as stac:
img = stac.tile(71, 102, 8, assets="green", asset_as_band=True)
assert img.band_names == ["green"]
# For expression, without `asset_as_band` tag, users have to pass `_b{n}` suffix to indicate the band index
with STACReader(STAC_PATH) as stac:
img = stac.tile(71, 102, 8, expression="green_b1/red_b1")
assert img.band_names == ["green_b1/red_b1"]
with STACReader(STAC_PATH) as stac:
img = stac.tile(71, 102, 8, expression="green/red", asset_as_band=True)
assert img.band_names == ["green/red"]
4.0.0 (2022-11-21)¶
- remove deprecated code
asset_expression
in MultiBaseReaderGCPCOGReader
4.0.0a2 (2022-11-15)¶
- use of
file:header_size
extension inSTACReader
to setGDAL_INGESTED_BYTES_AT_OPEN
environment variable
breaking changes
- renamed
MultiBaseReader._get_asset_url
toMultiBaseReader._get_asset_info
and change the output to return a dictionary in form of{"url": ..., "env": ...}
4.0.0a1 (2022-11-10)¶
- assign ColorInterp.alpha to rendered image when we add the mask band
- add
.clip(bbox: BBox)
and.resize(height: int, width: int)
methods to ImageData object - add python 3.11 support
- replace
rio-color
bycolor-operations
module
4.0.0a0 (2022-10-20)¶
- add python 3.10 support
- add
apply_expression
method inrio_tiler.models.ImageData
class - update
rio-tiler.reader.read/part
to avoid using WarpedVRT when no reprojection or nodata override is needed -
add
rio_tiler.io.rasterio.ImageReader
to work either with Non-geo or Geo images in a Non-geo manner (a.k.a: in the pixel coordinates system)with ImageReader("image.jpg") as src: im = src.part((0, 100, 100, 0)) with ImageReader("image.jpg") as src: im = src.tile(0, 0, src.maxzoom) print(im.bounds) >>> BoundingBox(left=0.0, bottom=256.0, right=256.0, top=0.0)
-
add
rio_tiler.io.xarray.XarrayReader
to work withxarray.DataArray
note:import xarray from rio_tiler.io import XarrayReader with xarray.open_dataset( "https://ncsa.osn.xsede.org/Pangeo/pangeo-forge/noaa-coastwatch-geopolar-sst-feedstock/noaa-coastwatch-geopolar-sst.zarr", engine="zarr", decode_coords="all" ) as src: ds = src["analysed_sst"][:1] ds.rio.write_crs("epsg:4326", inplace=True) with XarrayReader(ds) as dst: img = dst.tile(1, 1, 2)
xarray
andrioxarray
optional dependencies are needed for the reader
breaking changes
- remove python 3.7 support
- update rasterio requirement to
>=1.3
to allow python 3.10 support - rename
rio_tiler.io.cogeo
torio_tiler.io.rasterio
-
rename
COGReader
toReader
. We addedrio_tiler.io.COGReader
alias torio_tiler.io.Reader
backwards compatibility# before from rio_tiler.io import COGReader from rio_tiler.io.cogeo import COGReader # now from rio_tiler.io import Reader from rio_tiler.io.rasterio import Reader
-
rio_tiler.readers.read()
,rio_tiler.readers.part()
,rio_tiler.readers.preview()
now return a ImageData object - remove
minzoom
andmaxzoom
attribute inrio_tiler.io.SpatialMixin
base class - remove
minzoom
andmaxzoom
attribute inrio_tiler.io.Reader
(now defined as properties) -
use
b
prefix for band names inrio_tiler.models.ImageData
class (and in rio-tiler's readers)# before with COGReader("cog.tif") as cog: img = cog.read() print(cog.band_names) >>> ["1", "2", "3"] print(cog.info().band_metadata) >>> [("1", {}), ("2", {}), ("3", {})] print(cog.info().band_descriptions) >>> [("1", ""), ("2", ""), ("3", "")] print(list(cog.statistics())) >>> ["1", "2", "3"] # now with Reader("cog.tif") as cog: img = cog.read() print(img.band_names) >>> ["b1", "b2", "b3"] print(cog.info().band_metadata) >>> [("b1", {}), ("b2", {}), ("b3", {})] print(cog.info().band_descriptions) >>> [("b1", ""), ("b2", ""), ("b3", "")] print(list(cog.statistics())) >>> ["b1", "b2", "b3"] with STACReader("stac.json") as stac: print(stac.tile(701, 102, 8, assets=("green", "red")).band_names) >>> ["green_b1", "red_b1"]
-
depreciate
asset_expression
in MultiBaseReader. Use of expression is now possible -
expression
for MultiBaseReader must be in form of{asset}_b{index}
# before with STACReader("stac.json") as stac: stac.tile(701, 102, 8, expression="green/red") # now with STACReader("stac.json") as stac: stac.tile(701, 102, 8, expression="green_b1/red_b1")
-
rio_tiler.reader.point()
(and all Reader's point methods) now return a rio_tiler.models.PointData object# before with rasterio.open("cog.tif") as src:: v = rio_tiler.reader.point(10.20, -42.0) print(v) >>> [0, 0, 0] with COGReader("cog.tif") as cog: print(cog.point(10.20, -42.0)) >>> [0, 0, 0] # now with rasterio.open("cog.tif") as src:: v = rio_tiler.reader.point(src, (10.20, -42)) print(v) >>> PointData( data=array([3744], dtype=uint16), mask=array([255], dtype=uint8), band_names=['b1'], coordinates=(10.20, -42), crs=CRS.from_epsg(4326), assets=['cog.tif'], metadata={} ) with Reader("cog.tif") as cog: print(cog.point(10.20, -42.0)) >>> PointData( data=array([3744], dtype=uint16), mask=array([255], dtype=uint8), band_names=['b1'], coordinates=(10.20, -42), crs=CRS.from_epsg(4326), assets=['cog.tif'], metadata={} )
-
deleted
rio_tiler.reader.preview
function and updatedrio_tiler.reader.read
to allow width/height/max_size options - reordered keyword options in all
rio_tiler.reader
function for consistency - removed
AlphaBandWarning
warning when automatically excluding alpha band from data - remove
nodata
,unscale
,resampling_method
,vrt_options
andpost_process
options toReader
init method and replaced withoptions
# before with COGReader("cog.tif", nodata=1, resampling_method="bilinear") as cog: data = cog.preview() # now with Reader(COGEO, options={"nodata": 1, "resampling_method": "bilinear"}) as cog: data = cog.preview()
3.1.6 (2022-07-22)¶
- Hide
NotGeoreferencedWarning
warnings inutils.render
andutils.resize_array
- update
MultiBaseReader
andMultiBandReader
points
method to prepare for numpy changes.
3.1.5 (2022-07-06)¶
- Deprecate
rio_tiler.io.GCPCOGReader
and allow GPCS dataset to be opened byrio_tiler.io.COGReader
# before
with GCPCOGReader("my.tif") as cog:
...
# now, COGReader will find the gcps and create an internal WarpedVRT using the gpcs and crs
with COGReader("my.tif") as cog:
...
- add
ImageData.rescale
to rescale the array in place - add
ImageData.apply_color_formula
to apply color formula in place
3.1.4 (2022-04-14)¶
- Fix cutline creation for MultiPolygon (author @Fernigithub, cogeotiff/rio-tiler!493)
3.1.3 (2022-04-08)¶
- Switch to
pyproject.toml
andflit
for packaging (cogeotiff/rio-tiler!490) - Catch discrete colormap with negative values (cogeotiff/rio-tiler!492)
3.1.2 (2022-03-25)¶
- avoid calculating statistics for non-finite values (cogeotiff/rio-tiler!489)
3.1.1 (2022-03-17)¶
- forward
band names
to ImageData output inmosaic_reader
(cogeotiff/rio-tiler!486)
3.1.0 (2022-02-21)¶
- add support for setting the S3 endpoint url scheme via the
AWS_HTTPS
environment variables inaws_get_object
function using boto3 (cogeotiff/rio-tiler!476) - Add semicolon
;
support for multi-blocks expression (cogeotiff/rio-tiler!479) - add
rio_tiler.expression.get_expression_blocks
method to split expression (cogeotiff/rio-tiler!479) - add
merged_statistics
method forMultiBaseReader
to get statistics using between assets expression (cogeotiff/rio-tiler!478)
future deprecation
- using a comma
,
in an expression to define multiple blocks will be replaced by semicolon;
# before
expression = "b1+b2,b2"
# new
expression = "b1+b2;b2"
breaking changes
- update morecantile requirement to
>=3.1,<4.0
. WebMercatorQuad TMS is now aligned with GDAL and Mercantile TMS definition.
3.0.3 (2022-01-18)¶
- make sure we raise an HTTP exception when using an invalid STAC url (cogeotiff/rio-tiler!475)
3.0.2 (2022-01-03)¶
- switch from
functools.lru_cache
tocachetools.LRUCache
to allow unashable options inrio_tiler.io.stac.fetch
function (cogeotiff/rio-tiler!471)
3.0.1 (2021-12-03)¶
- avoid useless call to
transform_bounds
if input/output CRS are equals (cogeotiff/rio-tiler!466) - make sure
geographic_bounds
don't return inf or nan values (cogeotiff/rio-tiler!467)
3.0.0 (2021-11-29)¶
- no change since
3.0.0a6
3.0.0a6 (2021-11-22)¶
- add
rio_tiler.utils.resize_array
to resize array to a given width/height (cogeotiff/rio-tiler!463) - use
resize_array
inImageData.create_from_list
to avoid trying merging array of different sizes (cogeotiff/rio-tiler!463)
breaking changes
- update
MultiBaseReader
andMultiBandReader
to be their own abstract classes instead of being subclass ofBaseReader
. - put
reader
attribute outside of the__init__
method forMultiBaseReader
andMultiBandReader
.
3.0.0a5 (2021-11-18)¶
- allow the definition of
geographic_crs
used in thegeographic_bounds
property (cogeotiff/rio-tiler!458) - use
contextlib.ExitStack
to better manager opening/closing rasterio dataset (cogeotiff/rio-tiler!459) - moves
BBox, ColorTuple, Indexes, NoData, NumType
type definitions inrio_tiler.types
(cogeotiff/rio-tiler!460) - better types definition for ColorMap objects (cogeotiff/rio-tiler!460)
- fix some types issues (cogeotiff/rio-tiler!460)
3.0.0a4 (2021-11-10)¶
- refactor
SpatialMixin.tile_exists
to compare the bounds in the dataset's coordinate system to avoid coordinates overflow (a TMS CRS bounds can be smaller than the dataset CRS bounds) (cogeotiff/rio-tiler!455)
3.0.0a3 (2021-11-03)¶
- Reader's
info
andstatistics
methods to default to availablebands
orassets
if not provided (cogeotiff/rio-tiler!451)
3.0.0a2 (2021-10-21)¶
- Allow
rio_tiler.utils.get_array_statistics
to return0
for unfound category, instead of raising an error (cogeotiff/rio-tiler!443)
3.0.0a1 (2021-10-20)¶
breaking changes
-
add
input
in BaseReader class definition to avoid type mismatch (cogeotiff/rio-tiler!450)Note:
input
replacesfilepath
attribute in STACReader and COGReader.
removed
-
rio_tiler.models.ImageStatistics
model
3.0.0a0 (2021-10-19)¶
- add
crs
property inrio_tiler.io.base.SpatialMixin
(cogeotiff/rio-tiler!429) - add
geographic_bounds
inrio_tiler.io.base.SpatialMixin
to return bounds in WGS84 (cogeotiff/rio-tiler!429)
from rio_tiler.io import COGReader
with COGReader("https://rio-tiler-dev.s3.amazonaws.com/data/fixtures/cog.tif") as cog:
print(cog.bounds)
>> (373185.0, 8019284.949381611, 639014.9492102272, 8286015.0)
print(cog.crs)
>> "EPSG:32621"
print(cog.geographic_bounds)
>> (-61.28762442711404, 72.22979795551834, -52.301598718454485, 74.66298001264106)
- Allow errors to be ignored when trying to find
zooms
for dataset inrio_tiler.io.COGReader
. If we're not able to find the zooms in selected TMS, COGReader will defaults to the min/max zooms of the TMS (cogeotiff/rio-tiler!429)
from pyproj import CRS
from morecantile import TileMatrixSet
from rio_tiler.io import COGReader
# For a non-earth dataset there is no available transformation from its own CRS and the default WebMercator TMS CRS.
with COGReader("https://rio-tiler-dev.s3.amazonaws.com/data/fixtures/cog_nonearth.tif") as cog:
>> UserWarning: Cannot determine min/max zoom based on dataset information, will default to TMS min/max zoom.
print(cog.minzoom)
>> 0
print(cog.maxzoom)
>> 24
# if we use a `compatible TMS` then we don't get warnings
europa_crs = CRS.from_authority("ESRI", 104915)
europa_tms = TileMatrixSet.custom(
crs=europa_crs,
extent=europa_crs.area_of_use.bounds,
matrix_scale=[2, 1],
)
with COGReader(
"https://rio-tiler-dev.s3.amazonaws.com/data/fixtures/cog_nonearth.tif",
tms=europa_tms,
) as cog:
print(cog.minzoom)
>> 4
print(cog.maxzoom)
>> 6
- compare dataset bounds and tile bounds in TMS crs in
rio_tiler.io.base.SpatialMixin.tile_exists
method to allow dataset and TMS not compatible with WGS84 crs (cogeotiff/rio-tiler!429) - use
httpx
package instead of requests (author @rodrigoalmeida94, cogeotiff/rio-tiler!431) - allow half pixel
tile_buffer
around the tile (e.g 0.5 -> 257x257, 1.5 -> 259x259) (author @bstadlbauer, cogeotiff/rio-tiler!405) - add support for intervals colormap (cogeotiff/rio-tiler!439))
from rio_tiler.colormap import apply_cmap, apply_intervals_cmap
data = numpy.random.randint(0, 255, size=(1, 256, 256))
cmap = [
# ([min, max], [r, g, b, a])
([0, 1], [0, 0, 0, 0]),
([1, 10], [255, 255, 255, 255]),
([10, 100], [255, 0, 0, 255]),
([100, 256], [255, 255, 0, 255]),
]
data, mask = apply_intervals_cmap(data, cmap)
# or
data, mask = apply_cmap(data, cmap)
breaking changes
- update morecantile requirement to version >=3.0 (cogeotiff/rio-tiler!418)
- remove python 3.6 support (cogeotiff/rio-tiler!418)
- remove
max_size
defaults forCOGReader.part
andCOGReader.feature
, which will now default to full resolution reading.
# before
with COGReader("my.tif") as cog:
img = cog.part(*cog.dataset.bounds, dst_crs=cog.dataset.crs, bounds_crs=cog.dataset.crs)
# by default image should be max 1024x1024
assert max(img.width, 1024) # by default image should be max 1024x1024
assert max(img.height, 1024)
# now (there is no more max_size default)
with COGReader("my.tif") as cog:
img = cog.part(*cog.dataset.bounds, dst_crs=cog.dataset.crs, bounds_crs=cog.dataset.crs)
assert img.width == cog.dataset.width
assert img.height == cog.dataset.height
-
add
.statistics
method in base classes (cogeotiff/rio-tiler!427) -
remove
rio_tiler.io.base.SpatialMixin.spatial_info
andrio_tiler.io.base.SpatialMixin.center
properties (cogeotiff/rio-tiler!429) -
Reader's
.bounds
property should now be in dataset's CRS, not inWGS84
(cogeotiff/rio-tiler!429)
# before
with COGReader("my.tif") as cog:
print(cog.bounds)
>>> (-61.287001876638215, 15.537756794450583, -61.27877967704677, 15.542486503997608)
# now
with COGReader("my.tif") as cog:
print(cog.bounds)
>>> (683715.3266400001, 1718548.5702, 684593.2680000002, 1719064.90736)
print(cog.crs)
>>> EPSG:32620
print(cog.geographic_bounds)
>>> (-61.287001876638215, 15.537756794450583, -61.27877967704677, 15.542486503997608)
- Use
RIO_TILER_MAX_THREADS
environment variable instead ofMAX_THREADS
(author @rodrigoalmeida94, cogeotiff/rio-tiler!432) - remove
band_expression
inrio_tiler.io.base.MultiBandReader
(cogeotiff/rio-tiler!433) - change
asset_expression
input type fromstr
toDict[str, str]
inrio_tiler.io.base.MultiBaseReader
(cogeotiff/rio-tiler!434)
# before
with STACReader("mystac.json") as stac:
img = stac.preview(
assets=("data1", "data2"),
asset_expression="b1*2", # expression was applied to each asset
)
# now
with STACReader("mystac.json") as stac:
img = stac.preview(
assets=("data1", "data2"),
asset_expression={"data1": "b1*2", "data2": "b2*100"}, # we can now pass per asset expression
)
- add
asset_indexes
inrio_tiler.io.base.MultiBaseReader
, which replacesindexes
. (cogeotiff/rio-tiler!434)
# before
with STACReader("mystac.json") as stac:
img = stac.preview(
assets=("data1", "data2"),
indexes=(1,), # indexes was applied to each asset
)
# now
with STACReader("mystac.json") as stac:
img = stac.preview(
assets=("data1", "data2"),
asset_indexes={"data1": 1, "data2": 2}, # we can now pass per asset indexes
)
removed
rio_tiler.io.BaseReader.metadata
andrio_tiler.io.BaseReader.stats
base class methods (cogeotiff/rio-tiler!425)rio_tiler.reader.stats
function (cogeotiff/rio-tiler!440)rio_tiler.reader.metadata
function (cogeotiff/rio-tiler!440)rio_tiler.utils._stats
function (cogeotiff/rio-tiler!440)
2.1.3 (2021-09-14)¶
- Make sure output data is of type
Uint8
when applying a colormap (cogeotiff/rio-tiler!423) - Do not auto-rescale data if there is a colormap (cogeotiff/rio-tiler!423)
2.1.2 (2021-08-10)¶
- update type information for mosaics functions (cogeotiff/rio-tiler!409)
2.1.1 (2021-07-29)¶
- add support for setting the S3 endpoint url via the
AWS_S3_ENDPOINT
environment variables inaws_get_object
function using boto3 (cogeotiff/rio-tiler!394) - make
ImageStatistics.valid_percent
a value between 0 and 100 (instead of 0 and 1) (author @param-thakker, cogeotiff/rio-tiler!400) -
add
fetch_options
toSTACReader
to allow custom configuration to the fetch client (cogeotiff/rio-tiler!404)with STACReader("s3://...", fetch_options={"request_pays": True}): pass
-
Fix alpha band values when storing
Uint16
data in PNG. (cogeotiff/rio-tiler!407)
2.1.0 (2021-05-17)¶
- add auto-rescaling in
ImageData.render
method to avoid error when datatype is not supported by the output driver (cogeotiff/rio-tiler!391)
# before - exit with error
with open("img.png", "wb") as f:
f.write(ImageData(numpy.zeros((3, 256, 256), dtype="float32")).render())
>>> (ERROR) CPLE_NotSupportedError: "PNG driver doesn't support data type Float32. Only eight bit (Byte) and sixteen bit (UInt16) bands supported".
# now - print a warning
with open("img.png", "wb") as f:
f.write(ImageData(numpy.zeros((3, 256, 256), dtype="float32")).render())
>>> (WARNING) InvalidDatatypeWarning: "Invalid type: `float32` for the `PNG` driver. Data will be rescaled using min/max type bounds".
breaking changes
- change type of
in_range
option inImageData.render
toSequence[Tuple[NumType, NumType]]
(cogeotiff/rio-tiler!391)
img = ImageData(numpy.zeros((3, 256, 256), dtype="uint16"))
# before - Tuple[NumType, NumType]
buff = img.render(in_range=(0, 1000, 0, 1000, 0, 1000))
# now - Sequence[Tuple[NumType, NumType]]
buff = img.render(in_range=((0, 1000), (0, 1000), (0, 1000)))
2.0.8 (2021-04-26)¶
- add warning when dataset doesn't have overviews (cogeotiff/rio-tiler!386)
- add
width
,height
,count
andoverviews
infos inCOGReader.info()
(cogeotiff/rio-tiler!387) - add
driver
inCOGReader.info()
output (cogeotiff/rio-tiler!388) - add
valid_percent
instats
output (cogeotiff/rio-tiler!389)
2.0.7 (2021-04-01)¶
- use importlib.resources
.files
method to resolve the package directory (cogeotiff/rio-tiler!379)
2.0.6 (2021-03-25)¶
- add
read()
method in COGReader (cogeotiff/rio-tiler!366) - add
tile_buffer
option toCOGReader.tile()
method to add pixels around a tile request (cogeotiff/rio-tiler#365) - use
importlib.resources.path
to find rio-tilercmap_data
directory (cogeotiff/rio-tiler!370) - re-use type definitions (cogeotiff/rio-tiler#337)
2.0.5 (2021-03-17)¶
- make sure
py.typed
is included in the package (cogeotiff/rio-tiler!363) - add
jpg
alias inimg_profiles
(cogeotiff/rio-tiler!364)
from rio_tiler.profiles import img_profiles
jpeg = img_profiles.get("jpeg")
jpg = img_profiles.get("jpg")
assert jpeg == jpg
2.0.4 (2021-03-09)¶
- Added pystac.MediaType.COG in supported types by STAC reader
- fix bad type definition in
rio_tiler.colormap.ColorMaps
data (cogeotiff/rio-tiler#359) - add
rio_tiler.colormap.parse_color
function to parse HEX color (cogeotiff/rio-tiler#361)
2.0.3 (2021-02-19)¶
- Reduce the number of
.read()
calls for dataset without nodata value (cogeotiff/rio-tiler!355) - replace deprecated
numpy.float
bynumpy.float64
2.0.2 (2021-02-17)¶
- fix bad mask datatype returned by mosaic methods (cogeotiff/rio-tiler!353)
- align WarpedVRT with internal blocks when needed. This is to reduce the number of GET requests need for VSI files (cogeotiff/rio-tiler!345)
2.0.1 (2021-02-04)¶
- fix arguments names conflicts between mosaic_reader/tasks and STACReader options (cogeotiff/rio-tiler!343)
- update rio-tiler pypi description.
2.0.0 (2021-01-27)¶
- add MultiPolygon support in
rio_tiler.utils.create_cutline
(cogeotiff/rio-tiler#323) - support discrete colormap by default in
apply_cmap
(cogeotiff/rio-tiler#321) - delete deprecated
rio_tiler.mercator
submodule - added default factory in
rio_tiler.colormap.ColorMaps
. - fix missing
metadata
forwarding inImageData.post_process
method. - refactor
rio_tiler.io.GCPCOGReader
for better inheritance from COGReader.
breaking change
- renamed input parameter
tile
todata
inrio_tiler.utils.render
. - renamed input parameter
arr
todata
inrio_tiler.utils.mapzen_elevation_rgb
- made
rio_tiler.io.stac.to_pystac_item
private (renamed to_to_pystac_item
) - renamed
rio_tiler.colormap.DEFAULTS_CMAPS
torio_tiler.colormap.DEFAULT_CMAPS_FILES
- made
rio_tiler.reader._read
public (renamed to rio_tiler.reader.read) (ref: cogeotiff/rio-tiler#332)
2.0.0rc4 (2020-12-18)¶
- add
NPZ
output format (cogeotiff/rio-tiler#308) - add pystac for STAC item reader (author @emmanuelmathot, cogeotiff/rio-tiler#212)
- delete deprecated function:
rio_tiler.reader.tile
,rio_tiler.utils.tile_exits
andrio_tiler.utils.geotiff_options
- deprecated
rio_tiler.mercator
submodule (cogeotiff/rio-tiler#315) - update morecantile version to 2.1, which has better
tms.zoom_for_res
definition.
2.0.0rc3 (2020-11-24)¶
- add
feature
method to reader classes (cogeotiff/rio-tiler#306)
2.0.0rc2 (2020-11-17)¶
- add
data
validation inrio_tiler.models.ImageData
model. Data MUST be a 3 dimensions array in form of (count, height, width). mask
is now optional forrio_tiler.models.ImageData
model, but will be initialized to a default full valid (255
) array.
import numpy
from rio_tiler.models import ImageData
data = numpy.random.rand(3, 10, 10)
img = ImageData(data)
assert img.mask.all()
- add
metadata
property torio_tiler.models.ImageData
model
img.metadata
>>> {}
breaking change
rio_tiler.mosaic.reader.mosaic_reader
now raisesEmptyMosaicError
instead of returning an emptyImageData
2.0.0rc1.post1 (2020-11-12)¶
- Remove
Uint8
data casting before applyingcolor_formula
in ImageData.render (cogeotiff/rio-tiler#302)
2.0.0rc1 (2020-11-09)¶
- added
ImageData
output class for allrio_tiler.io
classes returning numpy array-like types (tile, mask = method()
)
from rio_tiler.io import COGReader
from rio_tiler.models import ImageData
with COGReader("/Users/vincentsarago/S-2_20200422_COG.tif") as cog:
r = cog.preview()
assert isinstance(r, ImageData)
data, mask = r
assert data.shape == (3, 892, 1024)
tile, mask = ImageData
-
add pydantic models for IO outputs (Metadata, Info, ...)
-
change output form for
band_metadata
,band_descriptions
and do not add band description when not found.# Before with COGReader("/Users/vincentsarago/S-2_20200422_COG.tif") as cog: i = cog.info() print(i["band_metadata"]) print(i["band_descriptions"]) [(1, {}), (2, {}), (2, {})] [(1, 'band1'), (2, 'band2'), (2, 'band3')] # Now with COGReader("/Users/vincentsarago/S-2_20200422_COG.tif") as cog: i = cog.info() print(i.band_metadata) print(i.band_descriptions) [('1', {}), ('2', {}), ('3', {})] [('1', ''), ('2', ''), ('3', '')]
-
change output form for
stats
# Before with COGReader("/Users/vincentsarago/S-2_20200422_COG.tif") as cog: print(cog.stats()) { 1: {...}, 2: {...}, 3: {...} } # Now with COGReader("/Users/vincentsarago/S-2_20200422_COG.tif") as cog: print(cog.stats()) { "1": {...}, "2": {...}, "3": {...} }
-
updated
rio_tiler.utils._stats
function to replacepc
bypercentiles
with COGReader("/Users/vincentsarago/S-2_20200422_COG.tif") as cog:
print(cog.stats()["1"].json())
{"percentiles": [19.0, 168.0], "min": 0.0, "max": 255.0, ...}
- make
rio_tiler.colormap.ColorMap
object immutable. Registering a new colormap will new returns a now instance of ColorMap(cogeotiff/rio-tiler#289). - changed the
rio_tiler.colormap.ColorMap.register()
method to take a dictionary as input (instead of name + dict).
from rio_tiler.colormap import cmap # default cmap
# previous
cmap.register("acmap", {0: [0, 0, 0, 0], ...})
# Now
cmap = cmap.register({"acmap": {0: [0, 0, 0, 0], ...}})
-
added the possibility to automatically register colormaps stored as
.npy
file in a directory, ifCOLORMAP_DIRECTORY
environment variable is set with the name of the directory. -
Update to morecantile 2.0.0
2.0.0b19 (2020-10-26)¶
- surface
allowed_exceptions
options inrio_tiler.mosaic.reader.mosaic_reader
(cogeotiff/rio-tiler#293) - add SpatialInfoMixin base class to reduce code duplication (co-author with @geospatial-jeff, cogeotiff/rio-tiler!295)
- add
AsyncBaseReader
to support async readers (author @geospatial-jeff, cogeotiff/rio-tiler!265)
2.0.0b18 (2020-10-22)¶
- surface dataset.nodata in COGReader.nodata property (cogeotiff/rio-tiler!292)
- fix non-threaded tasks scheduler/filter (cogeotiff/rio-tiler!291)
2.0.0b17 (2020-10-13)¶
- switch to morecantile for TMS definition (ref: cogeotiff/rio-tiler#283)
- add tms options in Readers (breaking change if you create custom Reader from BaseReader)
- add tile_bounds vs bounds check in tile methods for MultiBands and MultiBase classes
- add tile_exists method in BaseReader (take tms in account)
- adapt zooms calculation in COGReader
- add
LastBandHigh
andLastBandLow
pixel selection (ref: cogeotiff/rio-tiler!270)
Deprecated function
- rio_tiler.reader.tile
- rio_tiler.utils.geotiff_options
- rio_tiler.utils.tile_exists
- rio_tiler.io.multi_*
2.0.0b16 (2020-10-07)¶
- remove
pkg_resources
(pypa/setuptools#510) - refactor default colormap lookup to use pathlib instead of pkg_resources.
Note: We changed the versioning scheme to {major}.{minor}.{path}{pre}{prenum}
2.0b15 (2020-10-05)¶
- Fix missing Exception catching when running task outside threads (ref: developmentseed/titiler#130).
- add rio-tiler logger (cogeotiff/rio-tiler#277).
2.0b14.post2 (2020-10-02)¶
- Fix bug in
MultiBandReader
(ref: cogeotiff/rio-tiler#275) and add tests.
2.0b14.post1 (2020-10-02)¶
- add
MultiBandReader
andGCPCOGReader
inrio_tiler.io
init.
2.0b14 (2020-10-02)¶
- Added back the Conctext Manager methods in
rio_tiler.io.base.BaseReader
but not as@abc.abstractmethod
(ref: github.com/cogeotiff/rio-tiler/pull/273#discussion_r498937943) - Move
rio_tiler_pds.reader.MultiBandReader
andrio_tiler_pds.reader.GCPCOGReader
to rio-tiler (cogeotiff/rio-tiler!273)
2.0b13 (2020-10-01)¶
- remove ContextManager requirement for
rio_tiler.io.base.BaseReader
andrio_tiler.io.base.MultiBaseReader
base classes. - move ContextManager properties definition to
__attrs_post_init__
method inrio_tiler.io.STACReader
andrio_tiler.io.COGReader
(ref: cogeotiff/rio-tiler-pds#21)
2.0b12 (2020-09-28)¶
- Make sure Alpha band isn't considered as an internal mask by
utils.has_mask_band
2.0b11 (2020-09-24)¶
- reduce verbosity in
rio_tiler.tasks.filter_tasks
exception logging (#266).
2.0b10 (2020-09-15)¶
- add
post_process
callback torio_tiler.render._read
andrio_tiler.render.point
to apply specific operation ouput arrays.
2.0b9 (2020-09-09)¶
- restore Mkdocs search bar (#255)
- Allow class (not just instance) to be passed to pixel_selection (#250)
- Add Binder link/badge to README (#254)
- Add mkdocs-jupyter to show notebooks in website (#253)
- Remove deprecated functions (#247)
- Export modules from top-level package (#246)
- Allow overwriting colormap with force=True (#249)
- Pin black version (#251)
- Add contributing.md (#242)
- Add mkdocs config (#240)
- Add
NPY
support inrio_tiler.utils.render
to save tile in numpy binary format (#256) - Remove bare
Exception
and add more detailed errors (#248)
2.0b8 (2020-08-24)¶
- raise specific
PointOutsideBounds
in rio_tiler.reader.point (#236)
2.0b7 (2020-08-21)¶
- allow setting default kwargs in COGReader init (#227)
- allow
vrt_options
in COGReader.point - add
rio_tiler.io.base.MultiBaseReader
class (#225) - refactor
rio_tiler.io.stac.STACReader
to use MultiBaseReader (#225) - add
rio_tiler.task
submodule to share tools for handling rio-tiler's future tasks. - fix regex parsing for rio-tiler expression
- add warnings when assets/indexes is passed with expression option (#233)
Breaking Changes: - replace dataclass wiht attr to support more flexible class definition (see #225)
2.0b6 (2020-08-04)¶
- add
utils.create_cutline
helper (#218) - remove any mutable default argument
depreciation
- warp_vrt_option
is replaced by vrt_options
in rio_tiler.reader.part (#221)
2.0b5 (2020-07-31)¶
- add more verbosity to mosaic error (#214)
Breaking Changes:
- rio_tiler.mosaic.reader.mosaic_reader
return ((tile, mask), assets_used)
- COGReader.info
is now a method instead of a property to align with other reader (#211)
2.0b4 (2020-07-30)¶
- add rio_tiler.io.base.BaseReader abstract class for COGReader and STACReader to inherit from
- STACReader raises
InvalidAssetName
for invalid asset name orMissingAssets
when no assets is passed (#208) - update rio_tiler.mosaic.reader.mosaic_reader to not use threadPool if threads <= 1 (#207)
Breaking Changes: - Reader.spatial_info is a property (#203) - assets is a keyword argument in STACReader stats/info/metadata
2.0b3 (2020-07-27)¶
- add
rio_tiler.mosaic
submodule (ref: cogeotiff/rio-tiler-mosaic#16)
2.0b2 (2020-07-23)¶
- add boto3 in the dependency (#201)
2.0b1 (2020-07-22)¶
- switch to ContextManager for COG and STAC (rio_cogeo.io.COGReader, rio_cogeo.io.STACReader).
- COGReader.part and STACReader.part return data in BBOX CRS by default.
- STACReader now accept URL (https, s3).
- add more method for STAC (prewiew/point/part/info/stats).
- add expression for COG/STAC preview/point/part.
- add
masked
option inrio_tiler.reader.point
to control weither or not it should return None or a value. - remove mission specific tilers (#195).
- remove
rio_tiler.reader.multi_*
functions (replaced by rio_tiler.io.cogeo.multi_*). - remove
rio_tiler.utils.expression
(replaced by expression options in tilers).
2.0a11 (2020-05-29)¶
- refactor
rio_tiler.utils.tile_exists
to allow raster bounds latitude == -90,90
2.0a10 (2020-05-29)¶
- Change default resampling to nearest for
_read
(#187) - add
rio_tiler.reader.stats
(return only array statistics) - remove default
dst_crs
inrio_tiler.reader.part
to to fallback to dataset CRS.
2.0a9 (2020-05-27)¶
- Refactor colormap and add method to register custom colormap
2.0a8 (2020-05-25)¶
- add
preview
method torio_tiler.io.cogeo
2.0a7 (2020-05-17)¶
- allow reading high resolution part of a raster (by making height, width args optional)
- add
max_size
option inrio_tiler.reader.part
to set a maximum output size when height and width are not set - add point and area function in rio_tiler.io.cogeo
- fix width-height height-widht bug in
rio_tiler.reader.part
depreciation
- deprecated out_window
option in favor of window
in rio_tiler.reader._read
2.0a6 (2020-05-06)¶
- fix unwanted breacking change with
img_profiles.get
not allowing default values
2.0a5 (2020-05-06)¶
- make
rio_tiler.io.landsat8.tile
return Uint16 data and not float32 (#173) rio_tiler.profiles.img_profiles
item access returncopy
of the items (#177)- better colormap docs (#176, author @kylebarron)
2.0a4 (2020-04-08)¶
- add
rio_tiler.io.cogeo.info
to retrieve simple file metadata (no image statistics) - add band metadata tag info in
rio_tiler.render.metadata
output - add
rio_tiler.io.stac
STAC compliant rio_tiler.colormap.apply_discrete_cmap
2.0a3 (2020-03-25)¶
- only use
transform_bounds
when needed in rio_tiler.reader.part
Breaking Changes:
- switch back to gdal/rasterio calculate_default_transform (#164). Thanks to Terracotta core developper @dionhaefner.
- refactor rio_tiler.utils.get_vrt_transform
to get width and height input.
2.0a2 (2020-03-20)¶
- Fall back to gdal/rasterio calculate_default_transform for dateline separation crossing dataset (ref #164)
2.0a1 (2020-03-19)¶
- added
reader.preview
,reader.point
methods - added multi_* functions to rio_tiler.reader to support multiple assets addresses
- added
rio_tiler.utils.has_mask_band
function - added
rio_tiler.utils.get_overview_level
to calculate the overview level needed for partial reading. - added type hints
- added scale, offsets, colormap, datatype and colorinterp in reader.metadata output (#158)
- new
rio_tiler.colormap
submodule - added
unscale
options to rio_tiler.reader._read function apply internal scale/offset (#157)
Breaking Changes:
- removed python 2 support
- new package architecture (.io submodule)
- introduced new rio_tiler.reader functions (part, preview, metadata...)
- renamed rio_tiler.main to rio_tiler.io.cogeo
- bucket and prefixes are defined in rio_tiler.io.dataset.{dataset}_parse
function from
AWS supported Public Dataset
- renamed minimum_tile_cover
to minimum_overlap
- renamed tile_edge_padding
to padding
- padding is set to 0 by default.
- use terracotta calculate_default_transform (see github.com/cogeotiff/rio-tiler/issues/56#issuecomment-442484999)
- colormaps are now have an alpha value
- rio_tiler.utils.get_colormap
replaced by rio_tiler.colormap.get_colormap
- new rio_tiler.colormap.get_colormap
supports only GDAL like colormap
- replaced rio_tiler.utils.array_to_image
by rio_tiler.utils.render
- replaced rio_tiler.utils.apply_cmap
by rio_tiler.colormap.apply_cmap
- replaced rio_tiler.utils._apply_discrete_colormap
by rio_tiler.colormap.apply_discrete_cmap
- removed histogram_bins
and histogram_range
in options in metadata reader.
Should now be passed in hist_options
(e.g: hist_options={bins=10, range=(0, 10)})
- remove alpha band value from output data array in tile/preview/metadata #127
1.4.0 (2020-02-19)¶
- Add Sentinel2-L2A support (#137)
- Update Sentinel-2 sceneid schema (S2A_tile_20170323_07SNC_0 -> S2A_L1C_20170323_07SNC_0)
1.3.1 (2019-11-06)¶
- Add
warp_vrt_option
option forutils.raster_get_stats
andutils.tile_read
to allow more custom VRT Warping. (ref: github.com/OSGeo/gdal/issues/1989#issue-518526399) - Add
rio_tiler.utils.non_alpha_indexes
to find non-alpha band indexes (ref #127)
1.3.0 (2019-10-07)¶
- Allow
DatasetReader
,DatasetWriter
,WarpedVRT
input forutils.raster_get_stats
andutils.tile_read
- add
minimum_tile_cover
option to filter dataset not covering a certain amount of the tile. - add Sentinel-1 submodule
Breaking Changes: - need rasterio>=1.1
1.2.11 (2019-09-18)¶
- reduce memory footprint of expression tiler
- fix wrong calculation for overview size in
raster_get_stats
(#116) - Add Landsat 8 QA Band (#117).
1.2.10 (2019-07-18)¶
- add more colormap options (from matplotlib) and switch from txt files to numpy binaries (#115)
1.2.9 (2019-07-11)¶
- fix issue #113, adds depreciation warning for
bounds_crs
in favor ofdst_crs
inrio_tiler.utils.get_vrt_transform
1.2.8 (2019-07-08)¶
- Add kwargs options in landsat8.tile, sentinel2.tile and cbers.tile functions to
allow
resampling_method
andtile_edge_padding
options forwarding to utils._tile_read. - Add Input (bounds_crs) and Output (dst_crs) option to
utils._tile_read
function (#108)
1.2.7 (2019-05-14)¶
- Revert changes introduced in #106 (see #105)
- Refactor tests
1.2.6 (2019-05-10) - DELETED¶
- Use same resampling method for mask and for data (#105)
1.2.5 (2019-05-08)¶
- add tile_edge_padding option to be passed to rio_tiler.utils._tile_read to reduce sharp edges that occur due to resampling (#104)
1.2.4 (2019-04-16)¶
- add histogram_range options to be passed to rio_tiler.{module}.metadata function (#102)
1.2.3 (2019-04-04)¶
- add histogram_bins options to be passed to rio_tiler.{module}.metadata function (#98)
Bug fixes: - return index number with band descriptions (#99)
1.2.2 (2019-04-03)¶
- add mercator min/max zoom info in metadata output from rio_tiler.utils.raster_get_stats (#96)
- add band description (band name) in metadata output from rio_tiler.utils.raster_get_stats (#96)
1.2.1 (2019-03-26)¶
- Replace rio-pansharpen dependency with a fork of the brovey function directly
into
rio_tiler.utils
(rio-pansharpen is unmaintened and not compatible with rasterio>=1) (#94).
1.2.0 (2019-03-26)¶
rio_tiler.utils.array_to_image
's color_map arg can be a dictionary of discrete values (#91)
Breaking Changes:
- expr
argument is now a required option in rio_tiler.utils.expression
. (#88)
1.1.4 (2019-03-11)¶
- Add 'rplumbo' colormap (#90 by @DanSchoppe)
1.1.3 (2019-03-06)¶
Bug fixes: - Fix casting to integer for MAX_THREADS environment variable.
1.1.1 (2019-02-21)¶
- Minor typo correction and harmonization of the use of src/src_dst/src_path in
rio_tiler.utils
Bug fixes:
- Fix nodata handling in utils.raster_get_stats
1.1.0 (2019-02-15)¶
- Allow options forwarding to
tile_read
frommain.tile
function (#86) - Add
resampling_method
options inrio_tiler.utils.tile_read
to allow user set resampling. Default is now bilinear (#85)
Bug fixes: - Fix nodata option forwarding to tile_read when source is a path (#83)
Refactoring:
- Refactor rio_tiler.utils.tile_read
to reduce code complexity (#84)
Breaking Changes:
- indexes
options is now set to None in rio_tiler.utils.tile_read
.
Default will now be the dataset indexes.
1.0.1 (2019-02-14)¶
- Fix mask datatype bug in
rio_tiler.utils.array_to_image
(#79) - Fix nodata handling and better test for the nodata/mask main module (#81)
1.0.0 (2019-02-11)¶
- add missing Landsat panchromatic band (08) min/max fetch in
rio_tiler.landsat8.metadata
(#58) - add pre-commit for commit validation (#64)
- code formatting using Black (the uncompromising Python code formatter) (#64)
- update documentation (Sentinel-2 cost) (#68)
- add
utils.raster_get_stats
andutils._get_stats
to replacemin_max*
function and to return more statistics (#66) - add overview level selection to statistical functions to reduce the data download (#59)
- add pure GDAL
array_to_image
function to replace PIL tools (#29) - add GDAL format output from
utils.get_colormap
to be used inarray_to_image
(#29) - add GDAL compatible Image creation profile (#29)
- add max threads number settings via "MAX_THREADS" environment variable (#71)
Breaking Changes:
- update metadata
structure returned by landsat8.metadata
, sentinel2.metadata
, cbers.metadata
- force sentinel, landsat and cbers band names to be string and add validation (#65)
- moved landsat utility functions from rio_tiler.utils
to rio_tiler.landsat8
- rio_tiler.utils.landsat_get_mtl -> rio_tiler.landsat8._landsat_get_mtl
- rio_tiler.utils.landsat_parse_scene_id -> rio_tiler.landsat8._landsat_parse_scene_id
- rio_tiler.utils.landsat_get_stats -> rio_tiler.landsat8._landsat_stats
- moved cbers utility functions from rio_tiler.utils
to rio_tiler.cbers
- rio_tiler.utils.cbers_parse_scene_id -> rio_tiler.cbers._cbers_parse_scene_id
- moved sentinel-2 utility functions from rio_tiler.utils
to rio_tiler.sentinel2
- rio_tiler.utils.sentinel_parse_scene_id -> rio_tiler.sentinel2._sentinel_parse_scene_id
- removed deprecated PIL support as well as base64 encoding function in rio_tiler.utils
- rio_tiler.utils.img_to_buffer
- rio_tiler.utils.array_to_img
- rio_tiler.utils.b64_encode_img
- removed deprecated min_max* functions (landsat_min_max_worker and band_min_max_worker)
1.0rc2 (2018-08-22)¶
- add test case for pix4d nodata+alpha band data
1.0rc1 (2018-07-16)¶
- rasterio 1.0.0
1.0b3 (2018-07-02)¶
- add schwarzwald color palette
1.0b2 (2018-06-26)¶
- fix nodata (#48)
1.0b1 (2018-06-23)¶
- adapt to rasterio 1.0b4
- fix mask (internal/external) fetching 🙏
- fix boundless read with new rasterio 1.0b2
- fix custom nodata handling
- fix performances issue
Breaking Changes: - removed alpha band options to select a custom alpha band number
1.0a8 (2018-06-20)¶
- Fix rasterio version to 1.0b1 (#46 and #44)
1.0a7 (2018-05-14)¶
- Support for additional CBERS instruments (fredliporace)
1.0a6 (2018-03-29)¶
- Fixes sentinel-2 band 8A regex bug in
rio_tiler.utils.expression
1.0a5 (2018-03-26)¶
- adds DatasetReader input option for utils.tile_read (do not close the dataset on each read)
Breaking Changes:
- utils.tile_band_worker
renamed to utils.tile_read
- main.tile
rgb option renamed indexes
- sentinel2.tile
, landsat8.tile
, cbers.tile
rgb option renamed bands
- main.tile
default nodata mask is handled by rasterio
1.0a4 (2018-03-07)¶
- adds utils.b64_encode_img function to encode an image object into a base64 string
- add tiles profiles (jpeg, png, webp) based on github.com/mapnik/mapnik/wiki/Image-IO#default-output-details
Breaking Changes:
- Refactor rio_tiler.utils.array_to_img
to return PIL image object
1.0a3 (2018-02-05)¶
- only using
read_masks
for mask creation when it's needed.
1.0a2 (2018-02-05)¶
- add "expression" utility function
- better nodata/mask/alpha band definition and support
Breaking Changes: - tile functions now return an associated mask (Landsat, Sentinel, CBERS, main) - remove nodata support in utils.image_to_array function - add mask support in utils.image_to_array function - utils.tile_band_worker will always return a (Band, Width, Height) array (e.g 1x256x256 or 3x256x256)
1.0a1 (2018-01-04)¶
- remove aws.py sub-module (replaced by main.py)
- no default bands value for main.py tiles.
1.0a.0 (2018-01-03)¶
- add colormap option in
utils.array_to_img
- add TIR (brightness temps) support
- add CBERS support
- add global file support
- add elevation encoding for mapzen
- removing internal caching
- update to rasterio 1.0a12
Breaking Changes:
- remove data value rescaling in landsat8.tile
and sentinel2.tile
- fix wrong lat/grid_square value in utils.sentinel_parse_scene_id
- rename utils.sentinel_min_max_worker
to utils.band_min_max_worker
0.0.3 (2017-11-14)¶
- Fix Sentinel-2 bad AWS url
0.0.2 (2017-10-17)¶
- Fix python ⅔ compatibilities in rio_tiler.utils.landsat_get_mtl
0.0.1 (2017-10-05)¶
- Initial release. Requires Rasterio >= 1.0a10.