class_docstr: NWCSAF PPS&MSG NetCDF reader.
docstr: Get projection from the NetCDF4 attributes.
docstr_tok: ["Get","projection","from","the","NetCDF4","attributes","."]
code: def _get_projection(self):
      """Get projection from the NetCDF4 attributes."""
      try:
          proj_str = self.nc.attrs["gdal_projection"]
      except TypeError:
          proj_str = self.nc.attrs["gdal_projection"].decode()
  
      # Check the a/b/h units
      radius_a = proj_str.split("+a=")[-1].split()[0]
      if float(radius_a) > 10e3:
          units = "m"
          scale = 1.0
      else:
          units = "km"
          scale = 1e3
  
      if "units" not in proj_str:
          proj_str = proj_str + " +units=" + units
  
      area_extent = (
          float(self.nc.attrs["gdal_xgeo_up_left"]) / scale,
          float(self.nc.attrs["gdal_ygeo_low_right"]) / scale,
          float(self.nc.attrs["gdal_xgeo_low_right"]) / scale,
          float(self.nc.attrs["gdal_ygeo_up_left"]) / scale,
      )
  
      crs = CRS.from_string(proj_str)
      return crs, area_extent
  
imports: import functools
  import logging
  import os
  from contextlib import suppress
  from datetime import datetime
  import dask.array
  import numpy
  import xarray
  from pyproj import CRS
  from pyresample.geometry import AreaDefinition
  from satpy.readers.file_handlers import BaseFileHandler
  from satpy.readers.utils import unzip_file
  from satpy.utils import get_chunk_size_limit
label_desc: Use image node_id 20 for calling the NcNWCSAF obj's underlying member method code with example usage: obj._get_projection() and returns: crs,  area_extent