xarray.open_rasterio(filename, parse_coordinates=None, chunks=None, cache=None, lock=None)

Open a file with rasterio (experimental).

This should work with any file that rasterio can open (most often: geoTIFF). The x and y coordinates are generated automatically from the file’s geoinformation, shifted to the center of each pixel (see “PixelIsArea” Raster Space for more information).

You can generate 2D coordinates from the file’s attributes with:

from affine import Affine
da = xr.open_rasterio('path_to_file.tif')
transform = Affine.from_gdal(*da.attrs['transform'])
nx, ny = da.sizes['x'], da.sizes['y']
x, y = np.meshgrid(np.arange(nx)+0.5, np.arange(ny)+0.5) * transform
filename : str, rasterio.DatasetReader, or rasterio.WarpedVRT

Path to the file to open. Or already open rasterio dataset.

parse_coordinates : bool, optional

Whether to parse the x and y coordinates out of the file’s transform attribute or not. The default is to automatically parse the coordinates only if they are rectilinear (1D). It can be useful to set parse_coordinates=False if your files are very large or if you don’t need the coordinates.

chunks : int, tuple or dict, optional

Chunk sizes along each dimension, e.g., 5, (5, 5) or {'x': 5, 'y': 5}. If chunks is provided, it used to load the new DataArray into a dask array.

cache : bool, optional

If True, cache data loaded from the underlying datastore in memory as NumPy arrays when accessed to avoid reading from the underlying data- store multiple times. Defaults to True unless you specify the chunks argument to use dask, in which case it defaults to False.

lock : False, True or threading.Lock, optional

If chunks is provided, this argument is passed on to dask.array.from_array(). By default, a global lock is used to avoid issues with concurrent access to the same file when using dask’s multithreaded backend.

data : DataArray

The newly created DataArray.