# sunpy Map uses coordinates to specify locations on the image, and to plot overlays on plots of maps.
# When a Map is created, a coordinate frame is constructed from the header information.
# This can be accessed using ``.coordinate_frame``:
#
# .. code-block:: python
#
import warnings
#
from astropy.coordinates import SkyCoord
import astropy.units as u
from astropy.io.fits.verify import VerifyWarning
#
import sunpy.map
from sunpy.data.sample import AIA_171_IMAGE  # doctest: +REMOTE_DATA
#
with warnings.catch_warnings():  # doctest: +REMOTE_DATA
    warnings.simplefilter("ignore", category=VerifyWarning)
    amap = sunpy.map.Map(AIA_171_IMAGE)
amap.coordinate_frame  # doctest: +REMOTE_DATA
# Expected:
## <Helioprojective Frame (obstime=2011-06-07T06:33:02.880, rsun=696000.0 km, observer=<HeliographicStonyhurst Coordinate (obstime=2011-06-07T06:33:02.880, rsun=696000.0 km): (lon, lat, radius) in (deg, deg, m)
##     (-0.00406429, 0.04787238, 1.51846026e+11)>)>
#
#  This can be used when creating a `~astropy.coordinates.SkyCoord` object to set the coordinate system to that image:
#
# .. code-block:: python
#
coord = SkyCoord(100 * u.arcsec, 10*u.arcsec, frame=amap.coordinate_frame)  # doctest: +REMOTE_DATA
coord  # doctest: +REMOTE_DATA
# Expected:
## <SkyCoord (Helioprojective: obstime=2011-06-07T06:33:02.880, rsun=696000.0 km, observer=<HeliographicStonyhurst Coordinate (obstime=2011-06-07T06:33:02.880, rsun=696000.0 km): (lon, lat, radius) in (deg, deg, m)
##     (-0.00406429, 0.04787238, 1.51846026e+11)>): (Tx, Ty) in arcsec
##     (100., 10.)>
#
# The `~astropy.coordinates.SkyCoord` object can be converted to a pair of pixels using :meth:`GenericMap.wcs.world_to_pixel <astropy.wcs.WCS.world_to_pixel>`:
#
# .. code-block:: python
#
pixels = amap.wcs.world_to_pixel(coord)  # doctest: +REMOTE_DATA
pixels  # doctest: +REMOTE_DATA
# Expected:
## (array(551.7680511), array(515.18266871))
#
# This `~astropy.coordinates.SkyCoord` object could also be used to plot a point on top of the map:
#
# .. code-block:: python
#
import matplotlib.pyplot as plt
#
fig = plt.figure()
ax = plt.subplot(projection=amap)  # doctest: +REMOTE_DATA
amap.plot()  # doctest: +REMOTE_DATA
# Expected:
## <matplotlib.image.AxesImage object at ...>
ax.plot_coord(coord, 'o')  # doctest: +REMOTE_DATA
# Expected:
## [<matplotlib.lines.Line2D object at ...]
