使用库 pyephem 我想找一种方法来绘制一个很好的曲线图(经度、纬度),它代表一颗卫星的地面轨迹。我已经计算了(经度,纬度),但是当经度超过+180度时,计算出的下一个值是-178度,这样就画出了一个段:这是个坏数字。
pyephem
下面是我现在得到的代码和数字。
currentDate = date.datetime(2018,12,1,0,0,0); for i in range(nPoints): iss.compute(currentDate) # compute latitude posLat[i] = iss.sublat*(180/math.pi) # compute longitude posLong[i] = iss.sublong*(180/math.pi) currentDate = currentDate + date.timedelta(seconds = (time3orbits/nPoints*3600)) print currentDate, posLong[i], posLat[i] plt.plot(posLong,posLat) plt.show()
这里是我得到的数字(对于绕地球运行的3个轨道):
如何防止绘制线段?当做
iss.sublat 和 iss.sublong 代表ISS位置的当前纬度和经度(从 currentDate 固定的)。
iss.sublat
iss.sublong
currentDate
您可以将符号更改时的数据数组从正数拆分为负数,然后绘制单个子数组:
orbits = np.argwhere( (data[:-1, 0] * data[1:, 0] < 0) & (data[1:, 0] < 0) ).ravel() + 1 for orbit in np.split(data, orbits, axis=0): plt.plot(orbit[:, 0], orbit[:, 1])