pytroll / satpy

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

BackgroundCompositor using IR Sandwich (masked so only coldest clouds are visible) and True Color as inputs #1689

Closed jpaul-git closed 3 years ago

jpaul-git commented 3 years ago

Describe the Bug

When using the BackgroundCompositor on a foreground picture (RGBA) and a background picture (RGB) instead of showing the background picture wherever the foreground picture is transparent, the background turns completely black instead.

Goal: To create an IR Sandwich Product with the background as the True Color Image. This can be done one other way, but the True Color image loses it's vibrant colors.

To Reproduce

The following composites and enhancements are used in the abi.yaml files:

CIMSS True Color Sunz Rayleigh (composites/abi.yaml):

  cimss_true_color_sunz_rayleigh:
    compositor: !!python/name:satpy.composites.SelfSharpenedRGB
    description: >
      CIMSS Natural (True) Color RGB. This version has been adjusted for the
      cosine of the solar zenith angle and has had rayleigh correction applied.
      This RGB is ratio sharpened by comparing a high resolution C02 (red)
      band with a lower/averaged version of itself and applying that ratio to
      the green and blue channels.
    references:
      Research Article: https://agupubs.onlinelibrary.wiley.com/doi/10.1029/2018EA000379
    prerequisites:
      - name: C02
        modifiers: [sunz_corrected, rayleigh_corrected]
      - name: cimss_green_sunz_rayleigh
      - name: C01
        modifiers: [sunz_corrected, rayleigh_corrected]
    standard_name: cimss_true_color

Colorize the IR Clouds (composites/abi.yaml):

  colorized_ir_clouds_abi_cool:
    compositor: !!python/name:satpy.composites.SingleBandCompositor
    prerequisites:
      - name: C13
    standard_name: colorized_ir_clouds_abi_cool

Using the Color enhancement (enhancements/abi.yaml):

  colorized_ir_clouds_abi_cool:
    standard_name: colorized_ir_clouds_abi_cool
    operations:
      - name: colorize
        method: !!python/name:satpy.enhancements.colorize
        kwargs:
          palettes:
            - {colors: spectral, min_value: 193.15, max_value: 236.149999}
            - {colors: greys, min_value: 236.15, max_value: 373.150001} 

To create an image with the luminance from the True Color image and the Colorized IR Clouds

  ir_sandwich_true_abi_alpha:
    compositor: !!python/name:satpy.composites.SandwichCompositor
    standard_name: ir_sandwich_true_abi
    prerequisites:
      - name: cimss_true_color_sunz_rayleigh
      - name: colorized_ir_clouds_abi_cool

Then Mask this luminance enhanced colorized IR to get only the coldest clouds:

  ir_colorized_raw:
    compositor: !!python/name:satpy.composites.MaskingCompositor
    prerequisites:
    - ir_sandwich_true_abi_alpha
    - C13
    standard_name: ir_colorized_raw
    conditions:
      - method: greater
        value: 236.149999
        transparency: 100
      - method: isnan
        transparency: 100

Then feed this luminance enhance colorized IR of only the coldest clouds in the BackgroundCompositor with the True Color image as the background.

  IR_sandwich_true_with_background:
    compositor: !!python/name:satpy.composites.BackgroundCompositor
    standard_name: IR_sandwich_true_with_background
    prerequisites:
      - ir_colorized_raw
      - cimss_true_color_sunz_rayleigh

Python Code

filesB = glob('/PythonScripts/NetCDF_Files/*.nc')
scnB = Scene(reader='abi_l1b', filenames=filesB)
wavelengths = ["IR_sandwich_true_with_background"]
scnB.load(wavelengths)
new_scnB = scnB.resample("goes16globeFullHires") 
from satpy.writers import get_enhanced_image
print(get_enhanced_image(new_scnB['IR_sandwich_true_with_background']).data.attrs['mode'])
new_scnB.save_datasets(filename="IR_sandwich_true_with_background.png")

Expected Results This should produce a True Color image with the coldest cloud tops colorized according to the IR brightness temperatures.

Actual results

[DEBUG: 2021-05-24 13:26:44 : satpy.scene] Setting 'PPP_CONFIG_DIR' to '/home/jpaul/miniconda3/lib/python3.8/site-packages/satpy/etc'
[DEBUG: 2021-05-24 13:26:44 : satpy.readers.yaml_reader] Reading ('/home/jpaul/miniconda3/lib/python3.8/site-packages/satpy/etc/readers/abi_l1b.yaml',)
[DEBUG: 2021-05-24 13:26:44 : satpy.readers.yaml_reader] Assigning to abi_l1b: ['/home/jpaul/PythonScripts/NetCDF_Files/Sally/OR_ABI-L1b-RadF-M6C01_G16_s20202581610186_e20202581619494_c20202581619548.nc', '/home/jpaul/PythonScripts/NetCDF_Files/Sally/OR_ABI-L1b-RadF-M6C02_G16_s20202581610186_e20202581619494_c20202581619539.nc', '/home/jpaul/PythonScripts/NetCDF_Files/Sally/OR_ABI-L1b-RadF-M6C03_G16_s20202581610186_e20202581619494_c20202581619544.nc', '/home/jpaul/PythonScripts/NetCDF_Files/Sally/OR_ABI-L1b-RadF-M6C13_G16_s20202581610186_e20202581619506_c20202581619580.nc']
[WARNING: 2021-05-24 13:26:44 : satpy.readers] Don't know how to open the following files: {'/home/jpaul/PythonScripts/NetCDF_Files/Sally/OR_ABI-L2-ACMF-M6_G16_s20202581610186_e20202581619494_c20202581620234.nc'}
[DEBUG: 2021-05-24 13:26:44 : satpy.composites.config_loader] Looking for composites config file abi.yaml
[DEBUG: 2021-05-24 13:26:44 : satpy.composites.config_loader] Looking for composites config file visir.yaml
[DEBUG: 2021-05-24 13:26:44 : satpy.node] Skipping optional DataQuery(name='solar_zenith_angle', calibration='reflectance'): Unknown dataset DataQuery(name='solar_zenith_angle', calibration='reflectance')
[DEBUG: 2021-05-24 13:26:44 : satpy.node] Skipping optional DataQuery(name='satellite_azimuth_angle', calibration='reflectance'): Unknown dataset DataQuery(name='satellite_azimuth_angle', calibration='reflectance')
[DEBUG: 2021-05-24 13:26:44 : satpy.node] Skipping optional DataQuery(name='satellite_zenith_angle', calibration='reflectance'): Unknown dataset DataQuery(name='satellite_zenith_angle', calibration='reflectance')
[DEBUG: 2021-05-24 13:26:44 : satpy.node] Skipping optional DataQuery(name='solar_azimuth_angle', calibration='reflectance'): Unknown dataset DataQuery(name='solar_azimuth_angle', calibration='reflectance')
[DEBUG: 2021-05-24 13:26:44 : satpy.node] Skipping optional DataQuery(name='solar_zenith_angle', calibration='reflectance'): Unknown dataset DataQuery(name='solar_zenith_angle', calibration='reflectance')
[DEBUG: 2021-05-24 13:26:44 : satpy.node] Skipping optional DataQuery(name='solar_zenith_angle', calibration='reflectance'): Unknown dataset DataQuery(name='solar_zenith_angle', calibration='reflectance')
[DEBUG: 2021-05-24 13:26:44 : satpy.node] Skipping optional DataQuery(name='satellite_azimuth_angle', calibration='reflectance'): Unknown dataset DataQuery(name='satellite_azimuth_angle', calibration='reflectance')
[DEBUG: 2021-05-24 13:26:44 : satpy.node] Skipping optional DataQuery(name='satellite_zenith_angle', calibration='reflectance'): Unknown dataset DataQuery(name='satellite_zenith_angle', calibration='reflectance')
[DEBUG: 2021-05-24 13:26:44 : satpy.node] Skipping optional DataQuery(name='solar_azimuth_angle', calibration='reflectance'): Unknown dataset DataQuery(name='solar_azimuth_angle', calibration='reflectance')
[DEBUG: 2021-05-24 13:26:44 : satpy.node] Skipping optional DataQuery(name='solar_zenith_angle', calibration='reflectance'): Unknown dataset DataQuery(name='solar_zenith_angle', calibration='reflectance')
[DEBUG: 2021-05-24 13:26:44 : satpy.node] Skipping optional DataQuery(name='solar_zenith_angle', calibration='reflectance'): Unknown dataset DataQuery(name='solar_zenith_angle', calibration='reflectance')
[DEBUG: 2021-05-24 13:26:44 : pyproj] PROJ_ERROR: proj_crs_get_sub_crs: Object is not a CompoundCRS
/home/jpaul/miniconda3/lib/python3.8/site-packages/pyproj/crs/crs.py:543: UserWarning: You will likely lose important projection information when converting to a PROJ string from another format. See: https://proj.org/faq.html#what-is-the-best-format-for-describing-coordinate-reference-systems
  proj_string = self.to_proj4()
[DEBUG: 2021-05-24 13:26:44 : satpy.readers.abi_l1b] Reading in get_dataset C03.
[DEBUG: 2021-05-24 13:26:44 : satpy.readers.abi_l1b] Calibrating to reflectances
[DEBUG: 2021-05-24 13:26:44 : pyproj] PROJ_ERROR: proj_crs_get_sub_crs: Object is not a CompoundCRS
/home/jpaul/miniconda3/lib/python3.8/site-packages/pyproj/crs/crs.py:543: UserWarning: You will likely lose important projection information when converting to a PROJ string from another format. See: https://proj.org/faq.html#what-is-the-best-format-for-describing-coordinate-reference-systems
  proj_string = self.to_proj4()
[DEBUG: 2021-05-24 13:26:44 : satpy.readers.abi_l1b] Reading in get_dataset C02.
[DEBUG: 2021-05-24 13:26:44 : satpy.readers.abi_l1b] Calibrating to reflectances
[DEBUG: 2021-05-24 13:26:44 : pyproj] PROJ_ERROR: proj_crs_get_sub_crs: Object is not a CompoundCRS
/home/jpaul/miniconda3/lib/python3.8/site-packages/pyproj/crs/crs.py:543: UserWarning: You will likely lose important projection information when converting to a PROJ string from another format. See: https://proj.org/faq.html#what-is-the-best-format-for-describing-coordinate-reference-systems
  proj_string = self.to_proj4()
[DEBUG: 2021-05-24 13:26:44 : satpy.readers.abi_l1b] Reading in get_dataset C13.
[DEBUG: 2021-05-24 13:26:44 : satpy.readers.abi_l1b] Calibrating to brightness temperatures
[DEBUG: 2021-05-24 13:26:44 : pyproj] PROJ_ERROR: proj_crs_get_sub_crs: Object is not a CompoundCRS
/home/jpaul/miniconda3/lib/python3.8/site-packages/pyproj/crs/crs.py:543: UserWarning: You will likely lose important projection information when converting to a PROJ string from another format. See: https://proj.org/faq.html#what-is-the-best-format-for-describing-coordinate-reference-systems
  proj_string = self.to_proj4()
[DEBUG: 2021-05-24 13:26:44 : satpy.readers.abi_l1b] Reading in get_dataset C01.
[DEBUG: 2021-05-24 13:26:44 : satpy.readers.abi_l1b] Calibrating to reflectances
[DEBUG: 2021-05-24 13:26:44 : satpy.modifiers.geometry] Applying sun zen correction
[DEBUG: 2021-05-24 13:26:44 : satpy.modifiers.geometry] Computing sun zenith angles.
[DEBUG: 2021-05-24 13:26:44 : pyproj] PROJ_ERROR: proj_crs_get_sub_crs: Object is not a CompoundCRS
[DEBUG: 2021-05-24 13:26:44 : pyproj] PROJ_ERROR: proj_crs_get_sub_crs: Object is not a CompoundCRS
[DEBUG: 2021-05-24 13:26:44 : pyproj] PROJ_ERROR: proj_crs_get_sub_crs: Object is not a CompoundCRS
[DEBUG: 2021-05-24 13:26:44 : satpy.modifiers.geometry] Apply the standard sun-zenith correction [1/cos(sunz)]
[DEBUG: 2021-05-24 13:26:44 : satpy.modifiers.geometry] Sun-zenith correction applied. Computation time:   0.0 (sec)
[DEBUG: 2021-05-24 13:26:44 : h5py._conv] Creating converter from 7 to 5
[DEBUG: 2021-05-24 13:26:44 : h5py._conv] Creating converter from 5 to 7
[DEBUG: 2021-05-24 13:26:44 : h5py._conv] Creating converter from 7 to 5
[DEBUG: 2021-05-24 13:26:44 : h5py._conv] Creating converter from 5 to 7
[DEBUG: 2021-05-24 13:26:44 : pyproj] PROJ_ERROR: proj_crs_get_sub_crs: Object is not a CompoundCRS
[DEBUG: 2021-05-24 13:26:44 : pyproj] PROJ_ERROR: proj_crs_get_sub_crs: Object is not a CompoundCRS
[DEBUG: 2021-05-24 13:26:44 : pyproj] PROJ_ERROR: proj_crs_get_sub_crs: Object is not a CompoundCRS
[INFO: 2021-05-24 13:26:44 : satpy.modifiers.atmosphere] Removing Rayleigh scattering with atmosphere 'us-standard' and aerosol type 'rayleigh_only' for 'C02'
[INFO: 2021-05-24 13:26:44 : pyspectral.rayleigh] Atmosphere chosen: us-standard
[DEBUG: 2021-05-24 13:26:44 : pyspectral.rayleigh] LUT filename: /home/jpaul/.local/share/pyspectral/rayleigh_only/rayleigh_lut_us-standard.h5
[DEBUG: 2021-05-24 13:26:44 : pyspectral.rsr_reader] Filename: /home/jpaul/.local/share/pyspectral/rsr_abi_GOES-16.h5
[DEBUG: 2021-05-24 13:26:44 : pyspectral.rsr_reader] Filename: /home/jpaul/.local/share/pyspectral/rsr_abi_GOES-16.h5
[DEBUG: 2021-05-24 13:26:44 : h5py._conv] Creating converter from 3 to 5
[DEBUG: 2021-05-24 13:26:44 : pyspectral.rsr_reader] No detectors found - assume only one...
[DEBUG: 2021-05-24 13:26:44 : pyspectral.rsr_reader] No detectors found - assume only one...
[DEBUG: 2021-05-24 13:26:44 : pyspectral.rsr_reader] No detectors found - assume only one...
[DEBUG: 2021-05-24 13:26:44 : pyspectral.rsr_reader] No detectors found - assume only one...
[DEBUG: 2021-05-24 13:26:44 : pyspectral.rsr_reader] No detectors found - assume only one...
[DEBUG: 2021-05-24 13:26:44 : pyspectral.rsr_reader] No detectors found - assume only one...
[DEBUG: 2021-05-24 13:26:44 : pyspectral.rsr_reader] No detectors found - assume only one...
[DEBUG: 2021-05-24 13:26:44 : pyspectral.rsr_reader] No detectors found - assume only one...
[DEBUG: 2021-05-24 13:26:44 : pyspectral.rsr_reader] No detectors found - assume only one...
[DEBUG: 2021-05-24 13:26:44 : pyspectral.rsr_reader] No detectors found - assume only one...
[DEBUG: 2021-05-24 13:26:44 : pyspectral.rsr_reader] No detectors found - assume only one...
[DEBUG: 2021-05-24 13:26:44 : pyspectral.rsr_reader] No detectors found - assume only one...
[DEBUG: 2021-05-24 13:26:44 : pyspectral.rsr_reader] No detectors found - assume only one...
[DEBUG: 2021-05-24 13:26:44 : pyspectral.rsr_reader] No detectors found - assume only one...
[DEBUG: 2021-05-24 13:26:44 : pyspectral.rsr_reader] No detectors found - assume only one...
[DEBUG: 2021-05-24 13:26:44 : pyspectral.rsr_reader] No detectors found - assume only one...
[DEBUG: 2021-05-24 13:26:44 : pyspectral.rayleigh] Band name: ch2  Effective wavelength: 0.635429
[DEBUG: 2021-05-24 13:26:44 : pyspectral.rayleigh] Time - Interpolation: 0.031746
[DEBUG: 2021-05-24 13:26:44 : satpy.modifiers.geometry] Applying sun zen correction
[DEBUG: 2021-05-24 13:26:44 : satpy.modifiers.geometry] Computing sun zenith angles.
[DEBUG: 2021-05-24 13:26:44 : pyproj] PROJ_ERROR: proj_crs_get_sub_crs: Object is not a CompoundCRS
[DEBUG: 2021-05-24 13:26:44 : pyproj] PROJ_ERROR: proj_crs_get_sub_crs: Object is not a CompoundCRS
[DEBUG: 2021-05-24 13:26:44 : pyproj] PROJ_ERROR: proj_crs_get_sub_crs: Object is not a CompoundCRS
[DEBUG: 2021-05-24 13:26:44 : satpy.modifiers.geometry] Apply the standard sun-zenith correction [1/cos(sunz)]
[DEBUG: 2021-05-24 13:26:44 : satpy.modifiers.geometry] Sun-zenith correction applied. Computation time:   0.0 (sec)
[DEBUG: 2021-05-24 13:26:44 : satpy.scene] Delaying generation of DataID(name='C01', wavelength=WavelengthRange(min=0.45, central=0.47, max=0.49, unit='µm'), resolution=1000, calibration=<calibration.reflectance>, modifiers=('sunz_corrected', 'rayleigh_corrected')) because of incompatible areas
[DEBUG: 2021-05-24 13:26:44 : satpy.modifiers.geometry] Applying sun zen correction
[DEBUG: 2021-05-24 13:26:44 : satpy.modifiers.geometry] Computing sun zenith angles.
[DEBUG: 2021-05-24 13:26:44 : pyproj] PROJ_ERROR: proj_crs_get_sub_crs: Object is not a CompoundCRS
[DEBUG: 2021-05-24 13:26:44 : pyproj] PROJ_ERROR: proj_crs_get_sub_crs: Object is not a CompoundCRS
[DEBUG: 2021-05-24 13:26:44 : pyproj] PROJ_ERROR: proj_crs_get_sub_crs: Object is not a CompoundCRS
[DEBUG: 2021-05-24 13:26:44 : satpy.modifiers.geometry] Apply the standard sun-zenith correction [1/cos(sunz)]
[DEBUG: 2021-05-24 13:26:44 : satpy.modifiers.geometry] Sun-zenith correction applied. Computation time:   0.0 (sec)
[DEBUG: 2021-05-24 13:26:44 : satpy.scene] Delaying generation of DataID(name='cimss_green_sunz_rayleigh') because of dependency's delayed generation: DataID(name='C03', wavelength=WavelengthRange(min=0.8455, central=0.865, max=0.8845, unit='µm'), resolution=1000, calibration=<calibration.reflectance>, modifiers=('sunz_corrected',))
[DEBUG: 2021-05-24 13:26:44 : satpy.scene] Delayed prerequisite for 'DataID(name='cimss_green_sunz_rayleigh')': 'DataID(name='C03', wavelength=WavelengthRange(min=0.8455, central=0.865, max=0.8845, unit='µm'), resolution=1000, calibration=<calibration.reflectance>, modifiers=('sunz_corrected',))'
[DEBUG: 2021-05-24 13:26:44 : satpy.scene] Delaying generation of DataID(name='cimss_true_color_sunz_rayleigh') because of dependency's delayed generation: DataID(name='C01', wavelength=WavelengthRange(min=0.45, central=0.47, max=0.49, unit='µm'), resolution=1000, calibration=<calibration.reflectance>, modifiers=('sunz_corrected', 'rayleigh_corrected'))
[DEBUG: 2021-05-24 13:26:44 : satpy.scene] Delayed prerequisite for 'DataID(name='cimss_true_color_sunz_rayleigh')': 'DataID(name='C01', wavelength=WavelengthRange(min=0.45, central=0.47, max=0.49, unit='µm'), resolution=1000, calibration=<calibration.reflectance>, modifiers=('sunz_corrected', 'rayleigh_corrected'))'
[DEBUG: 2021-05-24 13:26:44 : satpy.scene] Delaying generation of DataID(name='ir_sandwich_true_abi_alpha') because of dependency's delayed generation: DataID(name='colorized_ir_clouds_abi_cool')
[DEBUG: 2021-05-24 13:26:44 : satpy.scene] Delayed prerequisite for 'DataID(name='ir_sandwich_true_abi_alpha')': 'DataID(name='colorized_ir_clouds_abi_cool')'
[DEBUG: 2021-05-24 13:26:44 : satpy.scene] Delaying generation of DataID(name='ir_colorized_raw') because of dependency's delayed generation: DataID(name='C13', wavelength=WavelengthRange(min=10.1, central=10.35, max=10.6, unit='µm'), resolution=2000, calibration=<calibration.brightness_temperature>, modifiers=())
[DEBUG: 2021-05-24 13:26:44 : satpy.scene] Delayed prerequisite for 'DataID(name='ir_colorized_raw')': 'DataID(name='C13', wavelength=WavelengthRange(min=10.1, central=10.35, max=10.6, unit='µm'), resolution=2000, calibration=<calibration.brightness_temperature>, modifiers=())'
[DEBUG: 2021-05-24 13:26:44 : satpy.scene] Delaying generation of DataID(name='IR_sandwich_true_with_background') because of dependency's delayed generation: DataID(name='cimss_true_color_sunz_rayleigh')
[DEBUG: 2021-05-24 13:26:44 : satpy.scene] Delayed prerequisite for 'DataID(name='IR_sandwich_true_with_background')': 'DataID(name='cimss_true_color_sunz_rayleigh')'
[DEBUG: 2021-05-24 13:26:44 : satpy.scene] Delaying generation of DataID(name='C01', wavelength=WavelengthRange(min=0.45, central=0.47, max=0.49, unit='µm'), resolution=1000, calibration=<calibration.reflectance>, modifiers=('sunz_corrected', 'rayleigh_corrected')) because of incompatible areas
[DEBUG: 2021-05-24 13:26:44 : satpy.scene] Delaying generation of DataID(name='cimss_green_sunz_rayleigh') because of dependency's delayed generation: DataID(name='C03', wavelength=WavelengthRange(min=0.8455, central=0.865, max=0.8845, unit='µm'), resolution=1000, calibration=<calibration.reflectance>, modifiers=('sunz_corrected',))
[DEBUG: 2021-05-24 13:26:44 : satpy.scene] Delayed prerequisite for 'DataID(name='cimss_green_sunz_rayleigh')': 'DataID(name='C03', wavelength=WavelengthRange(min=0.8455, central=0.865, max=0.8845, unit='µm'), resolution=1000, calibration=<calibration.reflectance>, modifiers=('sunz_corrected',))'
[DEBUG: 2021-05-24 13:26:44 : satpy.scene] Delaying generation of DataID(name='cimss_true_color_sunz_rayleigh') because of dependency's delayed generation: DataID(name='C01', wavelength=WavelengthRange(min=0.45, central=0.47, max=0.49, unit='µm'), resolution=1000, calibration=<calibration.reflectance>, modifiers=('sunz_corrected', 'rayleigh_corrected'))
[DEBUG: 2021-05-24 13:26:44 : satpy.scene] Delayed prerequisite for 'DataID(name='cimss_true_color_sunz_rayleigh')': 'DataID(name='C01', wavelength=WavelengthRange(min=0.45, central=0.47, max=0.49, unit='µm'), resolution=1000, calibration=<calibration.reflectance>, modifiers=('sunz_corrected', 'rayleigh_corrected'))'
[DEBUG: 2021-05-24 13:26:44 : satpy.scene] Delaying generation of DataID(name='ir_sandwich_true_abi_alpha') because of dependency's delayed generation: DataID(name='colorized_ir_clouds_abi_cool', resolution=2000)
[DEBUG: 2021-05-24 13:26:44 : satpy.scene] Delayed prerequisite for 'DataID(name='ir_sandwich_true_abi_alpha')': 'DataID(name='colorized_ir_clouds_abi_cool', resolution=2000)'
[WARNING: 2021-05-24 13:26:44 : satpy.scene] The following datasets were not created and may require resampling to be generated: DataID(name='IR_sandwich_true_with_background')
[DEBUG: 2021-05-24 13:26:44 : satpy.scene] Unloading dataset: DataID(name='C03', wavelength=WavelengthRange(min=0.8455, central=0.865, max=0.8845, unit='µm'), resolution=1000, calibration=<calibration.reflectance>, modifiers=())
[DEBUG: 2021-05-24 13:26:44 : satpy.scene] Unloading dataset: DataID(name='C02', wavelength=WavelengthRange(min=0.59, central=0.64, max=0.69, unit='µm'), resolution=500, calibration=<calibration.reflectance>, modifiers=())
[DEBUG: 2021-05-24 13:26:44 : satpy.scene] Unloading dataset: DataID(name='C01', wavelength=WavelengthRange(min=0.45, central=0.47, max=0.49, unit='µm'), resolution=1000, calibration=<calibration.reflectance>, modifiers=())
[DEBUG: 2021-05-24 13:26:44 : satpy.scene] Setting 'PPP_CONFIG_DIR' to '/home/jpaul/miniconda3/lib/python3.8/site-packages/satpy/etc'
[DEBUG: 2021-05-24 13:26:45 : pyproj] PROJ_ERROR: proj_crs_get_sub_crs: Object is not a CompoundCRS
[DEBUG: 2021-05-24 13:26:45 : pyproj] PROJ_ERROR: proj_crs_get_sub_crs: Object is not a CompoundCRS
[DEBUG: 2021-05-24 13:26:45 : satpy.scene] Resampling DataID(name='C13', wavelength=WavelengthRange(min=10.1, central=10.35, max=10.6, unit='µm'), resolution=2000, calibration=<calibration.brightness_temperature>, modifiers=())
[DEBUG: 2021-05-24 13:26:45 : pyproj] PROJ_ERROR: proj_crs_get_sub_crs: Object is not a CompoundCRS
/home/jpaul/miniconda3/lib/python3.8/site-packages/pyproj/crs/crs.py:543: UserWarning: You will likely lose important projection information when converting to a PROJ string from another format. See: https://proj.org/faq.html#what-is-the-best-format-for-describing-coordinate-reference-systems
  proj_string = self.to_proj4()
[DEBUG: 2021-05-24 13:26:45 : pyproj] PROJ_ERROR: proj_crs_get_sub_crs: Object is not a CompoundCRS
[DEBUG: 2021-05-24 13:26:46 : pyproj] PROJ_ERROR: proj_crs_get_sub_crs: Object is not a CompoundCRS
[DEBUG: 2021-05-24 13:26:46 : pyproj] PROJ_ERROR: proj_crs_get_sub_crs: Object is not a CompoundCRS
/home/jpaul/miniconda3/lib/python3.8/site-packages/pyproj/crs/crs.py:543: UserWarning: You will likely lose important projection information when converting to a PROJ string from another format. See: https://proj.org/faq.html#what-is-the-best-format-for-describing-coordinate-reference-systems
  proj_string = self.to_proj4()
[INFO: 2021-05-24 13:26:46 : satpy.resample] Using default KDTree resampler
/home/jpaul/miniconda3/lib/python3.8/site-packages/numpy/lib/function_base.py:1269: RuntimeWarning: invalid value encountered in subtract
  a = op(a[slice1], a[slice2])
[DEBUG: 2021-05-24 13:26:46 : satpy.resample] Check if ./resample_lut-03738b49ffc3a082b3a3d3d2ca499a2e5422cde8.npz exists
[DEBUG: 2021-05-24 13:26:46 : satpy.resample] Computing kd-tree parameters
[DEBUG: 2021-05-24 13:26:46 : pyproj] PROJ_ERROR: proj_crs_get_sub_crs: Object is not a CompoundCRS
[DEBUG: 2021-05-24 13:26:46 : pyproj] PROJ_ERROR: proj_crs_get_sub_crs: Object is not a CompoundCRS
[DEBUG: 2021-05-24 13:26:46 : pyproj] PROJ_ERROR: proj_crs_get_sub_crs: Object is not a CompoundCRS
[DEBUG: 2021-05-24 13:26:46 : pyproj] PROJ_ERROR: proj_crs_get_sub_crs: Object is not a CompoundCRS
[DEBUG: 2021-05-24 13:26:46 : pyproj] PROJ_ERROR: proj_crs_get_sub_crs: Object is not a CompoundCRS
[DEBUG: 2021-05-24 13:26:46 : pyproj] PROJ_ERROR: proj_crs_get_sub_crs: Object is not a CompoundCRS
[DEBUG: 2021-05-24 13:26:46 : satpy.resample] Resampling Rad
[DEBUG: 2021-05-24 13:26:46 : satpy.scene] Resampling DataID(name='C02', wavelength=WavelengthRange(min=0.59, central=0.64, max=0.69, unit='µm'), resolution=500, calibration=<calibration.reflectance>, modifiers=('sunz_corrected',))
[DEBUG: 2021-05-24 13:26:46 : pyproj] PROJ_ERROR: proj_crs_get_sub_crs: Object is not a CompoundCRS
[DEBUG: 2021-05-24 13:26:46 : pyproj] PROJ_ERROR: proj_crs_get_sub_crs: Object is not a CompoundCRS
[DEBUG: 2021-05-24 13:26:47 : pyproj] PROJ_ERROR: proj_crs_get_sub_crs: Object is not a CompoundCRS
[DEBUG: 2021-05-24 13:26:47 : pyproj] PROJ_ERROR: proj_crs_get_sub_crs: Object is not a CompoundCRS
/home/jpaul/miniconda3/lib/python3.8/site-packages/pyproj/crs/crs.py:543: UserWarning: You will likely lose important projection information when converting to a PROJ string from another format. See: https://proj.org/faq.html#what-is-the-best-format-for-describing-coordinate-reference-systems
  proj_string = self.to_proj4()
[INFO: 2021-05-24 13:26:47 : satpy.resample] Using default KDTree resampler
/home/jpaul/miniconda3/lib/python3.8/site-packages/numpy/lib/function_base.py:1269: RuntimeWarning: invalid value encountered in subtract
  a = op(a[slice1], a[slice2])
[DEBUG: 2021-05-24 13:26:47 : satpy.resample] Check if ./resample_lut-4b3fca2fa47361d51f80eeab822f570f8da8d7e6.npz exists
[DEBUG: 2021-05-24 13:26:47 : satpy.resample] Computing kd-tree parameters
[DEBUG: 2021-05-24 13:26:47 : pyproj] PROJ_ERROR: proj_crs_get_sub_crs: Object is not a CompoundCRS
[DEBUG: 2021-05-24 13:26:47 : pyproj] PROJ_ERROR: proj_crs_get_sub_crs: Object is not a CompoundCRS
[DEBUG: 2021-05-24 13:26:47 : pyproj] PROJ_ERROR: proj_crs_get_sub_crs: Object is not a CompoundCRS
[DEBUG: 2021-05-24 13:26:47 : pyproj] PROJ_ERROR: proj_crs_get_sub_crs: Object is not a CompoundCRS
[DEBUG: 2021-05-24 13:26:47 : pyproj] PROJ_ERROR: proj_crs_get_sub_crs: Object is not a CompoundCRS
[DEBUG: 2021-05-24 13:26:47 : pyproj] PROJ_ERROR: proj_crs_get_sub_crs: Object is not a CompoundCRS
[DEBUG: 2021-05-24 13:26:47 : satpy.resample] Resampling None
/home/jpaul/miniconda3/lib/python3.8/site-packages/pyresample/kd_tree.py:1229: PerformanceWarning: Increasing number of chunks by factor of 17
  res = blockwise(_my_index, dst_adims,
[DEBUG: 2021-05-24 13:26:47 : satpy.scene] Resampling DataID(name='C02', wavelength=WavelengthRange(min=0.59, central=0.64, max=0.69, unit='µm'), resolution=500, calibration=<calibration.reflectance>, modifiers=('sunz_corrected', 'rayleigh_corrected'))
[DEBUG: 2021-05-24 13:26:47 : satpy.resample] Check if ./resample_lut-4b3fca2fa47361d51f80eeab822f570f8da8d7e6.npz exists
[DEBUG: 2021-05-24 13:26:47 : satpy.resample] Computing kd-tree parameters
[DEBUG: 2021-05-24 13:26:47 : pyproj] PROJ_ERROR: proj_crs_get_sub_crs: Object is not a CompoundCRS
[DEBUG: 2021-05-24 13:26:47 : pyproj] PROJ_ERROR: proj_crs_get_sub_crs: Object is not a CompoundCRS
[DEBUG: 2021-05-24 13:26:47 : pyproj] PROJ_ERROR: proj_crs_get_sub_crs: Object is not a CompoundCRS
[DEBUG: 2021-05-24 13:26:47 : pyproj] PROJ_ERROR: proj_crs_get_sub_crs: Object is not a CompoundCRS
[DEBUG: 2021-05-24 13:26:47 : pyproj] PROJ_ERROR: proj_crs_get_sub_crs: Object is not a CompoundCRS
[DEBUG: 2021-05-24 13:26:47 : pyproj] PROJ_ERROR: proj_crs_get_sub_crs: Object is not a CompoundCRS
[DEBUG: 2021-05-24 13:26:47 : satpy.resample] Resampling None
/home/jpaul/miniconda3/lib/python3.8/site-packages/pyresample/kd_tree.py:1229: PerformanceWarning: Increasing number of chunks by factor of 17
  res = blockwise(_my_index, dst_adims,
[DEBUG: 2021-05-24 13:26:47 : satpy.scene] Resampling DataID(name='C01', wavelength=WavelengthRange(min=0.45, central=0.47, max=0.49, unit='µm'), resolution=1000, calibration=<calibration.reflectance>, modifiers=('sunz_corrected',))
[DEBUG: 2021-05-24 13:26:47 : pyproj] PROJ_ERROR: proj_crs_get_sub_crs: Object is not a CompoundCRS
[DEBUG: 2021-05-24 13:26:47 : pyproj] PROJ_ERROR: proj_crs_get_sub_crs: Object is not a CompoundCRS
[DEBUG: 2021-05-24 13:26:48 : pyproj] PROJ_ERROR: proj_crs_get_sub_crs: Object is not a CompoundCRS
[DEBUG: 2021-05-24 13:26:48 : pyproj] PROJ_ERROR: proj_crs_get_sub_crs: Object is not a CompoundCRS
/home/jpaul/miniconda3/lib/python3.8/site-packages/pyproj/crs/crs.py:543: UserWarning: You will likely lose important projection information when converting to a PROJ string from another format. See: https://proj.org/faq.html#what-is-the-best-format-for-describing-coordinate-reference-systems
  proj_string = self.to_proj4()
[INFO: 2021-05-24 13:26:48 : satpy.resample] Using default KDTree resampler
/home/jpaul/miniconda3/lib/python3.8/site-packages/numpy/lib/function_base.py:1269: RuntimeWarning: invalid value encountered in subtract
  a = op(a[slice1], a[slice2])
[DEBUG: 2021-05-24 13:26:48 : satpy.resample] Check if ./resample_lut-6654d1d440c273cf8108f508cc35146dd2dc648e.npz exists
[DEBUG: 2021-05-24 13:26:48 : satpy.resample] Computing kd-tree parameters
[DEBUG: 2021-05-24 13:26:48 : pyproj] PROJ_ERROR: proj_crs_get_sub_crs: Object is not a CompoundCRS
[DEBUG: 2021-05-24 13:26:48 : pyproj] PROJ_ERROR: proj_crs_get_sub_crs: Object is not a CompoundCRS
[DEBUG: 2021-05-24 13:26:48 : pyproj] PROJ_ERROR: proj_crs_get_sub_crs: Object is not a CompoundCRS
[DEBUG: 2021-05-24 13:26:48 : pyproj] PROJ_ERROR: proj_crs_get_sub_crs: Object is not a CompoundCRS
[DEBUG: 2021-05-24 13:26:48 : pyproj] PROJ_ERROR: proj_crs_get_sub_crs: Object is not a CompoundCRS
[DEBUG: 2021-05-24 13:26:48 : pyproj] PROJ_ERROR: proj_crs_get_sub_crs: Object is not a CompoundCRS
[DEBUG: 2021-05-24 13:26:48 : satpy.resample] Resampling None
/home/jpaul/miniconda3/lib/python3.8/site-packages/pyresample/kd_tree.py:1229: PerformanceWarning: Increasing number of chunks by factor of 17
  res = blockwise(_my_index, dst_adims,
[DEBUG: 2021-05-24 13:26:48 : satpy.scene] Resampling DataID(name='C03', wavelength=WavelengthRange(min=0.8455, central=0.865, max=0.8845, unit='µm'), resolution=1000, calibration=<calibration.reflectance>, modifiers=('sunz_corrected',))
[DEBUG: 2021-05-24 13:26:48 : satpy.resample] Check if ./resample_lut-6654d1d440c273cf8108f508cc35146dd2dc648e.npz exists
[DEBUG: 2021-05-24 13:26:48 : satpy.resample] Computing kd-tree parameters
[DEBUG: 2021-05-24 13:26:48 : pyproj] PROJ_ERROR: proj_crs_get_sub_crs: Object is not a CompoundCRS
[DEBUG: 2021-05-24 13:26:48 : pyproj] PROJ_ERROR: proj_crs_get_sub_crs: Object is not a CompoundCRS
[DEBUG: 2021-05-24 13:26:48 : pyproj] PROJ_ERROR: proj_crs_get_sub_crs: Object is not a CompoundCRS
[DEBUG: 2021-05-24 13:26:48 : pyproj] PROJ_ERROR: proj_crs_get_sub_crs: Object is not a CompoundCRS
[DEBUG: 2021-05-24 13:26:48 : pyproj] PROJ_ERROR: proj_crs_get_sub_crs: Object is not a CompoundCRS
[DEBUG: 2021-05-24 13:26:48 : pyproj] PROJ_ERROR: proj_crs_get_sub_crs: Object is not a CompoundCRS
[DEBUG: 2021-05-24 13:26:48 : satpy.resample] Resampling None
/home/jpaul/miniconda3/lib/python3.8/site-packages/pyresample/kd_tree.py:1229: PerformanceWarning: Increasing number of chunks by factor of 17
  res = blockwise(_my_index, dst_adims,
[DEBUG: 2021-05-24 13:26:48 : satpy.scene] Resampling DataID(name='colorized_ir_clouds_abi_cool', resolution=2000)
[DEBUG: 2021-05-24 13:26:48 : satpy.resample] Check if ./resample_lut-03738b49ffc3a082b3a3d3d2ca499a2e5422cde8.npz exists
[DEBUG: 2021-05-24 13:26:48 : satpy.resample] Computing kd-tree parameters
[DEBUG: 2021-05-24 13:26:48 : pyproj] PROJ_ERROR: proj_crs_get_sub_crs: Object is not a CompoundCRS
[DEBUG: 2021-05-24 13:26:48 : pyproj] PROJ_ERROR: proj_crs_get_sub_crs: Object is not a CompoundCRS
[DEBUG: 2021-05-24 13:26:48 : pyproj] PROJ_ERROR: proj_crs_get_sub_crs: Object is not a CompoundCRS
[DEBUG: 2021-05-24 13:26:48 : pyproj] PROJ_ERROR: proj_crs_get_sub_crs: Object is not a CompoundCRS
[DEBUG: 2021-05-24 13:26:48 : pyproj] PROJ_ERROR: proj_crs_get_sub_crs: Object is not a CompoundCRS
[DEBUG: 2021-05-24 13:26:48 : pyproj] PROJ_ERROR: proj_crs_get_sub_crs: Object is not a CompoundCRS
[DEBUG: 2021-05-24 13:26:48 : satpy.resample] Resampling truediv-a746226867d58ad05c607e2a9128009c
/home/jpaul/miniconda3/lib/python3.8/site-packages/satpy/node.py:108: UserWarning: Attribute access to DataIDs is deprecated, use key access instead.
  return self.name == other.name
[DEBUG: 2021-05-24 13:26:48 : pyproj] PROJ_ERROR: proj_crs_get_sub_crs: Object is not a CompoundCRS
[DEBUG: 2021-05-24 13:26:48 : pyproj] PROJ_ERROR: proj_crs_get_sub_crs: Object is not a CompoundCRS
[DEBUG: 2021-05-24 13:26:48 : pyproj] PROJ_ERROR: proj_crs_get_sub_crs: Object is not a CompoundCRS
[INFO: 2021-05-24 13:26:48 : satpy.modifiers.atmosphere] Removing Rayleigh scattering with atmosphere 'us-standard' and aerosol type 'rayleigh_only' for 'C01'
[INFO: 2021-05-24 13:26:48 : pyspectral.rayleigh] Atmosphere chosen: us-standard
[DEBUG: 2021-05-24 13:26:48 : pyspectral.rayleigh] LUT filename: /home/jpaul/.local/share/pyspectral/rayleigh_only/rayleigh_lut_us-standard.h5
[DEBUG: 2021-05-24 13:26:48 : pyspectral.rsr_reader] Filename: /home/jpaul/.local/share/pyspectral/rsr_abi_GOES-16.h5
[DEBUG: 2021-05-24 13:26:48 : pyspectral.rsr_reader] Filename: /home/jpaul/.local/share/pyspectral/rsr_abi_GOES-16.h5
[DEBUG: 2021-05-24 13:26:48 : pyspectral.rsr_reader] No detectors found - assume only one...
[DEBUG: 2021-05-24 13:26:48 : pyspectral.rsr_reader] No detectors found - assume only one...
[DEBUG: 2021-05-24 13:26:48 : pyspectral.rsr_reader] No detectors found - assume only one...
[DEBUG: 2021-05-24 13:26:48 : pyspectral.rsr_reader] No detectors found - assume only one...
[DEBUG: 2021-05-24 13:26:48 : pyspectral.rsr_reader] No detectors found - assume only one...
[DEBUG: 2021-05-24 13:26:48 : pyspectral.rsr_reader] No detectors found - assume only one...
[DEBUG: 2021-05-24 13:26:48 : pyspectral.rsr_reader] No detectors found - assume only one...
[DEBUG: 2021-05-24 13:26:48 : pyspectral.rsr_reader] No detectors found - assume only one...
[DEBUG: 2021-05-24 13:26:48 : pyspectral.rsr_reader] No detectors found - assume only one...
[DEBUG: 2021-05-24 13:26:48 : pyspectral.rsr_reader] No detectors found - assume only one...
[DEBUG: 2021-05-24 13:26:48 : pyspectral.rsr_reader] No detectors found - assume only one...
[DEBUG: 2021-05-24 13:26:48 : pyspectral.rsr_reader] No detectors found - assume only one...
[DEBUG: 2021-05-24 13:26:48 : pyspectral.rsr_reader] No detectors found - assume only one...
[DEBUG: 2021-05-24 13:26:48 : pyspectral.rsr_reader] No detectors found - assume only one...
[DEBUG: 2021-05-24 13:26:48 : pyspectral.rsr_reader] No detectors found - assume only one...
[DEBUG: 2021-05-24 13:26:48 : pyspectral.rsr_reader] No detectors found - assume only one...
[DEBUG: 2021-05-24 13:26:48 : pyspectral.rayleigh] Band name: ch1  Effective wavelength: 0.469946
[DEBUG: 2021-05-24 13:26:48 : pyspectral.rayleigh] Time - Interpolation: 0.029560
[DEBUG: 2021-05-24 13:26:48 : satpy.composites] Sharpening image with high resolution red band
[DEBUG: 2021-05-24 13:26:48 : satpy.writers] Enhancement configuration options: [{'name': 'colorize', 'method': <function colorize at 0x7f39fc129160>, 'kwargs': {'palettes': [{'colors': 'spectral', 'min_value': 193.15, 'max_value': 236.149999}, {'colors': 'greys', 'min_value': 236.15, 'max_value': 373.150001}]}}]
[DEBUG: 2021-05-24 13:26:49 : satpy.writers] Enhancement configuration options: [{'name': 'stretch', 'method': <function stretch at 0x7f39fc5f0700>, 'kwargs': {'stretch': 'linear'}}]
[DEBUG: 2021-05-24 13:26:49 : trollimage.xrimage] Applying stretch linear with parameters {}
[DEBUG: 2021-05-24 13:26:49 : trollimage.xrimage] Perform a linear contrast stretch.
[DEBUG: 2021-05-24 13:26:49 : trollimage.xrimage] Calculate the histogram quantiles: 
[DEBUG: 2021-05-24 13:26:49 : trollimage.xrimage] Left and right quantiles: 0.005 0.005
[DEBUG: 2021-05-24 13:26:49 : satpy.writers] Enhancement configuration options: [{'name': 'linear_stretch', 'method': <function stretch at 0x7f39fc5f0700>, 'kwargs': {'stretch': 'crude', 'min_stretch': 0.0, 'max_stretch': 120.0}}, {'name': 'sqrt', 'method': <function gamma at 0x7f39fc5f0c10>, 'kwargs': {'gamma': 2.0}}, {'name': 'contrast', 'method': <function cimss_true_color_contrast at 0x7f39fc1299d0>}]
[DEBUG: 2021-05-24 13:26:49 : trollimage.xrimage] Applying stretch crude with parameters {'min_stretch': 0.0, 'max_stretch': 120.0}
[DEBUG: 2021-05-24 13:26:49 : trollimage.xrimage] Applying gamma 2.0
[DEBUG: 2021-05-24 13:26:49 : satpy.scene] Unloading dataset: DataID(name='C13', wavelength=WavelengthRange(min=10.1, central=10.35, max=10.6, unit='µm'), resolution=2000, calibration=<calibration.brightness_temperature>, modifiers=())
[DEBUG: 2021-05-24 13:26:49 : satpy.scene] Unloading dataset: DataID(name='C02', wavelength=WavelengthRange(min=0.59, central=0.64, max=0.69, unit='µm'), resolution=500, calibration=<calibration.reflectance>, modifiers=('sunz_corrected',))
[DEBUG: 2021-05-24 13:26:49 : satpy.scene] Unloading dataset: DataID(name='C02', wavelength=WavelengthRange(min=0.59, central=0.64, max=0.69, unit='µm'), resolution=500, calibration=<calibration.reflectance>, modifiers=('sunz_corrected', 'rayleigh_corrected'))
[DEBUG: 2021-05-24 13:26:49 : satpy.scene] Unloading dataset: DataID(name='C01', wavelength=WavelengthRange(min=0.45, central=0.47, max=0.49, unit='µm'), resolution=1000, calibration=<calibration.reflectance>, modifiers=('sunz_corrected',))
[DEBUG: 2021-05-24 13:26:49 : satpy.scene] Unloading dataset: DataID(name='C03', wavelength=WavelengthRange(min=0.8455, central=0.865, max=0.8845, unit='µm'), resolution=1000, calibration=<calibration.reflectance>, modifiers=('sunz_corrected',))
[DEBUG: 2021-05-24 13:26:49 : satpy.scene] Unloading dataset: DataID(name='colorized_ir_clouds_abi_cool', resolution=2000)
[DEBUG: 2021-05-24 13:26:49 : satpy.scene] Unloading dataset: DataID(name='C01', wavelength=WavelengthRange(min=0.45, central=0.47, max=0.49, unit='µm'), resolution=1000, calibration=<calibration.reflectance>, modifiers=('sunz_corrected', 'rayleigh_corrected'))
[DEBUG: 2021-05-24 13:26:49 : satpy.scene] Unloading dataset: DataID(name='cimss_green_sunz_rayleigh', resolution=1000)
[DEBUG: 2021-05-24 13:26:49 : satpy.scene] Unloading dataset: DataID(name='cimss_true_color_sunz_rayleigh', resolution=500)
[DEBUG: 2021-05-24 13:26:49 : satpy.scene] Unloading dataset: DataID(name='ir_sandwich_true_abi_alpha', resolution=2000)
[DEBUG: 2021-05-24 13:26:49 : satpy.scene] Unloading dataset: DataID(name='ir_colorized_raw', resolution=2000)
[DEBUG: 2021-05-24 13:26:49 : satpy.writers] Enhancement configuration options: [{'name': 'stretch', 'method': <function stretch at 0x7f39fc5f0700>, 'kwargs': {'stretch': 'linear'}}]
[DEBUG: 2021-05-24 13:26:49 : trollimage.xrimage] Applying stretch linear with parameters {}
[DEBUG: 2021-05-24 13:26:49 : trollimage.xrimage] Perform a linear contrast stretch.
[DEBUG: 2021-05-24 13:26:49 : trollimage.xrimage] Calculate the histogram quantiles: 
[DEBUG: 2021-05-24 13:26:49 : trollimage.xrimage] Left and right quantiles: 0.005 0.005
RGBA
[DEBUG: 2021-05-24 13:26:49 : satpy.writers] Reading ['/home/jpaul/miniconda3/lib/python3.8/site-packages/satpy/etc/writers/simple_image.yaml']
[DEBUG: 2021-05-24 13:26:50 : satpy.writers] Enhancement configuration options: [{'name': 'stretch', 'method': <function stretch at 0x7f39fc5f0700>, 'kwargs': {'stretch': 'linear'}}]
[DEBUG: 2021-05-24 13:26:50 : trollimage.xrimage] Applying stretch linear with parameters {}
[DEBUG: 2021-05-24 13:26:50 : trollimage.xrimage] Perform a linear contrast stretch.
[DEBUG: 2021-05-24 13:26:50 : trollimage.xrimage] Calculate the histogram quantiles: 
[DEBUG: 2021-05-24 13:26:50 : trollimage.xrimage] Left and right quantiles: 0.005 0.005
[DEBUG: 2021-05-24 13:26:50 : satpy.writers.simple_image] Saving to image: /home/jpaul/PythonScripts/IR_sandwich_true_with_background.png
[INFO: 2021-05-24 13:26:50 : satpy.writers] Computing and writing results...
[DEBUG: 2021-05-24 13:26:56 : pyproj] PROJ_ERROR: proj_crs_get_sub_crs: Object is not a CompoundCRS
[DEBUG: 2021-05-24 13:26:56 : pyproj] PROJ_ERROR: proj_crs_get_sub_crs: Object is not a CompoundCRS
[DEBUG: 2021-05-24 13:26:56 : pyproj] PROJ_ERROR: proj_crs_get_sub_crs: Object is not a CompoundCRS
[DEBUG: 2021-05-24 13:26:56 : pyproj] PROJ_ERROR: proj_crs_get_sub_crs: Object is not a CompoundCRS
[DEBUG: 2021-05-24 13:26:56 : pyproj] PROJ_ERROR: proj_crs_get_sub_crs: Object is not a CompoundCRS
[DEBUG: 2021-05-24 13:26:56 : pyproj] PROJ_ERROR: proj_crs_get_sub_crs: Object is not a CompoundCRS
[DEBUG: 2021-05-24 13:26:56 : pyproj] PROJ_ERROR: proj_crs_get_sub_crs: Object is not a CompoundCRS
[DEBUG: 2021-05-24 13:26:56 : pyproj] PROJ_ERROR: proj_crs_get_sub_crs: Object is not a CompoundCRS
[DEBUG: 2021-05-24 13:26:56 : pyproj] PROJ_ERROR: proj_crs_get_sub_crs: Object is not a CompoundCRS
[DEBUG: 2021-05-24 13:26:56 : pyproj] PROJ_ERROR: proj_crs_get_sub_crs: Object is not a CompoundCRS
[DEBUG: 2021-05-24 13:26:56 : pyproj] PROJ_ERROR: proj_crs_get_sub_crs: Object is not a CompoundCRS
[DEBUG: 2021-05-24 13:26:56 : pyproj] PROJ_ERROR: proj_crs_get_sub_crs: Object is not a CompoundCRS
[DEBUG: 2021-05-24 13:27:04 : pyproj] PROJ_ERROR: proj_crs_get_sub_crs: Object is not a CompoundCRS
[DEBUG: 2021-05-24 13:27:04 : pyproj] PROJ_ERROR: proj_crs_get_sub_crs: Object is not a CompoundCRS
[DEBUG: 2021-05-24 13:27:04 : pyproj] PROJ_ERROR: proj_crs_get_sub_crs: Object is not a CompoundCRS
[DEBUG: 2021-05-24 13:27:04 : pyproj] PROJ_ERROR: proj_crs_get_sub_crs: Object is not a CompoundCRS
[DEBUG: 2021-05-24 13:27:04 : pyproj] PROJ_ERROR: proj_crs_get_sub_crs: Object is not a CompoundCRS
[DEBUG: 2021-05-24 13:27:05 : pyproj] PROJ_ERROR: proj_crs_get_sub_crs: Object is not a CompoundCRS
[DEBUG: 2021-05-24 13:27:07 : pyproj] PROJ_ERROR: proj_crs_get_sub_crs: Object is not a CompoundCRS
[DEBUG: 2021-05-24 13:27:07 : pyproj] PROJ_ERROR: proj_crs_get_sub_crs: Object is not a CompoundCRS
[DEBUG: 2021-05-24 13:27:07 : pyproj] PROJ_ERROR: proj_crs_get_sub_crs: Object is not a CompoundCRS
[DEBUG: 2021-05-24 13:27:08 : pyproj] PROJ_ERROR: proj_crs_get_sub_crs: Object is not a CompoundCRS
[DEBUG: 2021-05-24 13:27:08 : pyproj] PROJ_ERROR: proj_crs_get_sub_crs: Object is not a CompoundCRS
[DEBUG: 2021-05-24 13:27:08 : pyproj] PROJ_ERROR: proj_crs_get_sub_crs: Object is not a CompoundCRS
[DEBUG: 2021-05-24 13:27:10 : pyproj] PROJ_ERROR: proj_crs_get_sub_crs: Object is not a CompoundCRS
[DEBUG: 2021-05-24 13:27:11 : pyproj] PROJ_ERROR: proj_crs_get_sub_crs: Object is not a CompoundCRS
[DEBUG: 2021-05-24 13:27:11 : pyproj] PROJ_ERROR: proj_crs_get_sub_crs: Object is not a CompoundCRS
[DEBUG: 2021-05-24 13:27:11 : pyproj] PROJ_ERROR: proj_crs_get_sub_crs: Object is not a CompoundCRS
[DEBUG: 2021-05-24 13:27:11 : pyproj] PROJ_ERROR: proj_crs_get_sub_crs: Object is not a CompoundCRS
[DEBUG: 2021-05-24 13:27:11 : pyproj] PROJ_ERROR: proj_crs_get_sub_crs: Object is not a CompoundCRS
[DEBUG: 2021-05-24 13:27:12 : pyproj] PROJ_ERROR: proj_crs_get_sub_crs: Object is not a CompoundCRS
[DEBUG: 2021-05-24 13:27:12 : pyproj] PROJ_ERROR: proj_crs_get_sub_crs: Object is not a CompoundCRS
[DEBUG: 2021-05-24 13:27:13 : pyproj] PROJ_ERROR: proj_crs_get_sub_crs: Object is not a CompoundCRS
[DEBUG: 2021-05-24 13:27:14 : pyproj] PROJ_ERROR: proj_crs_get_sub_crs: Object is not a CompoundCRS
[DEBUG: 2021-05-24 13:27:14 : pyproj] PROJ_ERROR: proj_crs_get_sub_crs: Object is not a CompoundCRS
[DEBUG: 2021-05-24 13:27:14 : pyproj] PROJ_ERROR: proj_crs_get_sub_crs: Object is not a CompoundCRS
[DEBUG: 2021-05-24 13:27:14 : pyproj] PROJ_ERROR: proj_crs_get_sub_crs: Object is not a CompoundCRS
[DEBUG: 2021-05-24 13:27:14 : pyproj] PROJ_ERROR: proj_crs_get_sub_crs: Object is not a CompoundCRS
[DEBUG: 2021-05-24 13:27:15 : pyproj] PROJ_ERROR: proj_crs_get_sub_crs: Object is not a CompoundCRS
[DEBUG: 2021-05-24 13:27:15 : pyproj] PROJ_ERROR: proj_crs_get_sub_crs: Object is not a CompoundCRS
[DEBUG: 2021-05-24 13:27:15 : pyproj] PROJ_ERROR: proj_crs_get_sub_crs: Object is not a CompoundCRS
[DEBUG: 2021-05-24 13:27:16 : pyproj] PROJ_ERROR: proj_crs_get_sub_crs: Object is not a CompoundCRS
[DEBUG: 2021-05-24 13:27:16 : pyproj] PROJ_ERROR: proj_crs_get_sub_crs: Object is not a CompoundCRS
[DEBUG: 2021-05-24 13:27:17 : pyproj] PROJ_ERROR: proj_crs_get_sub_crs: Object is not a CompoundCRS
[DEBUG: 2021-05-24 13:27:18 : pyproj] PROJ_ERROR: proj_crs_get_sub_crs: Object is not a CompoundCRS
[DEBUG: 2021-05-24 13:27:18 : pyproj] PROJ_ERROR: proj_crs_get_sub_crs: Object is not a CompoundCRS
[DEBUG: 2021-05-24 13:27:20 : pyproj] PROJ_ERROR: proj_crs_get_sub_crs: Object is not a CompoundCRS
[DEBUG: 2021-05-24 13:27:21 : pyproj] PROJ_ERROR: proj_crs_get_sub_crs: Object is not a CompoundCRS
[DEBUG: 2021-05-24 13:27:21 : pyproj] PROJ_ERROR: proj_crs_get_sub_crs: Object is not a CompoundCRS
[DEBUG: 2021-05-24 13:27:22 : pyproj] PROJ_ERROR: proj_crs_get_sub_crs: Object is not a CompoundCRS
[DEBUG: 2021-05-24 13:27:22 : pyproj] PROJ_ERROR: proj_crs_get_sub_crs: Object is not a CompoundCRS
[DEBUG: 2021-05-24 13:27:25 : pyproj] PROJ_ERROR: proj_crs_get_sub_crs: Object is not a CompoundCRS
[DEBUG: 2021-05-24 13:27:25 : pyproj] PROJ_ERROR: proj_crs_get_sub_crs: Object is not a CompoundCRS
[DEBUG: 2021-05-24 13:27:26 : pyproj] PROJ_ERROR: proj_crs_get_sub_crs: Object is not a CompoundCRS
[DEBUG: 2021-05-24 13:27:26 : pyproj] PROJ_ERROR: proj_crs_get_sub_crs: Object is not a CompoundCRS
[DEBUG: 2021-05-24 13:27:27 : pyproj] PROJ_ERROR: proj_crs_get_sub_crs: Object is not a CompoundCRS
[DEBUG: 2021-05-24 13:27:28 : pyproj] PROJ_ERROR: proj_crs_get_sub_crs: Object is not a CompoundCRS
[DEBUG: 2021-05-24 13:27:28 : pyproj] PROJ_ERROR: proj_crs_get_sub_crs: Object is not a CompoundCRS
[DEBUG: 2021-05-24 13:27:28 : pyproj] PROJ_ERROR: proj_crs_get_sub_crs: Object is not a CompoundCRS
[DEBUG: 2021-05-24 13:27:29 : pyproj] PROJ_ERROR: proj_crs_get_sub_crs: Object is not a CompoundCRS
[DEBUG: 2021-05-24 13:27:29 : pyproj] PROJ_ERROR: proj_crs_get_sub_crs: Object is not a CompoundCRS
[DEBUG: 2021-05-24 13:27:29 : pyproj] PROJ_ERROR: proj_crs_get_sub_crs: Object is not a CompoundCRS
[DEBUG: 2021-05-24 13:27:29 : pyproj] PROJ_ERROR: proj_crs_get_sub_crs: Object is not a CompoundCRS
[DEBUG: 2021-05-24 13:27:29 : pyproj] PROJ_ERROR: proj_crs_get_sub_crs: Object is not a CompoundCRS
[DEBUG: 2021-05-24 13:27:29 : pyproj] PROJ_ERROR: proj_crs_get_sub_crs: Object is not a CompoundCRS
[DEBUG: 2021-05-24 13:27:29 : pyproj] PROJ_ERROR: proj_crs_get_sub_crs: Object is not a CompoundCRS
[DEBUG: 2021-05-24 13:27:31 : pyproj] PROJ_ERROR: proj_crs_get_sub_crs: Object is not a CompoundCRS
[DEBUG: 2021-05-24 13:27:31 : pyproj] PROJ_ERROR: proj_crs_get_sub_crs: Object is not a CompoundCRS
[DEBUG: 2021-05-24 13:27:31 : pyproj] PROJ_ERROR: proj_crs_get_sub_crs: Object is not a CompoundCRS
[DEBUG: 2021-05-24 13:27:32 : pyproj] PROJ_ERROR: proj_crs_get_sub_crs: Object is not a CompoundCRS
[DEBUG: 2021-05-24 13:27:32 : pyproj] PROJ_ERROR: proj_crs_get_sub_crs: Object is not a CompoundCRS
[DEBUG: 2021-05-24 13:27:32 : pyproj] PROJ_ERROR: proj_crs_get_sub_crs: Object is not a CompoundCRS
[DEBUG: 2021-05-24 13:27:35 : pyproj] PROJ_ERROR: proj_crs_get_sub_crs: Object is not a CompoundCRS
[DEBUG: 2021-05-24 13:27:36 : pyproj] PROJ_ERROR: proj_crs_get_sub_crs: Object is not a CompoundCRS
[DEBUG: 2021-05-24 13:27:36 : pyproj] PROJ_ERROR: proj_crs_get_sub_crs: Object is not a CompoundCRS
[DEBUG: 2021-05-24 13:27:37 : pyproj] PROJ_ERROR: proj_crs_get_sub_crs: Object is not a CompoundCRS
[DEBUG: 2021-05-24 13:27:37 : pyproj] PROJ_ERROR: proj_crs_get_sub_crs: Object is not a CompoundCRS
[DEBUG: 2021-05-24 13:27:39 : pyproj] PROJ_ERROR: proj_crs_get_sub_crs: Object is not a CompoundCRS
[DEBUG: 2021-05-24 13:27:39 : pyproj] PROJ_ERROR: proj_crs_get_sub_crs: Object is not a CompoundCRS
[DEBUG: 2021-05-24 13:27:39 : pyproj] PROJ_ERROR: proj_crs_get_sub_crs: Object is not a CompoundCRS
[DEBUG: 2021-05-24 13:27:39 : pyproj] PROJ_ERROR: proj_crs_get_sub_crs: Object is not a CompoundCRS
[DEBUG: 2021-05-24 13:27:39 : pyproj] PROJ_ERROR: proj_crs_get_sub_crs: Object is not a CompoundCRS
[DEBUG: 2021-05-24 13:27:40 : pyproj] PROJ_ERROR: proj_crs_get_sub_crs: Object is not a CompoundCRS
[DEBUG: 2021-05-24 13:27:42 : pyproj] PROJ_ERROR: proj_crs_get_sub_crs: Object is not a CompoundCRS
[DEBUG: 2021-05-24 13:27:43 : pyproj] PROJ_ERROR: proj_crs_get_sub_crs: Object is not a CompoundCRS
[DEBUG: 2021-05-24 13:27:43 : pyproj] PROJ_ERROR: proj_crs_get_sub_crs: Object is not a CompoundCRS
[DEBUG: 2021-05-24 13:27:44 : pyproj] PROJ_ERROR: proj_crs_get_sub_crs: Object is not a CompoundCRS
[DEBUG: 2021-05-24 13:27:44 : pyproj] PROJ_ERROR: proj_crs_get_sub_crs: Object is not a CompoundCRS
[DEBUG: 2021-05-24 13:27:46 : pyproj] PROJ_ERROR: proj_crs_get_sub_crs: Object is not a CompoundCRS
[DEBUG: 2021-05-24 13:27:47 : pyproj] PROJ_ERROR: proj_crs_get_sub_crs: Object is not a CompoundCRS
[DEBUG: 2021-05-24 13:27:47 : pyproj] PROJ_ERROR: proj_crs_get_sub_crs: Object is not a CompoundCRS
[DEBUG: 2021-05-24 13:27:48 : pyproj] PROJ_ERROR: proj_crs_get_sub_crs: Object is not a CompoundCRS
[DEBUG: 2021-05-24 13:27:48 : pyproj] PROJ_ERROR: proj_crs_get_sub_crs: Object is not a CompoundCRS
[DEBUG: 2021-05-24 13:27:48 : pyproj] PROJ_ERROR: proj_crs_get_sub_crs: Object is not a CompoundCRS
[DEBUG: 2021-05-24 13:27:49 : pyproj] PROJ_ERROR: proj_crs_get_sub_crs: Object is not a CompoundCRS
[DEBUG: 2021-05-24 13:27:50 : pyproj] PROJ_ERROR: proj_crs_get_sub_crs: Object is not a CompoundCRS
[DEBUG: 2021-05-24 13:27:50 : pyproj] PROJ_ERROR: proj_crs_get_sub_crs: Object is not a CompoundCRS
[DEBUG: 2021-05-24 13:27:50 : pyproj] PROJ_ERROR: proj_crs_get_sub_crs: Object is not a CompoundCRS
[DEBUG: 2021-05-24 13:27:53 : pyproj] PROJ_ERROR: proj_crs_get_sub_crs: Object is not a CompoundCRS
[DEBUG: 2021-05-24 13:27:54 : pyproj] PROJ_ERROR: proj_crs_get_sub_crs: Object is not a CompoundCRS
[DEBUG: 2021-05-24 13:27:54 : pyproj] PROJ_ERROR: proj_crs_get_sub_crs: Object is not a CompoundCRS
[DEBUG: 2021-05-24 13:27:54 : pyproj] PROJ_ERROR: proj_crs_get_sub_crs: Object is not a CompoundCRS
[DEBUG: 2021-05-24 13:27:55 : pyproj] PROJ_ERROR: proj_crs_get_sub_crs: Object is not a CompoundCRS
/home/jpaul/miniconda3/lib/python3.8/site-packages/dask/core.py:121: RuntimeWarning: invalid value encountered in cos
  return func(*(_execute_task(a, cache) for a in args))
/home/jpaul/miniconda3/lib/python3.8/site-packages/dask/core.py:121: RuntimeWarning: invalid value encountered in sin
  return func(*(_execute_task(a, cache) for a in args))
/home/jpaul/miniconda3/lib/python3.8/site-packages/dask/core.py:121: RuntimeWarning: invalid value encountered in greater_equal
  return func(*(_execute_task(a, cache) for a in args))
/home/jpaul/miniconda3/lib/python3.8/site-packages/dask/core.py:121: RuntimeWarning: invalid value encountered in greater
  return func(*(_execute_task(a, cache) for a in args))
/home/jpaul/miniconda3/lib/python3.8/site-packages/dask/core.py:121: RuntimeWarning: invalid value encountered in log
  return func(*(_execute_task(a, cache) for a in args))
/home/jpaul/miniconda3/lib/python3.8/site-packages/dask/core.py:121: RuntimeWarning: invalid value encountered in less
  return func(*(_execute_task(a, cache) for a in args))
/home/jpaul/miniconda3/lib/python3.8/site-packages/trollimage/colorspaces.py:36: RuntimeWarning: invalid value encountered in greater
  return np.where(arr > 6.0/29.0,
/home/jpaul/miniconda3/lib/python3.8/site-packages/trollimage/colorspaces.py:127: RuntimeWarning: invalid value encountered in greater
  return np.where(arr > 0.0031308,
/home/jpaul/miniconda3/lib/python3.8/site-packages/satpy/composites/__init__.py:835: RuntimeWarning: Mean of empty slice
  data_mean = np.nanmean(av_data.reshape(new_shape), axis=(1, 3))
/home/jpaul/miniconda3/lib/python3.8/site-packages/dask/core.py:121: RuntimeWarning: invalid value encountered in less_equal
  return func(*(_execute_task(a, cache) for a in args))
[DEBUG: 2021-05-24 13:30:44 : trollimage.xrimage] Interval: left=<xarray.DataArray (bands: 4)>
array([0.07097544, 0.10278228, 0.21298634, 0.        ])
Coordinates:
    quantile  float64 0.005
Dimensions without coordinates: bands, right=<xarray.DataArray (bands: 4)>
array([0.99284458, 0.98504841, 0.74219569, 1.        ])
Coordinates:
    quantile  float64 0.995
Dimensions without coordinates: bands
[DEBUG: 2021-05-24 13:30:50 : trollimage.xrimage] Interval: left=<xarray.DataArray (bands: 3)>
array([0., 0., 0.])
Coordinates:
    quantile  float64 0.005
Dimensions without coordinates: bands, right=<xarray.DataArray (bands: 3)>
array([0.86841693, 0.85161712, 0.8571826 ])
Coordinates:
    quantile  float64 0.995
Dimensions without coordinates: bands

Screenshots cimss_true_color_sunz_rayleigh image: image

colorized_ir_clouds_abi_cool image: image

ir_sandwich_true_abi_alpha image (the end result should look similar to this but with more vibrant colors for the land like the true color image above has): image

ir_colorized_raw image: image

IR_sandwich_true_with_background image (the end result): image

Environment Info:

djhoese commented 3 years ago

So "good news" is I get the same end result as you when I do this with my own RadC files. However, my cimss_true_color_sunz_rayleigh produces an all black image and not the true color you are getting. If I replace the true color background in the background compositor I get something like what you're hoping for:

image

I'll look at your cimss true color closer and see what I can figure out.

djhoese commented 3 years ago

So I should point out that when I saved the cimss true color I had also loaded the colorized ir raw and the final IR_sandwich_true_with_background. If I save just the cimss ture color by itself then it looks fine. I have a feeling one of the composites is "corrupting" one of the other composites.

pnuu commented 3 years ago

What was the other true color composite that produces the expected result?

djhoese commented 3 years ago

true_color was what I used for the above image.

djhoese commented 3 years ago

Generating the cimss_true_color_sunz_rayleigh and colorized_ir_clouds_abi_cool together produces two perfectly valid images. If instead of the abi cool, I use ir_sandwich_true_abi_alpha then the true color comes out black.

Edit: I think I found it. The SandwichCompositor does an inplace operation.

pnuu commented 3 years ago

Weird. Both true_color and cimss_true_color_sunz_rayleigh use the same compositors. The cimss variant has specialized enhancements method as the last step, so could that be the culprit? With a quick glance can't spot anything else that's different between the two.

pnuu commented 3 years ago

Ok, an inplace operation does sound like the correct cause.

djhoese commented 3 years ago

@jpaul-git I'm not sure how comfortable you are installing packages from git, but if you could try installing Satpy from my branch in #1690 it would be great to have another data point showing that my fix actually fixes this. You should be able to do:

pip install -U git+https://github.com/djhoese/satpy.git@bugfix-sandwich-inplace

Note that if you do this, after you've tested it, you'll want to reinstall the package from conda or PyPI or wherever you originally installed it from.

jpaul-git commented 3 years ago

@djhoese Thank you! I downloaded your Satpy package from your github branch and tested it using my composites and enhancements. The image comes out as expected, with the IR Sandwich clouds and the True Color background. I downloaded it into it's own environment. Would I still need to reinstall the package from conda?

djhoese commented 3 years ago

No, if it is in its own environment then that's fine. I just wanted to make sure you used a stable version of Satpy in the future.

jpaul-git commented 3 years ago

Thank you so much for helping me! The images look amazing.