def make_empty_sky_image(
    xds,
    phase_center,
    image_size,
    cell_size,
    chan_coords,
    chan_width,
    pol_coords,
    time_coords,
    direction_reference="FK5",
    projection="SIN",
    spectral_reference="lsrk",
    velocity_type="radio",
    unit="Jy/beam",
    data_group_name="base",
):
    """
    Create an img_dataset with only coordinates (no datavariables).
    The image dimensionality is either:
        l, m, time, chan, pol

    Parameters
    ----------
    xds : xarray.Dataset
        Empty dataset (dataset = xarray.Dataset())
    phase_center : array of number, length = 2, units = rad
        Image phase center.
    image_size : array of int, length = 2, units = rad
        Number of x and y axis pixels in image.
    cell_size : array of number, length = 2, units = rad
        Cell size of x and y axis pixels in image.
    chan_coords : dask.Array
        The center frequency of each image channel.
    chan_width : dask.Array
        The frequency width of each image channel.
    pol_coords : dask.Array
        The polarization code for each image polarization.
    time_coords : dask.Array
        The time for each image time step.
    direction_reference : str, default = 'FK5'
    projection : str, default = 'SIN'
    spectral_reference : str, default = 'lsrk'
    velocity_type : str, default = 'radio'
    Returns
    -------
    xarray.Dataset
        new xarray Datasets
    """
    import xarray as xr
    import numpy as np

    from astropy.wcs import WCS

    rad_to_deg = 180 / np.pi
    w = WCS(naxis=2)
    w.wcs.crpix = np.array(image_size) // 2
    w.wcs.cdelt = np.array(cell_size) * rad_to_deg
    w.wcs.crval = np.array(phase_center) * rad_to_deg
    w.wcs.ctype = ["RA---" + projection, "DEC--" + projection]

    x = np.arange(image_size[0])
    y = np.arange(image_size[1])
    X, Y = np.meshgrid(x, y, indexing="ij")
    ra, dec = w.wcs_pix2world(X, Y, 1)

    # The l,m value can be caluclated from non-integer index using l_val = cell_size*l_indx - image_center[0]*cell_size[0]. This arises when using wcs libarary all_world2pix
    image_center = np.array(image_size) // 2
    l = np.arange(-image_center[0], image_size[0] - image_center[0]) * cell_size[0]
    m = np.arange(-image_center[1], image_size[1] - image_center[1]) * cell_size[1]

    coords = {
        "time": time_coords,
        "frequency": chan_coords,
        "pol": pol_coords,
        "l": l,
        "m": m,
        "right_ascension": (("l", "m"), ra / rad_to_deg),
        "declination": (("l", "m"), dec / rad_to_deg),
    }
    # coords = {'time':time_coords,'chan': chan_coords, 'pol': pol_coords, 'chan_width' : ('chan',chan_width),'l':l,'m':m,'right_ascension' : (('l','m'),ra/rad_to_deg),'declination' : (('l','m'),dec/rad_to_deg)}
    xds.attrs["axis_units"] = ["rad", "rad", "time", "Hz", "pol"]

    xds = xds.assign_coords(coords)

    xds.attrs["direction_reference"] = direction_reference
    xds.attrs["spectral_reference"] = spectral_reference
    xds.attrs["velocity_type"] = velocity_type
    xds.attrs["unit"] = unit

    xds.attrs["data_groups"] = {data_group_name: {}}

    return xds
