From 53a74de4d9ce5506e82b4bd92878ca248f1c8daa Mon Sep 17 00:00:00 2001 From: Richard Law Date: Tue, 14 Nov 2023 17:38:38 +1300 Subject: [PATCH] better handling of null data for JRC data --- src/Snakefile | 3 +-- src/rules/jrc.smk | 12 +++++++----- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/src/Snakefile b/src/Snakefile index d70279b..bcd6d4d 100644 --- a/src/Snakefile +++ b/src/Snakefile @@ -35,8 +35,7 @@ include: "rules/comparison.smk" get_nearest = lambda options, candidate: min(options, key=lambda x: abs(int(x)-int(candidate))) rule all: - input: - expand(ARCHIVE, year=TARGET_YEARS) + input: ARCHIVE source=lambda wc, input: pathlib.PurePosixPath(input.source).relative_to(OUTD), diff --git a/src/rules/jrc.smk b/src/rules/jrc.smk index 8000b70..0785d66 100644 --- a/src/rules/jrc.smk +++ b/src/rules/jrc.smk @@ -35,7 +35,7 @@ rule download_unzip_merge_jeodpp: year='\d{4}' params: urls=lambda wildcards: JEODPP_URLS[get_nearest(JEODPP_URLS, wildcards.year)], - res=lambda wildcards: JEODPP_RESOLUTION[get_nearest(JEODPP_RESOLUTION, wildcards.year)], + res=lambda wildcards: JEODPP_RESOLUTION[get_nearest(JEODPP_RESOLUTION, wildcards.year)], extent=config['extent'], creation_options=" ".join(f'-co {k}={v}' for k, v in config['compression_co']['zstd_pred2'].items()) conda: '../envs/gdal.yml' @@ -67,18 +67,20 @@ rule footprint_built: res=lambda wildcards: JEODPP_RESOLUTION[get_nearest(JEODPP_RESOLUTION, wildcards.year)], extent=config['extent'], creation_options_a=" ".join(f'-co {k}={v}' for k, v in config['compression_co']['zstd_pred2'].items()), - creation_options_b=" ".join(f'--co {k}={v}' for k, v in config['compression_co']['zstd_pred2'].items()) + creation_options_b=" ".join(f'--co {k}={v}' for k, v in config['compression_co']['zstd_pred2'].items()), + srcnodata=lambda wildcards: 255 if JEODPP_RESOLUTION[get_nearest(JEODPP_RESOLUTION, wildcards.year)] == 10 else 65535 shell: ''' mkdir -p $(dirname {output}) if [ {params.res} -ne 100 ]; then gdalwarp -tr 100 100 -r sum -ot UInt16 \ -te {params.extent} -overwrite {params.creation_options_a} \ -multi -wo NUM_THREADS=ALL_CPUS \ + -srcnodata {params.srcnodata} \ {input} {input}.100.tif else cp {input} {input}.100.tif fi - gdal_calc.py --outfile={output} -A {input}.100.tif --calc="4*((A>0)&(A<=2000))+10*(A>2000)" --overwrite {params.creation_options_b} - gdal_edit.py -stats -a_srs EPSG:3851 {output} - rm {input}.100.tif + gdal_calc.py --outfile={output}.tmp.tif -A {input}.100.tif --calc="4*((A>0)&(A<=2000))+10*(A>2000)" --overwrite {params.creation_options_b} && rm {input}.100.tif + gdal_edit.py -stats -a_srs EPSG:3851 {output}.tmp.tif + gdalwarp -dstnodata 0 {output}.tmp.tif {output} && rm {output}.tmp.tif ''' \ No newline at end of file