'Location on Earth, initialized from geocentric coordinates.
Parameters
x, y, z : `~astropy.units.Quantity` or array-like
Cartesian coordinates.  If not quantities, ``unit`` should be given.
unit : `~astropy.units.UnitBase` object or None
Physical unit of the coordinate values.  If ``x``, ``y``, and/or
``z`` are quantities, they will be converted to this unit.
Raises
astropy.units.UnitsError
If the units on ``x``, ``y``, and ``z`` do not match or an invalid
unit is given.
ValueError
If the shapes of ``x``, ``y``, and ``z`` do not match.
TypeError
If ``x`` is not a `~astropy.units.Quantity` and no unit is given.'

@classmethod
def from_geocentric(cls, x, y, z, unit=None):

    if (unit is None):
        try:
            unit = x.unit
        except AttributeError:
            raise TypeError('Geocentric    coordinates    should    be    Quantities    unless    an    explicit    unit    is    given.')
    else:
        unit = u.Unit(unit)
    if (unit.physical_type != 'length'):
        raise u.UnitsError('Geocentric    coordinates    should    be    in    units    of    length.')
    try:
        x = u.Quantity(x, unit, copy=False)
        y = u.Quantity(y, unit, copy=False)
        z = u.Quantity(z, unit, copy=False)
    except u.UnitsError:
        raise u.UnitsError('Geocentric    coordinate    units    should    all    be    consistent.')
    (x, y, z) = np.broadcast_arrays(x, y, z)
    struc = np.empty(x.shape, cls._location_dtype)
    (struc['x'], struc['y'], struc['z']) = (x, y, z)
    return super(EarthLocation, cls).__new__(cls, struc, unit, copy=False)
