We are currently solving the following issue within our repository. Here is the issue text:
--- BEGIN ISSUE ---
No map source to handle GONG H-alpha data
### Describe the bug
Originally raised by nawinnga in the sunpy chat room.

There is no map source to do the necessary translation from the GONG H-alpha headers to standard meta data Map can use related to #6653 and #6655.

It doesn't look like its trivial to find/extract/calculate the necessary WCS information (e.g. PCi_j + CDELT or CDi_j ...) without some reference to what the fits headers mean some info on [this NSO page](https://nso.edu/data/nisp-data/h-alpha/)

### To Reproduce

```
from astropy.io import fits
import sunpy

# to get around  issue #6655
hdul = fits.open('ftp://gong2.nso.edu/HA/haf/202203/20220318/20220318000050Bh.fits.fz')
sunpy.map.Map((hdul[1].data, hdul[1].header))

Map((hdul[1].data, hdul[1].header))
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/Users/shane/.virtualenvs/temp/lib/python3.9/site-packages/sunpy/map/map_factory.py", line 331, in __call__
    new_map = self._check_registered_widgets(data, meta, **kwargs)
  File "/Users/shane/.virtualenvs/temp/lib/python3.9/site-packages/sunpy/map/map_factory.py", line 381, in _check_registered_widgets
    return WidgetType(data, meta, **kwargs)
  File "/Users/shane/.virtualenvs/temp/lib/python3.9/site-packages/sunpy/map/mapbase.py", line 232, in __init__
    self._validate_meta()
  File "/Users/shane/.virtualenvs/temp/lib/python3.9/site-packages/sunpy/map/mapbase.py", line 1409, in _validate_meta
    raise MapMetaValidationError('\n'.join(err_message))
sunpy.map.mapbase.MapMetaValidationError: Image coordinate units for axis 1 not present in metadata.
Image coordinate units for axis 2 not present in metadata.
See https://docs.sunpy.org/en/stable/code_ref/map.html#fixing-map-metadata for instructions on how to add missing metadata.
```
Setting the cdelt and cunit at least get lets the map be loaded but the WCS is still non-standard
```
hdul[1].header['cdelt1'] = 1
hdul[1].header['cdelt2'] = 1
hdul[1].header['cunit1'] = 'arcsec'
hdul[1].header['cunit2'] = 'arcsec'

mm = Map((hdul[1].data, hdul[1].header))
WARNING: SunpyMetadataWarning: Missing metadata for observer: assuming Earth-based observer.
For frame 'heliographic_stonyhurst' the following metadata is missing: hgln_obs,hglt_obs,dsun_obs
For frame 'heliographic_carrington' the following metadata is missing: crlt_obs,dsun_obs,crln_obs
 [sunpy.map.mapbase]
WARNING: SunpyUserWarning: Could not determine coordinate frame from map metadata.
Could not determine celestial frame corresponding to the specified WCS object [sunpy.map.mapbase]
<sunpy.map.mapbase.GenericMap object at 0x1297eb160>
SunPy Map
---------
Observatory:		 NSO-GONG
Instrument:
Detector:
Measurement:		 6562.808
Wavelength:		 6562.808
Observation Date:	 2022-03-18 00:00:50
Exposure Time:		 Unknown
Dimension:		 [2048. 2048.] pix
Coordinate System:	 Unknown
Scale:			 [1. 1.] arcsec / pix
Reference Pixel:	 [1023. 1023.] pix
Reference Coord:	 [0. 0.] arcsec
array([[0, 0, 0, ..., 0, 0, 0],
       [0, 0, 0, ..., 0, 0, 0],
       [0, 0, 0, ..., 0, 0, 0],
       ...,
       [0, 0, 0, ..., 0, 0, 0],
       [0, 0, 0, ..., 0, 0, 0],
       [0, 0, 0, ..., 0, 0, 0]], dtype=int16)
```

### Screenshots

_No response_

### System Details

OS: Mac OS 10.16 Arch: 64bit, (i386)
python3.9
sunpy: 4.1.0
astropy: 5.1.1
numpy: 1.23.5

### Installation method

pip

--- END ISSUE ---

Below are some code segments, each from a relevant file. One or more of these files may contain bugs.
--- BEGIN FILES ---
Path: `sunpy/map/sources/gong.py`
Content:
```
1 """
2 GONG Map subclass definitions
3 """
4 import numpy as np
5 
6 import astropy.units as u
7 from astropy.time import Time
8 
9 from sunpy.coordinates import get_earth
10 from sunpy.map import GenericMap
11 
12 __all__ = ['GONGSynopticMap']
13 
14 from sunpy.map.mapbase import SpatialPair
15 
16 
17 class GONGSynopticMap(GenericMap):
18     """
19     GONG Synoptic Map.
20 
21     The Global Oscillation Network Group (GONG) operates a six-station network of velocity
22     imagers located around the Earth that observe the Sun nearly continuously. GONG
23     produces hourly photospheric magnetograms using the Ni I 676.8 nm spectral line with an
24     array of 242×256 pixels covering the solar disk. These magnetograms are used to derive
25     synoptic maps which show a full-surface picture of the solar magnetic field.
26 
27     Notes
28     -----
29     If you have ``pfsspy`` installed this map source will be used instead of the one built into ``pfsspy``.
30 
31     References
32     ----------
33     * `GONG Page <https://gong.nso.edu/>`_
34     * `Magnetogram Synoptic Map Images Page <https://gong.nso.edu/data/magmap/>`_
35     * `FITS header keywords <https://gong.nso.edu/data/DMAC_documentation/General/fitsdesc.html>`_
36     * `Instrument Paper (pp. 203–208) <https://inis.iaea.org/collection/NCLCollectionStore/_Public/20/062/20062491.pdf>`_
37     * `GONG+ Documentation <https://gong.nso.edu/data/DMAC_documentation/PipelineMap/GlobalMap.html>`_
38     """
39 
40     @classmethod
41     def is_datasource_for(cls, data, header, **kwargs):
42         return (str(header.get('TELESCOP', '')).endswith('GONG') and
43                 str(header.get('CTYPE1', '').startswith('CRLN')))
44 
45     @property
46     def date(self):
47         return Time(f"{self.meta.get('date-obs')} {self.meta.get('time-obs')}")
48 
49     @property
50     def scale(self):
51         # Since, this map uses the cylindrical equal-area (CEA) projection,
52         # the spacing should be modified to 180/pi times the original value
53         # Reference: Section 5.5, Thompson 2006
54         return SpatialPair(self.meta['cdelt1'] * self.spatial_units[0] / u.pixel,
55                            self.meta['cdelt2'] * 180 / np.pi * self.spatial_units[0] / u.pixel)
56 
57     @property
58     def spatial_units(self):
59         return SpatialPair(u.deg, u.deg)
60 
61     @property
62     def observer_coordinate(self):
63         return get_earth(self.date)
64
```
--- END FILES ---

Please first localize the bug based on the issue statement, and then generate a patch according to the `git diff` format fenced by three backticks.

Here is an example:

```diff
diff --git a/examples/server_async.py b/examples/server_async.py
--- a/examples/server_async.py
+++ b/examples/server_async.py
@@ -313,4 +313,4 @@
 
 
 if __name__ == "__main__":
-    asyncio.run(run_async_server("."), debug=True)
+    asyncio.run(run_async_server(), debug=True)
diff --git a/examples/server_sync.py b/examples/server_sync.py
--- a/examples/server_sync.py
+++ b/examples/server_sync.py
@@ -313,5 +313,5 @@
 
 
 if __name__ == "__main__":
-    server = run_sync_server(".")
+    server = run_sync_server()
     server.shutdown()

```

diff --git a/sunpy/map/sources/gong.py b/sunpy/map/sources/gong.py
--- a/sunpy/map/sources/gong.py
+++ b/sunpy/map/sources/gong.py
@@ -4,15 +4,25 @@
 import numpy as np
 
 import astropy.units as u
+from astropy.coordinates import EarthLocation, SkyCoord
 from astropy.time import Time
 
 from sunpy.coordinates import get_earth
 from sunpy.map import GenericMap
 
-__all__ = ['GONGSynopticMap']
+__all__ = ['GONGSynopticMap', 'GONGHalphaMap']
 
 from sunpy.map.mapbase import SpatialPair
 
+_SITE_NAMES = {
+    'LE': 'Learmonth',
+    'UD': 'Udaipur',
+    'TD': 'El Teide',
+    'CT': 'Cerro Tololo',
+    'BB': 'Big Bear',
+    'ML': 'Mauna Loa'
+}
+
 
 class GONGSynopticMap(GenericMap):
     """
@@ -40,7 +50,7 @@
     @classmethod
     def is_datasource_for(cls, data, header, **kwargs):
         return (str(header.get('TELESCOP', '')).endswith('GONG') and
-                str(header.get('CTYPE1', '').startswith('CRLN')))
+                str(header.get('CTYPE1', '')).startswith('CRLN'))
 
     @property
     def date(self):
@@ -61,3 +71,58 @@
     @property
     def observer_coordinate(self):
         return get_earth(self.date)
+
+
+class GONGHalphaMap(GenericMap):
+    """
+    GONG H-Alpha Map.
+
+    The Global Oscillation Network Group (GONG) operates a six-station network of H-alpha
+    imagers located around the Earth that observe the Sun nearly continuously.
+
+    References
+    ----------
+    * `GONG H-Alpha Page <https://nso.edu/data/nisp-data/h-alpha/>`_
+    * `GONG H-Alpha Observation Details <https://nispdata.nso.edu/webProdDesc2/presenter.php?file=halpha_fulldisk_images_overview.html&echoExact=0&name=Overview%20:%20GONG%20H-alpha%20Full-disk%20Images>`_
+    * `GONG Header Keywords <https://gong.nso.edu/data/HEADER_KEY.html>`_
+    * `DOI:/10.25668/as28-7p13 <https://doi.org/10.25668/as28-7p13>`_
+    """
+
+    @classmethod
+    def is_datasource_for(cls, data, header, **kwargs):
+        return (str(header.get('TELESCOP', '')).endswith('GONG') and
+                str(header.get('IMTYPE', '')).startswith('H-ALPHA'))
+
+
+    @property
+    def scale(self):
+        solar_r = self.meta['SOLAR-R'] * u.arcsec
+        return SpatialPair(solar_r / (self.meta['FNDLMBMI'] * u.pixel),
+                           solar_r/ (self.meta['FNDLMBMA'] * u.pixel))
+
+    @property
+    def coordinate_system(self):
+        """
+        Coordinate system used
+
+        Overrides the values in the header which are not understood by Astropy WCS
+        """
+        return SpatialPair("HPLN-TAN", "HPLT-TAN")
+
+    @property
+    def nickname(self):
+        site = _SITE_NAMES.get(self.meta.get("sitename", ""), "UNKNOWN")
+        return f'{self.observatory}, {site}'
+
+    @property
+    def spatial_units(self):
+        return SpatialPair(u.deg, u.deg)
+
+    @property
+    def _earth_location(self):
+        """Location of the observatory on Earth"""
+        return EarthLocation.from_geodetic(lat=self.meta['site-lat'] * u.deg, lon=self.meta['site-lon'] * u.deg)
+
+    @property
+    def observer_coordinate(self):
+        return SkyCoord(self._earth_location.get_itrs(self.date)).heliographic_stonyhurst

{"golden_diff": "diff --git a/sunpy/map/sources/gong.py b/sunpy/map/sources/gong.py\n--- a/sunpy/map/sources/gong.py\n+++ b/sunpy/map/sources/gong.py\n@@ -4,15 +4,25 @@\n import numpy as np\n \n import astropy.units as u\n+from astropy.coordinates import EarthLocation, SkyCoord\n from astropy.time import Time\n \n from sunpy.coordinates import get_earth\n from sunpy.map import GenericMap\n \n-__all__ = ['GONGSynopticMap']\n+__all__ = ['GONGSynopticMap', 'GONGHalphaMap']\n \n from sunpy.map.mapbase import SpatialPair\n \n+_SITE_NAMES = {\n+    'LE': 'Learmonth',\n+    'UD': 'Udaipur',\n+    'TD': 'El Teide',\n+    'CT': 'Cerro Tololo',\n+    'BB': 'Big Bear',\n+    'ML': 'Mauna Loa'\n+}\n+\n \n class GONGSynopticMap(GenericMap):\n     \"\"\"\n@@ -40,7 +50,7 @@\n     @classmethod\n     def is_datasource_for(cls, data, header, **kwargs):\n         return (str(header.get('TELESCOP', '')).endswith('GONG') and\n-                str(header.get('CTYPE1', '').startswith('CRLN')))\n+                str(header.get('CTYPE1', '')).startswith('CRLN'))\n \n     @property\n     def date(self):\n@@ -61,3 +71,58 @@\n     @property\n     def observer_coordinate(self):\n         return get_earth(self.date)\n+\n+\n+class GONGHalphaMap(GenericMap):\n+    \"\"\"\n+    GONG H-Alpha Map.\n+\n+    The Global Oscillation Network Group (GONG) operates a six-station network of H-alpha\n+    imagers located around the Earth that observe the Sun nearly continuously.\n+\n+    References\n+    ----------\n+    * `GONG H-Alpha Page <https://nso.edu/data/nisp-data/h-alpha/>`_\n+    * `GONG H-Alpha Observation Details <https://nispdata.nso.edu/webProdDesc2/presenter.php?file=halpha_fulldisk_images_overview.html&echoExact=0&name=Overview%20:%20GONG%20H-alpha%20Full-disk%20Images>`_\n+    * `GONG Header Keywords <https://gong.nso.edu/data/HEADER_KEY.html>`_\n+    * `DOI:/10.25668/as28-7p13 <https://doi.org/10.25668/as28-7p13>`_\n+    \"\"\"\n+\n+    @classmethod\n+    def is_datasource_for(cls, data, header, **kwargs):\n+        return (str(header.get('TELESCOP', '')).endswith('GONG') and\n+                str(header.get('IMTYPE', '')).startswith('H-ALPHA'))\n+\n+\n+    @property\n+    def scale(self):\n+        solar_r = self.meta['SOLAR-R'] * u.arcsec\n+        return SpatialPair(solar_r / (self.meta['FNDLMBMI'] * u.pixel),\n+                           solar_r/ (self.meta['FNDLMBMA'] * u.pixel))\n+\n+    @property\n+    def coordinate_system(self):\n+        \"\"\"\n+        Coordinate system used\n+\n+        Overrides the values in the header which are not understood by Astropy WCS\n+        \"\"\"\n+        return SpatialPair(\"HPLN-TAN\", \"HPLT-TAN\")\n+\n+    @property\n+    def nickname(self):\n+        site = _SITE_NAMES.get(self.meta.get(\"sitename\", \"\"), \"UNKNOWN\")\n+        return f'{self.observatory}, {site}'\n+\n+    @property\n+    def spatial_units(self):\n+        return SpatialPair(u.deg, u.deg)\n+\n+    @property\n+    def _earth_location(self):\n+        \"\"\"Location of the observatory on Earth\"\"\"\n+        return EarthLocation.from_geodetic(lat=self.meta['site-lat'] * u.deg, lon=self.meta['site-lon'] * u.deg)\n+\n+    @property\n+    def observer_coordinate(self):\n+        return SkyCoord(self._earth_location.get_itrs(self.date)).heliographic_stonyhurst\n", "issue": "No map source to handle GONG H-alpha data\n### Describe the bug\r\nOriginally raised by nawinnga in the sunpy chat room.\r\n\r\nThere is no map source to do the necessary translation from the GONG H-alpha headers to standard meta data Map can use related to #6653 and #6655.\r\n\r\nIt doesn't look like its trivial to find/extract/calculate the necessary WCS information (e.g. PCi_j + CDELT or CDi_j ...) without some reference to what the fits headers mean some info on [this NSO page](https://nso.edu/data/nisp-data/h-alpha/)\r\n\r\n### To Reproduce\r\n\r\n```\r\nfrom astropy.io import fits\r\nimport sunpy\r\n\r\n# to get around  issue #6655\r\nhdul = fits.open('ftp://gong2.nso.edu/HA/haf/202203/20220318/20220318000050Bh.fits.fz')\r\nsunpy.map.Map((hdul[1].data, hdul[1].header))\r\n\r\nMap((hdul[1].data, hdul[1].header))\r\nTraceback (most recent call last):\r\n  File \"<stdin>\", line 1, in <module>\r\n  File \"/Users/shane/.virtualenvs/temp/lib/python3.9/site-packages/sunpy/map/map_factory.py\", line 331, in __call__\r\n    new_map = self._check_registered_widgets(data, meta, **kwargs)\r\n  File \"/Users/shane/.virtualenvs/temp/lib/python3.9/site-packages/sunpy/map/map_factory.py\", line 381, in _check_registered_widgets\r\n    return WidgetType(data, meta, **kwargs)\r\n  File \"/Users/shane/.virtualenvs/temp/lib/python3.9/site-packages/sunpy/map/mapbase.py\", line 232, in __init__\r\n    self._validate_meta()\r\n  File \"/Users/shane/.virtualenvs/temp/lib/python3.9/site-packages/sunpy/map/mapbase.py\", line 1409, in _validate_meta\r\n    raise MapMetaValidationError('\\n'.join(err_message))\r\nsunpy.map.mapbase.MapMetaValidationError: Image coordinate units for axis 1 not present in metadata.\r\nImage coordinate units for axis 2 not present in metadata.\r\nSee https://docs.sunpy.org/en/stable/code_ref/map.html#fixing-map-metadata for instructions on how to add missing metadata.\r\n```\r\nSetting the cdelt and cunit at least get lets the map be loaded but the WCS is still non-standard\r\n```\r\nhdul[1].header['cdelt1'] = 1\r\nhdul[1].header['cdelt2'] = 1\r\nhdul[1].header['cunit1'] = 'arcsec'\r\nhdul[1].header['cunit2'] = 'arcsec'\r\n\r\nmm = Map((hdul[1].data, hdul[1].header))\r\nWARNING: SunpyMetadataWarning: Missing metadata for observer: assuming Earth-based observer.\r\nFor frame 'heliographic_stonyhurst' the following metadata is missing: hgln_obs,hglt_obs,dsun_obs\r\nFor frame 'heliographic_carrington' the following metadata is missing: crlt_obs,dsun_obs,crln_obs\r\n [sunpy.map.mapbase]\r\nWARNING: SunpyUserWarning: Could not determine coordinate frame from map metadata.\r\nCould not determine celestial frame corresponding to the specified WCS object [sunpy.map.mapbase]\r\n<sunpy.map.mapbase.GenericMap object at 0x1297eb160>\r\nSunPy Map\r\n---------\r\nObservatory:\t\t NSO-GONG\r\nInstrument:\r\nDetector:\r\nMeasurement:\t\t 6562.808\r\nWavelength:\t\t 6562.808\r\nObservation Date:\t 2022-03-18 00:00:50\r\nExposure Time:\t\t Unknown\r\nDimension:\t\t [2048. 2048.] pix\r\nCoordinate System:\t Unknown\r\nScale:\t\t\t [1. 1.] arcsec / pix\r\nReference Pixel:\t [1023. 1023.] pix\r\nReference Coord:\t [0. 0.] arcsec\r\narray([[0, 0, 0, ..., 0, 0, 0],\r\n       [0, 0, 0, ..., 0, 0, 0],\r\n       [0, 0, 0, ..., 0, 0, 0],\r\n       ...,\r\n       [0, 0, 0, ..., 0, 0, 0],\r\n       [0, 0, 0, ..., 0, 0, 0],\r\n       [0, 0, 0, ..., 0, 0, 0]], dtype=int16)\r\n```\r\n\r\n### Screenshots\r\n\r\n_No response_\r\n\r\n### System Details\r\n\r\nOS: Mac OS 10.16 Arch: 64bit, (i386)\r\npython3.9\r\nsunpy: 4.1.0\r\nastropy: 5.1.1\r\nnumpy: 1.23.5\r\n\r\n### Installation method\r\n\r\npip\n", "before_files": [{"content": "\"\"\"\nGONG Map subclass definitions\n\"\"\"\nimport numpy as np\n\nimport astropy.units as u\nfrom astropy.time import Time\n\nfrom sunpy.coordinates import get_earth\nfrom sunpy.map import GenericMap\n\n__all__ = ['GONGSynopticMap']\n\nfrom sunpy.map.mapbase import SpatialPair\n\n\nclass GONGSynopticMap(GenericMap):\n    \"\"\"\n    GONG Synoptic Map.\n\n    The Global Oscillation Network Group (GONG) operates a six-station network of velocity\n    imagers located around the Earth that observe the Sun nearly continuously. GONG\n    produces hourly photospheric magnetograms using the Ni I 676.8 nm spectral line with an\n    array of 242\u00d7256 pixels covering the solar disk. These magnetograms are used to derive\n    synoptic maps which show a full-surface picture of the solar magnetic field.\n\n    Notes\n    -----\n    If you have ``pfsspy`` installed this map source will be used instead of the one built into ``pfsspy``.\n\n    References\n    ----------\n    * `GONG Page <https://gong.nso.edu/>`_\n    * `Magnetogram Synoptic Map Images Page <https://gong.nso.edu/data/magmap/>`_\n    * `FITS header keywords <https://gong.nso.edu/data/DMAC_documentation/General/fitsdesc.html>`_\n    * `Instrument Paper (pp. 203\u2013208) <https://inis.iaea.org/collection/NCLCollectionStore/_Public/20/062/20062491.pdf>`_\n    * `GONG+ Documentation <https://gong.nso.edu/data/DMAC_documentation/PipelineMap/GlobalMap.html>`_\n    \"\"\"\n\n    @classmethod\n    def is_datasource_for(cls, data, header, **kwargs):\n        return (str(header.get('TELESCOP', '')).endswith('GONG') and\n                str(header.get('CTYPE1', '').startswith('CRLN')))\n\n    @property\n    def date(self):\n        return Time(f\"{self.meta.get('date-obs')} {self.meta.get('time-obs')}\")\n\n    @property\n    def scale(self):\n        # Since, this map uses the cylindrical equal-area (CEA) projection,\n        # the spacing should be modified to 180/pi times the original value\n        # Reference: Section 5.5, Thompson 2006\n        return SpatialPair(self.meta['cdelt1'] * self.spatial_units[0] / u.pixel,\n                           self.meta['cdelt2'] * 180 / np.pi * self.spatial_units[0] / u.pixel)\n\n    @property\n    def spatial_units(self):\n        return SpatialPair(u.deg, u.deg)\n\n    @property\n    def observer_coordinate(self):\n        return get_earth(self.date)\n", "path": "sunpy/map/sources/gong.py"}], "after_files": [{"content": "\"\"\"\nGONG Map subclass definitions\n\"\"\"\nimport numpy as np\n\nimport astropy.units as u\nfrom astropy.coordinates import EarthLocation, SkyCoord\nfrom astropy.time import Time\n\nfrom sunpy.coordinates import get_earth\nfrom sunpy.map import GenericMap\n\n__all__ = ['GONGSynopticMap', 'GONGHalphaMap']\n\nfrom sunpy.map.mapbase import SpatialPair\n\n_SITE_NAMES = {\n    'LE': 'Learmonth',\n    'UD': 'Udaipur',\n    'TD': 'El Teide',\n    'CT': 'Cerro Tololo',\n    'BB': 'Big Bear',\n    'ML': 'Mauna Loa'\n}\n\n\nclass GONGSynopticMap(GenericMap):\n    \"\"\"\n    GONG Synoptic Map.\n\n    The Global Oscillation Network Group (GONG) operates a six-station network of velocity\n    imagers located around the Earth that observe the Sun nearly continuously. GONG\n    produces hourly photospheric magnetograms using the Ni I 676.8 nm spectral line with an\n    array of 242\u00d7256 pixels covering the solar disk. These magnetograms are used to derive\n    synoptic maps which show a full-surface picture of the solar magnetic field.\n\n    Notes\n    -----\n    If you have ``pfsspy`` installed this map source will be used instead of the one built into ``pfsspy``.\n\n    References\n    ----------\n    * `GONG Page <https://gong.nso.edu/>`_\n    * `Magnetogram Synoptic Map Images Page <https://gong.nso.edu/data/magmap/>`_\n    * `FITS header keywords <https://gong.nso.edu/data/DMAC_documentation/General/fitsdesc.html>`_\n    * `Instrument Paper (pp. 203\u2013208) <https://inis.iaea.org/collection/NCLCollectionStore/_Public/20/062/20062491.pdf>`_\n    * `GONG+ Documentation <https://gong.nso.edu/data/DMAC_documentation/PipelineMap/GlobalMap.html>`_\n    \"\"\"\n\n    @classmethod\n    def is_datasource_for(cls, data, header, **kwargs):\n        return (str(header.get('TELESCOP', '')).endswith('GONG') and\n                str(header.get('CTYPE1', '')).startswith('CRLN'))\n\n    @property\n    def date(self):\n        return Time(f\"{self.meta.get('date-obs')} {self.meta.get('time-obs')}\")\n\n    @property\n    def scale(self):\n        # Since, this map uses the cylindrical equal-area (CEA) projection,\n        # the spacing should be modified to 180/pi times the original value\n        # Reference: Section 5.5, Thompson 2006\n        return SpatialPair(self.meta['cdelt1'] * self.spatial_units[0] / u.pixel,\n                           self.meta['cdelt2'] * 180 / np.pi * self.spatial_units[0] / u.pixel)\n\n    @property\n    def spatial_units(self):\n        return SpatialPair(u.deg, u.deg)\n\n    @property\n    def observer_coordinate(self):\n        return get_earth(self.date)\n\n\nclass GONGHalphaMap(GenericMap):\n    \"\"\"\n    GONG H-Alpha Map.\n\n    The Global Oscillation Network Group (GONG) operates a six-station network of H-alpha\n    imagers located around the Earth that observe the Sun nearly continuously.\n\n    References\n    ----------\n    * `GONG H-Alpha Page <https://nso.edu/data/nisp-data/h-alpha/>`_\n    * `GONG H-Alpha Observation Details <https://nispdata.nso.edu/webProdDesc2/presenter.php?file=halpha_fulldisk_images_overview.html&echoExact=0&name=Overview%20:%20GONG%20H-alpha%20Full-disk%20Images>`_\n    * `GONG Header Keywords <https://gong.nso.edu/data/HEADER_KEY.html>`_\n    * `DOI:/10.25668/as28-7p13 <https://doi.org/10.25668/as28-7p13>`_\n    \"\"\"\n\n    @classmethod\n    def is_datasource_for(cls, data, header, **kwargs):\n        return (str(header.get('TELESCOP', '')).endswith('GONG') and\n                str(header.get('IMTYPE', '')).startswith('H-ALPHA'))\n\n\n    @property\n    def scale(self):\n        solar_r = self.meta['SOLAR-R'] * u.arcsec\n        return SpatialPair(solar_r / (self.meta['FNDLMBMI'] * u.pixel),\n                           solar_r/ (self.meta['FNDLMBMA'] * u.pixel))\n\n    @property\n    def coordinate_system(self):\n        \"\"\"\n        Coordinate system used\n\n        Overrides the values in the header which are not understood by Astropy WCS\n        \"\"\"\n        return SpatialPair(\"HPLN-TAN\", \"HPLT-TAN\")\n\n    @property\n    def nickname(self):\n        site = _SITE_NAMES.get(self.meta.get(\"sitename\", \"\"), \"UNKNOWN\")\n        return f'{self.observatory}, {site}'\n\n    @property\n    def spatial_units(self):\n        return SpatialPair(u.deg, u.deg)\n\n    @property\n    def _earth_location(self):\n        \"\"\"Location of the observatory on Earth\"\"\"\n        return EarthLocation.from_geodetic(lat=self.meta['site-lat'] * u.deg, lon=self.meta['site-lon'] * u.deg)\n\n    @property\n    def observer_coordinate(self):\n        return SkyCoord(self._earth_location.get_itrs(self.date)).heliographic_stonyhurst\n", "path": "sunpy/map/sources/gong.py"}]}