I will augment @JohnHoltz's excellent answer with some data.
I took the coordinates for LC-39 and Morgan Hill California (red and black dots, respectively) and put them in the Python package Skyfield along with the last of a group of ten TLEs for Roadster I received via Celestrak's standard request form (2018-017A, 43205).
You can see that both passes went nicely over California with plenty of altitude.
Time in hours is since 06-feb-2018 00:00 UTC. The black circle in the horizon plot is the horizon, traces outside it are below the horizon. Radius is 1 - elevation/90°
. North is up, East to the right.
Thick lines in the altitude and distance plots represent the periods when Roadster was above the horizon for Morgan Hill California.



TLE = """1 43205U 18017A 18038.22157858 .00505133 -52681-6 23951-2 0 9997
2 43205 29.0196 286.7252 3400758 181.1849 342.1043 8.76376464 24"""
# https://celestrak.org/NORAD/archives/request.php
import numpy as np
import matplotlib.pyplot as plt
from skyfield.api import Loader, Topos, EarthSatellite
halfpi, pi, twopi = [f*np.pi for f in (0.5, 1, 2)]
degs, rads = 180/pi, pi/180
load = Loader('~/Documents/fishing/SkyData')
ts = load.timescale()
data = load('de421.bsp')
Earth = data['Earth']
# https://en.wikipedia.org/wiki/Falcon_Heavy_test_flight
# Liftoff T+00:00:00 February 6, 2018 at 20:45:00 UTC
# Liftoff T+00:00:00 February 6, 2018 at 20:45:00 UTC
# SECO 1 T+00:08:31 February 6, 2018 at 20:53:31 UTC
# SES 2 T+06:00:00 February 7, 2018 at 02:45:00 UTC
ts = load.timescale()
minutes = np.arange(53.5, 360+45, 0.1)
hours = 20 + minutes/60.
times = ts.utc(2018, 2, 6, hours)
Roadster = EarthSatellite(*TLE.splitlines())
geocen = Roadster.at(times)
posn = geocen.position.km
altitude = np.sqrt((posn**2).sum(axis=0)) - 6378.137
path = geocen.subpoint()
lat, lon = [degs*getattr(path, thing).radians for thing in ('latitude', 'longitude')]
jumps = (np.abs(lon[1:]-lon[:-1]) > 60)
jumps = np.hstack((jumps, jumps[-1:]))
lat[jumps] = np.nan
print posn.shape
# http://www.satobs.org/seesat/Feb-2018/0060.html
# https://en.wikipedia.org/wiki/Morgan_Hill,_California 37.130556, -121.654444
Morgan_Hill = Topos(37.1306, -121.6544, elevation_m=107)
obslat, obslon = [getattr(Morgan_Hill, attr).degrees for attr in ('latitude', 'longitude')]
# https://en.wikipedia.org/wiki/Kennedy_Space_Center_Launch_Complex_39
Kennedy_LC39 = Topos(28.608397, -80.604345, elevation_m=10)
launchlat, launchlon = [getattr(Kennedy_LC39, attr).degrees for attr in ('latitude', 'longitude')]
if True:
plt.figure()
plt.plot(lon, lat)
plt.plot([launchlon], [launchlat], 'or')
plt.plot([obslon], [obslat], 'ok')
plt.show()
alt, az, dist = (Earth+Morgan_Hill).at(times).observe(Earth+Roadster).apparent().altaz()
r = 1 - alt.radians/halfpi
above = r <= 1.0
x, y = [r*f(az.radians) for f in (np.sin, np.cos)]
th = np.linspace(0, twopi, 361)
xc, yc = [f(th) for f in (np.sin, np.cos)]
distkm = dist.km
distkmvis = distkm.copy()
distkmvis[~above] = np.nan
if True:
plt.figure()
plt.plot(x, y)
plt.plot(x[:1], y[:1], 'or')
plt.plot(x[-1:], y[-1:], 'ok')
plt.plot(xc, yc, '-k')
plt.xlim(-2, 2)
plt.ylim(-2, 2)
plt.show()
if True:
plt.figure()
plt.subplot(2, 1, 1)
plt.plot(hours, distkmvis, '-k', linewidth=3.0)
plt.plot(hours, distkm, '-b', linewidth=1.0)
plt.plot(hours[:1], distkm[:1], 'or')
plt.plot(hours[-1:], distkm[-1:], 'ok')
plt.ylim(0, None)
plt.title('line-of-sight distance (km)')
plt.subplot(2, 1, 2)
altitudevis = altitude.copy()
altitudevis[~above] = np.nan
plt.plot(hours, altitudevis, '-k', linewidth=3.0)
plt.plot(hours, altitude, '-b', linewidth=1.0)
plt.plot(hours[:1], altitude[:1], 'or')
plt.plot(hours[-1:], altitude[-1:], 'ok')
plt.title('altitude (km)')
plt.ylim(0, None)
plt.show()
if True:
plt.figure()
plt.subplot(2, 1, 1)
plt.plot(hours, alt.degrees)
plt.plot(hours, az.degrees)
plt.subplot(2, 1, 2)
plt.plot(hours, dist.km)
plt.show()
if True:
plt.figure()
plt.subplot(2, 1, 1)
plt.plot(hours, lat)
plt.plot(hours, lon)
plt.xlabel('06-feb-2018 UTC hours', fontsize=16)
plt.ylabel('lat, lon (degs)', fontsize=16)
plt.subplot(2, 1, 2)
plt.plot(hours, dist.km)
plt.xlabel('06-feb-2018 UTC hours', fontsize=16)
plt.ylabel('', fontsize=16)
plt.show()