class_docstr: Reader class for SEVIRI L2 products in GRIB format.
docstr: Compute the dictionary with the projection and area definition from a GRIB message.
  
  Args:
      gid: The ID of the GRIB message.
  
  Returns:
      tuple: A tuple of two dictionaries for the projection and the area definition.
          pdict:
              a: Earth major axis [m]
              b: Earth minor axis [m]
              h: Height over surface [m]
              ssp_lon: longitude of subsatellite point [deg]
              nlines: number of lines
              ncols: number of columns
              a_name: name of the area
              a_desc: description of the area
              p_id: id of the projection
          area_dict:
              center_point: coordinate of the center point
              north: coodinate of the north limit
              east: coodinate of the east limit
              west: coodinate of the west limit
              south: coodinate of the south limit
docstr_tok: ["Compute","the","dictionary","with","the","projection","and","area","definition","from","a","GRIB","message",".","Args",":","gid",":","The","ID","of","the","GRIB","message",".","Returns",":","tuple",":","A","tuple","of","two","dictionaries","for","the","projection","and","the","area","definition",".","pdict",":","a",":","Earth","major","axis","[","m","]","b",":","Earth","minor","axis","[","m","]","h",":","Height","over","surface","[","m","]","ssp_lon",":","longitude","of","subsatellite","point","[","deg","]","nlines",":","number","of","lines","ncols",":","number","of","columns","a_name",":","name","of","the","area","a_desc",":","description","of","the","area","p_id",":","id","of","the","projection","area_dict",":","center_point",":","coordinate","of","the","center","point","north",":","coodinate","of","the","north","limit","east",":","coodinate","of","the","east","limit","west",":","coodinate","of","the","west","limit","south",":","coodinate","of","the","south","limit"]
code: def _get_proj_area(self, gid):
      """Compute the dictionary with the projection and area definition from a GRIB message.
  
      Args:
          gid: The ID of the GRIB message.
  
      Returns:
          tuple: A tuple of two dictionaries for the projection and the area definition.
              pdict:
                  a: Earth major axis [m]
                  b: Earth minor axis [m]
                  h: Height over surface [m]
                  ssp_lon: longitude of subsatellite point [deg]
                  nlines: number of lines
                  ncols: number of columns
                  a_name: name of the area
                  a_desc: description of the area
                  p_id: id of the projection
              area_dict:
                  center_point: coordinate of the center point
                  north: coodinate of the north limit
                  east: coodinate of the east limit
                  west: coodinate of the west limit
                  south: coodinate of the south limit
      """
      # Get name of area definition
      area_naming_input_dict = {
          "platform_name": "msg",
          "instrument_name": "seviri",
          "resolution": self._res,
      }
  
      area_naming = get_geos_area_naming(
          {
              **area_naming_input_dict,
              **get_service_mode("seviri", self._ssp_lon),
          }
      )
  
      # Read all projection and area parameters from the message
      earth_major_axis_in_meters = (
          self._get_from_msg(gid, "earthMajorAxis") * 1000.0
      )  # [m]
      earth_minor_axis_in_meters = (
          self._get_from_msg(gid, "earthMinorAxis") * 1000.0
      )  # [m]
  
      earth_major_axis_in_meters = self._scale_earth_axis(
          earth_major_axis_in_meters
      )
      earth_minor_axis_in_meters = self._scale_earth_axis(
          earth_minor_axis_in_meters
      )
  
      nr_in_radius_of_earth = self._get_from_msg(
          gid, "NrInRadiusOfEarth"
      )
      xp_in_grid_lengths = self._get_from_msg(gid, "XpInGridLengths")
      h_in_meters = earth_major_axis_in_meters * (
          nr_in_radius_of_earth - 1.0
      )  # [m]
  
      # Create the dictionary with the projection data
      pdict = {
          "a": earth_major_axis_in_meters,
          "b": earth_minor_axis_in_meters,
          "h": h_in_meters,
          "ssp_lon": self._ssp_lon,
          "nlines": self._ncols,
          "ncols": self._nrows,
          "a_name": area_naming["area_id"],
          "a_desc": area_naming["description"],
          "p_id": "",
      }
  
      # Compute the dictionary with the area extension
      area_dict = {
          "center_point": xp_in_grid_lengths,
          "north": self._nrows,
          "east": 1,
          "west": self._ncols,
          "south": 1,
      }
  
      return pdict, area_dict
  
imports: import logging
  from datetime import timedelta
  import dask.array
  import numpy
  import xarray
  from satpy.readers._geos_area import get_area_definition, get_geos_area_naming
  from satpy.readers.eum_base import get_service_mode
  from satpy.readers.file_handlers import BaseFileHandler
  from satpy.readers.seviri_base import PLATFORM_DICT, REPEAT_CYCLE_DURATION, calculate_area_extent
  from satpy.utils import get_legacy_chunk_size
label_desc: Use image node_id 7 for calling the SeviriL2GribFileHandler obj's underlying member method code with example usage: obj._get_proj_area(gid) and returns: pdict,  area_dict