NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
PyPI · #1656 most downloaded on PyPI
Fast and direct raster I/O for use with NumPy
Last release 1 months ago
08 Aug 2026
Ships unpredictably
gaps range from 8 days to 12 months
Nearly every release is documented
notes for 60 of the last 60 stable releases
Nothing withdrawn
no release was ever pulled
13 years old
169 releases · first in 2013
Multipolyons passed to rasterize are flattened to avoid holes in output (#2014).
Raise RasterioDeprecationWarning when a dataset opened in modes other than 'r' is given to the WarpedVRT constructor.
One column per quarter.
Remove background layer from boundless VRT (#1982). It's not needed since fixes in GDAL after 3.1.3. Wheels on PyPI for rasterio 1.1.6 will patch GDAL
--co option values to int in rio-clip and
rio-warp to prevent exceptions reported in #1989.__array__ in addition
to instances of numpy.ndarray (#1957, #1959).label keyword
argument a sequence of label strings, one per band.Earlier versions of rasterio set the CHECK_WITH_INVERT_PROJ config option to True by default. This is very rarely necessary and broke the GRIB format
True by default. This is very rarely necessary and broke the GRIB format
driver (#1248), so we no longer set this option (#1942). Users of rasterio
1.1.5 in combination with GDAL 1.11 and PROJ 4.8 may see some small
differences, compared to rasterio versions < 1.1.5, in results of warping
global datasets.Raise a more helpful exception when asked to open a dataset in write mode using a read-only driver (#1919).
Bug fixes:
Raise RasterioIOError when errors occur while creating a dataset (#1796).
Bug fixes:
Sampling of WarpedVRT datasets was broken in version in 1.1.1 (#1833) and has been fixed.
Bug fixes:
Packaging notes:
Calling a dataset's sample method with coordinates outside the extent of a dataset with a nodata value of None has raised a TypeError (#1822). Now, it
Bug fixes:
Notes:
There have been no changes since 1.1b3.
There have been no changes since 1.1b3.
A regression in WarpedVRT creation (#1799) has been fixed. This required implementation of GDALDatasetH reference counting in DatasetBase.stop().
Bug fixes:
When built from the official source distribution rasterio 1.1b1 would not import due to the omission of _transform.c from the list of extension source
Bug fixes:
Support for Python 2 is deprecated and a warning is raised from the rasterio.compat module. This module will be deleted in a future version.
Deprecations:
New features:
tag_namespaces() method datasets that returns names of
metadata namespaces that can be passed to the existing tags() method
(#1740).method keyword argument that can be used to
override the default painter's algorithm. It takes an alternative method name
as a string or a callable. Please see the merge tool docstring for the
callable's signature (#1500).rasterio.transform.from_gcps() function returns the Affine matrix
that is a best fit to given ground control points (#1749).Bug fixes:
sharing=True to
sharing=False to better serve development of multithreaded applications
(#1775).Other:
Coercion to int was forgotten in the block size guard introduced in 1.0.27 and code that passes string valued blockxsize and blockysize keyword argume
int was forgotten in the block size guard introduced in
1.0.27 and code that passes string valued blockxsize and blockysize
keyword arguments to rasterio.open() was broken (#1769). This has been
fixed in 1.0.28.All cases of deprecated affine right multiplication have been changed to be forward compatible with affine 3.0. The rasterio tests now pass without wa…
dtype keyword argument to the WarpedVRT
constructor. It allows a user to specify the working data type for the warp
operation and output.Several Python deprecation warnings have been eliminated (#1742).
nan to be used as fill for float32 datasets in rasterize (#1761).src_crs if given, else
to the crs of the source dataset (#1755).sharing keyword argument from being pass on to GDAL as a
dataset opening option for create-copy formats like JPEG and PNG (#1758).CRS.from_user_input() (#1719)to_wkt() method
(#1718)In features.rasterize(), a shape with an associated value of None is now burned in using the function's fill value and no longer triggers a TypeError
features.rasterize(), a shape with an associated value of None is
now burned in using the function's fill value and no longer triggers a
TypeError (#1738).By default GDAL reuses existing dataset connections when possible. Multi-threaded programs must avoid this as must programs that re-open datasets in a
Break rio-calc output into chunks of user-specified size to constrain the amount of memory used (#1668).
Add JPEG2000 to enums.Compression so that the compression of JP2 files can be reported (#1654).
Fix for bug in implementation of the pickle protocol and added support for Python's copy protocol (#1643).
Fix for an unchecked NULL pointer introduced in 1.0.19 that could result in segmentation fault on import of rasterio._env on Linux when GDAL data file
Fix a regression reported in #1623.
Fix a regression in evaluation of CRS equality (#1620).
A bug preventing GCPs from being created with new BufferedDatasetWriter instances (#1600) has been fixed (#1610).
Google cloud storage support was *not* in fact added in 1.0.14, but is present in 1.0.15.
The _CRS class has been refactored so that a WKT representation, rather than PROJ4 representation, is the canonical form. This resolves issues #1397 a
with rasterio.open(...) as dataset: roughly equivalent to with rasterio.open(...) as dataset, Env():. This helps prevent bugs when datasets
are created and then used later or are used in different scopes.Fix a buffer dttype mismatch on Windows introduced in 1.0.12 (#1579).
Rasterio's lower level I/O functions now take Py_ssize_t index arrays and will raise exceptions for type mismatches instead of swallowing the exceptio
Prevent needless warning when making boundless reads with a fill value (#1499).
with Env() block or set the GDAL_DATA and
PROJ_LIB environment variables needed by GDAL.Avoid segmentation fault when OSRGetAuthority* functions return null pointers, making Rasterio more robust when reading CRS that don't map perfectly t
The env.hascreds function is no longer used in Rasterio and has been marked as deprecated.
Bug fixes:
src_nodata and nodata keyword arguments are
no longer None, but are markers for the default behavior: inheritance of
nodata values from the VRT's source dataset. Values of None for these
keyword arguments means that the VRT does not inherit from the source and has
no nodata value at all (#1503).Datasets contained in MemoryFile buffers are now opened in r+ or w+ mode instead of r or w.
Bug fixes:
Use the non-resolving path form of files_inout_arg in rio-convert and rio-shapes (#999).
Bug fixes:
If the build_overviews method of a dataset is passed a list of factors that specify more than one 1x1 pixel overview (#1333), Rasterio raises an excep
Bug fixes:
The fill value for boundless reads was ignored in Rasterio versions 1-1.0.4 but now applies (#1471).
Bug fixes:
Boundless reads of datasets without a coordinate reference system have been fixed (#1448).
Bug fixes:
Refactoring:
This version corrects errors made in building binary wheels for 1.0.3. There are no bug fixes or new features in this version.
This version corrects errors made in building binary wheels for 1.0.3. There are no bug fixes or new features in this version.
1.0.3 (2018-08-01)
Bug fixes:
Nothing published for this version
The output of calculate_default_transform() can be fixed to output dimensions as well as to output resolution (#1409).
Bug fixes:
Bounding envelopes are densified at higher precision in transform_bounds to fix #1411.
Bug fixes:
There have been no changes since release candidate 5.
There have been no changes since release candidate 5.
C source files are now generated using Cython 0.28.3, which gives us support for Python 3.7 (#1404, #1405).
An integer overflow when multiplying the warp memory limit (#1401) has been fixed.
CRS based EPSG codes can now report that code using a new to_epsg() method (#1288).
to_epsg() method
(#1288).The rasterio.vfs module has been removed.
Deprecation:
dataset.crs = "EPSG:4326"
instead of dataset.set_crs("EPSG:4326").Internal Env() in rasterio.open has been replaced with an environment ensuring decorator (#1009). The same decorator ensures that credentials are obta
Bug fixes:
rasterio.open has been replaced with an environment
ensuring decorator (#1009). The same decorator ensures that credentials are
obtained when functions from rasterio.shutils are called.getLogger(__name__) in rasterio.rio
module (#1328).We now raise an exception when WarpedVRT is asked to add an alpha band and one already exists for the VRT.
Bug fixes:
The warp memory limit configuration available in gdalwarp has been added to reproject() and WarpedVRT.
Bug fixes:
reproject() and WarpedVRT.aligned_target() function in the warp module to help resolve
#853.Comparison of CRS objects to str or dict is deprecated.
Breaking changes:
boundless=True reads from warped VRTs are disallowed. Instead, VRTs should
be constructed so that only data bounded by their extents is read. In
exchange, boundless reads for non-VRT datasets are faster and more robust.Upcoming deprecations:
New features:
out, out_shape, window, resampling keyword parameters to
the dataset_mask method (#1298).Bug fixes:
Deprecated window functions have been removed from the rasterio module. Their replacements are in rasterio.windows (#1115).
Breaking changes:
--sequence/--collection option.
A sequence is now the default (#927).CRS objects returns True (#1034).rasterio.open() (#1116).MemoryFile constructor.
Users must convert byte arrays to bytes before calling MemoryFile()``.rasterio.Env() no longer sets hidden default config options
CHECK_WITH_INVERT_PROJ=True and GTIFF_IMPLICIT_JPEG_OVR=False (#1011).A number of deprecated features have been removed (#1319).
MergeAlg.replace and MergeAlg.add.__call__ method. The class is no longer
callable. Users must use the mapping protocol to copy and update profiles.Upcoming deprecation:
dataset.crs = "EPSG:4326" instead of dataset.set_crs("EPSG:4326").New features:
rasterio.features.dataset_features() has been extracted from
rio-shapes (#1282, #1286).Bug fixes:
--nodata option of rio-merge is now passed to the output file
(#1345).merge to from_bounds (#1307).rasterize to work around
incidental holes created by GDAL (#1253, #1274).mask() now takes the indexes keyword parameter that is common
elsewhere in the package (#1224, #1225).sharing keyword argument of rasterio.open (#1260).WarpedVRT() properly sets a CRS on the internal VRT handle when
that VRT is produced by GDALCreateVRT() (#1283).rasterio.open() now accepts URLs with GET parameters (#1121).
New features:
rasterio.open() now accepts URLs with GET parameters (#1121).rasterio.open() (#1000,
#1158, #1196).rasterize() now supports GDAL's 'add' algorithm (#1195).Bug fixes:
InMemoryRaster constructor (#1144, #1194).geometry_window() (#1200).rasterio.copy() moved to ``rasterio.shutil.copy() (#1173).
Breaking changes:
rasterio.copy() moved to ``rasterio.shutil.copy() (#1173).DatasetBase.colorinterp is now a setter/getter that operates on
a sequence of ColorInterp.<enum> in band order (#1134).New features:
rasterio.shutil.delete() and $ rio rm for deleting
datasets (#929).rasterio.shutil.exists() for determining if a dataset
exists (#1173).rasterio.shutil.copyfiles() to copy files associated
with a dataset from one location to another (#1173).set_colorinterp() method
and in $ rio edit-info --colorinterp (#1133).Bug fixes:
rasterio.io to rasterio.windows and rasterio.transform
(#1174, #1173).rasterio.features.rasterize() by guarding
against unsupported GeoJSON input (#1172, #1176).The TransformMethodsMixin.ul method, deprecated since 0.36, has been removed (#1100).
Breaking changes:
Window class (#1074).rasterio.windows.Window class no longer derives from tuple.
Comparisons like Window(0, 0, 1, 1) == ((0, 1), (0, 1)) are no
longer possible. Instead, call the .toranges() method of the
former or coerce the latter using Window.from_ranges (#1074).rasterio.windows.from_bounds function now always returns unbounded,
meaning uncropped, Windows. For example, if given a bounding box entirely
to the west and north of the geotransform's origin, the result will be a
Window entirely to the left and above the dataset's row and column origin.
Passing a boundless keyword argument to this function will result in a
warning.TransformMethodsMixin.ul method, deprecated since 0.36, has been
removed (#1100).New features:
block() method (#1077).rio info --subdatasets) (#1127).Bug fixes:
Env are no longer clobbered by credentials
from a default boto3 session inside rasterio.open (#1075).merge and when setting nodata
from rio edit-info (#1160).Removed options argument from rasterio.warp.transform(). Transformer options should be set explicitly inside the currently active rasterio.env.Env()(#
Breaking changes:
**options argument from rasterio.warp.transform(). Transformer
options should be set explicitly inside the currently active
rasterio.env.Env()(#1010). This argument was initially added in 1.0a1.transform_geom() now always splits geometries at the anti-
meridian (#1024).crs property of a dataset is now None instead of CRS() when the
dataset's coordinate reference system is undefined (#1057).New features:
GDAL_CACHEMAX (#1042).from_wkt() CRS constructor has been added (#1070).WarpedVRT class that surfaces GDAL's warp-on-demand VRT features. No
XML editing is required (#1071, #1029).Bug fixes:
dtypes.get_minimum_dtype() now returns proper value for uint* types
(#1064).OSRRelease() to avoid destroying shared spatial
reference system objects (#1031).Secrets kept in GDAL config options could have been leaked via the Python logger. AWS keys and tokens have always been redacted, but other options lik
Bug fixes:
ThreadPoolExecutor and ProcessPoolExecutor have
been added to guard against regression.Roses are red. Irish say "feck." Calling conventions are a pain in the neck
Roses are red. Irish say "feck." Calling conventions are a pain in the neck
Bug fixes:
rasterio.open() when file objects are given as arguments (#973).rio-merge now copies colormaps to output files (#774, #778).
Bug fixes:
--force-overwrite and --output usage is now provided in the
case of a FileOverwriteError (#750).reproject no longer causes a segfault (#749)./vsizip/ etc) instead
of os.path.sep (#754, #789).Documentation:
New features:
--src-nodata and --dst-nodata options for rio-warp (#746).read() and read_masks() take an out_shape argument for decimated reads
(#761).dataset_mask (#716).rasterio.plot (#718, #765).CRS class like our old crs dicts, but with methods attached (#736,
#770).Packaging:
Refactoring:
import numpy as np (#727, #738, #740) throughout the
project.five module has been renamed to compat (#745).Testing:
Bug fix: restore support for URI-like GDAL dataset names such as 'NETCDFbar' (#695).
transform_bounds() as
well as the other functions in rasterio.warp (#694). In implementation, we
have done this with a function decorator.Bug fix: added rasterfill.cpp to MANIFEST.in so it is included in source distributions no matter the build system's GDAL version (#690).
Bug fix: upgrade from deprecated Numpy usage in read() by explicitly converting window offsets to ints (#678, #680).
crs.from_string() raises CRSError
instead of passing silently (#628, #642).rasterio.open() (#650, #665).read() by explicitly
converting window offsets to ints (#678, #680).logger = logging.getLogger(__name__) pattern throughout Rasterio (#649,
#658).drivers() implementation with a new Env class
and more consistent usage of it through the library and command line
interface (#665, #682).Your coding agent can read these notes before it upgrades. Set up the MCP server →