Ich habe einige Skalierungsprobleme - ich vermute, dass ich etwas vermisse ... vielleicht könnte mich jemand gerade setzen.Echte Welt Maßstab Probleme mit QGraphicsView/QGraphicsItem
Ich benutze eine QGraphicsScene und QGraphicsView, um die Position eines Bootes unter Verwendung von Längen- und Breitengrad in Dezimalgraden anzuzeigen. Für die un initiierte sieht die Positionen wie folgt aus:
LON: -71,34253 LAT: 41,549886
Dies sind die Positionen, die ich für meine benutzerdefinierte QGraphicsItem Objekte setze. Dies sind "echte" Koordinaten.
Meine Probleme sind, dass ich meine Objekte nicht richtig anzeigen kann, und ich vermute, dass ich die Skala nicht verstehe, die ich verwenden sollte, wenn ich meine paint() -Funktion zeichne.
Ich verwende Qt über PyQt, aber das sollte das gleiche sein, nein? Hier ist meine benutzerdefinierte Klasse, die eine Position darstellt.
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)
Wenn dieser Code alle laufen I ist ein fester Block von Schwarz zu erhalten, was bedeutet, dass irgendwie sind meine Punkte als riesige Quadrate gezogen werden. Wenn ich drawPoint mit drawEllipse() wie folgt ersetzen:
painter.drawEllipse(-self.boatlength/2.0,-self.boatlength/2.0, self.boatlength, self.boatlength)
Gar nichts gezogen wird ... Irgendwelche Gedanken?
Tom.
Im ersten Fall erstellen Sie einen Stift der Linienbreite 0 und verwenden ihn nicht. Wie bekommst du etwas? Im zweiten Fall zeichnen Sie eine Ellipse eines sehr kleinen Radius mit großem Koordinatenzentrum. Wie versuchst du es zu finden? – ilotXXI
Danke tilotXXI. Der Stift in meinem ersten Fall war ein Rest von dem Code drawEllipse da drin. Sie haben Recht, dass der Code drawEllipse komisch ist - ich habe ihn auf 0,0 und die halbe Bootslänge für X- und Y-Radien geändert, aber ich bekomme immer noch das Gleiche. Meine Frage ist wirklich, was sollte ich für einen Radius verwenden? Reale Weltkoordinaten? –