'Return an object of this class for a known observatory/site by name.
This is intended as a quick convenience function to get basic site
information, not a fully-featured exhaustive registry of observatories
and all their properties.
.. note::
When this function is called, it will attempt to download site
information from the astropy data server. If you would like a site
to be added, issue a pull request to the
`astropy-data repository <https://github.com/astropy/astropy-data>`_ .
If a site cannot be found in the registry (i.e., an internet
connection is not available), it will fall back on a built-in list,
In the future, this bundled list might include a version-controlled
list of canonical observatories extracted from the online version,
but it currently only contains the Greenwich Royal Observatory as an
example case.
Parameters
site_name : str
Name of the observatory (case-insensitive).
Returns
site : This class (a `~astropy.coordinates.EarthLocation` or subclass)
The location of the observatory.
See Also
get_site_names : the list of sites that this function can access'

@classmethod
def of_site(cls, site_name):

    registry = cls._get_site_registry()
    try:
        el = registry[site_name]
    except UnknownSiteException as e:
        raise UnknownSiteException(e.site, 'EarthLocation.get_site_names', close_names=e.close_names)
    if (cls is el.__class__):
        return el
    else:
        newel = cls.from_geodetic(*el.to_geodetic())
        newel.info.name = el.info.name
        return newel
