class_docstr: SEVIRI native format reader.
  
  **Calibration**
  
  See :mod:`satpy.readers.seviri_base`.
  
  **Padding channel data to full disk**
  
  By providing the `fill_disk` as True in the `reader_kwargs`, the channel is loaded
  as full disk, padded with no-data where necessary. This is especially useful for the
  HRV channel, but can also be used for RSS and ROI data. By default, the original,
  unpadded, data are loaded::
  
      scene = satpy.Scene(filenames,
                          reader='seviri_l1b_native',
                          reader_kwargs={'fill_disk': False})
  
  **Metadata**
  
  See :mod:`satpy.readers.seviri_base`.
docstr: Get the area definition of the band.
  
  In general, image data from one window/area is available. For the HRV channel in FES mode, however,
  data from two windows ('Lower' and 'Upper') are available. Hence, we collect lists of area-extents
  and corresponding number of image lines/columns. In case of FES HRV data, two area definitions are
  computed, stacked and squeezed. For other cases, the lists will only have one entry each, from which
  a single area definition is computed.
  
  Note that the AreaDefinition area extents returned by this function for Native data will be slightly
  different compared to the area extents returned by the SEVIRI HRIT reader.
  This is due to slightly different pixel size values when calculated using the data available in the files. E.g.
  for the 3 km grid:
  
  ``Native: data15hd['ImageDescription']['ReferenceGridVIS_IR']['ColumnDirGridStep'] == 3000.4031658172607``
  ``HRIT:                            np.deg2rad(2.**16 / pdict['lfac']) * pdict['h'] == 3000.4032785810186``
  
  This results in the Native 3 km full-disk area extents being approx. 20 cm shorter in each direction.
  
  The method for calculating the area extents used by the HRIT reader (CFAC/LFAC mechanism) keeps the
  highest level of numeric precision and is used as reference by EUM. For this reason, the standard area
  definitions defined in the `areas.yaml` file correspond to the HRIT ones.
docstr_tok: ["Get","the","area","definition","of","the","band",".","In","general",",","image","data","from","one","window\/area","is","available",".","For","the","HRV","channel","in","FES","mode",",","however",",","data","from","two","windows","(","'Lower","'","and","'Upper","'",")","are","available",".","Hence",",","we","collect","lists","of","area-extents","and","corresponding","number","of","image","lines\/columns",".","In","case","of","FES","HRV","data",",","two","area","definitions","are","computed",",","stacked","and","squeezed",".","For","other","cases",",","the","lists","will","only","have","one","entry","each",",","from","which","a","single","area","definition","is","computed",".","Note","that","the","AreaDefinition","area","extents","returned","by","this","function","for","Native","data","will","be","slightly","different","compared","to","the","area","extents","returned","by","the","SEVIRI","HRIT","reader",".","This","is","due","to","slightly","different","pixel","size","values","when","calculated","using","the","data","available","in","the","files",".","E.g",".","for","the","3","km","grid",":","``","Native",":","data15hd","[","'ImageDescription","'","]","[","'ReferenceGridVIS_IR","'","]","[","'ColumnDirGridStep","'","]","==","3000.4031658172607","``","``","HRIT",":","np.deg2rad","(","2",".","*","*","16","\/","pdict","[","'lfac","'","]",")","*","pdict","[","'","h","'","]","==","3000.4032785810186","``","This","results","in","the","Native","3","km","full-disk","area","extents","being","approx",".","20","cm","shorter","in","each","direction",".","The","method","for","calculating","the","area","extents","used","by","the","HRIT","reader","(","CFAC\/LFAC","mechanism",")","keeps","the","highest","level","of","numeric","precision","and","is","used","as","reference","by","EUM",".","For","this","reason",",","the","standard","area","definitions","defined","in","the","`","areas.yaml","`","file","correspond","to","the","HRIT","ones","."]
code: def get_area_def(self, dataset_id):
      """Get the area definition of the band.
  
      In general, image data from one window/area is available. For the HRV channel in FES mode, however,
      data from two windows ('Lower' and 'Upper') are available. Hence, we collect lists of area-extents
      and corresponding number of image lines/columns. In case of FES HRV data, two area definitions are
      computed, stacked and squeezed. For other cases, the lists will only have one entry each, from which
      a single area definition is computed.
  
      Note that the AreaDefinition area extents returned by this function for Native data will be slightly
      different compared to the area extents returned by the SEVIRI HRIT reader.
      This is due to slightly different pixel size values when calculated using the data available in the files. E.g.
      for the 3 km grid:
  
      ``Native: data15hd['ImageDescription']['ReferenceGridVIS_IR']['ColumnDirGridStep'] == 3000.4031658172607``
      ``HRIT:                            np.deg2rad(2.**16 / pdict['lfac']) * pdict['h'] == 3000.4032785810186``
  
      This results in the Native 3 km full-disk area extents being approx. 20 cm shorter in each direction.
  
      The method for calculating the area extents used by the HRIT reader (CFAC/LFAC mechanism) keeps the
      highest level of numeric precision and is used as reference by EUM. For this reason, the standard area
      definitions defined in the `areas.yaml` file correspond to the HRIT ones.
  
      """
      pdict = dict()
      pdict["a"] = self.mda["projection_parameters"]["a"]
      pdict["b"] = self.mda["projection_parameters"]["b"]
      pdict["h"] = self.mda["projection_parameters"]["h"]
      pdict["ssp_lon"] = self.mda["projection_parameters"][
          "ssp_longitude"
      ]
  
      area_naming_input_dict = {
          "platform_name": "msg",
          "instrument_name": "seviri",
          "resolution": int(dataset_id["resolution"]),
      }
      area_naming = get_geos_area_naming(
          {
              **area_naming_input_dict,
              **get_service_mode("seviri", pdict["ssp_lon"]),
          }
      )
  
      pdict["a_name"] = area_naming["area_id"]
      pdict["a_desc"] = area_naming["description"]
      pdict["p_id"] = ""
  
      area_extent = self.get_area_extent(dataset_id)
      areas = list()
      for aex, nlines, ncolumns in zip(
          area_extent["area_extent"],
          area_extent["nlines"],
          area_extent["ncolumns"],
      ):
          pdict["nlines"] = nlines
          pdict["ncols"] = ncolumns
          areas.append(get_area_definition(pdict, aex))
  
      if len(areas) == 2:
          area = geometry.StackedAreaDefinition(areas[0], areas[1])
          area = area.squeeze()
      else:
          area = areas[0]
  
      return area
  
imports: import logging
  import warnings
  from datetime import datetime, timedelta
  import dask.array
  import numpy
  import xarray
  from pyresample import geometry
  from satpy._compat import cached_property
  from satpy.readers._geos_area import get_area_definition, get_geos_area_naming
  from satpy.readers.eum_base import get_service_mode, recarray2dict, time_cds_short
  from satpy.readers.file_handlers import BaseFileHandler
  from satpy.readers.seviri_base import CHANNEL_NAMES, HRV_NUM_COLUMNS, HRV_NUM_LINES, REPEAT_CYCLE_DURATION, SATNUM, VISIR_NUM_COLUMNS, VISIR_NUM_LINES, NoValidOrbitParams, OrbitPolynomialFinder, SEVIRICalibrationHandler, add_scanline_acq_time, calculate_area_extent, create_coef_dict, dec10216, get_cds_time, get_satpos, pad_data_horizontally, pad_data_vertically, round_nom_time
  from satpy.readers.seviri_l1b_native_hdr import DEFAULT_15_SECONDARY_PRODUCT_HEADER, GSDTRecords, get_native_header, native_trailer
  from satpy.readers.utils import reduce_mda
  from satpy.utils import get_legacy_chunk_size
label_desc: Use image node_id 13 for calling the NativeMSGFileHandler obj's underlying member method code with example usage: obj.get_area_def(dataset_id) and returns: area