def METHOD_NAME(self, data, key):
    data.attrs.update({'platform_name': self.platform_name,
                      'sensor': self.sensor})
    # Add orbital parameters
    projection = self.nc["goes_imager_projection"]
    data.attrs['orbital_parameters'] = {
        'projection_longitude': float(projection.attrs['longitude_of_projection_origin']),
        'projection_latitude': float(projection.attrs['latitude_of_projection_origin']),
        'projection_altitude': float(projection.attrs['perspective_point_height']),
        'satellite_nominal_latitude': float(self['nominal_satellite_subpoint_lat']),
        'satellite_nominal_longitude': float(self['nominal_satellite_subpoint_lon']),
        'satellite_nominal_altitude': float(self['nominal_satellite_height']) * 1000.,
        'yaw_flip': bool(self['yaw_flip_flag']),
    }
    data.attrs.update(key.to_dict())
    # remove attributes that could be confusing later
    # if calibration type is raw counts, we leave them in
    if key['calibration'] != 'counts':
        data.attrs.pop('_FillValue', None)
        data.attrs.pop('scale_factor', None)
        data.attrs.pop('add_offset', None)
    data.attrs.pop('_Unsigned', None)
    data.attrs.pop('ancillary_variables', None)  # Can't currently load DQF
    # although we could compute these, we'd have to update in calibration
    data.attrs.pop('valid_range', None)
    # add in information from the filename that may be useful to the user
    for attr in ('observation_type', 'scene_abbr', 'scan_mode', 'platform_shortname', 'suffix'):
        if attr in self.filename_info:
            data.attrs[attr] = self.filename_info[attr]
    # copy global attributes to metadata
    for attr in ('scene_id', 'orbital_slot', 'instrument_ID', 'production_site', 'timeline_ID'):
        data.attrs[attr] = self.nc.attrs.get(attr)
    # only include these if they are present
    for attr in ('fusion_args',):
        if attr in self.nc.attrs:
            data.attrs[attr] = self.nc.attrs[attr]