class_docstr: Parallax correction calculations.
  
  This class contains higher-level functionality to wrap the parallax
  correction calculations in :func:`get_parallax_corrected_lonlats`.  The class is
  initialised using a base area, which is the area for which a corrected
  geolocation will be calculated.  The resulting object is a callable.
  Calling the object with an array of (cloud top) heights returns a
  :class:`~pyresample.geometry.SwathDefinition` describing the new ,
  corrected geolocation.  The cloud top height should cover at least the
  area for which the corrected geolocation will be calculated.
  
  Note that the ``ctth`` dataset must contain satellite location
  metadata, such as set in the ``orbital_parameters`` dataset attribute
  that is set by many Satpy readers.  It is essential that the datasets to be
  corrected are coming from the same platform as the provided cloud top
  height.
  
  A note on the algorithm and the implementation.  Parallax correction
  is inherently an inverse problem.  The reported geolocation in
  satellite data files is the true location plus the parallax error.
  Therefore, this class first calculates the true geolocation (using
  :func:`get_parallax_corrected_lonlats`), which gives a shifted longitude and
  shifted latitude on an irregular grid.  The difference between
  the original and the shifted grid is the parallax error or shift.
  The magnitude of this error can be estimated with
  :func:`get_surface_parallax_displacement`.
  With this difference, we need to invert the parallax correction to
  calculate the corrected geolocation.  Due to parallax correction,
  high clouds shift a lot, low clouds shift a little, and cloud-free
  pixels shift not at all.  The shift may result in zero, one,
  two, or more source pixel onto a destination pixel.  Physically,
  this corresponds to the situation where a narrow but high cloud is
  viewed at a large angle.  The cloud may occupy two or more pixels when
  viewed at a large angle, but only one when viewed straight from above.
  To accurately reproduce this perspective, the parallax correction uses
  the :class:`~pyresample.bucket.BucketResampler` class, specifically
  the :meth:`~pyresample.bucket.BucketResampler.get_abs_max` method, to
  retain only the largest absolute shift (corresponding to the highest
  cloud) within each pixel.  Any other resampling method at this step
  would yield incorrect results.  When cloud moves over clear-sky, the
  clear-sky pixel is unshifted and the shift is located exactly in the
  centre of the grid box, so nearest-neighbour resampling would lead to
  such shifts being deselected.  Other resampling methods would average
  large shifts with small shifts, leading to unpredictable results.
  Now the reprojected shifts can be applied to the original lat/lon,
  returning a new :class:`~pyresample.geometry.SwathDefinition`.
  This is is the object returned by :meth:`corrected_area`.
  
  This procedure can be configured as a modifier using the
  :class:`ParallaxCorrectionModifier` class.  However, the modifier can only
  be applied to one dataset at the time, which may not provide optimal
  performance, although dask should reuse identical calculations between
  multiple channels.
docstr: Apply parallax correction to dataset.
  
  Args:
      cth_dataset: Dataset containing cloud top heights (or other heights
          to be corrected).
  
  Returns:
      :class:'~pyresample.geometry.SwathDefinition`: Swathdefinition with corrected
          lat/lon coordinates.
docstr_tok: ["Apply","parallax","correction","to","dataset",".","Args",":","cth_dataset",":","Dataset","containing","cloud","top","heights","(","or","other","heights","to","be","corrected",")",".","Returns",":",":","class",":","'~pyresample.geometry.SwathDefinition","`",":","Swathdefinition","with","corrected","lat\/lon","coordinates","."]
code: def __call__(self, cth_dataset, **kwargs):  # noqa: D417
      """Apply parallax correction to dataset.
  
      Args:
          cth_dataset: Dataset containing cloud top heights (or other heights
              to be corrected).
  
      Returns:
          :class:'~pyresample.geometry.SwathDefinition`: Swathdefinition with corrected
              lat/lon coordinates.
      """
      self.diagnostics.clear()
      return self.corrected_area(cth_dataset, **kwargs)
  
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 2 for calling the ParallaxCorrection obj's underlying member method code with example usage: obj.__call__(cth_dataset) and returns: self