This answer suggests that the orbital periods of the four large GNSSS contstellations are linked to the sidereal rotation period of the earth by rational numbers with 17 or 34 as the denominator in order to facilitate roughly twice-daily contact with each constellation's ground stations. It uses this answer to help support this theory.
GPS uses 1/2 of a sideral day, 11:58:02 and an orbit height of 20192 km.
Other satellite navigation use similar orbit periods, 17 orbits per 8 to 10 sideral days.
Glonass uses 8/17 of a sideral day, 11:15:48 and an orbit height of 19140 km.
BeiDou uses 9/17 of a sideral day, 12:40:16 and an orbit height of 21224 km.
Galileo uses 10/17 of a sideral day, 14:04:45 and an orbit height of 23232 km.
The ratio of 1/2 may be also written as 17/34, the other ones as 16/34 , 18/34 and 20/34. The differences are small. Thus all satellites could be measured about twice a day from the same ground stations.
If you go to the Wikipedia page for Satellite navigation and look at the table, the 17's do in fact show up in a table there (shown below with some rows suppressed for compactness:
Considering that since these constellations exist in MEO specifically so that any location will see many of them constantly, is there really anything to this "17" argument forwarded by both this and this answer? Or is it just a red herring?
above: Ground tracks for 72 hours using TLE groups from Celestrak and SGP4 propagation using Skyfield. Axes are geographical longitude and latitude and the lines are the subsatellite points at 0.03 hour time steps.
Note: The Beidou system has satellites in both MEO and Geosynchronous orbits (~28,000 and ~42,000 km radii).
class Constellation(object): def __init__(self, name): self.name = name self.sats =  class Satellite(object): def __init__(self, name): self.name = name import numpy as np import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D from skyfield.api import Loader, EarthSatellite load = Loader('~/Documents/fishing/SkyData') # avoids multiple copies of large files ts = load.timescale() data = load('de421.bsp') earth = data['earth'] ts = load.timescale() print earth.at(ts.now()).position.km # for no reason at all fnames = ('beidou.txt', 'galileo.txt', 'glo-ops.txt', 'gps-ops.txt') names = ('Beidou', 'Galileo', 'Glonass (ops)', 'GPS (ops)' ) # Build constellations and EarthSatellites constellations =  for fname, name in zip(fnames, names): const = Constellation(name) constellations.append(const) with open(fname, 'r') as infile: lines = infile.readlines() const.lines = lines satnames, L1s, L2s = [lines[i::3] for i in range(3)] for name, L1, L2 in zip(satnames, L1s, L2s): if len(name)<30 and L1=='1' and L2=='2': sat = Satellite(name.strip()) const.sats.append(sat) sat.L1, sat.L2 = L1, L2 sat.satobj = EarthSatellite(L1, L2) # add the Skyfield object for const in constellations: print "constellation name: ", const.name print [sat.name for sat in const.sats] print len(const.sats), len(const.lines)/3 hours = np.arange(0, 72, 0.03) time = ts.utc(2018, 6, 21, hours) # start June 21, 2018 # Propagate TLEs for const in constellations: for sat in const.sats: satobj_at = sat.satobj.at(time) sat.pos = satobj_at.position.km sat.subpoint = satobj_at.subpoint() sat.lon = sat.subpoint.longitude.degrees sat.lat = sat.subpoint.latitude.degrees breaks = np.where(np.abs(sat.lon[1:]-sat.lon[:-1]) > 60) sat.plot_lon = sat.lon[:-1] sat.plot_lat = sat.lat[:-1] sat.plot_lon[breaks] = np.nan # avoid ugly wraparounds if True: plt.figure() things = ('-b', '-g', '-r', '-c') fs, lw = 16, 0.7 for i, (const, color) in enumerate(zip(constellations, things)): plt.subplot(2, 2, i+1) for sat in const.sats: plt.plot(sat.plot_lon, sat.plot_lat, color, linewidth=lw) plt.title(const.name, fontsize=fs) plt.show() if True: fig = plt.figure(figsize=[9, 7]) # [12, 10] things = ('-b', '-g', '-r', '-c') for i, (const, color) in enumerate(zip(constellations, things)): ax = fig.add_subplot(2, 2, i+1, projection='3d') for sat in const.sats: x, y, z = sat.pos ax.plot(x, y, z, color) ax.set_title(const.name, fontsize=16) plt.show()