Рисование фигурных кривых с периодическими границами и без отрезков - PullRequest
0 голосов
/ 13 января 2019

Используя библиотеку pyephem, я хотел бы найти способ сделать хорошие кривые графика (долгота, широта), которые представляют наземную дорожку спутника. Я вычислил (долгота, широта), но когда долгота превышает + 180 °, следующее вычисленное значение, например, -178 °, такое, что рисуется сегмент: это делает плохую фигуру.

Ниже кода, который у меня есть на данный момент, и полученной цифры.

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-х орбит вокруг Земли): enter image description here

Как предотвратить рисование сегментов? Привет

iss.sublat и iss.sublong - соответственно текущая широта и долгота позиции iss (из фиксированного currentDate).

1 Ответ

0 голосов
/ 13 января 2019

Вы можете разделить массив данных при изменении знака с положительного на отрицательный, а затем построить отдельные подмассивы:

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])

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...