xarray: HDF error when trying to write Dataset read with rasterio to NetCDF
I’m getting an HDF error when trying to write a Dataset read from GeoTiff (rasterio backend) to NetCDF. See reproducible example below:
import urllib.request
import tempfile
import os
import xarray as xr
path = tempfile.gettempdir()
url = 'https://earthexplorer.usgs.gov/browse/gisready/landsat_8/LC08_L1TP_026047_20180110_20180119_01_T1.zip'
filename = os.path.join(path, url.split('/')[-1])
nc_name = os.path.join(path, 'landsat_rgb.nc')
# Download file if not exist (11 Mb)
if not os.path.isfile(filename):
urllib.request.urlretrieve(url, filename)
# Read rgb file using rasterio backend
rgb_name = '/'.join(['/vsizip', filename,
os.path.basename(filename).split('.')[-2] + '.tif'])
ds = xr.open_rasterio(rgb_name)
ds = ds.to_dataset('band').rename({1:'blue', 2:'green', 3:'red'})
print(ds)
# <xarray.Dataset>
# Dimensions: (x: 7611, y: 7761)
# Coordinates:
# * y (y) float64 2.193e+06 2.193e+06 2.193e+06 ... 1.961e+06 1.960e+06
# * x (x) float64 3.732e+05 3.732e+05 3.733e+05 ... 6.015e+05 6.015e+05
# Data variables:
# blue (y, x) uint8 ...
# red (y, x) uint8 ...
# green (y, x) uint8 ...
# Attributes:
# transform: (30.0, 0.0, 373185.0, 0.0, -30.0, 2193315.0)
# crs: +init=epsg:32614
# res: (30.0, 30.0)
# is_tiled: 1
# nodatavals: (nan, nan, nan)
# Write to netcdf
ds.to_netcdf(nc_name)
Output of xr.show_versions()
python -c “import xarray as xr; xr.show_versions()”
INSTALLED VERSIONS
commit: None python: 3.6.5.final.0 python-bits: 64 OS: Linux OS-release: 4.15.0-36-generic machine: x86_64 processor: x86_64 byteorder: little LC_ALL: None LANG: en_US.UTF-8 LOCALE: en_US.UTF-8
xarray: 0.10.9 pandas: 0.23.4 numpy: 1.15.3 scipy: None netCDF4: 1.4.2 h5netcdf: None h5py: None Nio: None zarr: 2.2.0 cftime: 1.0.2.1 PseudonetCDF: None rasterio: 1.0.9 iris: None bottleneck: None cyordereddict: None dask: 0.20.0 distributed: None matplotlib: None cartopy: None seaborn: None setuptools: 40.5.0 pip: 18.1 conda: None pytest: None IPython: 7.1.1 sphinx: None
About this issue
- Original URL
- State: closed
- Created 6 years ago
- Reactions: 2
- Comments: 17 (8 by maintainers)
Commits related to this issue
- fix for https://github.com/pydata/xarray/issues/2535 — committed to ritviksahajpal/pygeoutil by ritv 5 years ago
- cutout: Work around binary wheel incompatibility of netCDF4 and rasterio Refer to https://github.com/pydata/xarray/issues/2535, https://github.com/rasterio/rasterio-wheels/issues/12 — committed to PyPSA/atlite by coroa 5 years ago
- Preparation of v0.2 (#20) * documentation: Update index. * documentation: Add TODOs. * documentation: Add 'Examples' category. * resource.py add for accessing solarpanels and windturbines u... — committed to PyPSA/atlite by coroa 3 years ago
Just a heads up, I can’t reproduce this with latest packages from conda-forge for neither for
xr.open_rasterio
norxr.open_dataset
with engine=rasterio
. Maybe the issue got resolved upstream.