History
=======

0.15.7
------
- BUG: Remove grid_mapping from attrs when writing (pull #783)
- BUG: Ensure gcp_crs exists before writing in `rio.write_gcps` (issue #646)

0.15.6
------
- BUG: Raise OverflowError when nodata data type conversion is unsafe (pull #782)
- BUG: Support writing GCPs to netCDF (issue #778)
- BUG: Fix reading dask chunks when band_as_variable=True (issue #761)
- REF:merge: Use merge path & rio.to_raster (pull #781)

0.15.5
------
- BUG:reproject: Allow rotated rasters (issue #746)

0.15.4
------
- BUG:reproject_match: Remove setting spatial dims on output resampled dataset (issue #768)

0.15.3
------
- BUG:merge: Use `rasterio.io.MemoryFile`` for reading (pull #765)
- BUG:merge: Add simple defaults for unused payload/colormap (pull #766)

0.15.2
------
- BUG: Add decode_coords kwarg to backend entrypoint (pull #763)
- BUG: Avoid DeprecationWarning: xr.Dataset.drop() -> xr.Dataset.drop_vars() (pull #740)

0.15.1
-------
- DEP: Support Python 3.10-3.12 (pull #723)
- DEP: rasterio 1.3+, pyproj 3.3+ (pull #725, #727)
- DEP: xarray 2022.3.0+ & numpy 1.23+ (pull #728)
- ENH: Robust handling of GCPs without `z` component (issue #731)

0.15.0
------
- BUG: Fix setting spatial dims internally during propagation (pull #682)
- ENH: Pass on on-disk chunk sizes as preferred chunk sizes to the xarray backend (pull #678)
- MNT: add __all__ to top level module (issue #680)

0.14.1
------
- BUG: Fix :mod:`rioxarray.merge` CRS check (pull #655)
- BUG: Remove tags with metadata added by rasterio in :func:`rioxarray.open_rasterio` (issue #666)

0.14.0
------
- DEP: Drop Python 3.8 support (issue #582)
- DEP: pin rasterio>=1.2 (pull #642)
- BUG: Fix WarpedVRT in :func:`rioxarray.open_rasterio` when band_as_variable=True (issue #644)
- BUG: Fix usage of `encode_cf_variable` in `rio.to_raster` (pull #652)

0.13.4
------
- DEP: pin numpy>=1.21 (pull #636)

0.13.3
------
- BUG: Handle data type error in `rio.reproject` (issue #618)

0.13.2
------
- BUG:dataset: Fix writing tags for bands (issue #615)
- BUG:dataset: prevent overwriting long_name attribute (pull #616)

0.13.1
------
- BUG: Fix closing files manually (pull #607)
- BUG: Add GDAL 3.6 driver auto-select fix (pull #606)

0.13.0
-------
- ENH: Added band_as_variable option to open_rasterio (pull #600)

0.12.4
------
- ENH: Added band_as_variable option to open_rasterio (issue #296)
- BUG: Pass warp_extras dictionary to raster.vrt.WarpedVRT (issue #598)

0.12.3
------
- BUG: Handle CF CRS export errors in `rio.write_crs` (discussion #591)

0.12.2
------
- BUG: Fix `mask_and_scale` data load after `.sel` (issue #580)

0.12.1
------
- BUG: Handle `_Unsigned` and load in all attributes (pull #575)

0.12.0
-------
- ENH: Allow passing in bounds of different CRS in `rio.clip_box` (pull #563)

0.11.2
------
- BUG: Fix reading file handle with dask (issue #550)
- BUG: Fix reading cint16 files with dask (issue #542)
- BUG: Ensure `rio.bounds` ordered correctly (issue #545)
- BUG: Allow reading from `io.BytesIO` (issue #549)

0.11.1
------
- BUG: Fix WarpedVRT param cache in :func:`rioxarray.open_rasterio` (issue #515)
- BUG: Always generate coordinates in `rio.reproject` when GCPS|RPCS present (issue #517)

0.11.0
------
- TYPE: Add more type hints (issue #373)
- ENH: Add additional GDAL information to :func:`rioxarray.show_versions` (pull #513)

0.10.3
------
- BUG: Remove xarray crs attribute in rio.write_crs (issue #488)

0.10.2
-------
- BUG: Lazy load colormap through _manager.acquire() in merge (issue #479)

0.10.1
-------
- DEP: pin rasterio>=1.1.1 (pull #471)
- BUG: Corrected bounds and transform args to float (pull #475)

0.10.0
-------
- DEP: Drop Python 3.7 support (issue #451)
- ENH: Add GCPs reading and writing (issue #376)

0.9.1
------
- BUG: Force coordinates to be exactly the same in `rio.reproject_match` (issue #298)

0.9.0
------
- ENH: Allow additional kwargs to pass from reproject_match() -> reproject() (pull #436)

0.8.0
------
- DEP: Make scipy an optional dependency (issue #413)
- BUG: Return cached transform when axis data missing (pull #419)
- BUG: Fix negative indexes in `rio.isel_window` (issue #421)

0.7.1
------
- BUG: Handle transforms with rotation (pull #401)

0.7.0
------
- BUG: `rio.clip` and `rio.clip_box` skip non-geospatial arrays in datasets when clipping (pull #392)
- ENH: Add option for users to skip variables without spatial dimensions (pull #395)

0.6.1
------
- BUG: Fix indexing error when `mask_and_scale=True` was combined with band dim chunking (issue #387, pull #388)

0.6.0
------
- ENH: Add pad option to `rio.isel_window` (issue #381; pull #383)
- BUG: Fix negative start in row or col window offsets in `rio.isel_window` (issue #381; pull #383)

0.5.0
------
- ENH: Allow passing in kwargs to `rio.reproject` (issue #369; pull #370)
- ENH: Allow nodata override and provide default nodata based on dtype in `rio.reproject` (pull #370)
- ENH: Add support for passing in gcps to rio.reproject (issue #339; pull #370)
- BUG: Remove duplicate acquire in open_rasterio (pull #364)
- BUG: Fix exporting dataset to raster with non-standard dimensions (issue #372)

0.4.3
------
- BUG: support GDAL CInt16, rasterio complex_int16 (pull #353)
- TST: Fix merge tests for rasterio 1.2.5+ (issue #358)

0.4.2
------
- BUG: Improve WarpedVRT support for gcps (pull #351)

0.4.1
------
- BUG: pass kwargs with lock=False (issue #344)
- BUG: Close file handle with lock=False (pull #346)

0.4.0
------
- DEP: Python 3.7+ (issue #215)
- DEP: xarray 0.17+ (needed for issue #282)
- REF: Store `grid_mapping` in `encoding` instead of `attrs` (issue #282)
- ENH: enable `engine="rasterio"` via xarray backend API (issue #197 pull #281)
- ENH: Generate 2D coordinates for non-rectilinear sources (issue #290)
- ENH: Add `encoded` kwarg to `rio.write_nodata` (discussions #313)
- ENH: Added `decode_times` and `decode_timedelta` kwargs to `rioxarray.open_rasterio` (issue #316)
- BUG: Use float32 for smaller dtypes when masking (discussions #302)
- BUG: Return correct transform in `rio.transform` with non-rectilinear transform (discussions #280)
- BUG: Update to handle WindowError in rasterio 1.2.2 (issue #286)
- BUG: Don't generate x,y coords in `rio` methods if not previously there (pull #294)
- BUG: Preserve original data type for writing to disk (issue #305)
- BUG: handle lock=True in open_rasterio (issue #273)

0.3.1
------
- BUG: Compatibility changes with xarray 0.17 (issue #254)
- BUG: Raise informative error in interpolate_na if missing nodata (#250)

0.3.0
------
- REF: Reduce pyproj.CRS internal usage for speed (issue #241)
- ENH: Add `rioxarray.set_options` to disable exporting CRS CF grid mapping (issue #241)
- BUG: Handle merging 2D DataArray (discussion #244)

0.2.0
------
- ENH: Added `rio.estimate_utm_crs` (issue #181)
- ENH: Add support for merging datasets with different CRS (issue #173)
- ENH: Add support for using dask in `rio.to_raster` (issue #9, pull #219, pull #223)
- ENH: Use the list version of `transform_geom` with rasterio 1.2+ (issue #180)
- ENH: Support driver autodetection with rasterio 1.2+ (issue #180)
- ENH: Allow multithreaded, lockless reads with `rioxarray.open_rasterio` (issue #214)
- ENH: Add support to clip from disk (issue #115)
- BUG: Allow `rio.write_crs` when spatial dimensions not found (pull #186)
- BUG: Update to support rasterio 1.2+ merge (issue #180)

0.1.1
------
- BUG: Check all CRS are the same in the dataset in crs() method

0.1.0
------
- BUG: Ensure transform correct in rio.clip without coords (pull #165)
- BUG: Ensure the nodata value matches the dtype (pull #166)
- Raise deprecation exception in add_spatial_ref and add_xy_grid_meta (pull #168)

0.0.31
------
- Deprecate add_spatial_ref and fix warning for add_xy_grid_meta (pull #158)

0.0.30
------
- BUG: Fix assigning fill value in `rio.pad_box` (pull #140)
- ENH: Add `rio.write_transform` to store cache in GDAL location (issue #129 & #139)
- ENH: Use rasterio windows for `rio.clip_box` (issue #142)
- BUG: Add support for negative indexes in rio.isel_window (pull #145)
- BUG: Write transform based on window in rio.isel_window (pull #145)
- ENH: Add `rio.count`, `rio.slice_xy()`, `rio.bounds()`, `rio.resolution()`, `rio.transform_bounds()` to Dataset level
- ENH: Add `rio.write_coordinate_system()` (issue #147)
- ENH: Search CF coordinate metadata to find coordinates (issue #147)
- ENH: Default `rio.clip` to assume geometry has CRS of dataset (pull #150)
- ENH: Add `rio.grid_mapping` and `rio.write_grid_mapping` & preserve original grid mapping (pull #151)

0.0.29
-------
- BUG: Remove unnecessary memory copies in reproject method (pull #136)
- BUG: Fix order of axis in `rio.isel_window` (pull #133)
- BUG: Allow clipping with disjoint geometries (issue #132)
- BUG: Remove automatically setting tiled=True for windowed writing (pull #134)
- ENH: Add `rio.pad_box` (pull #138)

0.0.28
-------
- rio.reproject: change input kwarg dst_affine_width_height -> shape & transform (#125)
- ENH: Use pyproj.CRS to read/write CF parameters (issue #124)

0.0.27
------
- ENH: Added optional `shape` argument to `rio.reproject` (pull #116)
- Fix ``RasterioDeprecationWarning`` (pull #117)
- BUG: Make rio.shape order same as rasterio dataset shape (height, width) (pull #121)
- Fix open_rasterio() for WarpedVRT with specified src_crs (pydata/xarray/pull/4104 & pull #120)
- BUG: Use internal reprojection as engine for resampling window in merge (pull #123)

0.0.26
------
- ENH: Added :func:`rioxarray.show_versions` (issue #106)

0.0.25
------
- BUG: Use recalc=True when using transform internally & ensure stable when coordinates unavailable. (issue #97)

0.0.24
------
- ENH: Add variable names to error messages for clarity (pull #99)
- BUG: Use assign_coords in _decode_datetime_cf (issue #101)

0.0.23
------
- BUG: Fix 'rio.set_spatial_dims' so information saved with 'rio' accesors (issue #94)
- ENH: Make 'rio.isel_window' available for datasets (pull #95)

0.0.22
-------
- ENH: Use pyproj.CRS internally to manage GDAL 2/3 transition (issue #92)
- ENH: Add MissingCRS exceptions for 'rio.clip' and 'rio.reproject' (pull #93)

0.0.21
-------
- ENH: Added to_raster method for Datasets (issue #76)

0.0.20
------
- BUG: ensure band_key is list when iterating over bands for mask and scale (pull #87)

0.0.19
-------
- Add support for writing scales & offsets to raster (pull #79)
- Don't write standard raster metadata to raster tags (issue #78)

0.0.18
------
- Fixed windowed writing to require tiled output raster (pull #66)
- Write data array attributes using `rio.to_raster` (issue #64)
- Write variable name to descriptions if possible in `rio.to_raster` (issue #64)
- Add `mask_and_scale` option to `rioxarray.open_rasterio()` (issue #67)
- Hide NotGeoreferencedWarning warning when subdatasets are present using open_rasterio (issue #65)
- Add support for loading in 1D variables in `xarray.open_rasterio()` (issue #43)
- Load in netCDF metadata on the variable level (pull #73)
- Add rioxarray.merge module (issue #46)

0.0.17
------
- Renamed `descriptions` to `long_name` when opening with `open_rasterio()` (pull #63)
- Make `units` & `long_name` scalar if they exist in rasterio attributes (pull #63)

0.0.16
------
-  Add support for netcdf/hdf groups with different shapes (pull #62)

0.0.15
------
- Added `variable` and `group` kwargs to `rioxarray.open_rasterio()` to allow filtering of subdatasets (pull #57)
- Added `default_name` kwarg to `rioxarray.open_rasterio()` for backup when the original does not exist (pull #59)
- Added `recalc_transform` kwarg to `rio.to_raster()` (pull #56)

0.0.14
------
- Added `windowed` kwarg to `rio.to_raster()` to write to raster using windowed writing (pull #54)
- Added add `rio.isel_window()` to allow selection using a rasterio.windows.Window (pull #54)

0.0.13
------
- Improve CRS searching for xarray.Dataset & use default grid mapping name (pull #51)

0.0.12
------
- Use `xarray.open_rasterio()` for `rioxarray.open_rasterio()` with xarray<0.12.3 (pull #40)

0.0.11
------
- Added `open_kwargs` to pass into `rasterio.open()` when using `rioxarray.open_rasterio()` (pull #48)
- Added example opening Cloud Optimized GeoTiff (issue #45)

0.0.10
------
- Add support for opening netcdf/hdf files with `rioxarray.open_rasterio` (issue #32)
- Added support for custom CRS with wkt attribute for datacube CRS support (issue #35)
- Added `rio.set_nodata()`, `rio.write_nodata()`, `rio.set_attrs()`, `rio.update_attrs()` (issue #37)

0.0.9
-----
- Add `rioxarray.open_rasterio` (issue #7)

0.0.8
-----
- Fix setting nodata in _add_attrs_proj (pull #30)

0.0.7
-----
- Add option to do an inverted clip (pull #29)

0.0.6
-----
- Add support for scalar coordinates in reproject (issue #15)
- Updated writing encoding for FutureWarning (issue #18)
- Use input raster profile for defaults to write output raster profile if opened with `xarray.open_rasterio` (issue #19)
- Preserve None nodata if opened with `xarray.open_rasterio` (issue #20)
- Added `drop` argument for `clip()` (issue #25)
- Fix order of `CRS` for reprojecting geometries in `clip()` (pull #24)
- Added `set_spatial_dims()` method for datasets when dimensions not found (issue #27)

0.0.5
-----
- Find nodata and nodatavals in 'nodata' property (pull #12)
- Added 'encoded_nodata' property to DataArray (pull #12)
- Write the raster with encoded_nodata instead of NaN for nodata (pull #12)
- Added methods to set and write CRS (issue #5)

0.0.4
------
- Added ability to export data array to raster (pull #8)
