code: def get_area_def(self, key):
          
          projection = self.nc["goes_imager_projection"]
          a = projection.attrs['semi_major_axis']
          h = projection.attrs['perspective_point_height']
          b = projection.attrs['semi_minor_axis']
  
          lon_0 = projection.attrs['longitude_of_projection_origin']
          sweep_axis = projection.attrs['sweep_angle_axis'][0]
  
          # x and y extents in m
          h = float(h)
          x = self['x']
          y = self['y']
          x_l = h * x[0]
          x_r = h * x[-1]
          y_l = h * y[-1]
          y_u = h * y[0]
          x_half = (x_r - x_l) / (self.ncols - 1) / 2.
          y_half = (y_u - y_l) / (self.nlines - 1) / 2.
          area_extent = (x_l - x_half, y_l - y_half, x_r + x_half, y_u + y_half)
  
          proj_dict = {'a': float(a),
                       'b': float(b),
                       'lon_0': float(lon_0),
                       'h': h,
                       'proj': 'geos',
                       'units': 'm',
                       'sweep': sweep_axis}
  
          area = geometry.AreaDefinition(
              self.nc.attrs.get('orbital_slot', 'abi_geos'),
              self.nc.attrs.get('spatial_resolution', 'ABI L1B file area'),
              'abi_geos',
              proj_dict,
              self.ncols,
              self.nlines,
              np.asarray(area_extent))
  
          return area
docs: Get the area definition of the data at hand.