Skip to main content

Is there an issue when exporting eopatch to GeoTIFF on Windows machine?


This is my code:


for i in range(len(patchIDs)):
eop_path = os.path.join(str(PATCH_FOLDER), f'eopatch_{i}')
if os.path.exists(eop_path):
eop = EOPatch.load(eop_path)
export_tiff = ExportToTiff(feature=(FeatureType.DATA, 'BANDS'), folder=str(PATCH_FOLDER), config=config, crs=region.crs)
export_tiff.execute(eop, filename=f'eopatch_{i}.tif')

But I encountered the PermissionError like the following:


PermissionError                           Traceback (most recent call last)
~\miniconda3\envs\eo-learn\lib\site-packages\fs\osfs.py in makedir(self, path, permissions, recreate)
336 try:
--> 337 os.mkdir(sys_path, mode)
338 except OSError as error:

PermissionError: [WinError 5] Access is denied: b'D:\\'

During handling of the above exception, another exception occurred:

DirectoryExpected Traceback (most recent call last)
<ipython-input-74-9de9396c5c76> in <module>
4 eop = EOPatch.load(eop_path)
5 export_tiff = ExportToTiff(feature=(FeatureType.DATA, 'BANDS'), folder='./output/patches/', config=config, crs=region.crs)
----> 6 export_tiff.execute(eop, filename=f'eopatch_{i}.tif')

~\miniconda3\envs\eo-learn\lib\site-packages\eolearn\io\local_io.py in execute(self, eopatch, filename)
308 dst_width, dst_height = width, height
309
--> 310 filesystem, filename_paths = self._get_filesystem_and_paths(filename, eopatch.timestamp, create_paths=True)
311
312 with filesystem:

~\miniconda3\envs\eo-learn\lib\site-packages\eolearn\io\local_io.py in _get_filesystem_and_paths(self, filename, timestamps, create_paths)
76 paths_to_create = {fs.path.dirname(filename_path) for filename_path in filename_paths}
77 for filename_path in paths_to_create:
---> 78 filesystem.makedirs(filename_path, recreate=True)
79
80 return filesystem, filename_paths

~\miniconda3\envs\eo-learn\lib\site-packages\fs\base.py in makedirs(self, path, permissions, recreate)
1074 raise
1075 try:
-> 1076 self.makedir(path, permissions=permissions)
1077 except errors.DirectoryExists:
1078 if not recreate:

~\miniconda3\envs\eo-learn\lib\site-packages\fs\osfs.py in makedir(self, path, permissions, recreate)
343 else:
344 raise
--> 345 return self.opendir(_path)
346
347 def openbin(self, path, mode="r", buffering=-1, **options):

~\miniconda3\envs\eo-learn\lib\site-packages\fs\error_tools.py in __exit__(self, exc_type, exc_value, traceback)
88 if getattr(exc_value, "args", None) == 32: # pragma: no cover
89 fserror = errors.ResourceLocked
---> 90 reraise(fserror, fserror(self._path, exc=exc_value), traceback)
91
92

~\AppData\Roaming\Python\Python38\site-packages\six.py in reraise(tp, value, tb)
700 value = tp()
701 if value.__traceback__ is not tb:
--> 702 raise value.with_traceback(tb)
703 raise value
704 finally:

~\miniconda3\envs\eo-learn\lib\site-packages\fs\osfs.py in makedir(self, path, permissions, recreate)
335 with convert_os_errors("makedir", path, directory=True):
336 try:
--> 337 os.mkdir(sys_path, mode)
338 except OSError as error:
339 if error.errno == errno.ENOENT:

DirectoryExpected: path '' should be a directory

But, I didn’t find this issue when I try using Google Colab which basically uses Linux system I guess.

Hi @suhendra0812,


Thanks for reporting this issue. It seems that ExportToTiff task is not handling Windows paths correctly in some cases. We will look into the problem and fix it in the next release.


Until then I recommend running this task on Linux or Mac OS.


Thanks for the clarification


Hi @suhendra0812,

The issue you reported has been fixed and it will be available next week, with the new release of eo-learn.


Reply