Скорость Matplotlig на графике точки GPS на графике - PullRequest
0 голосов
/ 29 мая 2019

с помощью следующего кода я пытаюсь добавить точку GPS на карту с помощью Raspberry Pi 3:

from gps import *
import matplotlib.pyplot as plt
import time, inspect, os

logPath = "/home/solergy/IBUZ/LOGS/"
inputMapFilePath = logPath + "srcMap/" + "TBM-min.png"
actualOutMapFilePath = logPath + "Map_GPS"

TRX = -12.653          #top right longitude
TRY = 41.8675            #top right latitude
BLX = -12.6332          #bottom left longitude
BLY = 41.8619             #bottom left latitude

gpsd = gps(mode=WATCH_ENABLE|WATCH_NEWSTYLE)

im = plt.imread(inputMapFilePath)

try:
    while True:
        report = gpsd.next() #
        if report['class'] == 'TPV':
            GPStime =  str(getattr(report,'time',''))
            lat     = str(getattr(report,'lat',0.0))
            lon     = str(getattr(report,'lon',0.0))
            speed   =  str(getattr(report,'speed','nan'))

            # Create Image File
            pos_y = float(lat)
            pos_x = -float(lon)

            actualTime = time.strftime("%H-%M-%S", time.localtime())
            plt.text(BLX, BLY, actualTime)
            plt.imshow(im, extent=[BLX, TRX, BLY, TRY], zorder=1)
            plt.scatter(x=[pos_x], y=[pos_y], s=3, c='r', zorder=2)
            cur_axes = plt.gca()
            cur_axes.axes.get_xaxis().set_visible(False)
            cur_axes.axes.get_yaxis().set_visible(False)
            plt.savefig(actualOutMapFilePath, dpi=150, type="png")
            plt.close('all')
            print (actualTime , GPStime)

except (KeyboardInterrupt, SystemExit): #when you press ctrl+c
    f.close()
    f_now.close()

Моя проблема в том, что мне нужно обновлять эту карту, по крайней мере, каждую секунду (лучше 10 Гц). Проблема не в gps, а в matplotlib, создающем это изображение. Любая идея о том, как добиться более высокой скорости для этого кода? Антонио

1 Ответ

0 голосов
/ 29 мая 2019

Очевидная оптимизация - избегать очистки и перерисовки всего на каждом итераторе, а вместо этого обновлять значения XY точки.См. Как обновить график в matplotlib?

Я ожидал бы значительного ускорения (особенно от отказа от вызова plt.imshow), но трудно что-либо обещать о производительности без доступа кфактические данные (или даже оборудование).

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