Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Closed
aierfulz opened this issue Oct 13, 2023 · 1 comment
Labels
bug Something isn't working duplicate This issue or pull request already exists

Comments

@aierfulz
Copy link

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

  • python -c "import rioxarray; rioxarray.show_versions()"
  • GDAL 3.4.3
  • rasterio 1.3.8.post2
  • rioxarray 0.15.0
  • xarray 2023.9.0
  • Operation System Information Windows-10-10.0.22621-SP0

Installation method

  • pypi (whl)
@aierfulz aierfulz added the bug Something isn't working label Oct 13, 2023
@snowman2
Copy link
Member

Duplicate: #614

@snowman2 snowman2 added the duplicate This issue or pull request already exists label Oct 13, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working duplicate This issue or pull request already exists
Projects
None yet
Development

No branches or pull requests

2 participants