code: def read_geo(fid, key):
      """Read geolocation and related datasets."""
      dsid = GEO_NAMES[key["name"]]
      add_epoch = False
      if "time" in key["name"]:
          days = fid["/L1C/" + dsid["day"]][()]
          msecs = fid["/L1C/" + dsid["msec"]][()]
          data = _form_datetimes(days, msecs)
          add_epoch = True
          dtype = np.float64
      else:
          data = fid["/L1C/" + dsid][()]
          dtype = np.float32
      data = xr.DataArray(
          da.from_array(data, chunks=CHUNK_SIZE),
          name=key["name"],
          dims=["y", "x"],
      ).astype(dtype)
  
      if add_epoch:
          data.attrs["sensing_time_epoch"] = EPOCH
  
      return data
  
imports: import datetime
  import logging
  import dask.array
  import h5py
  import numpy
  import xarray
  from satpy.readers.file_handlers import BaseFileHandler
  from satpy.utils import get_legacy_chunk_size
  from .netcdf_utils import NetCDF4FsspecFileHandler
label_desc: Use image node_id 2 for calling a global function with example usage: read_geo(fid, key) and returns: data