У меня есть несколько больших CSV-файлов, содержащих данные, записанные радаром в море. Радар показывает полученное эхо на 2048 разных ракурсах. Каждый угол может отображать данные для 512 различных диапазонов. Для каждого диапазона интенсивность эха сохраняется в виде значений от 0 до 255.
Чтобы визуализировать данные, я пытаюсь использовать Pyglet с пакетной визуализацией. После отображения первого поворота (2048 углов) программа должна продолжить просмотр данных, показывая самые новые записи. Поэтому каждый раз, когда я отображаю угол, я пытаюсь удалить следующий угол из списка вершин, чтобы он не рисовался поверх предыдущего вращения.
Поскольку существует вероятность 2048 * 512 показаний в Вращением я создал 2D-список 0f 2048 на 512 для хранения списков вершин, так что я могу удалить определенные типы c. См. Следующий фрагмент кода.
import pyglet
win = pyglet.window.Window(1000, 1000)
batch = pyglet.graphics.Batch()
def update(dt):
stepSize = 10000 # Save the first 10000 measurements in the batch before drawing it
for i in range(Counter.cnt, Counter.cnt + stepSize):
(* Calculate the pixel positions of each measurements from the angle and range *)
# Add to batch and save in 2D list
arr[angle][currentRange] = batch.add(2, pyglet.gl.GL_LINES, None,
('v2f', (pts[0][0], pts[0][1], pts[1][0], pts[1][1])))
# Delete everything from the next angle
for n in range(0, len(arr[nextAngle])):
try:
arr[nextAngle][n].delete()
except:
pass
@win.event
def on_draw():
win.clear()
batch.draw()
if __name__ == '__main__':
pyglet.clock.schedule_interval(update, 1/120.0)
pyglet.app.run()
Возможно, измерения должны были быть нарисованы в виде многоугольников или треугольников, но поскольку углы так близки, я использовал линии.
Это дает мне довольно хороший результат для первой пары вращений:
Radar_pyglet1
Капли представляют окружающие острова на море. Однако после некоторых поворотов программа замедляется, и дисплей выглядит так:
Radar_pyglet2
At На этом изображении лодка повернулась, и поэтому положение островков на снимке также изменилось. Однако, как видно на картинке, после поворотов на дисплее отображается много мелких точек, которых там быть не должно. Кроме того, части измерений частично стираются почти случайным образом.
В чем может быть проблема, и какой может быть лучший способ отображения данных?