pytroll / satpy

Python package for earth-observing satellite data processing
http://satpy.readthedocs.org/en/latest/
GNU General Public License v3.0
1.07k stars 295 forks source link

Resampling vis_with_ir_cloud_overlay with gradient_search or bilinear leads to artefacts such as coastlines and speckles #2656

Open gerritholl opened 11 months ago

gerritholl commented 11 months ago

Describe the bug

Loading the composite vis_with_ir_cloud_overlay, which uses the MaskingCompositor, then resampling with gradient_search leads to an image where, in cloud-free areas, coastlines and some other pixels are unexpectedly not masked.

To Reproduce

from glob import glob
from satpy import Scene
from satpy.utils import debug_on; debug_on()

files_l1b = glob("/media/nas/x21308/scratch/SEVIRI/202201240945/H-000-*")
files_l2 = glob("/media/nas/x21308/scratch/NWCSAF/20220124T094500Z/*.nc")
sc = Scene({"seviri_l1b_hrit": files_l1b, "nwcsaf-geo": files_l2})
sc.load(["vis_with_ir_cloud_overlay"])
ls = sc.resample("eurol", radius_of_influence=20000, resampler="gradient_search")
ls.save_datasets()

Expected behavior

I expect an image where cloudy areas are shown using either HRV or the 10.8 µm channel, more or less transparent, and cloud-free areas are completely masked out and thus transparent.

Actual results

Screenshot from the gimp zooming in on France and Spain, as this application shows transparency clearly:

gimp

In the screenshot, the Atlantic coastline shows up as black rather than transparent. On both land and sea, a noisy pattern of black speckles is visible; those should be transparent as well.

Console output ``` [DEBUG: 2023-11-30 14:50:24 : satpy.readers.yaml_reader] Reading ('/data/gholl/checkouts/satpy/satpy/etc/readers/seviri_l1b_hrit.yaml',) [DEBUG: 2023-11-30 14:50:24 : satpy.readers.yaml_reader] Assigning to seviri_l1b_hrit: ['/media/nas/x21308/scratch/SEVIRI/202201240945/H-000-MSG2__-MSG2________-HRV______-000017___-202201240945-__', '/media/nas/x21308/scratch/SEVIRI/202201240945/H-000-MSG2__-MSG2________-HRV______-000004___-202201240945-__', '/media/nas/x21308/scratch/SEVIRI/202201240945/H-000-MSG2__-MSG2________-HRV______-000013___-202201240945-__', '/media/nas/x21308/scratch/SEVIRI/202201240945/H-000-MSG2__-MSG2________-HRV______-000024___-202201240945-__', '/media/nas/x21308/scratch/SEVIRI/202201240945/H-000-MSG2__-MSG2________-HRV______-000022___-202201240945-__', '/media/nas/x21308/scratch/SEVIRI/202201240945/H-000-MSG2__-MSG2________-HRV______-000014___-202201240945-__', '/media/nas/x21308/scratch/SEVIRI/202201240945/H-000-MSG2__-MSG2________-HRV______-000005___-202201240945-__', '/media/nas/x21308/scratch/SEVIRI/202201240945/H-000-MSG2__-MSG2________-HRV______-000007___-202201240945-__', '/media/nas/x21308/scratch/SEVIRI/202201240945/H-000-MSG2__-MSG2________-HRV______-000001___-202201240945-__', '/media/nas/x21308/scratch/SEVIRI/202201240945/H-000-MSG2__-MSG2________-HRV______-000020___-202201240945-__', '/media/nas/x21308/scratch/SEVIRI/202201240945/H-000-MSG2__-MSG2________-HRV______-000002___-202201240945-__', '/media/nas/x21308/scratch/SEVIRI/202201240945/H-000-MSG2__-MSG2________-HRV______-000012___-202201240945-__', '/media/nas/x21308/scratch/SEVIRI/202201240945/H-000-MSG2__-MSG2________-HRV______-000018___-202201240945-__', '/media/nas/x21308/scratch/SEVIRI/202201240945/H-000-MSG2__-MSG2________-HRV______-000006___-202201240945-__', '/media/nas/x21308/scratch/SEVIRI/202201240945/H-000-MSG2__-MSG2________-HRV______-000010___-202201240945-__', '/media/nas/x21308/scratch/SEVIRI/202201240945/H-000-MSG2__-MSG2________-HRV______-000023___-202201240945-__', '/media/nas/x21308/scratch/SEVIRI/202201240945/H-000-MSG2__-MSG2________-HRV______-000015___-202201240945-__', '/media/nas/x21308/scratch/SEVIRI/202201240945/H-000-MSG2__-MSG2________-HRV______-000008___-202201240945-__', '/media/nas/x21308/scratch/SEVIRI/202201240945/H-000-MSG2__-MSG2________-HRV______-000021___-202201240945-__', '/media/nas/x21308/scratch/SEVIRI/202201240945/H-000-MSG2__-MSG2________-HRV______-000003___-202201240945-__', '/media/nas/x21308/scratch/SEVIRI/202201240945/H-000-MSG2__-MSG2________-HRV______-000016___-202201240945-__', '/media/nas/x21308/scratch/SEVIRI/202201240945/H-000-MSG2__-MSG2________-HRV______-000019___-202201240945-__', '/media/nas/x21308/scratch/SEVIRI/202201240945/H-000-MSG2__-MSG2________-HRV______-000009___-202201240945-__', '/media/nas/x21308/scratch/SEVIRI/202201240945/H-000-MSG2__-MSG2________-HRV______-000011___-202201240945-__', '/media/nas/x21308/scratch/SEVIRI/202201240945/H-000-MSG2__-MSG2________-IR_016___-000001___-202201240945-__', '/media/nas/x21308/scratch/SEVIRI/202201240945/H-000-MSG2__-MSG2________-IR_016___-000004___-202201240945-__', '/media/nas/x21308/scratch/SEVIRI/202201240945/H-000-MSG2__-MSG2________-IR_016___-000003___-202201240945-__', '/media/nas/x21308/scratch/SEVIRI/202201240945/H-000-MSG2__-MSG2________-IR_016___-000007___-202201240945-__', '/media/nas/x21308/scratch/SEVIRI/202201240945/H-000-MSG2__-MSG2________-IR_016___-000006___-202201240945-__', '/media/nas/x21308/scratch/SEVIRI/202201240945/H-000-MSG2__-MSG2________-IR_016___-000002___-202201240945-__', '/media/nas/x21308/scratch/SEVIRI/202201240945/H-000-MSG2__-MSG2________-IR_016___-000005___-202201240945-__', '/media/nas/x21308/scratch/SEVIRI/202201240945/H-000-MSG2__-MSG2________-IR_016___-000008___-202201240945-__', '/media/nas/x21308/scratch/SEVIRI/202201240945/H-000-MSG2__-MSG2________-IR_039___-000003___-202201240945-__', '/media/nas/x21308/scratch/SEVIRI/202201240945/H-000-MSG2__-MSG2________-IR_039___-000006___-202201240945-__', '/media/nas/x21308/scratch/SEVIRI/202201240945/H-000-MSG2__-MSG2________-IR_039___-000007___-202201240945-__', '/media/nas/x21308/scratch/SEVIRI/202201240945/H-000-MSG2__-MSG2________-IR_039___-000001___-202201240945-__', '/media/nas/x21308/scratch/SEVIRI/202201240945/H-000-MSG2__-MSG2________-IR_039___-000002___-202201240945-__', '/media/nas/x21308/scratch/SEVIRI/202201240945/H-000-MSG2__-MSG2________-IR_039___-000008___-202201240945-__', '/media/nas/x21308/scratch/SEVIRI/202201240945/H-000-MSG2__-MSG2________-IR_039___-000005___-202201240945-__', '/media/nas/x21308/scratch/SEVIRI/202201240945/H-000-MSG2__-MSG2________-IR_039___-000004___-202201240945-__', '/media/nas/x21308/scratch/SEVIRI/202201240945/H-000-MSG2__-MSG2________-IR_087___-000007___-202201240945-__', '/media/nas/x21308/scratch/SEVIRI/202201240945/H-000-MSG2__-MSG2________-IR_087___-000003___-202201240945-__', '/media/nas/x21308/scratch/SEVIRI/202201240945/H-000-MSG2__-MSG2________-IR_087___-000002___-202201240945-__', '/media/nas/x21308/scratch/SEVIRI/202201240945/H-000-MSG2__-MSG2________-IR_087___-000005___-202201240945-__', '/media/nas/x21308/scratch/SEVIRI/202201240945/H-000-MSG2__-MSG2________-IR_087___-000001___-202201240945-__', '/media/nas/x21308/scratch/SEVIRI/202201240945/H-000-MSG2__-MSG2________-IR_087___-000004___-202201240945-__', '/media/nas/x21308/scratch/SEVIRI/202201240945/H-000-MSG2__-MSG2________-IR_087___-000008___-202201240945-__', '/media/nas/x21308/scratch/SEVIRI/202201240945/H-000-MSG2__-MSG2________-IR_087___-000006___-202201240945-__', '/media/nas/x21308/scratch/SEVIRI/202201240945/H-000-MSG2__-MSG2________-IR_097___-000001___-202201240945-__', '/media/nas/x21308/scratch/SEVIRI/202201240945/H-000-MSG2__-MSG2________-IR_097___-000004___-202201240945-__', '/media/nas/x21308/scratch/SEVIRI/202201240945/H-000-MSG2__-MSG2________-IR_097___-000008___-202201240945-__', '/media/nas/x21308/scratch/SEVIRI/202201240945/H-000-MSG2__-MSG2________-IR_097___-000005___-202201240945-__', '/media/nas/x21308/scratch/SEVIRI/202201240945/H-000-MSG2__-MSG2________-IR_097___-000006___-202201240945-__', '/media/nas/x21308/scratch/SEVIRI/202201240945/H-000-MSG2__-MSG2________-IR_097___-000002___-202201240945-__', '/media/nas/x21308/scratch/SEVIRI/202201240945/H-000-MSG2__-MSG2________-IR_097___-000007___-202201240945-__', '/media/nas/x21308/scratch/SEVIRI/202201240945/H-000-MSG2__-MSG2________-IR_097___-000003___-202201240945-__', '/media/nas/x21308/scratch/SEVIRI/202201240945/H-000-MSG2__-MSG2________-IR_108___-000003___-202201240945-__', '/media/nas/x21308/scratch/SEVIRI/202201240945/H-000-MSG2__-MSG2________-IR_108___-000005___-202201240945-__', '/media/nas/x21308/scratch/SEVIRI/202201240945/H-000-MSG2__-MSG2________-IR_108___-000004___-202201240945-__', '/media/nas/x21308/scratch/SEVIRI/202201240945/H-000-MSG2__-MSG2________-IR_108___-000008___-202201240945-__', '/media/nas/x21308/scratch/SEVIRI/202201240945/H-000-MSG2__-MSG2________-IR_108___-000006___-202201240945-__', '/media/nas/x21308/scratch/SEVIRI/202201240945/H-000-MSG2__-MSG2________-IR_108___-000007___-202201240945-__', '/media/nas/x21308/scratch/SEVIRI/202201240945/H-000-MSG2__-MSG2________-IR_108___-000001___-202201240945-__', '/media/nas/x21308/scratch/SEVIRI/202201240945/H-000-MSG2__-MSG2________-IR_108___-000002___-202201240945-__', '/media/nas/x21308/scratch/SEVIRI/202201240945/H-000-MSG2__-MSG2________-IR_120___-000008___-202201240945-__', '/media/nas/x21308/scratch/SEVIRI/202201240945/H-000-MSG2__-MSG2________-IR_120___-000005___-202201240945-__', '/media/nas/x21308/scratch/SEVIRI/202201240945/H-000-MSG2__-MSG2________-IR_120___-000004___-202201240945-__', '/media/nas/x21308/scratch/SEVIRI/202201240945/H-000-MSG2__-MSG2________-IR_120___-000001___-202201240945-__', '/media/nas/x21308/scratch/SEVIRI/202201240945/H-000-MSG2__-MSG2________-IR_120___-000007___-202201240945-__', '/media/nas/x21308/scratch/SEVIRI/202201240945/H-000-MSG2__-MSG2________-IR_120___-000006___-202201240945-__', '/media/nas/x21308/scratch/SEVIRI/202201240945/H-000-MSG2__-MSG2________-IR_120___-000002___-202201240945-__', '/media/nas/x21308/scratch/SEVIRI/202201240945/H-000-MSG2__-MSG2________-IR_120___-000003___-202201240945-__', '/media/nas/x21308/scratch/SEVIRI/202201240945/H-000-MSG2__-MSG2________-IR_134___-000006___-202201240945-__', '/media/nas/x21308/scratch/SEVIRI/202201240945/H-000-MSG2__-MSG2________-IR_134___-000005___-202201240945-__', '/media/nas/x21308/scratch/SEVIRI/202201240945/H-000-MSG2__-MSG2________-IR_134___-000001___-202201240945-__', '/media/nas/x21308/scratch/SEVIRI/202201240945/H-000-MSG2__-MSG2________-IR_134___-000003___-202201240945-__', '/media/nas/x21308/scratch/SEVIRI/202201240945/H-000-MSG2__-MSG2________-IR_134___-000008___-202201240945-__', '/media/nas/x21308/scratch/SEVIRI/202201240945/H-000-MSG2__-MSG2________-IR_134___-000004___-202201240945-__', '/media/nas/x21308/scratch/SEVIRI/202201240945/H-000-MSG2__-MSG2________-IR_134___-000007___-202201240945-__', '/media/nas/x21308/scratch/SEVIRI/202201240945/H-000-MSG2__-MSG2________-IR_134___-000002___-202201240945-__', '/media/nas/x21308/scratch/SEVIRI/202201240945/H-000-MSG2__-MSG2________-VIS006___-000006___-202201240945-__', '/media/nas/x21308/scratch/SEVIRI/202201240945/H-000-MSG2__-MSG2________-VIS006___-000005___-202201240945-__', '/media/nas/x21308/scratch/SEVIRI/202201240945/H-000-MSG2__-MSG2________-VIS006___-000003___-202201240945-__', '/media/nas/x21308/scratch/SEVIRI/202201240945/H-000-MSG2__-MSG2________-VIS006___-000002___-202201240945-__', '/media/nas/x21308/scratch/SEVIRI/202201240945/H-000-MSG2__-MSG2________-VIS006___-000001___-202201240945-__', '/media/nas/x21308/scratch/SEVIRI/202201240945/H-000-MSG2__-MSG2________-VIS006___-000008___-202201240945-__', '/media/nas/x21308/scratch/SEVIRI/202201240945/H-000-MSG2__-MSG2________-VIS006___-000007___-202201240945-__', '/media/nas/x21308/scratch/SEVIRI/202201240945/H-000-MSG2__-MSG2________-VIS006___-000004___-202201240945-__', '/media/nas/x21308/scratch/SEVIRI/202201240945/H-000-MSG2__-MSG2________-VIS008___-000006___-202201240945-__', '/media/nas/x21308/scratch/SEVIRI/202201240945/H-000-MSG2__-MSG2________-VIS008___-000008___-202201240945-__', '/media/nas/x21308/scratch/SEVIRI/202201240945/H-000-MSG2__-MSG2________-VIS008___-000007___-202201240945-__', '/media/nas/x21308/scratch/SEVIRI/202201240945/H-000-MSG2__-MSG2________-VIS008___-000001___-202201240945-__', '/media/nas/x21308/scratch/SEVIRI/202201240945/H-000-MSG2__-MSG2________-VIS008___-000005___-202201240945-__', '/media/nas/x21308/scratch/SEVIRI/202201240945/H-000-MSG2__-MSG2________-VIS008___-000002___-202201240945-__', '/media/nas/x21308/scratch/SEVIRI/202201240945/H-000-MSG2__-MSG2________-VIS008___-000004___-202201240945-__', '/media/nas/x21308/scratch/SEVIRI/202201240945/H-000-MSG2__-MSG2________-VIS008___-000003___-202201240945-__', '/media/nas/x21308/scratch/SEVIRI/202201240945/H-000-MSG2__-MSG2________-WV_062___-000006___-202201240945-__', '/media/nas/x21308/scratch/SEVIRI/202201240945/H-000-MSG2__-MSG2________-WV_062___-000008___-202201240945-__', '/media/nas/x21308/scratch/SEVIRI/202201240945/H-000-MSG2__-MSG2________-WV_062___-000007___-202201240945-__', '/media/nas/x21308/scratch/SEVIRI/202201240945/H-000-MSG2__-MSG2________-WV_062___-000001___-202201240945-__', '/media/nas/x21308/scratch/SEVIRI/202201240945/H-000-MSG2__-MSG2________-WV_062___-000002___-202201240945-__', '/media/nas/x21308/scratch/SEVIRI/202201240945/H-000-MSG2__-MSG2________-WV_062___-000004___-202201240945-__', '/media/nas/x21308/scratch/SEVIRI/202201240945/H-000-MSG2__-MSG2________-WV_062___-000003___-202201240945-__', '/media/nas/x21308/scratch/SEVIRI/202201240945/H-000-MSG2__-MSG2________-WV_062___-000005___-202201240945-__', '/media/nas/x21308/scratch/SEVIRI/202201240945/H-000-MSG2__-MSG2________-WV_073___-000004___-202201240945-__', '/media/nas/x21308/scratch/SEVIRI/202201240945/H-000-MSG2__-MSG2________-WV_073___-000001___-202201240945-__', '/media/nas/x21308/scratch/SEVIRI/202201240945/H-000-MSG2__-MSG2________-WV_073___-000005___-202201240945-__', '/media/nas/x21308/scratch/SEVIRI/202201240945/H-000-MSG2__-MSG2________-WV_073___-000002___-202201240945-__', '/media/nas/x21308/scratch/SEVIRI/202201240945/H-000-MSG2__-MSG2________-WV_073___-000008___-202201240945-__', '/media/nas/x21308/scratch/SEVIRI/202201240945/H-000-MSG2__-MSG2________-WV_073___-000006___-202201240945-__', '/media/nas/x21308/scratch/SEVIRI/202201240945/H-000-MSG2__-MSG2________-WV_073___-000007___-202201240945-__', '/media/nas/x21308/scratch/SEVIRI/202201240945/H-000-MSG2__-MSG2________-WV_073___-000003___-202201240945-__', '/media/nas/x21308/scratch/SEVIRI/202201240945/H-000-MSG2__-MSG2________-_________-PRO______-202201240945-__', '/media/nas/x21308/scratch/SEVIRI/202201240945/H-000-MSG2__-MSG2________-_________-EPI______-202201240945-__'] /data/gholl/checkouts/satpy/satpy/readers/eum_base.py:36: DeprecationWarning: Conversion of an array with ndim > 0 to a scalar is deprecated, and will error in future. Ensure you extract a single element from your array before performing this operation. (Deprecated NumPy 1.25.) days = int(tcds["Days"]) /data/gholl/checkouts/satpy/satpy/readers/eum_base.py:37: DeprecationWarning: Conversion of an array with ndim > 0 to a scalar is deprecated, and will error in future. Ensure you extract a single element from your array before performing this operation. (Deprecated NumPy 1.25.) milliseconds = int(tcds["Milliseconds"]) /data/gholl/checkouts/satpy/satpy/readers/eum_base.py:39: DeprecationWarning: Conversion of an array with ndim > 0 to a scalar is deprecated, and will error in future. Ensure you extract a single element from your array before performing this operation. (Deprecated NumPy 1.25.) microseconds = int(tcds["Microseconds"]) /data/gholl/checkouts/satpy/satpy/readers/eum_base.py:43: DeprecationWarning: Conversion of an array with ndim > 0 to a scalar is deprecated, and will error in future. Ensure you extract a single element from your array before performing this operation. (Deprecated NumPy 1.25.) microseconds += int(tcds["Nanoseconds"]) / 1000. [INFO: 2023-11-30 14:50:24 : hrit_msg] No IMPF configuration field found in prologue. [DEBUG: 2023-11-30 14:50:24 : satpy.readers.yaml_reader] Reading ('/data/gholl/checkouts/satpy/satpy/etc/readers/nwcsaf-geo.yaml',) [DEBUG: 2023-11-30 14:50:24 : satpy.readers.yaml_reader] Assigning to nwcsaf-geo: ['/media/nas/x21308/scratch/NWCSAF/20220124T094500Z/S_NWC_CMA_MSG2_MSG-N-VISIR_20220124T094500Z.nc', '/media/nas/x21308/scratch/NWCSAF/20220124T094500Z/S_NWC_CT_MSG2_MSG-N-VISIR_20220124T094500Z.nc', '/media/nas/x21308/scratch/NWCSAF/20220124T094500Z/S_NWC_CTTH_MSG2_MSG-N-VISIR_20220124T094500Z.nc', '/media/nas/x21308/scratch/NWCSAF/20220124T094500Z/S_NWC_CMIC_MSG2_MSG-N-VISIR_20220124T094500Z.nc', '/media/nas/x21308/scratch/NWCSAF/20220124T094500Z/S_NWC_PC_MSG2_MSG-N-VISIR_20220124T094500Z.nc', '/media/nas/x21308/scratch/NWCSAF/20220124T094500Z/S_NWC_CRR_MSG2_MSG-N-VISIR_20220124T094500Z.nc'] [WARNING: 2023-11-30 14:50:25 : satpy.readers] Don't know how to open the following files: {'/media/nas/x21308/scratch/NWCSAF/20220124T094500Z/S_NWC_HRW_MSG2_MSG-N-VISIR_20220124T094500Z.nc'} [DEBUG: 2023-11-30 14:50:25 : satpy.composites.config_loader] Looking for composites config file seviri.yaml [DEBUG: 2023-11-30 14:50:25 : pyorbital.tlefile] Path to the Pyorbital configuration (where e.g. platforms.txt is found): /data/gholl/checkouts/pyorbital/pyorbital/etc [DEBUG: 2023-11-30 14:50:25 : satpy.composites.config_loader] Looking for composites config file visir.yaml /data/gholl/checkouts/satpy/satpy/readers/seviri_base.py:489: UserWarning: Converting non-nanosecond precision datetime values to nanosecond precision. This behavior can eventually be relaxed in xarray, as it is an artifact from pandas which is now beginning to support non-nanosecond precision values. This warning is caused by passing non-nanosecond np.datetime64 or np.timedelta64 values to the DataArray or Variable constructor; it can be silenced by converting the values to nanosecond precision ahead of time. dataset.coords["acq_time"] = ("y", acq_time) /data/gholl/checkouts/satpy/satpy/readers/seviri_base.py:489: UserWarning: Converting non-nanosecond precision datetime values to nanosecond precision. This behavior can eventually be relaxed in xarray, as it is an artifact from pandas which is now beginning to support non-nanosecond precision values. This warning is caused by passing non-nanosecond np.datetime64 or np.timedelta64 values to the DataArray or Variable constructor; it can be silenced by converting the values to nanosecond precision ahead of time. dataset.coords["acq_time"] = ("y", acq_time) /data/gholl/checkouts/satpy/satpy/readers/seviri_base.py:489: UserWarning: Converting non-nanosecond precision datetime values to nanosecond precision. This behavior can eventually be relaxed in xarray, as it is an artifact from pandas which is now beginning to support non-nanosecond precision values. This warning is caused by passing non-nanosecond np.datetime64 or np.timedelta64 values to the DataArray or Variable constructor; it can be silenced by converting the values to nanosecond precision ahead of time. dataset.coords["acq_time"] = ("y", acq_time) /data/gholl/checkouts/satpy/satpy/readers/seviri_base.py:489: UserWarning: Converting non-nanosecond precision datetime values to nanosecond precision. This behavior can eventually be relaxed in xarray, as it is an artifact from pandas which is now beginning to support non-nanosecond precision values. This warning is caused by passing non-nanosecond np.datetime64 or np.timedelta64 values to the DataArray or Variable constructor; it can be silenced by converting the values to nanosecond precision ahead of time. dataset.coords["acq_time"] = ("y", acq_time) /data/gholl/checkouts/satpy/satpy/readers/seviri_base.py:489: UserWarning: Converting non-nanosecond precision datetime values to nanosecond precision. This behavior can eventually be relaxed in xarray, as it is an artifact from pandas which is now beginning to support non-nanosecond precision values. This warning is caused by passing non-nanosecond np.datetime64 or np.timedelta64 values to the DataArray or Variable constructor; it can be silenced by converting the values to nanosecond precision ahead of time. dataset.coords["acq_time"] = ("y", acq_time) /data/gholl/checkouts/satpy/satpy/readers/seviri_base.py:489: UserWarning: Converting non-nanosecond precision datetime values to nanosecond precision. This behavior can eventually be relaxed in xarray, as it is an artifact from pandas which is now beginning to support non-nanosecond precision values. This warning is caused by passing non-nanosecond np.datetime64 or np.timedelta64 values to the DataArray or Variable constructor; it can be silenced by converting the values to nanosecond precision ahead of time. dataset.coords["acq_time"] = ("y", acq_time) /data/gholl/checkouts/satpy/satpy/readers/seviri_base.py:489: UserWarning: Converting non-nanosecond precision datetime values to nanosecond precision. This behavior can eventually be relaxed in xarray, as it is an artifact from pandas which is now beginning to support non-nanosecond precision values. This warning is caused by passing non-nanosecond np.datetime64 or np.timedelta64 values to the DataArray or Variable constructor; it can be silenced by converting the values to nanosecond precision ahead of time. dataset.coords["acq_time"] = ("y", acq_time) /data/gholl/checkouts/satpy/satpy/readers/seviri_base.py:489: UserWarning: Converting non-nanosecond precision datetime values to nanosecond precision. This behavior can eventually be relaxed in xarray, as it is an artifact from pandas which is now beginning to support non-nanosecond precision values. This warning is caused by passing non-nanosecond np.datetime64 or np.timedelta64 values to the DataArray or Variable constructor; it can be silenced by converting the values to nanosecond precision ahead of time. dataset.coords["acq_time"] = ("y", acq_time) [DEBUG: 2023-11-30 14:50:25 : satpy.readers.yaml_reader] Requested orientation for Dataset None is 'native' (default). No flipping is applied. /data/gholl/checkouts/satpy/satpy/readers/seviri_base.py:489: UserWarning: Converting non-nanosecond precision datetime values to nanosecond precision. This behavior can eventually be relaxed in xarray, as it is an artifact from pandas which is now beginning to support non-nanosecond precision values. This warning is caused by passing non-nanosecond np.datetime64 or np.timedelta64 values to the DataArray or Variable constructor; it can be silenced by converting the values to nanosecond precision ahead of time. dataset.coords["acq_time"] = ("y", acq_time) /data/gholl/checkouts/satpy/satpy/readers/seviri_base.py:489: UserWarning: Converting non-nanosecond precision datetime values to nanosecond precision. This behavior can eventually be relaxed in xarray, as it is an artifact from pandas which is now beginning to support non-nanosecond precision values. This warning is caused by passing non-nanosecond np.datetime64 or np.timedelta64 values to the DataArray or Variable constructor; it can be silenced by converting the values to nanosecond precision ahead of time. dataset.coords["acq_time"] = ("y", acq_time) /data/gholl/checkouts/satpy/satpy/readers/seviri_base.py:489: UserWarning: Converting non-nanosecond precision datetime values to nanosecond precision. This behavior can eventually be relaxed in xarray, as it is an artifact from pandas which is now beginning to support non-nanosecond precision values. This warning is caused by passing non-nanosecond np.datetime64 or np.timedelta64 values to the DataArray or Variable constructor; it can be silenced by converting the values to nanosecond precision ahead of time. dataset.coords["acq_time"] = ("y", acq_time) /data/gholl/checkouts/satpy/satpy/readers/seviri_base.py:489: UserWarning: Converting non-nanosecond precision datetime values to nanosecond precision. This behavior can eventually be relaxed in xarray, as it is an artifact from pandas which is now beginning to support non-nanosecond precision values. This warning is caused by passing non-nanosecond np.datetime64 or np.timedelta64 values to the DataArray or Variable constructor; it can be silenced by converting the values to nanosecond precision ahead of time. dataset.coords["acq_time"] = ("y", acq_time) /data/gholl/checkouts/satpy/satpy/readers/seviri_base.py:489: UserWarning: Converting non-nanosecond precision datetime values to nanosecond precision. This behavior can eventually be relaxed in xarray, as it is an artifact from pandas which is now beginning to support non-nanosecond precision values. This warning is caused by passing non-nanosecond np.datetime64 or np.timedelta64 values to the DataArray or Variable constructor; it can be silenced by converting the values to nanosecond precision ahead of time. dataset.coords["acq_time"] = ("y", acq_time) /data/gholl/checkouts/satpy/satpy/readers/seviri_base.py:489: UserWarning: Converting non-nanosecond precision datetime values to nanosecond precision. This behavior can eventually be relaxed in xarray, as it is an artifact from pandas which is now beginning to support non-nanosecond precision values. This warning is caused by passing non-nanosecond np.datetime64 or np.timedelta64 values to the DataArray or Variable constructor; it can be silenced by converting the values to nanosecond precision ahead of time. dataset.coords["acq_time"] = ("y", acq_time) /data/gholl/checkouts/satpy/satpy/readers/seviri_base.py:489: UserWarning: Converting non-nanosecond precision datetime values to nanosecond precision. This behavior can eventually be relaxed in xarray, as it is an artifact from pandas which is now beginning to support non-nanosecond precision values. This warning is caused by passing non-nanosecond np.datetime64 or np.timedelta64 values to the DataArray or Variable constructor; it can be silenced by converting the values to nanosecond precision ahead of time. dataset.coords["acq_time"] = ("y", acq_time) /data/gholl/checkouts/satpy/satpy/readers/seviri_base.py:489: UserWarning: Converting non-nanosecond precision datetime values to nanosecond precision. This behavior can eventually be relaxed in xarray, as it is an artifact from pandas which is now beginning to support non-nanosecond precision values. This warning is caused by passing non-nanosecond np.datetime64 or np.timedelta64 values to the DataArray or Variable constructor; it can be silenced by converting the values to nanosecond precision ahead of time. dataset.coords["acq_time"] = ("y", acq_time) [DEBUG: 2023-11-30 14:50:25 : satpy.readers.yaml_reader] Requested orientation for Dataset None is 'native' (default). No flipping is applied. [DEBUG: 2023-11-30 14:50:25 : hrit_msg] Padding HRV data to full disk /data/gholl/checkouts/satpy/satpy/readers/seviri_base.py:489: UserWarning: Converting non-nanosecond precision datetime values to nanosecond precision. This behavior can eventually be relaxed in xarray, as it is an artifact from pandas which is now beginning to support non-nanosecond precision values. This warning is caused by passing non-nanosecond np.datetime64 or np.timedelta64 values to the DataArray or Variable constructor; it can be silenced by converting the values to nanosecond precision ahead of time. dataset.coords["acq_time"] = ("y", acq_time) [DEBUG: 2023-11-30 14:50:25 : hrit_msg] Padding HRV data to full disk /data/gholl/checkouts/satpy/satpy/readers/seviri_base.py:489: UserWarning: Converting non-nanosecond precision datetime values to nanosecond precision. This behavior can eventually be relaxed in xarray, as it is an artifact from pandas which is now beginning to support non-nanosecond precision values. This warning is caused by passing non-nanosecond np.datetime64 or np.timedelta64 values to the DataArray or Variable constructor; it can be silenced by converting the values to nanosecond precision ahead of time. dataset.coords["acq_time"] = ("y", acq_time) [DEBUG: 2023-11-30 14:50:25 : hrit_msg] Padding HRV data to full disk /data/gholl/checkouts/satpy/satpy/readers/seviri_base.py:489: UserWarning: Converting non-nanosecond precision datetime values to nanosecond precision. This behavior can eventually be relaxed in xarray, as it is an artifact from pandas which is now beginning to support non-nanosecond precision values. This warning is caused by passing non-nanosecond np.datetime64 or np.timedelta64 values to the DataArray or Variable constructor; it can be silenced by converting the values to nanosecond precision ahead of time. dataset.coords["acq_time"] = ("y", acq_time) [DEBUG: 2023-11-30 14:50:25 : hrit_msg] Padding HRV data to full disk /data/gholl/checkouts/satpy/satpy/readers/seviri_base.py:489: UserWarning: Converting non-nanosecond precision datetime values to nanosecond precision. This behavior can eventually be relaxed in xarray, as it is an artifact from pandas which is now beginning to support non-nanosecond precision values. This warning is caused by passing non-nanosecond np.datetime64 or np.timedelta64 values to the DataArray or Variable constructor; it can be silenced by converting the values to nanosecond precision ahead of time. dataset.coords["acq_time"] = ("y", acq_time) [DEBUG: 2023-11-30 14:50:25 : hrit_msg] Padding HRV data to full disk /data/gholl/checkouts/satpy/satpy/readers/seviri_base.py:489: UserWarning: Converting non-nanosecond precision datetime values to nanosecond precision. This behavior can eventually be relaxed in xarray, as it is an artifact from pandas which is now beginning to support non-nanosecond precision values. This warning is caused by passing non-nanosecond np.datetime64 or np.timedelta64 values to the DataArray or Variable constructor; it can be silenced by converting the values to nanosecond precision ahead of time. dataset.coords["acq_time"] = ("y", acq_time) [DEBUG: 2023-11-30 14:50:25 : hrit_msg] Padding HRV data to full disk /data/gholl/checkouts/satpy/satpy/readers/seviri_base.py:489: UserWarning: Converting non-nanosecond precision datetime values to nanosecond precision. This behavior can eventually be relaxed in xarray, as it is an artifact from pandas which is now beginning to support non-nanosecond precision values. This warning is caused by passing non-nanosecond np.datetime64 or np.timedelta64 values to the DataArray or Variable constructor; it can be silenced by converting the values to nanosecond precision ahead of time. dataset.coords["acq_time"] = ("y", acq_time) [DEBUG: 2023-11-30 14:50:25 : hrit_msg] Padding HRV data to full disk /data/gholl/checkouts/satpy/satpy/readers/seviri_base.py:489: UserWarning: Converting non-nanosecond precision datetime values to nanosecond precision. This behavior can eventually be relaxed in xarray, as it is an artifact from pandas which is now beginning to support non-nanosecond precision values. This warning is caused by passing non-nanosecond np.datetime64 or np.timedelta64 values to the DataArray or Variable constructor; it can be silenced by converting the values to nanosecond precision ahead of time. dataset.coords["acq_time"] = ("y", acq_time) [DEBUG: 2023-11-30 14:50:25 : hrit_msg] Padding HRV data to full disk /data/gholl/checkouts/satpy/satpy/readers/seviri_base.py:489: UserWarning: Converting non-nanosecond precision datetime values to nanosecond precision. This behavior can eventually be relaxed in xarray, as it is an artifact from pandas which is now beginning to support non-nanosecond precision values. This warning is caused by passing non-nanosecond np.datetime64 or np.timedelta64 values to the DataArray or Variable constructor; it can be silenced by converting the values to nanosecond precision ahead of time. dataset.coords["acq_time"] = ("y", acq_time) [DEBUG: 2023-11-30 14:50:25 : hrit_msg] Padding HRV data to full disk /data/gholl/checkouts/satpy/satpy/readers/seviri_base.py:489: UserWarning: Converting non-nanosecond precision datetime values to nanosecond precision. This behavior can eventually be relaxed in xarray, as it is an artifact from pandas which is now beginning to support non-nanosecond precision values. This warning is caused by passing non-nanosecond np.datetime64 or np.timedelta64 values to the DataArray or Variable constructor; it can be silenced by converting the values to nanosecond precision ahead of time. dataset.coords["acq_time"] = ("y", acq_time) [DEBUG: 2023-11-30 14:50:25 : hrit_msg] Padding HRV data to full disk /data/gholl/checkouts/satpy/satpy/readers/seviri_base.py:489: UserWarning: Converting non-nanosecond precision datetime values to nanosecond precision. This behavior can eventually be relaxed in xarray, as it is an artifact from pandas which is now beginning to support non-nanosecond precision values. This warning is caused by passing non-nanosecond np.datetime64 or np.timedelta64 values to the DataArray or Variable constructor; it can be silenced by converting the values to nanosecond precision ahead of time. dataset.coords["acq_time"] = ("y", acq_time) [DEBUG: 2023-11-30 14:50:25 : hrit_msg] Padding HRV data to full disk /data/gholl/checkouts/satpy/satpy/readers/seviri_base.py:489: UserWarning: Converting non-nanosecond precision datetime values to nanosecond precision. This behavior can eventually be relaxed in xarray, as it is an artifact from pandas which is now beginning to support non-nanosecond precision values. This warning is caused by passing non-nanosecond np.datetime64 or np.timedelta64 values to the DataArray or Variable constructor; it can be silenced by converting the values to nanosecond precision ahead of time. dataset.coords["acq_time"] = ("y", acq_time) [DEBUG: 2023-11-30 14:50:25 : hrit_msg] Padding HRV data to full disk /data/gholl/checkouts/satpy/satpy/readers/seviri_base.py:489: UserWarning: Converting non-nanosecond precision datetime values to nanosecond precision. This behavior can eventually be relaxed in xarray, as it is an artifact from pandas which is now beginning to support non-nanosecond precision values. This warning is caused by passing non-nanosecond np.datetime64 or np.timedelta64 values to the DataArray or Variable constructor; it can be silenced by converting the values to nanosecond precision ahead of time. dataset.coords["acq_time"] = ("y", acq_time) [DEBUG: 2023-11-30 14:50:25 : hrit_msg] Padding HRV data to full disk /data/gholl/checkouts/satpy/satpy/readers/seviri_base.py:489: UserWarning: Converting non-nanosecond precision datetime values to nanosecond precision. This behavior can eventually be relaxed in xarray, as it is an artifact from pandas which is now beginning to support non-nanosecond precision values. This warning is caused by passing non-nanosecond np.datetime64 or np.timedelta64 values to the DataArray or Variable constructor; it can be silenced by converting the values to nanosecond precision ahead of time. dataset.coords["acq_time"] = ("y", acq_time) [DEBUG: 2023-11-30 14:50:25 : hrit_msg] Padding HRV data to full disk /data/gholl/checkouts/satpy/satpy/readers/seviri_base.py:489: UserWarning: Converting non-nanosecond precision datetime values to nanosecond precision. This behavior can eventually be relaxed in xarray, as it is an artifact from pandas which is now beginning to support non-nanosecond precision values. This warning is caused by passing non-nanosecond np.datetime64 or np.timedelta64 values to the DataArray or Variable constructor; it can be silenced by converting the values to nanosecond precision ahead of time. dataset.coords["acq_time"] = ("y", acq_time) [DEBUG: 2023-11-30 14:50:25 : hrit_msg] Padding HRV data to full disk /data/gholl/checkouts/satpy/satpy/readers/seviri_base.py:489: UserWarning: Converting non-nanosecond precision datetime values to nanosecond precision. This behavior can eventually be relaxed in xarray, as it is an artifact from pandas which is now beginning to support non-nanosecond precision values. This warning is caused by passing non-nanosecond np.datetime64 or np.timedelta64 values to the DataArray or Variable constructor; it can be silenced by converting the values to nanosecond precision ahead of time. dataset.coords["acq_time"] = ("y", acq_time) [DEBUG: 2023-11-30 14:50:25 : hrit_msg] Padding HRV data to full disk /data/gholl/checkouts/satpy/satpy/readers/seviri_base.py:489: UserWarning: Converting non-nanosecond precision datetime values to nanosecond precision. This behavior can eventually be relaxed in xarray, as it is an artifact from pandas which is now beginning to support non-nanosecond precision values. This warning is caused by passing non-nanosecond np.datetime64 or np.timedelta64 values to the DataArray or Variable constructor; it can be silenced by converting the values to nanosecond precision ahead of time. dataset.coords["acq_time"] = ("y", acq_time) [DEBUG: 2023-11-30 14:50:25 : hrit_msg] Padding HRV data to full disk /data/gholl/checkouts/satpy/satpy/readers/seviri_base.py:489: UserWarning: Converting non-nanosecond precision datetime values to nanosecond precision. This behavior can eventually be relaxed in xarray, as it is an artifact from pandas which is now beginning to support non-nanosecond precision values. This warning is caused by passing non-nanosecond np.datetime64 or np.timedelta64 values to the DataArray or Variable constructor; it can be silenced by converting the values to nanosecond precision ahead of time. dataset.coords["acq_time"] = ("y", acq_time) [DEBUG: 2023-11-30 14:50:25 : hrit_msg] Padding HRV data to full disk /data/gholl/checkouts/satpy/satpy/readers/seviri_base.py:489: UserWarning: Converting non-nanosecond precision datetime values to nanosecond precision. This behavior can eventually be relaxed in xarray, as it is an artifact from pandas which is now beginning to support non-nanosecond precision values. This warning is caused by passing non-nanosecond np.datetime64 or np.timedelta64 values to the DataArray or Variable constructor; it can be silenced by converting the values to nanosecond precision ahead of time. dataset.coords["acq_time"] = ("y", acq_time) [DEBUG: 2023-11-30 14:50:25 : hrit_msg] Padding HRV data to full disk /data/gholl/checkouts/satpy/satpy/readers/seviri_base.py:489: UserWarning: Converting non-nanosecond precision datetime values to nanosecond precision. This behavior can eventually be relaxed in xarray, as it is an artifact from pandas which is now beginning to support non-nanosecond precision values. This warning is caused by passing non-nanosecond np.datetime64 or np.timedelta64 values to the DataArray or Variable constructor; it can be silenced by converting the values to nanosecond precision ahead of time. dataset.coords["acq_time"] = ("y", acq_time) [DEBUG: 2023-11-30 14:50:25 : hrit_msg] Padding HRV data to full disk /data/gholl/checkouts/satpy/satpy/readers/seviri_base.py:489: UserWarning: Converting non-nanosecond precision datetime values to nanosecond precision. This behavior can eventually be relaxed in xarray, as it is an artifact from pandas which is now beginning to support non-nanosecond precision values. This warning is caused by passing non-nanosecond np.datetime64 or np.timedelta64 values to the DataArray or Variable constructor; it can be silenced by converting the values to nanosecond precision ahead of time. dataset.coords["acq_time"] = ("y", acq_time) [DEBUG: 2023-11-30 14:50:25 : hrit_msg] Padding HRV data to full disk /data/gholl/checkouts/satpy/satpy/readers/seviri_base.py:489: UserWarning: Converting non-nanosecond precision datetime values to nanosecond precision. This behavior can eventually be relaxed in xarray, as it is an artifact from pandas which is now beginning to support non-nanosecond precision values. This warning is caused by passing non-nanosecond np.datetime64 or np.timedelta64 values to the DataArray or Variable constructor; it can be silenced by converting the values to nanosecond precision ahead of time. dataset.coords["acq_time"] = ("y", acq_time) [DEBUG: 2023-11-30 14:50:25 : hrit_msg] Padding HRV data to full disk /data/gholl/checkouts/satpy/satpy/readers/seviri_base.py:489: UserWarning: Converting non-nanosecond precision datetime values to nanosecond precision. This behavior can eventually be relaxed in xarray, as it is an artifact from pandas which is now beginning to support non-nanosecond precision values. This warning is caused by passing non-nanosecond np.datetime64 or np.timedelta64 values to the DataArray or Variable constructor; it can be silenced by converting the values to nanosecond precision ahead of time. dataset.coords["acq_time"] = ("y", acq_time) [DEBUG: 2023-11-30 14:50:25 : hrit_msg] Padding HRV data to full disk /data/gholl/checkouts/satpy/satpy/readers/seviri_base.py:489: UserWarning: Converting non-nanosecond precision datetime values to nanosecond precision. This behavior can eventually be relaxed in xarray, as it is an artifact from pandas which is now beginning to support non-nanosecond precision values. This warning is caused by passing non-nanosecond np.datetime64 or np.timedelta64 values to the DataArray or Variable constructor; it can be silenced by converting the values to nanosecond precision ahead of time. dataset.coords["acq_time"] = ("y", acq_time) [DEBUG: 2023-11-30 14:50:25 : hrit_msg] Padding HRV data to full disk /data/gholl/checkouts/satpy/satpy/readers/seviri_base.py:489: UserWarning: Converting non-nanosecond precision datetime values to nanosecond precision. This behavior can eventually be relaxed in xarray, as it is an artifact from pandas which is now beginning to support non-nanosecond precision values. This warning is caused by passing non-nanosecond np.datetime64 or np.timedelta64 values to the DataArray or Variable constructor; it can be silenced by converting the values to nanosecond precision ahead of time. dataset.coords["acq_time"] = ("y", acq_time) /data/gholl/checkouts/pyresample/pyresample/geometry.py:1531: RuntimeWarning: invalid value encountered in scalar divide self.pixel_size_y = (area_extent[3] - area_extent[1]) / float(height) /data/gholl/checkouts/pyresample/pyresample/geometry.py:1531: RuntimeWarning: invalid value encountered in scalar divide self.pixel_size_y = (area_extent[3] - area_extent[1]) / float(height) /data/gholl/checkouts/pyresample/pyresample/geometry.py:1531: RuntimeWarning: invalid value encountered in scalar divide self.pixel_size_y = (area_extent[3] - area_extent[1]) / float(height) /data/gholl/checkouts/pyresample/pyresample/geometry.py:1531: RuntimeWarning: invalid value encountered in scalar divide self.pixel_size_y = (area_extent[3] - area_extent[1]) / float(height) /data/gholl/checkouts/pyresample/pyresample/geometry.py:1531: RuntimeWarning: invalid value encountered in scalar divide self.pixel_size_y = (area_extent[3] - area_extent[1]) / float(height) /data/gholl/checkouts/pyresample/pyresample/geometry.py:1531: RuntimeWarning: invalid value encountered in scalar divide self.pixel_size_y = (area_extent[3] - area_extent[1]) / float(height) /data/gholl/checkouts/pyresample/pyresample/geometry.py:1531: RuntimeWarning: invalid value encountered in scalar divide self.pixel_size_y = (area_extent[3] - area_extent[1]) / float(height) /data/gholl/checkouts/pyresample/pyresample/geometry.py:1531: RuntimeWarning: invalid value encountered in scalar divide self.pixel_size_y = (area_extent[3] - area_extent[1]) / float(height) /data/gholl/checkouts/pyresample/pyresample/geometry.py:1531: RuntimeWarning: invalid value encountered in scalar divide self.pixel_size_y = (area_extent[3] - area_extent[1]) / float(height) /data/gholl/checkouts/pyresample/pyresample/geometry.py:1531: RuntimeWarning: invalid value encountered in scalar divide self.pixel_size_y = (area_extent[3] - area_extent[1]) / float(height) /data/gholl/checkouts/pyresample/pyresample/geometry.py:1531: RuntimeWarning: invalid value encountered in scalar divide self.pixel_size_y = (area_extent[3] - area_extent[1]) / float(height) /data/gholl/checkouts/pyresample/pyresample/geometry.py:1531: RuntimeWarning: invalid value encountered in scalar divide self.pixel_size_y = (area_extent[3] - area_extent[1]) / float(height) /data/gholl/checkouts/pyresample/pyresample/geometry.py:1531: RuntimeWarning: invalid value encountered in scalar divide self.pixel_size_y = (area_extent[3] - area_extent[1]) / float(height) /data/gholl/checkouts/pyresample/pyresample/geometry.py:1531: RuntimeWarning: invalid value encountered in scalar divide self.pixel_size_y = (area_extent[3] - area_extent[1]) / float(height) /data/gholl/checkouts/pyresample/pyresample/geometry.py:1531: RuntimeWarning: invalid value encountered in scalar divide self.pixel_size_y = (area_extent[3] - area_extent[1]) / float(height) /data/gholl/checkouts/pyresample/pyresample/geometry.py:1531: RuntimeWarning: invalid value encountered in scalar divide self.pixel_size_y = (area_extent[3] - area_extent[1]) / float(height) /data/gholl/checkouts/pyresample/pyresample/geometry.py:1531: RuntimeWarning: invalid value encountered in scalar divide self.pixel_size_y = (area_extent[3] - area_extent[1]) / float(height) /data/gholl/checkouts/pyresample/pyresample/geometry.py:1531: RuntimeWarning: invalid value encountered in scalar divide self.pixel_size_y = (area_extent[3] - area_extent[1]) / float(height) /data/gholl/checkouts/pyresample/pyresample/geometry.py:1531: RuntimeWarning: invalid value encountered in scalar divide self.pixel_size_y = (area_extent[3] - area_extent[1]) / float(height) /data/gholl/checkouts/pyresample/pyresample/geometry.py:1531: RuntimeWarning: invalid value encountered in scalar divide self.pixel_size_y = (area_extent[3] - area_extent[1]) / float(height) /data/gholl/checkouts/pyresample/pyresample/geometry.py:1531: RuntimeWarning: invalid value encountered in scalar divide self.pixel_size_y = (area_extent[3] - area_extent[1]) / float(height) /data/gholl/checkouts/pyresample/pyresample/geometry.py:1531: RuntimeWarning: invalid value encountered in scalar divide self.pixel_size_y = (area_extent[3] - area_extent[1]) / float(height) /data/gholl/checkouts/pyresample/pyresample/geometry.py:1531: RuntimeWarning: invalid value encountered in scalar divide self.pixel_size_y = (area_extent[3] - area_extent[1]) / float(height) /data/gholl/checkouts/pyresample/pyresample/geometry.py:1531: RuntimeWarning: invalid value encountered in scalar divide self.pixel_size_y = (area_extent[3] - area_extent[1]) / float(height) [DEBUG: 2023-11-30 14:50:26 : satpy.readers.yaml_reader] Requested orientation for Dataset None is 'native' (default). No flipping is applied. [DEBUG: 2023-11-30 14:50:26 : satpy.readers.nwcsaf_nc] Reading ct. [DEBUG: 2023-11-30 14:50:26 : h5py._conv] Creating converter from 7 to 5 [DEBUG: 2023-11-30 14:50:26 : h5py._conv] Creating converter from 5 to 7 [DEBUG: 2023-11-30 14:50:26 : h5py._conv] Creating converter from 7 to 5 [DEBUG: 2023-11-30 14:50:26 : h5py._conv] Creating converter from 5 to 7 [WARNING: 2023-11-30 14:50:26 : satpy.readers.yaml_reader] Can't load ancillary dataset ct_status_flag [DEBUG: 2023-11-30 14:50:26 : satpy.readers.nwcsaf_nc] Reading ct_quality. [DEBUG: 2023-11-30 14:50:26 : satpy.readers.nwcsaf_nc] Reading ct_conditions. [DEBUG: 2023-11-30 14:50:26 : satpy.readers.nwcsaf_nc] Reading ct_pal. [DEBUG: 2023-11-30 14:50:26 : satpy.readers.yaml_reader] No coordinates found for DataID(name='ct_pal', resolution=3000, modifiers=()) [DEBUG: 2023-11-30 14:50:26 : satpy.modifiers.geometry] Applying sun zen correction [DEBUG: 2023-11-30 14:50:26 : satpy.modifiers.geometry] Computing sun zenith angles. [DEBUG: 2023-11-30 14:50:26 : satpy.modifiers.geometry] Apply the standard sun-zenith correction [1/cos(sunz)] [DEBUG: 2023-11-30 14:50:26 : satpy.modifiers.geometry] Applying sun zen correction [DEBUG: 2023-11-30 14:50:26 : satpy.modifiers.geometry] Computing sun zenith angles. [DEBUG: 2023-11-30 14:50:26 : satpy.modifiers.geometry] Apply the standard sun-zenith correction [1/cos(sunz)] [DEBUG: 2023-11-30 14:50:26 : satpy.scene] Delaying generation of DataID(name='_vis06_filled_hrv') because of incompatible areas [DEBUG: 2023-11-30 14:50:26 : satpy.scene] Delaying generation of DataID(name='_vis_with_ir') because of dependency's delayed generation: DataID(name='_ir108', resolution=3000.403165817) [DEBUG: 2023-11-30 14:50:26 : satpy.scene] Delayed prerequisite for 'DataID(name='_vis_with_ir')': 'DataID(name='_ir108', resolution=3000.403165817)' [DEBUG: 2023-11-30 14:50:26 : satpy.scene] Delaying generation of DataID(name='_vis06_filled_hrv') because of incompatible areas [DEBUG: 2023-11-30 14:50:26 : satpy.scene] Delaying generation of DataID(name='vis_with_ir_cloud_overlay') because of dependency's delayed generation: DataID(name='ct', resolution=3000, modifiers=()) [DEBUG: 2023-11-30 14:50:26 : satpy.scene] Delayed prerequisite for 'DataID(name='vis_with_ir_cloud_overlay')': 'DataID(name='ct', resolution=3000, modifiers=())' [WARNING: 2023-11-30 14:50:26 : satpy.scene] The following datasets were not created and may require resampling to be generated: DataID(name='vis_with_ir_cloud_overlay') [DEBUG: 2023-11-30 14:50:26 : satpy.scene] Unloading dataset: DataID(name='VIS006', wavelength=WavelengthRange(min=0.56, central=0.635, max=0.71, unit='µm'), resolution=3000.403165817, calibration=<1>, modifiers=()) [DEBUG: 2023-11-30 14:50:26 : satpy.scene] Unloading dataset: DataID(name='IR_108', wavelength=WavelengthRange(min=9.8, central=10.8, max=11.8, unit='µm'), resolution=3000.403165817, calibration=<2>, modifiers=()) [DEBUG: 2023-11-30 14:50:26 : satpy.scene] Unloading dataset: DataID(name='HRV', wavelength=WavelengthRange(min=0.5, central=0.7, max=0.9, unit='µm'), resolution=1000.134348869, calibration=<1>, modifiers=()) [DEBUG: 2023-11-30 14:50:26 : satpy.scene] Unloading dataset: DataID(name='HRV', wavelength=WavelengthRange(min=0.5, central=0.7, max=0.9, unit='µm'), resolution=1000.134348869, calibration=<1>, modifiers=('sunz_corrected',)) [DEBUG: 2023-11-30 14:50:26 : satpy.scene] Unloading dataset: DataID(name='VIS006', wavelength=WavelengthRange(min=0.56, central=0.635, max=0.71, unit='µm'), resolution=3000.403165817, calibration=<1>, modifiers=('sunz_corrected',)) [DEBUG: 2023-11-30 14:50:26 : satpy.scene] Resampling DataID(name='_hrv', resolution=1000.134348869) /data/gholl/checkouts/satpy/satpy/resample.py:1050: DeprecationWarning: `GradientSearchResampler` is deprecated, please use `create_gradient_search_resampler` instead. resampler_instance = resampler_class(source_area, destination_area) [DEBUG: 2023-11-30 14:50:28 : pyresample.gradient] /!\ Instantiating an experimental GradientSearch resampler /!\ [DEBUG: 2023-11-30 14:50:28 : satpy.scene] Resampling DataID(name='_ir108', resolution=3000.403165817) /data/gholl/checkouts/satpy/satpy/resample.py:1050: DeprecationWarning: `GradientSearchResampler` is deprecated, please use `create_gradient_search_resampler` instead. resampler_instance = resampler_class(source_area, destination_area) [DEBUG: 2023-11-30 14:50:31 : pyresample.gradient] /!\ Instantiating an experimental GradientSearch resampler /!\ [DEBUG: 2023-11-30 14:50:31 : satpy.scene] Resampling DataID(name='_vis06', resolution=3000.403165817) [DEBUG: 2023-11-30 14:50:31 : satpy.scene] Resampling DataID(name='ct', resolution=3000, modifiers=()) /data/gholl/checkouts/satpy/satpy/resample.py:1050: DeprecationWarning: `GradientSearchResampler` is deprecated, please use `create_gradient_search_resampler` instead. resampler_instance = resampler_class(source_area, destination_area) [DEBUG: 2023-11-30 14:50:32 : pyresample.gradient] /!\ Instantiating an experimental GradientSearch resampler /!\ [DEBUG: 2023-11-30 14:50:32 : satpy.scene] Resampling DataID(name='ct_conditions', resolution=3000, modifiers=()) [DEBUG: 2023-11-30 14:50:32 : satpy.scene] Resampling DataID(name='ct_quality', resolution=3000, modifiers=()) [DEBUG: 2023-11-30 14:50:32 : satpy.composites] Computing sun zenith angles. [DEBUG: 2023-11-30 14:50:32 : satpy.writers] Adding enhancement configuration from file: /data/gholl/checkouts/satpy/satpy/etc/enhancements/generic.yaml [DEBUG: 2023-11-30 14:50:32 : satpy.writers] Adding enhancement configuration from file: /home/gholl/Arbeit/checkouts-perforce/config/enhancements/generic.yaml [DEBUG: 2023-11-30 14:50:32 : satpy.writers] Adding enhancement configuration from file: /home/gholl/checkouts/pytroll-dwd-config/enhancements/generic.yaml [DEBUG: 2023-11-30 14:50:32 : satpy.writers] Adding enhancement configuration from file: /data/gholl/checkouts/satpy/satpy/etc/enhancements/seviri.yaml [DEBUG: 2023-11-30 14:50:32 : satpy.writers] Data for DataID(name='_vis06_filled_hrv', resolution=1000.134348869) will be enhanced with options: [{'name': 'stretch', 'method': , 'kwargs': {'stretch': 'crude', 'min_stretch': [0], 'max_stretch': [100]}}] [DEBUG: 2023-11-30 14:50:32 : trollimage.xrimage] Applying stretch crude with parameters {'min_stretch': [0], 'max_stretch': [100]} [DEBUG: 2023-11-30 14:50:32 : satpy.writers] Adding enhancement configuration from file: /data/gholl/checkouts/satpy/satpy/etc/enhancements/generic.yaml [DEBUG: 2023-11-30 14:50:32 : satpy.writers] Adding enhancement configuration from file: /home/gholl/Arbeit/checkouts-perforce/config/enhancements/generic.yaml [DEBUG: 2023-11-30 14:50:32 : satpy.writers] Adding enhancement configuration from file: /home/gholl/checkouts/pytroll-dwd-config/enhancements/generic.yaml [DEBUG: 2023-11-30 14:50:32 : satpy.writers] Adding enhancement configuration from file: /data/gholl/checkouts/satpy/satpy/etc/enhancements/seviri.yaml [DEBUG: 2023-11-30 14:50:32 : satpy.writers] Data for DataID(name='_ir108', resolution=3000.403165817) will be enhanced with options: [{'name': 'stretch', 'method': , 'kwargs': {'stretch': 'crude', 'min_stretch': [300], 'max_stretch': [215]}}] [DEBUG: 2023-11-30 14:50:32 : trollimage.xrimage] Applying stretch crude with parameters {'min_stretch': [300], 'max_stretch': [215]} [DEBUG: 2023-11-30 14:50:32 : satpy.scene] Unloading dataset: DataID(name='_hrv', resolution=1000.134348869) [DEBUG: 2023-11-30 14:50:32 : satpy.scene] Unloading dataset: DataID(name='_ir108', resolution=3000.403165817) [DEBUG: 2023-11-30 14:50:32 : satpy.scene] Unloading dataset: DataID(name='_vis06', resolution=3000.403165817) [DEBUG: 2023-11-30 14:50:32 : satpy.scene] Unloading dataset: DataID(name='ct', resolution=3000, modifiers=()) [DEBUG: 2023-11-30 14:50:32 : satpy.scene] Unloading dataset: DataID(name='_vis06_filled_hrv', resolution=1000.134348869) [DEBUG: 2023-11-30 14:50:32 : satpy.scene] Unloading dataset: DataID(name='_vis_with_ir') [DEBUG: 2023-11-30 14:50:32 : satpy.writers] Reading ['/data/gholl/checkouts/satpy/satpy/etc/writers/geotiff.yaml'] [DEBUG: 2023-11-30 14:50:32 : satpy.writers] Adding enhancement configuration from file: /data/gholl/checkouts/satpy/satpy/etc/enhancements/generic.yaml [DEBUG: 2023-11-30 14:50:32 : satpy.writers] Adding enhancement configuration from file: /home/gholl/Arbeit/checkouts-perforce/config/enhancements/generic.yaml [DEBUG: 2023-11-30 14:50:32 : satpy.writers] Adding enhancement configuration from file: /home/gholl/checkouts/pytroll-dwd-config/enhancements/generic.yaml [DEBUG: 2023-11-30 14:50:32 : satpy.writers] Adding enhancement configuration from file: /data/gholl/checkouts/satpy/satpy/etc/enhancements/seviri.yaml [DEBUG: 2023-11-30 14:50:32 : satpy.writers] Data for DataID(name='vis_with_ir_cloud_overlay') will be enhanced with options: [{'name': 'stretch', 'method': , 'kwargs': {'stretch': 'crude', 'min_stretch': [0, 0], 'max_stretch': [1, 1]}}] [DEBUG: 2023-11-30 14:50:32 : trollimage.xrimage] Applying stretch crude with parameters {'min_stretch': [0, 0], 'max_stretch': [1, 1]} [DEBUG: 2023-11-30 14:50:32 : rasterio.env] Entering env context: [DEBUG: 2023-11-30 14:50:32 : rasterio.env] Starting outermost env [DEBUG: 2023-11-30 14:50:32 : rasterio.env] No GDAL environment exists [DEBUG: 2023-11-30 14:50:32 : rasterio.env] New GDAL environment created [DEBUG: 2023-11-30 14:50:32 : rasterio._filepath] Installing FilePath filesystem handler plugin... [DEBUG: 2023-11-30 14:50:32 : rasterio._env] GDAL_DATA found in environment. [DEBUG: 2023-11-30 14:50:32 : rasterio._env] PROJ_DATA found in environment. [DEBUG: 2023-11-30 14:50:32 : rasterio._env] Started GDALEnv: self=. [DEBUG: 2023-11-30 14:50:32 : rasterio.env] Entered env context: [DEBUG: 2023-11-30 14:50:32 : rasterio._io] Path: _UnparsedPath(path='/media/nas/x21308/plots_and_maps/2023/11/30/202201240945-Meteosat-9-seviri-eurol-vis_with_ir_cloud_overlay-gradient.tif'), mode: w, driver: GTiff [DEBUG: 2023-11-30 14:50:32 : rasterio._base] Nodata success: 0, Nodata value: 0.000000 [DEBUG: 2023-11-30 14:50:32 : rasterio._base] Nodata success: 0, Nodata value: 0.000000 [DEBUG: 2023-11-30 14:50:32 : rasterio.env] Exiting env context: [DEBUG: 2023-11-30 14:50:32 : rasterio.env] Cleared existing options [DEBUG: 2023-11-30 14:50:32 : rasterio._env] Stopped GDALEnv . [DEBUG: 2023-11-30 14:50:32 : rasterio.env] Exiting outermost env [DEBUG: 2023-11-30 14:50:32 : rasterio.env] Exited env context: [INFO: 2023-11-30 14:50:32 : satpy.writers] Computing and writing results... ```

Environment Info:

Additional context

Thinking about the limits of gradient search, I don't see why this should happen. The channel data and the transparency (alpha) are both continuous floating point values, where the arithmetic mean is a valid operation. For the clear-sky areas at land, sea, or coast, all three should be fully transparent.

The same problem is visible with bilinear (the speckles are even worse), but no artefacts are apparent with nearest neighbour.

pnuu commented 11 months ago

This happens because gradient search defaults to bilinear interpolation and thus changes the original values used to create the mask to floating point. Switching to nearest should resolve this: scn.resample(..., resampler='gradient_search', method='nearest) (if I remember the syntax correctly).

gerritholl commented 11 months ago

Oh, right. I forgot that resampling happens before compositing, despite the composite loading call coming first in the source code.

Adding method="nearest_neighbour" works. The result also looks almost identical to using the nearest resampler.

Based on https://github.com/pytroll/satpy/issues/2400, I would expect that if all the inputs have the same resolution (areadefinition), then with generate=True it should be possible for compositing to happen before resampling...

pnuu commented 11 months ago

With matching areas and generate=True the composite should be formed using the original values and the completed composite resampled afterwards without the artefacts. Note that all the areas need to match exactly (projection, resolution, number of pixels and extents) for the composite being created without resampling.