У меня возникают проблемы с масштабированием - я подозреваю, что у меня что-то не хватает ... возможно, кто-то мог бы установить меня прямо.Проблемы с реальным масштабом в мире с QGraphicsView/QGraphicsItem
Я использую QGraphicsScene и QGraphicsView для отображения положения лодки с использованием широты и долготы в десятичных градусах. Для непосвященных позиций выглядит следующим образом:
LON: -71,34253 LAT: 41,549886
Этих позиции я устанавливаю для моих пользовательских объектов QGraphicsItem. Это координаты «реального мира».
Мои проблемы: я не могу показаться, чтобы мои объекты отображались правильно, и я подозреваю, что не понимаю, какую шкалу я должен использовать, когда рисую функцию paint().
Я использую Qt через PyQt, но это должно быть то же самое, нет? Вот мой пользовательский класс, который представляет собой позицию.
class myGraphicsFix(QGraphicsItem):
def __init__(self):
super().__init__()
self.lat = 0.0
self.lon = 0.0
self.boatlength = 1.5696e-6 # assuming 6371 km earth diameter, 10 m boat length
def setLatLon(self, tlat, tlon):
self.lat = tlat
self.lon = tlon
self.setPos(self.lat, self.lon)
def paint(self, painter, option, widget):
pen = QPen(Qt.SolidLine)
pen.setColor(Qt.black)
pen.setWidth(0.0)
painter.drawPoint(QPointF(0.0,0.0))
def boundingRect(self):
return QRectF(-self.boatlength/2.0,-self.boatlength/2.0, +self.boatlength/2.0, self.boatlength)
Когда этот код работает все, что я получаю твердый блок черного цвета, это означает, что каким-то образом мои очки втягиваются как гигантские квадраты. Если я заменил drawPoint на drawEllipse() следующим образом:
painter.drawEllipse(-self.boatlength/2.0,-self.boatlength/2.0, self.boatlength, self.boatlength)
Ничего не нарисовано вообще. Любые мысли?
Tom.
В первом случае вы создаете ручку ширины линии 0 и не используете ее. Как вы что-то получаете? Во втором случае вы рисуете эллипс очень маленького радиуса с большим координатным центром. Как вы пытаетесь его найти? – ilotXXI
Спасибо ilotXXI. Ручка в моем первом случае осталась без наличия кода drawEllipse. Вы правы, что код drawEllipse странный - я изменил его на 0,0 и половину длины лодки для радиусов X и Y, но я все равно получаю то же самое. Мой вопрос действительно в том, что я должен использовать радиусом? Координаты реального мира? –