40
40
import fiona
41
41
from pycold .common import DatasetInfo
42
42
from pycold .utils import class_from_dict
43
-
43
+ from pathlib import Path
44
44
45
45
# define constant here
46
46
QA_CLEAR = 0
@@ -220,12 +220,12 @@ def single_image_stacking_hls(
220
220
:return:
221
221
"""
222
222
try :
223
- QA_band = gdal_array .LoadFile (join (join ( source_dir , folder ) , "{}.Fmask.tif" .format (folder )))
223
+ QA_band = gdal_array .LoadFile (join (folder , "{}.Fmask.tif" .format (folder . split ( '/' )[ - 1 ] )))
224
224
except ValueError as e :
225
225
# logger.error('Cannot open QA band for {}: {}'.format(folder, e))
226
- logger .error ("Cannot open QA band for {}: {}" .format (folder , e ))
226
+ logger .error ("Cannot open QA band for {}: {}" .format (folder . split ( '/' )[ - 1 ] , e ))
227
227
return False
228
-
228
+
229
229
# convertQA = np.vectorize(qabitval)
230
230
QA_band_unpacked = qabitval_array_HLS (QA_band ).astype (np .short )
231
231
if clear_threshold > 0 :
@@ -236,7 +236,7 @@ def single_image_stacking_hls(
236
236
clear_ratio = 1
237
237
238
238
if clear_ratio > clear_threshold :
239
- [collection , sensor , tile_id , imagetime , version1 , version2 ] = folder .rsplit ("." )
239
+ [collection , sensor , tile_id , imagetime , version1 , version2 ] = folder .split ( '/' )[ - 1 ]. rsplit ("." )
240
240
year = imagetime [0 :4 ]
241
241
doy = imagetime [4 :7 ]
242
242
file_name = sensor + tile_id + year + doy + collection + version1
@@ -250,54 +250,54 @@ def single_image_stacking_hls(
250
250
if sensor == "L30" :
251
251
try :
252
252
B1 = gdal_array .LoadFile (
253
- join (join ( source_dir , folder ) , "{}.B02.tif" .format (folder ))
253
+ join (folder , "{}.B02.tif" .format (folder . split ( '/' )[ - 1 ] ))
254
254
)
255
255
B2 = gdal_array .LoadFile (
256
- join (join ( source_dir , folder ) , "{}.B03.tif" .format (folder ))
256
+ join (folder , "{}.B03.tif" .format (folder . split ( '/' )[ - 1 ] ))
257
257
)
258
258
B3 = gdal_array .LoadFile (
259
- join (join ( source_dir , folder ) , "{}.B04.tif" .format (folder ))
259
+ join (folder , "{}.B04.tif" .format (folder . split ( '/' )[ - 1 ] ))
260
260
)
261
261
B4 = gdal_array .LoadFile (
262
- join (join ( source_dir , folder ) , "{}.B05.tif" .format (folder ))
262
+ join (folder , "{}.B05.tif" .format (folder . split ( '/' )[ - 1 ] ))
263
263
)
264
264
B5 = gdal_array .LoadFile (
265
- join (join ( source_dir , folder ) , "{}.B06.tif" .format (folder ))
265
+ join (folder , "{}.B06.tif" .format (folder . split ( '/' )[ - 1 ] ))
266
266
)
267
267
B6 = gdal_array .LoadFile (
268
- join (join ( source_dir , folder ) , "{}.B07.tif" .format (folder ))
268
+ join (folder , "{}.B07.tif" .format (folder . split ( '/' )[ - 1 ] ))
269
269
)
270
270
B7 = np .full (B6 .shape , 0 ) # assign zero
271
271
272
272
except Exception as e :
273
273
# logger.error('Cannot open spectral bands for {}: {}'.format(folder, e))
274
- logger .error ("Cannot open Landsat bands for {}: {}" .format (folder , e ))
274
+ logger .error ("Cannot open Landsat bands for {}: {}" .format (folder . split ( '/' )[ - 1 ] , e ))
275
275
return False
276
276
elif sensor == "S30" :
277
277
try :
278
278
B1 = gdal_array .LoadFile (
279
- join (join ( source_dir , folder ) , "{}.B02.tif" .format (folder ))
279
+ join (folder , "{}.B02.tif" .format (folder . split ( '/' )[ - 1 ] ))
280
280
)
281
281
B2 = gdal_array .LoadFile (
282
- join (join ( source_dir , folder ) , "{}.B03.tif" .format (folder ))
282
+ join (folder , "{}.B03.tif" .format (folder . split ( '/' )[ - 1 ] ))
283
283
)
284
284
B3 = gdal_array .LoadFile (
285
- join (join ( source_dir , folder ) , "{}.B04.tif" .format (folder ))
285
+ join (folder , "{}.B04.tif" .format (folder . split ( '/' )[ - 1 ] ))
286
286
)
287
287
B4 = gdal_array .LoadFile (
288
- join (join ( source_dir , folder ) , "{}.B8A.tif" .format (folder ))
288
+ join (folder , "{}.B8A.tif" .format (folder . split ( '/' )[ - 1 ] ))
289
289
)
290
290
B5 = gdal_array .LoadFile (
291
- join (join ( source_dir , folder ) , "{}.B11.tif" .format (folder ))
291
+ join (folder , "{}.B11.tif" .format (folder . split ( '/' )[ - 1 ] ))
292
292
)
293
293
B6 = gdal_array .LoadFile (
294
- join (join ( source_dir , folder ) , "{}.B12.tif" .format (folder ))
294
+ join (folder , "{}.B12.tif" .format (folder . split ( '/' )[ - 1 ] ))
295
295
)
296
296
B7 = np .full (B6 .shape , 0 )
297
297
298
298
except Exception as e :
299
299
# logger.error('Cannot open spectral bands for {}: {}'.format(folder, e))
300
- logger .error ("Cannot open Landsat bands for {}: {}" .format (folder , e ))
300
+ logger .error ("Cannot open Landsat bands for {}: {}" .format (folder . split ( '/' )[ - 1 ] , e ))
301
301
return False
302
302
303
303
if (
@@ -1840,6 +1840,8 @@ def main(
1840
1840
]
1841
1841
elif collection == "HLS" :
1842
1842
folder_list = [f for f in listdir (source_dir ) if f .startswith ("HLS" )]
1843
+ if folder_list == []:
1844
+ folder_list = [folder for folder , dir , file in os .walk (source_dir ) if Path (folder ).name .startswith ('HLS.' )]
1843
1845
elif collection == "HLS14" :
1844
1846
folder_list = [y for x in os .walk (source_dir ) for y in glob (os .path .join (x [0 ], "*.hdf" ))]
1845
1847
@@ -1864,18 +1866,16 @@ def main(
1864
1866
"AutoPrepareDataARD starts: {}" .format (datetime .now (tz ).strftime ("%Y-%m-%d %H:%M:%S" ))
1865
1867
)
1866
1868
1867
- if not os .path .exists (out_dir ):
1868
- os .mkdir (out_dir )
1869
+ os .makedirs (out_dir , exist_ok = True )
1869
1870
1870
1871
if is_partition is True :
1871
1872
for i in range (dataset_info .n_block_y ):
1872
1873
for j in range (dataset_info .n_block_x ):
1873
1874
block_folder = "block_x{}_y{}" .format (j + 1 , i + 1 )
1874
1875
if not os .path .exists (join (out_dir , block_folder )):
1875
- os .mkdir (join (out_dir , block_folder ))
1876
+ os .makedirs (join (out_dir , block_folder ))
1876
1877
1877
- if not os .path .exists (tmp_path ):
1878
- os .mkdir (tmp_path )
1878
+ os .makedirs (tmp_path , exist_ok = True )
1879
1879
1880
1880
if hpc is True :
1881
1881
if collection == "ARD" or collection == "ARD-C2" :
@@ -1937,8 +1937,8 @@ def main(
1937
1937
]
1938
1938
elif collection == "HLS" :
1939
1939
ordinal_dates = [
1940
- pd .Timestamp .toordinal (dt .datetime (int (folder [15 :19 ]), 1 , 1 ))
1941
- + int (folder [19 :22 ])
1940
+ pd .Timestamp .toordinal (dt .datetime (int (folder . split ( '/' )[ - 1 ] [15 :19 ]), 1 , 1 ))
1941
+ + int (folder . split ( '/' )[ - 1 ] [19 :22 ])
1942
1942
- 1
1943
1943
for folder in folder_list
1944
1944
]
0 commit comments