class_docstr: Reader class for ICI L1B products in netCDF format.
class_docstr_tok: ["Reader","class","for","ICI","L1B","products","in","netCDF","format","."]
docstr: Perform the interpolation of geographic coordinates from tie points to pixel points.
  
  Args:
      longitude: xarray DataArray containing the longitude dataset to
          interpolate.
      latitude: xarray DataArray containing the longitude dataset to
          interpolate.
      n_samples: int describing number of samples per scan to interpolate
          onto.
  
  Returns:
      tuple of arrays containing the interpolate values, all the original
          metadata and the updated dimension names.
code: def _interpolate_geo(
      longitude,
      latitude,
      n_samples,
  ):
      """Perform the interpolation of geographic coordinates from tie points to pixel points.
  
      Args:
          longitude: xarray DataArray containing the longitude dataset to
              interpolate.
          latitude: xarray DataArray containing the longitude dataset to
              interpolate.
          n_samples: int describing number of samples per scan to interpolate
              onto.
  
      Returns:
          tuple of arrays containing the interpolate values, all the original
              metadata and the updated dimension names.
  
      """
      third_dim_name = longitude.dims[2]
      horns = longitude[third_dim_name]
      n_scan = longitude.n_scan
      n_subs = longitude.n_subs
      lons = da.zeros((n_scan.size, n_samples, horns.size))
      lats = da.zeros((n_scan.size, n_samples, horns.size))
      n_subs = np.linspace(0, n_samples - 1, n_subs.size).astype(int)
      for horn in horns.values:
          satint = GeoInterpolator(
              (
                  longitude.values[:, :, horn],
                  latitude.values[:, :, horn],
              ),
              (n_scan.values, n_subs),
              (n_scan.values, np.arange(n_samples)),
          )
          lons_horn, lats_horn = satint.interpolate()
          lons[:, :, horn] = lons_horn
          lats[:, :, horn] = lats_horn
      dims = ["y", "x", third_dim_name]
      lon = xr.DataArray(
          lons,
          attrs=longitude.attrs,
          dims=dims,
          coords={third_dim_name: horns},
      )
      lat = xr.DataArray(
          lats,
          attrs=latitude.attrs,
          dims=dims,
          coords={third_dim_name: horns},
      )
      return lon, lat
  
imports: import logging
  from datetime import datetime
  from enum import Enum
  from functools import cached_property
  import dask.array
  import numpy
  import xarray
  from geotiepoints.geointerpolator import GeoInterpolator
  from satpy.readers.netcdf_utils import NetCDF4FileHandler
label_desc: Use image node_id 16 for calling the IciL1bNCFileHandler obj's underlying member method code with example usage: obj._interpolate_geo(longitude, latitude, n_samples) and returns: lon,  lat