|
27 | 27 |
|
28 | 28 | logger = logging.getLogger(__name__) |
29 | 29 |
|
| 30 | + |
| 31 | +def copy_prior_to_posterior( |
| 32 | + posterior_filename: str, |
| 33 | + posterior_UQ_filename: str, |
| 34 | + posterior_flag_filename: str, |
| 35 | + posterior_bias_filename: str, |
| 36 | + posterior_bias_UQ_filename: str, |
| 37 | + prior_filename: str, |
| 38 | + prior_UQ_filename: str, |
| 39 | + prior_flag_filename: str, |
| 40 | + prior_bias_filename: str, |
| 41 | + prior_bias_UQ_filename: str, |
| 42 | +): |
| 43 | + """Helper function to assist with creating nearly-identical STARS granules""" |
| 44 | + pairings = [ |
| 45 | + (posterior_filename, prior_filename), |
| 46 | + (posterior_UQ_filename, prior_UQ_filename), |
| 47 | + (posterior_flag_filename, prior_flag_filename), |
| 48 | + (posterior_bias_filename, prior_bias_filename), |
| 49 | + (posterior_bias_UQ_filename, prior_bias_UQ_filename), |
| 50 | + ] |
| 51 | + |
| 52 | + for posterior, prior in pairings: |
| 53 | + image = Raster.open(prior) |
| 54 | + image.to_geotiff(posterior, use_compression=False, include_preview=False) |
| 55 | + |
30 | 56 | def process_STARS_product( |
31 | 57 | tile: str, |
32 | 58 | date_UTC: date, |
@@ -192,30 +218,46 @@ def process_STARS_product( |
192 | 218 |
|
193 | 219 | # Run Julia data fusion for NDVI, conditionally including prior data |
194 | 220 | if using_prior: |
195 | | - logger.info("Running Julia data fusion for NDVI with prior data.") |
196 | | - process_julia_data_fusion( |
197 | | - tile=tile, |
198 | | - coarse_cell_size=NDVI_resolution, |
199 | | - fine_cell_size=target_resolution, |
200 | | - VIIRS_start_date=VIIRS_start_date, |
201 | | - VIIRS_end_date=VIIRS_end_date, |
202 | | - HLS_start_date=HLS_start_date, |
203 | | - HLS_end_date=HLS_end_date, |
204 | | - downsampled_directory=downsampled_directory, |
205 | | - product_name="NDVI", |
206 | | - posterior_filename=posterior_NDVI_filename, |
207 | | - posterior_UQ_filename=posterior_NDVI_UQ_filename, |
208 | | - posterior_flag_filename=posterior_NDVI_flag_filename, |
209 | | - posterior_bias_filename=posterior_NDVI_bias_filename, |
210 | | - posterior_bias_UQ_filename=posterior_NDVI_bias_UQ_filename, |
211 | | - prior_filename=prior.prior_NDVI_filename, |
212 | | - prior_UQ_filename=prior.prior_NDVI_UQ_filename, |
213 | | - prior_bias_filename=prior.prior_NDVI_bias_filename, |
214 | | - prior_bias_UQ_filename=prior.prior_NDVI_bias_UQ_filename, |
215 | | - initialize_julia=initialize_julia, |
216 | | - threads=threads, |
217 | | - num_workers=num_workers, |
218 | | - ) |
| 221 | + if prior.prior_date_UTC == date_UTC: |
| 222 | + # WARNING: prior_NDVI_flag_filename is using Apache Zip VFS syntax, and is not suitable |
| 223 | + # for use with Julia or GDAL |
| 224 | + copy_prior_to_posterior( |
| 225 | + posterior_filename=posterior_NDVI_filename, |
| 226 | + posterior_UQ_filename=posterior_NDVI_UQ_filename, |
| 227 | + posterior_flag_filename=posterior_NDVI_flag_filename, |
| 228 | + posterior_bias_filename=posterior_NDVI_bias_filename, |
| 229 | + posterior_bias_UQ_filename=posterior_NDVI_bias_UQ_filename, |
| 230 | + prior_filename=prior.prior_NDVI_filename, |
| 231 | + prior_UQ_filename=prior.prior_NDVI_UQ_filename, |
| 232 | + prior_flag_filename=prior.prior_NDVI_flag_filename, |
| 233 | + prior_bias_filename=prior.prior_NDVI_bias_filename, |
| 234 | + prior_bias_UQ_filename=prior.prior_NDVI_bias_UQ_filename, |
| 235 | + ) |
| 236 | + else: |
| 237 | + logger.info("Running Julia data fusion for NDVI with prior data.") |
| 238 | + process_julia_data_fusion( |
| 239 | + tile=tile, |
| 240 | + coarse_cell_size=NDVI_resolution, |
| 241 | + fine_cell_size=target_resolution, |
| 242 | + VIIRS_start_date=VIIRS_start_date, |
| 243 | + VIIRS_end_date=VIIRS_end_date, |
| 244 | + HLS_start_date=HLS_start_date, |
| 245 | + HLS_end_date=HLS_end_date, |
| 246 | + downsampled_directory=downsampled_directory, |
| 247 | + product_name="NDVI", |
| 248 | + posterior_filename=posterior_NDVI_filename, |
| 249 | + posterior_UQ_filename=posterior_NDVI_UQ_filename, |
| 250 | + posterior_flag_filename=posterior_NDVI_flag_filename, |
| 251 | + posterior_bias_filename=posterior_NDVI_bias_filename, |
| 252 | + posterior_bias_UQ_filename=posterior_NDVI_bias_UQ_filename, |
| 253 | + prior_filename=prior.prior_NDVI_filename, |
| 254 | + prior_UQ_filename=prior.prior_NDVI_UQ_filename, |
| 255 | + prior_bias_filename=prior.prior_NDVI_bias_filename, |
| 256 | + prior_bias_UQ_filename=prior.prior_NDVI_bias_UQ_filename, |
| 257 | + initialize_julia=initialize_julia, |
| 258 | + threads=threads, |
| 259 | + num_workers=num_workers, |
| 260 | + ) |
219 | 261 | else: |
220 | 262 | logger.info("Running Julia data fusion for NDVI without prior data.") |
221 | 263 | process_julia_data_fusion( |
@@ -294,30 +336,46 @@ def process_STARS_product( |
294 | 336 |
|
295 | 337 | # Run Julia data fusion for albedo, conditionally including prior data |
296 | 338 | if using_prior: |
297 | | - logger.info("Running Julia data fusion for albedo with prior data.") |
298 | | - process_julia_data_fusion( |
299 | | - tile=tile, |
300 | | - coarse_cell_size=albedo_resolution, |
301 | | - fine_cell_size=target_resolution, |
302 | | - VIIRS_start_date=VIIRS_start_date, |
303 | | - VIIRS_end_date=VIIRS_end_date, |
304 | | - HLS_start_date=HLS_start_date, |
305 | | - HLS_end_date=HLS_end_date, |
306 | | - downsampled_directory=downsampled_directory, |
307 | | - product_name="albedo", |
308 | | - posterior_filename=posterior_albedo_filename, |
309 | | - posterior_UQ_filename=posterior_albedo_UQ_filename, |
310 | | - posterior_flag_filename=posterior_albedo_flag_filename, |
311 | | - posterior_bias_filename=posterior_albedo_bias_filename, |
312 | | - posterior_bias_UQ_filename=posterior_albedo_bias_UQ_filename, |
313 | | - prior_filename=prior.prior_albedo_filename, |
314 | | - prior_UQ_filename=prior.prior_albedo_UQ_filename, |
315 | | - prior_bias_filename=prior.prior_albedo_bias_filename, |
316 | | - prior_bias_UQ_filename=prior.prior_albedo_bias_UQ_filename, |
317 | | - initialize_julia=initialize_julia, |
318 | | - threads=threads, |
319 | | - num_workers=num_workers, |
320 | | - ) |
| 339 | + if prior.prior_date_UTC == date_UTC: |
| 340 | + # WARNING: prior_NDVI_flag_filename is using Apache Zip VFS syntax, and is not suitable |
| 341 | + # for use with Julia or GDAL |
| 342 | + copy_prior_to_posterior( |
| 343 | + posterior_filename=posterior_albedo_filename, |
| 344 | + posterior_UQ_filename=posterior_albedo_UQ_filename, |
| 345 | + posterior_flag_filename=posterior_albedo_flag_filename, |
| 346 | + posterior_bias_filename=posterior_albedo_bias_filename, |
| 347 | + posterior_bias_UQ_filename=posterior_albedo_bias_UQ_filename, |
| 348 | + prior_filename=prior.prior_albedo_filename, |
| 349 | + prior_UQ_filename=prior.prior_albedo_UQ_filename, |
| 350 | + prior_flag_filename=prior.prior_albedo_flag_filename, |
| 351 | + prior_bias_filename=prior.prior_albedo_bias_filename, |
| 352 | + prior_bias_UQ_filename=prior.prior_albedo_bias_UQ_filename, |
| 353 | + ) |
| 354 | + else: |
| 355 | + logger.info("Running Julia data fusion for albedo with prior data.") |
| 356 | + process_julia_data_fusion( |
| 357 | + tile=tile, |
| 358 | + coarse_cell_size=albedo_resolution, |
| 359 | + fine_cell_size=target_resolution, |
| 360 | + VIIRS_start_date=VIIRS_start_date, |
| 361 | + VIIRS_end_date=VIIRS_end_date, |
| 362 | + HLS_start_date=HLS_start_date, |
| 363 | + HLS_end_date=HLS_end_date, |
| 364 | + downsampled_directory=downsampled_directory, |
| 365 | + product_name="albedo", |
| 366 | + posterior_filename=posterior_albedo_filename, |
| 367 | + posterior_UQ_filename=posterior_albedo_UQ_filename, |
| 368 | + posterior_flag_filename=posterior_albedo_flag_filename, |
| 369 | + posterior_bias_filename=posterior_albedo_bias_filename, |
| 370 | + posterior_bias_UQ_filename=posterior_albedo_bias_UQ_filename, |
| 371 | + prior_filename=prior.prior_albedo_filename, |
| 372 | + prior_UQ_filename=prior.prior_albedo_UQ_filename, |
| 373 | + prior_bias_filename=prior.prior_albedo_bias_filename, |
| 374 | + prior_bias_UQ_filename=prior.prior_albedo_bias_UQ_filename, |
| 375 | + initialize_julia=initialize_julia, |
| 376 | + threads=threads, |
| 377 | + num_workers=num_workers, |
| 378 | + ) |
321 | 379 | else: |
322 | 380 | logger.info("Running Julia data fusion for albedo without prior data.") |
323 | 381 | process_julia_data_fusion( |
|
0 commit comments