def get_coord(data, coord_name, return_type='values'):
    """Return values, name or dimension of coordinate in DataArray.

    Parameters
    ----------
    data : xray.DataArray
        Data array to search for latitude coords.
    coord_name : str
        Coordinate to extract.  Can be the exact ID of the variable or
        a generic ID ('lat', 'lon', 'plev', 'time', 'day', 'year').
        If a generic ID is provided then lists of common names for that ID
        will be searched for a match.
    return_type : {'values', 'name', 'dim'}, optional
        'values' : Return an array of coordinate values.
        'name' : Return the name of the coordinate.
        'dim' : Return the dimension of the coordinate.

    Returns
    -------
    output : ndarray, string or int

    The generic coordinate names searched through are:
    'lat' : ['lats', 'latitude', 'YDim','Y', 'y']
    'lon' : ['long', 'lons', 'longitude', 'XDim', 'X', 'x']
    'plev' : ['plevel', 'plevels', 'lev', 'level',
              'levels', 'Height']
    as well as capitalization options for coord_name (.upper(),
    .lower(), .capitalize())
    """

    def name_options(nm):
        opts = {'lat' : ['lats', 'latitude', 'YDim','Y', 'y'],
                'lon' : ['long', 'lons', 'longitude', 'XDim', 'X', 'x'],
                'plev' : ['plevel', 'plevels', 'lev', 'level', 'levels',
                          'Height']}

        nms = list(set([nm, nm.lower(), nm.upper(), nm.capitalize()]))
        if opts.get(nm) is not None:
            nms = list(nms) + opts[nm]
        return nms

    names = name_options(coord_name)

    # Look in list of common coordinate names
    if coord_name not in data.coords:
        found = [i for i, s in enumerate(names) if s in data.coords]

        if len(found) == 0:
            raise ValueError("Can't find coordinate name in data coords %s" %
                             data.coords.keys())
        if len(found) > 1:
            raise ValueError('Conflicting possible coord names in coords %s'
                % data.coords.keys())
        else:
            coord_name = names[found[0]]

    if return_type == 'values':
        output = data[coord_name].values.copy()
    elif return_type == 'name':
        output = coord_name
    elif return_type == 'dim':
        output = data.dims.index(coord_name)
    else:
        raise ValueError('Invalid return_type ' + return_type)

    return output