class_docstr: Modifier for parallax correction.
  
  Apply parallax correction as a modifier.  Uses the
  :class:`ParallaxCorrection` class, which in turn uses the
  :func:`get_parallax_corrected_lonlats` function.  See the documentation there for
  details on the behaviour.
  
  To use this, add to ``composites/visir.yaml`` within ``SATPY_CONFIG_PATH``
  something like::
  
      sensor_name: visir
  
      modifiers:
        parallax_corrected:
          modifier: !!python/name:satpy.modifiers.parallax.ParallaxCorrectionModifier
          prerequisites:
            - "ctth_alti"
          dataset_radius_of_influence: 50000
  
      composites:
  
        parallax_corrected_VIS006:
          compositor: !!python/name:satpy.composites.SingleBandCompositor
          prerequisites:
            - name: VIS006
              modifiers: [parallax_corrected]
  
  Here, ``ctth_alti`` is CTH provided by the ``nwcsaf-geo`` reader, so to use it
  one would have to pass both on scene creation::
  
      sc = Scene({"seviri_l1b_hrit": files_l1b, "nwcsaf-geo": files_l2})
      sc.load(["parallax_corrected_VIS006"])
  
  The modifier takes optional global parameters, all of which are optional.
  They affect various steps in the algorithm.  Setting them may impact
  performance:
  
  cth_resampler
      Resampler to use when resampling (cloud top) height to the base area.
      Defaults to "nearest".
  cth_radius_of_influence
      Radius of influence to use when resampling the (cloud top) height to
      the base area.  Defaults to 50000.
  lonlat_chunks
      Chunk size to use when obtaining longitudes and latitudes from the area
      definition.  Defaults to 1024.  If you set this to None, then parallax
      correction will involve premature calculation.  Changing this may or
      may not make parallax correction slower or faster.
  dataset_radius_of_influence
      Radius of influence to use when resampling the dataset onto the
      swathdefinition describing the parallax-corrected area.  Defaults to
      50000.  This always uses nearest neighbour resampling.
  
  Alternately, you can use the lower-level API directly with the
  :class:`ParallaxCorrection` class, which may be more efficient if multiple
  datasets need to be corrected.  RGB Composites cannot be modified in this way
  (i.e. you can't replace "VIS006" by "natural_color").  To get a parallax
  corrected RGB composite, create a new composite where each input has the
  modifier applied.  The parallax calculation should only occur once, because
  calculations are happening via dask and dask should reuse the calculation.
docstr: Apply parallax correction.
  
  The argument ``projectables`` needs to contain the dataset to be
  projected and the height to use for the correction.
docstr_tok: ["Apply","parallax","correction",".","The","argument","``","projectables","``","needs","to","contain","the","dataset","to","be","projected","and","the","height","to","use","for","the","correction","."]
code: def __call__(self, projectables, optional_datasets=None, **info):
      """Apply parallax correction.
  
      The argument ``projectables`` needs to contain the dataset to be
      projected and the height to use for the correction.
      """
      (to_be_corrected, cth) = projectables
      base_area = to_be_corrected.attrs["area"]
      corrector = self._get_corrector(base_area)
      plax_corr_area = corrector(
          cth,
          cth_resampler=self.attrs.get("cth_resampler", "nearest"),
          cth_radius_of_influence=self.attrs.get(
              "cth_radius_of_influence", 50_000
          ),
          lonlat_chunks=self.attrs.get("lonlat_chunks", 1024),
      )
      res = resample_dataset(
          to_be_corrected,
          plax_corr_area,
          radius_of_influence=self.attrs.get(
              "dataset_radius_of_influence", 50_000
          ),
          fill_value=np.nan,
      )
      res.attrs["area"] = to_be_corrected.attrs["area"]
      self.apply_modifier_info(to_be_corrected, res)
  
      return res
  
imports: import datetime
  import inspect
  import logging
  import warnings
  import dask.array
  import numpy
  import xarray
  from pyorbital.orbital import A
  from pyorbital.orbital import get_observer_look
  from pyproj import Geod
  from pyresample.bucket import BucketResampler
  from pyresample.geometry import SwathDefinition
  from satpy.modifiers import ModifierBase
  from satpy.resample import resample_dataset
  from satpy.utils import get_satpos, lonlat2xyz, xyz2lonlat
label_desc: Use image node_id 1 for calling the ParallaxCorrectionModifier obj's underlying member method code with example usage: obj.__call__(projectables, optional_datasets) and returns: res