bopen / c3s-eqc-toolbox-template

CADS Toolbox template application
Apache License 2.0
5 stars 4 forks source link

Need to estimate quantitative change in albedo values area #128

Closed akankshabalha closed 7 months ago

akankshabalha commented 8 months ago

Notebook description

In the attached notebook, I have downloaded and transform the albedo satellite dataset for noaa_11 and proba. I want to elaborate the nb code to achieve following objectives:

1) The spatial resolution of both the datasets (noaa: 4km and proba: 1km) is different. Hence, I tried to regrid noaa dataset at similar resolution as that of proba. It provided me the regridded noaa map but with a warning (mentioned in the nb). Could you please help me in resolving the warning.

2) In proba map, I want to estimate the area covered by pixels having albedo values > 0.1625 as well as < 0.1625. Similarly, in regridded noaa map, I want to estimate the area covered by pixels having albedo values > 0.215 as well as < 0.215. The purpose is to determine how much lower albedo values area have decreased/increased over the time-period. Albedo_Forests.zip

Notebook link or upload

No response

Anything else we need to know?

No response

Environment

name: wp5 channels: - conda-forge dependencies: - _libgcc_mutex=0.1=conda_forge - _openmp_mutex=4.5=2_gnu - affine=2.4.0=pyhd8ed1ab_0 - aiohttp=3.9.1=py311h459d7ec_0 - aiosignal=1.3.1=pyhd8ed1ab_0 - alsa-lib=1.2.10=hd590300_0 - annotated-types=0.6.0=pyhd8ed1ab_0 - ansiwrap=0.8.4=py_0 - antlr-python-runtime=4.11.1=pyhd8ed1ab_0 - anyio=4.2.0=pyhd8ed1ab_0 - argon2-cffi=23.1.0=pyhd8ed1ab_0 - argon2-cffi-bindings=21.2.0=py311h459d7ec_4 - arrow=1.3.0=pyhd8ed1ab_0 - asciitree=0.3.3=py_2 - asttokens=2.4.1=pyhd8ed1ab_0 - async-lru=2.0.4=pyhd8ed1ab_0 - attr=2.5.1=h166bdaf_1 - attrs=23.2.0=pyh71513ae_0 - aws-c-auth=0.7.11=h0b4cabd_1 - aws-c-cal=0.6.9=h14ec70c_3 - aws-c-common=0.9.12=hd590300_0 - aws-c-compression=0.2.17=h572eabf_8 - aws-c-event-stream=0.4.1=h97bb272_2 - aws-c-http=0.8.0=h9129f04_2 - aws-c-io=0.14.0=hf8f278a_1 - aws-c-mqtt=0.10.0=h2b97f5f_3 - aws-c-s3=0.4.7=hca09fc5_4 - aws-c-sdkutils=0.1.13=h572eabf_1 - aws-checksums=0.1.17=h572eabf_7 - aws-crt-cpp=0.26.0=hd740b11_7 - aws-sdk-cpp=1.11.210=hba3e011_10 - azure-core-cpp=1.10.3=h91d86a7_0 - azure-storage-blobs-cpp=12.10.0=h00ab1b0_0 - azure-storage-common-cpp=12.5.0=hb858b4b_2 - babel=2.14.0=pyhd8ed1ab_0 - beautifulsoup4=4.12.2=pyha770c72_0 - black=23.12.1=py311h38be061_0 - bleach=6.1.0=pyhd8ed1ab_0 - blosc=1.21.5=h0f2a231_0 - bokeh=3.3.3=pyhd8ed1ab_0 - bottleneck=1.3.7=py311h1f0f07a_1 - branca=0.7.0=pyhd8ed1ab_1 - brotli=1.1.0=hd590300_1 - brotli-bin=1.1.0=hd590300_1 - brotli-python=1.1.0=py311hb755f60_1 - bzip2=1.0.8=hd590300_5 - c-ares=1.25.0=hd590300_0 - ca-certificates=2023.11.17=hbcca054_0 - cached-property=1.5.2=hd8ed1ab_1 - cached_property=1.5.2=pyha770c72_1 - cairo=1.18.0=h3faef2a_0 - cartopy=0.22.0=py311h320fe9a_1 - cdsapi=0.6.1=pyhd8ed1ab_0 - certifi=2023.11.17=pyhd8ed1ab_0 - cf-units=3.2.0=py311h1f0f07a_4 - cf_xarray=0.8.7=pyhd8ed1ab_0 - cffi=1.16.0=py311hb3a22ac_0 - cfgrib=0.9.10.4=pyhd8ed1ab_0 - cfitsio=4.3.1=hbdc6101_0 - cftime=1.6.3=py311h1f0f07a_0 - charset-normalizer=3.3.2=pyhd8ed1ab_0 - click=8.1.7=unix_pyh707e725_0 - click-plugins=1.1.1=py_0 - cligj=0.7.2=pyhd8ed1ab_1 - cloudpickle=3.0.0=pyhd8ed1ab_0 - cmocean=3.0.3=pyhd8ed1ab_0 - colorama=0.4.6=pyhd8ed1ab_0 - colorspacious=1.1.2=pyh24bf2e0_0 - comm=0.2.1=pyhd8ed1ab_0 - contourpy=1.2.0=py311h9547e67_0 - cycler=0.12.1=pyhd8ed1ab_0 - cytoolz=0.12.2=py311h459d7ec_1 - dask=2023.12.1=pyhd8ed1ab_0 - dask-core=2023.12.1=pyhd8ed1ab_0 - dbus=1.13.6=h5008d03_3 - debugpy=1.8.0=py311hb755f60_1 - decorator=5.1.1=pyhd8ed1ab_0 - defusedxml=0.7.1=pyhd8ed1ab_0 - distributed=2023.12.1=pyhd8ed1ab_0 - eccodes=2.33.0=he84ddb8_0 - entrypoints=0.4=pyhd8ed1ab_0 - esmf=8.4.2=nompi_h9e768e6_3 - esmpy=8.4.2=pyhc1e730c_4 - exceptiongroup=1.2.0=pyhd8ed1ab_2 - executing=2.0.1=pyhd8ed1ab_0 - expat=2.5.0=hcb278e6_1 - fasteners=0.17.3=pyhd8ed1ab_0 - findlibs=0.0.5=pyhd8ed1ab_0 - fiona=1.9.5=py311hf8e0aa6_3 - flox=0.8.7=pyhd8ed1ab_0 - folium=0.15.1=pyhd8ed1ab_0 - font-ttf-dejavu-sans-mono=2.37=hab24e00_0 - font-ttf-inconsolata=3.000=h77eed37_0 - font-ttf-source-code-pro=2.038=h77eed37_0 - font-ttf-ubuntu=0.83=h77eed37_1 - fontconfig=2.14.2=h14ed4e7_0 - fonts-conda-ecosystem=1=0 - fonts-conda-forge=1=0 - fonttools=4.47.0=py311h459d7ec_0 - fqdn=1.5.1=pyhd8ed1ab_0 - freeglut=3.2.2=hac7e632_2 - freetype=2.12.1=h267a509_2 - freexl=2.0.0=h743c826_0 - frozenlist=1.4.1=py311h459d7ec_0 - fsspec=2023.12.2=pyhca7485f_0 - gdal=3.8.3=py311h39b4e0e_0 - geopandas=0.14.2=pyhd8ed1ab_0 - geopandas-base=0.14.2=pyha770c72_0 - geos=3.12.1=h59595ed_0 - geotiff=1.7.1=h6b2125f_15 - gettext=0.21.1=h27087fc_0 - gflags=2.2.2=he1b5a44_1004 - giflib=5.2.1=h0b41bf4_3 - glib=2.78.3=hfc55251_0 - glib-tools=2.78.3=hfc55251_0 - glog=0.6.0=h6f12383_0 - gmp=6.3.0=h59595ed_0 - graphite2=1.3.13=h58526e2_1001 - greenlet=3.0.3=py311hb755f60_0 - gst-plugins-base=1.22.8=h8e1006c_1 - gstreamer=1.22.8=h98fc4e7_1 - harfbuzz=8.3.0=h3d44ed6_0 - hdf4=4.2.15=h2a13503_7 - hdf5=1.14.3=nompi_h4f84152_100 - icu=73.2=h59595ed_0 - idna=3.6=pyhd8ed1ab_0 - importlib-metadata=7.0.1=pyha770c72_0 - importlib_metadata=7.0.1=hd8ed1ab_0 - importlib_resources=6.1.1=pyhd8ed1ab_0 - ipykernel=6.28.0=pyhd33586a_0 - ipython=8.20.0=pyh707e725_0 - isoduration=20.11.0=pyhd8ed1ab_0 - jasper=4.1.1=he6dfbbe_0 - jedi=0.19.1=pyhd8ed1ab_0 - jinja2=3.1.3=pyhd8ed1ab_0 - joblib=1.3.2=pyhd8ed1ab_0 - json-c=0.17=h7ab15ed_0 - json5=0.9.14=pyhd8ed1ab_0 - jsonpointer=2.4=py311h38be061_3 - jsonschema=4.20.0=pyhd8ed1ab_0 - jsonschema-specifications=2023.12.1=pyhd8ed1ab_0 - jsonschema-with-format-nongpl=4.20.0=pyhd8ed1ab_0 - jupyter-lsp=2.2.1=pyhd8ed1ab_0 - jupyter_client=8.6.0=pyhd8ed1ab_0 - jupyter_core=5.7.1=py311h38be061_0 - jupyter_events=0.9.0=pyhd8ed1ab_0 - jupyter_server=2.12.3=pyhd8ed1ab_0 - jupyter_server_terminals=0.5.1=pyhd8ed1ab_0 - jupyterlab=4.0.10=pyhd8ed1ab_0 - jupyterlab_pygments=0.3.0=pyhd8ed1ab_0 - jupyterlab_server=2.25.2=pyhd8ed1ab_0 - kealib=1.5.3=h2f55d51_0 - keyutils=1.6.1=h166bdaf_0 - kiwisolver=1.4.5=py311h9547e67_1 - krb5=1.21.2=h659d440_0 - lame=3.100=h166bdaf_1003 - lcms2=2.16=hb7c19ff_0 - ld_impl_linux-64=2.40=h41732ed_0 - lerc=4.0.0=h27087fc_0 - libabseil=20230802.1=cxx17_h59595ed_0 - libaec=1.1.2=h59595ed_1 - libarchive=3.7.2=h2aa1ff5_1 - libarrow=14.0.2=h84dd17c_2_cpu - libarrow-acero=14.0.2=h59595ed_2_cpu - libarrow-dataset=14.0.2=h59595ed_2_cpu - libarrow-flight=14.0.2=h120cb0d_2_cpu - libarrow-flight-sql=14.0.2=h61ff412_2_cpu - libarrow-gandiva=14.0.2=hacb8726_2_cpu - libarrow-substrait=14.0.2=h61ff412_2_cpu - libblas=3.9.0=20_linux64_openblas - libboost-headers=1.84.0=ha770c72_0 - libbrotlicommon=1.1.0=hd590300_1 - libbrotlidec=1.1.0=hd590300_1 - libbrotlienc=1.1.0=hd590300_1 - libcap=2.69=h0f662aa_0 - libcblas=3.9.0=20_linux64_openblas - libclang=15.0.7=default_hb11cfb5_4 - libclang13=15.0.7=default_ha2b6cf4_4 - libcrc32c=1.1.2=h9c3ff4c_0 - libcups=2.3.3=h4637d8d_4 - libcurl=8.5.0=hca28451_0 - libdeflate=1.19=hd590300_0 - libedit=3.1.20191231=he28a2e2_2 - libev=4.33=hd590300_2 - libevent=2.1.12=hf998b51_1 - libexpat=2.5.0=hcb278e6_1 - libffi=3.4.2=h7f98852_5 - libflac=1.4.3=h59595ed_0 - libgcc-ng=13.2.0=h807b86a_3 - libgcrypt=1.10.3=hd590300_0 - libgdal=3.8.3=hcd1fc54_0 - libgfortran-ng=13.2.0=h69a702a_3 - libgfortran5=13.2.0=ha4646dd_3 - libglib=2.78.3=h783c2da_0 - libglu=9.0.0=hac7e632_1003 - libgomp=13.2.0=h807b86a_3 - libgoogle-cloud=2.12.0=h5206363_4 - libgpg-error=1.47=h71f35ed_0 - libgrpc=1.59.3=hd6c4280_0 - libiconv=1.17=hd590300_2 - libjpeg-turbo=3.0.0=hd590300_1 - libkml=1.3.0=h01aab08_1018 - liblapack=3.9.0=20_linux64_openblas - libllvm14=14.0.6=hcd5def8_4 - libllvm15=15.0.7=hb3ce162_4 - libnetcdf=4.9.2=nompi_h9612171_113 - libnghttp2=1.58.0=h47da74e_1 - libnl=3.9.0=hd590300_0 - libnsl=2.0.1=hd590300_0 - libnuma=2.0.16=h0b41bf4_1 - libogg=1.3.4=h7f98852_1 - libopenblas=0.3.25=pthreads_h413a1c8_0 - libopus=1.3.1=h7f98852_1 - libparquet=14.0.2=h352af49_2_cpu - libpng=1.6.39=h753d276_0 - libpq=16.1=h33b98f1_7 - libprotobuf=4.24.4=hf27288f_0 - libre2-11=2023.06.02=h7a70373_0 - librttopo=1.1.0=h8917695_15 - libsndfile=1.2.2=hc60ed4a_1 - libsodium=1.0.18=h36c2ea0_1 - libspatialindex=1.9.3=h9c3ff4c_4 - libspatialite=5.1.0=h7bd4643_4 - libsqlite=3.44.2=h2797004_0 - libssh2=1.11.0=h0841786_0 - libstdcxx-ng=13.2.0=h7e041cc_3 - libsystemd0=255=h3516f8a_0 - libthrift=0.19.0=hb90f79a_1 - libtiff=4.6.0=ha9c0a0a_2 - libudunits2=2.2.28=h40f5838_3 - libutf8proc=2.8.0=h166bdaf_0 - libuuid=2.38.1=h0b41bf4_0 - libvorbis=1.3.7=h9c3ff4c_0 - libwebp-base=1.3.2=hd590300_0 - libxcb=1.15=h0b41bf4_0 - libxcrypt=4.4.36=hd590300_1 - libxkbcommon=1.6.0=hd429924_1 - libxml2=2.12.3=h232c23b_0 - libzip=1.10.1=h2629f0a_3 - libzlib=1.2.13=hd590300_5 - llvmlite=0.41.1=py311ha6695c7_0 - locket=1.0.0=pyhd8ed1ab_0 - lz4=4.3.3=py311h38e4bf4_0 - lz4-c=1.9.4=hcb278e6_0 - lzo=2.10=h516909a_1000 - mapclassify=2.6.1=pyhd8ed1ab_0 - markdown-it-py=3.0.0=pyhd8ed1ab_0 - markupsafe=2.1.3=py311h459d7ec_1 - matplotlib=3.8.2=py311h38be061_0 - matplotlib-base=3.8.2=py311h54ef318_0 - matplotlib-inline=0.1.6=pyhd8ed1ab_0 - mdurl=0.1.2=pyhd8ed1ab_0 - minizip=4.0.4=h0ab5242_0 - mistune=3.0.2=pyhd8ed1ab_0 - mpg123=1.32.3=h59595ed_0 - msgpack-python=1.0.7=py311h9547e67_0 - multidict=6.0.4=py311h459d7ec_1 - munkres=1.1.4=pyh9f0ad1d_0 - mypy_extensions=1.0.0=pyha770c72_0 - mysql-common=8.0.33=hf1915f5_6 - mysql-libs=8.0.33=hca2cd23_6 - nbclient=0.8.0=pyhd8ed1ab_0 - nbconvert=7.14.0=pyhd8ed1ab_0 - nbconvert-core=7.14.0=pyhd8ed1ab_0 - nbconvert-pandoc=7.14.0=pyhd8ed1ab_0 - nbformat=5.9.2=pyhd8ed1ab_0 - nc-time-axis=1.4.1=pyhd8ed1ab_0 - ncurses=6.4=h59595ed_2 - nest-asyncio=1.5.8=pyhd8ed1ab_0 - netcdf-fortran=4.6.1=nompi_hacb5139_103 - netcdf4=1.6.5=nompi_py311he8ad708_100 - networkx=3.2.1=pyhd8ed1ab_0 - notebook-shim=0.2.3=pyhd8ed1ab_0 - nspr=4.35=h27087fc_0 - nss=3.96=h1d7d5a4_0 - numba=0.58.1=py311h96b013e_0 - numcodecs=0.12.1=py311hb755f60_0 - numpy=1.26.3=py311h64a7726_0 - numpy_groupies=0.10.2=pyhd8ed1ab_0 - openjpeg=2.5.0=h488ebb8_3 - openssl=3.2.0=hd590300_1 - orc=1.9.2=h4b38347_0 - overrides=7.4.0=pyhd8ed1ab_0 - packaging=23.2=pyhd8ed1ab_0 - pandas=2.1.4=py311h320fe9a_0 - pandoc=3.1.3=h32600fe_0 - pandocfilters=1.5.0=pyhd8ed1ab_0 - papermill=2.4.0=pyhd8ed1ab_0 - parso=0.8.3=pyhd8ed1ab_0 - partd=1.4.1=pyhd8ed1ab_0 - pathspec=0.12.1=pyhd8ed1ab_0 - patsy=0.5.6=pyhd8ed1ab_0 - pcre2=10.42=hcad00b1_0 - pexpect=4.8.0=pyh1a96a4e_2 - pickleshare=0.7.5=py_1003 - pillow=10.2.0=py311ha6c5da5_0 - pip=23.3.2=pyhd8ed1ab_0 - pixman=0.43.0=h59595ed_0 - pkgutil-resolve-name=1.3.10=pyhd8ed1ab_1 - platformdirs=4.1.0=pyhd8ed1ab_0 - plotly=5.18.0=pyhd8ed1ab_0 - ply=3.11=py_1 - pooch=1.8.0=pyhd8ed1ab_0 - poppler=23.12.0=h590f24d_0 - poppler-data=0.4.12=hd8ed1ab_0 - postgresql=16.1=h7387d8b_7 - proj=9.3.1=h1d62c97_0 - prometheus_client=0.19.0=pyhd8ed1ab_0 - prompt-toolkit=3.0.42=pyha770c72_0 - properscoring=0.1=py_0 - psutil=5.9.7=py311h459d7ec_0 - pthread-stubs=0.4=h36c2ea0_1001 - ptyprocess=0.7.0=pyhd3deb0d_0 - pulseaudio-client=16.1=hb77b528_5 - pure_eval=0.2.2=pyhd8ed1ab_0 - pwlf=2.2.1=py311h38be061_3 - pyarrow=14.0.2=py311h39c9aba_2_cpu - pyarrow-hotfix=0.6=pyhd8ed1ab_0 - pycparser=2.21=pyhd8ed1ab_0 - pydantic=2.5.3=pyhd8ed1ab_0 - pydantic-core=2.14.6=py311h46250e7_1 - pydantic-settings=2.1.0=pyhd8ed1ab_1 - pydoe=0.3.8=py_1 - pygments=2.17.2=pyhd8ed1ab_0 - pyparsing=3.1.1=pyhd8ed1ab_0 - pyproj=3.6.1=py311hca0b8b9_5 - pyqt=5.15.9=py311hf0fb5b6_5 - pyqt5-sip=12.12.2=py311hb755f60_5 - pyshp=2.3.1=pyhd8ed1ab_0 - pysocks=1.7.1=pyha2e5f31_6 - python=3.11.7=hab00c5b_1_cpython - python-dateutil=2.8.2=pyhd8ed1ab_0 - python-dotenv=1.0.0=pyhd8ed1ab_1 - python-eccodes=1.6.1=py311h1f0f07a_1 - python-fastjsonschema=2.19.1=pyhd8ed1ab_0 - python-json-logger=2.0.7=pyhd8ed1ab_0 - python-tzdata=2023.4=pyhd8ed1ab_0 - python_abi=3.11=4_cp311 - pytz=2023.3.post1=pyhd8ed1ab_0 - pyyaml=6.0.1=py311h459d7ec_1 - pyzmq=25.1.2=py311h34ded2d_0 - qt-main=5.15.8=h450f30e_18 - rasterio=1.3.9=py311ha38370a_2 - rdma-core=49.0=hd3aeb46_2 - re2=2023.06.02=h2873b5e_0 - readline=8.2=h8228510_1 - referencing=0.32.1=pyhd8ed1ab_0 - regionmask=0.11.0=pyhd8ed1ab_0 - requests=2.31.0=pyhd8ed1ab_0 - rfc3339-validator=0.1.4=pyhd8ed1ab_0 - rfc3986-validator=0.1.1=pyh9f0ad1d_0 - rich=13.7.0=pyhd8ed1ab_0 - rioxarray=0.15.0=pyhd8ed1ab_0 - rpds-py=0.16.2=py311h46250e7_0 - rtree=1.1.0=py311h3bb2b0f_0 - s2n=1.4.1=h06160fa_0 - scikit-learn=1.3.2=py311hc009520_2 - scipy=1.11.4=py311h64a7726_0 - seaborn=0.13.1=hd8ed1ab_0 - seaborn-base=0.13.1=pyhd8ed1ab_0 - send2trash=1.8.2=pyh41d4057_0 - setuptools=69.0.3=pyhd8ed1ab_0 - shapely=2.0.2=py311h2032efe_1 - shellingham=1.5.4=pyhd8ed1ab_0 - sip=6.7.12=py311hb755f60_0 - six=1.16.0=pyh6c4a22f_0 - snappy=1.1.10=h9fff704_0 - sniffio=1.3.0=pyhd8ed1ab_0 - snuggs=1.4.7=py_0 - sortedcontainers=2.4.0=pyhd8ed1ab_0 - soupsieve=2.5=pyhd8ed1ab_1 - sparse=0.15.1=pyhd8ed1ab_0 - sqlalchemy=2.0.25=py311h459d7ec_0 - sqlite=3.44.2=h2c6b66d_0 - stack_data=0.6.2=pyhd8ed1ab_0 - statsmodels=0.14.1=py311h1f0f07a_0 - structlog=23.2.0=pyhd8ed1ab_0 - tblib=3.0.0=pyhd8ed1ab_0 - tenacity=8.2.3=pyhd8ed1ab_0 - terminado=0.18.0=pyh0d859eb_0 - textwrap3=0.9.2=py_0 - threadpoolctl=3.2.0=pyha21a80b_0 - tiledb=2.19.0=hc1131af_0 - tinycss2=1.2.1=pyhd8ed1ab_0 - tk=8.6.13=noxft_h4845f30_101 - toml=0.10.2=pyhd8ed1ab_0 - tomli=2.0.1=pyhd8ed1ab_0 - toolz=0.12.0=pyhd8ed1ab_0 - tornado=6.3.3=py311h459d7ec_1 - tqdm=4.66.1=pyhd8ed1ab_0 - traitlets=5.14.1=pyhd8ed1ab_0 - typer=0.9.0=pyhd8ed1ab_0 - types-python-dateutil=2.8.19.20240106=pyhd8ed1ab_0 - typing-extensions=4.9.0=hd8ed1ab_0 - typing_extensions=4.9.0=pyha770c72_0 - typing_utils=0.1.0=pyhd8ed1ab_0 - tzcode=2023d=h3f72095_0 - tzdata=2023d=h0c530f3_0 - ucx=1.15.0=h75e419f_2 - udunits2=2.2.28=h40f5838_3 - uri-template=1.3.0=pyhd8ed1ab_0 - uriparser=0.9.7=hcb278e6_1 - urllib3=2.1.0=pyhd8ed1ab_0 - wcwidth=0.2.13=pyhd8ed1ab_0 - webcolors=1.13=pyhd8ed1ab_0 - webencodings=0.5.1=pyhd8ed1ab_2 - websocket-client=1.7.0=pyhd8ed1ab_0 - wheel=0.42.0=pyhd8ed1ab_0 - xarray=2023.12.0=pyhd8ed1ab_0 - xarraymannkendall=1.4.5=pyhd8ed1ab_0 - xcb-util=0.4.0=hd590300_1 - xcb-util-image=0.4.0=h8ee46fc_1 - xcb-util-keysyms=0.4.0=h8ee46fc_1 - xcb-util-renderutil=0.3.9=hd590300_1 - xcb-util-wm=0.4.1=h8ee46fc_1 - xerces-c=3.2.5=hac6953d_0 - xesmf=0.8.2=pyhd8ed1ab_0 - xhistogram=0.3.2=pyhd8ed1ab_0 - xkeyboard-config=2.40=hd590300_0 - xorg-fixesproto=5.0=h7f98852_1002 - xorg-inputproto=2.3.2=h7f98852_1002 - xorg-kbproto=1.0.7=h7f98852_1002 - xorg-libice=1.1.1=hd590300_0 - xorg-libsm=1.2.4=h7391055_0 - xorg-libx11=1.8.7=h8ee46fc_0 - xorg-libxau=1.0.11=hd590300_0 - xorg-libxdmcp=1.1.3=h7f98852_0 - xorg-libxext=1.3.4=h0b41bf4_2 - xorg-libxfixes=5.0.3=h7f98852_1004 - xorg-libxi=1.7.10=h7f98852_0 - xorg-libxrender=0.9.11=hd590300_0 - xorg-renderproto=0.11.1=h7f98852_1002 - xorg-xextproto=7.3.0=h0b41bf4_1003 - xorg-xf86vidmodeproto=2.3.1=h7f98852_1002 - xorg-xproto=7.0.31=h7f98852_1007 - xskillscore=0.0.24=pyhd8ed1ab_0 - xyzservices=2023.10.1=pyhd8ed1ab_0 - xz=5.2.6=h166bdaf_0 - yaml=0.2.5=h7f98852_2 - yarl=1.9.3=py311h459d7ec_0 - zarr=2.16.1=pyhd8ed1ab_0 - zeromq=4.3.5=h59595ed_0 - zict=3.0.0=pyhd8ed1ab_0 - zipp=3.17.0=pyhd8ed1ab_0 - zlib=1.2.13=hd590300_5 - zstd=1.5.5=hfc55251_0 - pip: - c3s-eqc-automatic-quality-control==0.1.2.dev97+g355c9b6 - cacholote==0.5.3 - cads-toolbox==0.0.2b0 - cgul==0.0.4 - coucal==0.0.1b3 - emohawk==0.0.4b0 - kaleido==0.2.1 - pymannkendall==1.4.3 prefix: /data/common/miniforge3/envs/wp5
akankshabalha commented 8 months ago

Hi Mattia,

Could you please help me in this.

malmans2 commented 8 months ago

Hi, other users requested support before you did, so I've been working on that.

The spatial resolution of both the datasets (noaa: 4km and proba: 1km) is different. Hence, I tried to regrid noaa dataset at similar resolution as that of proba. It provided me the regridded noaa map but with a warning (mentioned in the nb). Could you please help me in resolving the warning.

You already had this problem. The solution is thoroughly explained here: https://github.com/bopen/c3s-eqc-toolbox-template/issues/121#issuecomment-1829789739

In proba map, I want to estimate the area covered by pixels having albedo values > 0.1625 as well as < 0.1625. Similarly, in regridded noaa map, I want to estimate the area covered by pixels having albedo values > 0.215 as well as < 0.215. The purpose is to determine how much lower albedo values area have decreased/increased over the time-period.

I don't see the code to do that in the notebook. What's the issue? If you don't know how to mask, here is a couple of examples:

da_masked_1 = da.where(da > vmin)
da_masked_2 = da.where(da < vmax)
da_masked_3 = da.where((da > vmin) & (da < vmax))
akankshabalha commented 8 months ago

Hi Mattia,

Thank you for your response.

I am able to resolve the regridding issue and also calculate the area. But there seems to be a problem in the calculation of area probably due to grid size (I am not sure of the reason though).

As per my jupyter notebook, following are the results of area calculation. But, it cannot be correct as the sum of forest + non-forest area in 1990 is not equal to that of 2018, however, the same size of study area is chosen for year 1990 as well as 2018.

Could you please have a look at my jupyter notebooks and help me in resolving this miscalculation.

Forest area in 1990 (calculated using noaa_regrid) - 30 square units. Non-forest area in 1990 (calculated using noaa_regrid) - 24 square units.

Forest area in 2018 (calculated using proba) - 229 square units. Non-forest area in 2018 (calculated using proba) - 497 square units.

akankshabalha commented 8 months ago

Albedo_Forests.zip

malmans2 commented 8 months ago

Hi, I don't fully follow. If you compare the number of pixels of variables with different resolution, the total number of pixels is going to be different. Also, in your code you were not interpolating the data because you were using an output grid identical to the input grid.

Try this snippet, I think it does what you need (maps + stats). You always refer to "area", but I don't see the code to actually compute area from lat lon. I added it, so both the number of pixels and area are displayed.

def plot_and_print_area_statistics(da, threshold):
    resolution = dict(da.sizes)
    print(f"{threshold=}")
    print(f"{resolution=}")
    grid_cell_area = diagnostics.grid_cell_area(da)
    masks = {
        "Non-Forest": da > threshold,
        "Forest": da < threshold,
    }
    for label, mask in masks.items():
        n_pixels = mask.sum()
        total_area = grid_cell_area.where(mask).sum(keep_attrs=True)
        if total_area.attrs["units"] == "m2":
            with xr.set_options(keep_attrs=True):
                total_area *= 1.0e-6
            total_area.attrs["units"] = "km2"
        print(f"\n{label}:")
        print(f"\tNumber of pixels: {n_pixels.values}")
        print(f"\tTotal area: {total_area.values:.2f}{total_area.attrs['units']}")

    colors = [
        "blue",
        "skyblue",
        "cyan",
        "lightgreen",
        "yellow",
        "orange",
        "red",
        "maroon",
    ]
    custom_cmap = mcolors.LinearSegmentedColormap.from_list("CustomColorMap", colors)
    return plot.projected_map(da, cmap=custom_cmap, show_stats=False)

da_albedo_proba = ds_albedo_maps_proba["AL_BH_BB"]
_ = plot_and_print_area_statistics(da_albedo_proba, threshold=0.1625)
plt.title("proba")
plt.show()

da_albedo_noaa = ds_albedo_maps_noaa["AL_BH_BB"]
_ = plot_and_print_area_statistics(da_albedo_noaa, threshold=0.215)
plt.title("noaa")
plt.show()

da_albedo_noaa_regrid = diagnostics.regrid(
    da_albedo_noaa, grid_out=da_albedo_proba, method="nearest_s2d"
)
_ = plot_and_print_area_statistics(da_albedo_noaa_regrid, threshold=0.215)
plt.title("noaa regridded")
plt.show()
malmans2 commented 7 months ago

Is this issue solved?

akankshabalha commented 7 months ago

Yes, it is solved now. Thank you.