'Computes the on-sky position angle (East of North) between this
`SkyCoord` and another.
Parameters
other : `SkyCoord`
The other coordinate to compute the position angle to.  It is
treated as the "head" of the vector of the position angle.
Returns
pa : `~astropy.coordinates.Angle`
The (positive) position angle of the vector pointing from ``self``
to ``other``.  If either ``self`` or ``other`` contain arrays, this
will be an array following the appropriate `numpy` broadcasting
rules.
Examples
>>> c1 = SkyCoord(0*u.deg, 0*u.deg)
>>> c2 = SkyCoord(1*u.deg, 0*u.deg)
>>> c1.position_angle(c2).degree
90.0
>>> c3 = SkyCoord(1*u.deg, 1*u.deg)
>>> c1.position_angle(c3).degree  # doctest: +FLOAT_CMP
44.995636455344844'

def position_angle(self, other):

    from . import angle_utilities
    if (not self.is_equivalent_frame(other)):
        try:
            other = other.transform_to(self, merge_attributes=False)
        except TypeError:
            raise TypeError(u'Can    only    get    position_angle    to    another    SkyCoord    or    a    coordinate    frame    with    data')
    slat = self.represent_as(UnitSphericalRepresentation).lat
    slon = self.represent_as(UnitSphericalRepresentation).lon
    olat = other.represent_as(UnitSphericalRepresentation).lat
    olon = other.represent_as(UnitSphericalRepresentation).lon
    return angle_utilities.position_angle(slon, slat, olon, olat)
