corteva / rioxarray

geospatial xarray extension powered by rasterio
https://corteva.github.io/rioxarray
Other
517 stars 82 forks source link

rioxarray convert NetCDF file to raster failed "TypeError: cannot pickle '_thread.lock' object" #702

Closed aierfulz closed 11 months ago

aierfulz commented 11 months ago
import rioxarray as rx
import xarray as xr
data = xr.open_dataset("test.nc")["var"].transpose('time', 'lat', 'lon')
data.rio.to_raster("a.tif")

Problem description

Traceback (most recent call last): File "D:\Graduate_Python_code\program\figshare_download.py", line 8, in data2.rio.to_raster("a.tif") ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "D:\anaconda3\envs\raster\Lib\site-packages\rioxarray\raster_array.py", line 1125, in to_raster return RasterioWriter(raster_path=raster_path).to_raster( ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "D:\anaconda3\envs\raster\Lib\site-packages\rioxarray\raster_writer.py", line 247, in to_raster xarray_dataarray = xarray_dataarray.copy() ^^^^^^^^^^^^^^^^^^^^^^^ File "D:\anaconda3\envs\raster\Lib\site-packages\xarray\core\dataarray.py", line 1226, in copy return self._copy(deep=deep, data=data) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "D:\anaconda3\envs\raster\Lib\site-packages\xarray\core\dataarray.py", line 1234, in _copy variable = self.variable._copy(deep=deep, data=data, memo=memo) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "D:\anaconda3\envs\raster\Lib\site-packages\xarray\core\variable.py", line 1084, in _copy ndata = copy.deepcopy(ndata, memo) ^^^^^^^^^^^^^^^^^^^^^^^^^^ File "D:\anaconda3\envs\raster\Lib\copy.py", line 172, in deepcopy y = _reconstruct(x, memo, rv) ^^^^^^^^^^^^^^^^^^^^^^^^^^ File "D:\anaconda3\envs\raster\Lib\copy.py", line 271, in _reconstruct state = deepcopy(state, memo) ^^^^^^^^^^^^^^^^^^^^^ File "D:\anaconda3\envs\raster\Lib\copy.py", line 146, in deepcopy y = copier(x, memo) ^^^^^^^^^^^^^^^ File "D:\anaconda3\envs\raster\Lib\copy.py", line 211, in _deepcopy_tuple y = [deepcopy(a, memo) for a in x] ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "D:\anaconda3\envs\raster\Lib\copy.py", line 211, in y = [deepcopy(a, memo) for a in x] ^^^^^^^^^^^^^^^^^ File "D:\anaconda3\envs\raster\Lib\copy.py", line 146, in deepcopy y = copier(x, memo) ^^^^^^^^^^^^^^^ File "D:\anaconda3\envs\raster\Lib\copy.py", line 231, in _deepcopy_dict y[deepcopy(key, memo)] = deepcopy(value, memo) ^^^^^^^^^^^^^^^^^^^^^ File "D:\anaconda3\envs\raster\Lib\copy.py", line 172, in deepcopy y = _reconstruct(x, memo, rv) ^^^^^^^^^^^^^^^^^^^^^^^^^^ File "D:\anaconda3\envs\raster\Lib\copy.py", line 271, in _reconstruct state = deepcopy(state, memo) ^^^^^^^^^^^^^^^^^^^^^ File "D:\anaconda3\envs\raster\Lib\copy.py", line 146, in deepcopy y = copier(x, memo) ^^^^^^^^^^^^^^^ File "D:\anaconda3\envs\raster\Lib\copy.py", line 231, in _deepcopy_dict y[deepcopy(key, memo)] = deepcopy(value, memo) ^^^^^^^^^^^^^^^^^^^^^ File "D:\anaconda3\envs\raster\Lib\copy.py", line 172, in deepcopy y = _reconstruct(x, memo, rv) ^^^^^^^^^^^^^^^^^^^^^^^^^^ File "D:\anaconda3\envs\raster\Lib\copy.py", line 271, in _reconstruct state = deepcopy(state, memo) ^^^^^^^^^^^^^^^^^^^^^ File "D:\anaconda3\envs\raster\Lib\copy.py", line 146, in deepcopy y = copier(x, memo) ^^^^^^^^^^^^^^^ File "D:\anaconda3\envs\raster\Lib\copy.py", line 211, in _deepcopy_tuple y = [deepcopy(a, memo) for a in x] ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "D:\anaconda3\envs\raster\Lib\copy.py", line 211, in y = [deepcopy(a, memo) for a in x] ^^^^^^^^^^^^^^^^^ File "D:\anaconda3\envs\raster\Lib\copy.py", line 146, in deepcopy y = copier(x, memo) ^^^^^^^^^^^^^^^ File "D:\anaconda3\envs\raster\Lib\copy.py", line 231, in _deepcopy_dict y[deepcopy(key, memo)] = deepcopy(value, memo) ^^^^^^^^^^^^^^^^^^^^^ File "D:\anaconda3\envs\raster\Lib\copy.py", line 172, in deepcopy y = _reconstruct(x, memo, rv) ^^^^^^^^^^^^^^^^^^^^^^^^^^ File "D:\anaconda3\envs\raster\Lib\copy.py", line 271, in _reconstruct state = deepcopy(state, memo) ^^^^^^^^^^^^^^^^^^^^^ File "D:\anaconda3\envs\raster\Lib\copy.py", line 146, in deepcopy y = copier(x, memo) ^^^^^^^^^^^^^^^ File "D:\anaconda3\envs\raster\Lib\copy.py", line 211, in _deepcopy_tuple y = [deepcopy(a, memo) for a in x] ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "D:\anaconda3\envs\raster\Lib\copy.py", line 211, in y = [deepcopy(a, memo) for a in x] ^^^^^^^^^^^^^^^^^ File "D:\anaconda3\envs\raster\Lib\copy.py", line 146, in deepcopy y = copier(x, memo) ^^^^^^^^^^^^^^^ File "D:\anaconda3\envs\raster\Lib\copy.py", line 231, in _deepcopy_dict y[deepcopy(key, memo)] = deepcopy(value, memo) ^^^^^^^^^^^^^^^^^^^^^ File "D:\anaconda3\envs\raster\Lib\copy.py", line 172, in deepcopy y = _reconstruct(x, memo, rv) ^^^^^^^^^^^^^^^^^^^^^^^^^^ File "D:\anaconda3\envs\raster\Lib\copy.py", line 271, in _reconstruct state = deepcopy(state, memo) ^^^^^^^^^^^^^^^^^^^^^ File "D:\anaconda3\envs\raster\Lib\copy.py", line 146, in deepcopy y = copier(x, memo) ^^^^^^^^^^^^^^^ File "D:\anaconda3\envs\raster\Lib\copy.py", line 211, in _deepcopy_tuple y = [deepcopy(a, memo) for a in x] ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "D:\anaconda3\envs\raster\Lib\copy.py", line 211, in y = [deepcopy(a, memo) for a in x] ^^^^^^^^^^^^^^^^^ File "D:\anaconda3\envs\raster\Lib\copy.py", line 146, in deepcopy y = copier(x, memo) ^^^^^^^^^^^^^^^ File "D:\anaconda3\envs\raster\Lib\copy.py", line 231, in _deepcopy_dict y[deepcopy(key, memo)] = deepcopy(value, memo) ^^^^^^^^^^^^^^^^^^^^^ File "D:\anaconda3\envs\raster\Lib\copy.py", line 172, in deepcopy y = _reconstruct(x, memo, rv) ^^^^^^^^^^^^^^^^^^^^^^^^^^ File "D:\anaconda3\envs\raster\Lib\copy.py", line 271, in _reconstruct state = deepcopy(state, memo) ^^^^^^^^^^^^^^^^^^^^^ File "D:\anaconda3\envs\raster\Lib\copy.py", line 146, in deepcopy y = copier(x, memo) ^^^^^^^^^^^^^^^ File "D:\anaconda3\envs\raster\Lib\copy.py", line 231, in _deepcopy_dict y[deepcopy(key, memo)] = deepcopy(value, memo) ^^^^^^^^^^^^^^^^^^^^^ File "D:\anaconda3\envs\raster\Lib\copy.py", line 146, in deepcopy y = copier(x, memo) ^^^^^^^^^^^^^^^ File "D:\anaconda3\envs\raster\Lib\copy.py", line 211, in _deepcopy_tuple y = [deepcopy(a, memo) for a in x] ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "D:\anaconda3\envs\raster\Lib\copy.py", line 211, in y = [deepcopy(a, memo) for a in x] ^^^^^^^^^^^^^^^^^ File "D:\anaconda3\envs\raster\Lib\copy.py", line 161, in deepcopy rv = reductor(4) ^^^^^^^^^^^ TypeError: cannot pickle '_thread.lock' object

Expected Output

Environment Information

Installation method

snowman2 commented 11 months ago

Duplicate: #614