Transformation und Darstellung von Koordinaten

BlackChocobo

Neues Mitglied
Hallo,

ich hoffe, dass mir jemand bei folgendem Problem helfen kann:

Ich möchte eine Karte mit Punkten (repräsentieren Städte) zeichnen, die auf Längen- und Breitengrad-Informationen basieren. Die Daten für Grenzen und Städte habe ich bereits.
Beispiel für den Knoten Berlin: Latitude: 52.516318, Longitude: 13.393183.
Die Größe der Karte soll 1024x768 Pixel betragen.

Meine Recherche hat ergeben, dass vorher eine Transformation der Koordinaten erfolgen muss. Dafür wollte ich die Affine Transformation nutzen, für die es in Java auch bereits eine entsprechende Umsetzung gibt (java.awt.geom.AffineTransform.AffineTransform()). Meine Frage ist nun, wie ich die Verhältnisse oder den Faktor bestimmte, damit richtig transformiert wird. Ich möchte, dass die Grenzen und Städte im richtigen Verhältnis zueinander auf 1024x768 abgebildet werden.

Ich hoffe, ich habe das einigermaßen verständlich ausgedrückt, ansonsten einfach nochmal nachfragen.

Grüße,
BlackChocobo
 

knilch

Bekanntes Mitglied
Hi,
hier ist mal ein Ansatz:
Du musst dir erst mal Gedanken machen, wie gross die Karte sein wird, die du auf 1024X768 projizieren möchtest. Wenn du z.B. ganz Deutschland auf diese Fläche projizieren möchtest, wird die Karte so klein, dass sie nicht mehr lesen kannst.
Du musst das ganze eingrenzen.
Wenn du z.B. ein Bundesland abbilden möchtest, dann musst du die Koordinaten max & min Latitude sowie max & min Longitude vom Bundesland nehmen und diese Punkte so auf die Fläche 1024X768 skalieren, damit du das ganze Bundesland abbilden kannst.
Dabei nimmst du die Koordinaten und bestimmst die Breite und Höhe. Danach berechnest du einen Skalierungsfakor für die Höhe und Breite und verwendest diese Skalierungsfaktoren beim Zeichnen der Punkte.
Dabei wirst du vermutlich nicht glücklich werden, da die Fläche sehr klein ist. Eventuell musst eine grössere Fläche nehmen und diese zoombar machen.
 
Zuletzt bearbeitet:

BlackChocobo

Neues Mitglied
Hey knilch,

erstmal danke für die Antwort. Du hast vermutlich Recht mit der kleinen Bildgröße. Aber wenn ich das überhaupt erstmal gezeichnet bekomme, kann ich ja noch rumexperementieren und alles Schritt für Schritt höherschrauben. Außerdem ist die Vorgabe leider - was die Grenzen betrifft - das komplette Land darzustellen.

Okay, also wenn ich dich richtig verstanden habe, muss ich folgendes machen (ich liste es hier extra nochmal auf, damit du es evtl. korrigieren oder im Optimalfall bestätigen kannst^^):

A = Latitude(max) - Latitude(min) = Gesamtbreite der darzustellenden Fläche
B = Longitude(max) - Longitude(min) = Gesamtlänge der darzustellenden Fläche

C = 1024 (Breite des Bildes, später dann evtl. höher setzen)
D = 768 (Höhe des Bildes, später dann evtl. höher setzen)

Meine beiden Skalierungsfaktoren wären dann A/C und B/D und werden vorm Zeichnen mit den X bzw. Y Koordinaten multipliziert. Und ich glaube A*B wäre dann das, was man als BoundingBox bezeichnet.

Hört sich eigentlich erstmal logisch an. Vielen Dank dafür! Wenns falsch ist, bitte nochmal drauf hinweisen :) Ein Zoomen wäre zwar cool, aber die Karte soll als Bild exportiert werden können. Zoomen kann man ja dann, wenn es in einem Grafikprogramm offen ist.
 

knilch

Bekanntes Mitglied
Hi BlackChocobo,
gerne.
A = Latitude(max) - Latitude(min) = Gesamtbreite der darzustellenden Fläche
B = Longitude(max) - Longitude(min) = Gesamtlänge der darzustellenden Fläche
Da A und B Längen / Breiten- Koordinaten sind, musst du diese in ein X-Y-Koordinatensystem umwandeln.
Sagen wir Latitude(max) ist x2 (A/2), Latitude(min) ist x1 (-A2), Longitude(max) ist y2 (B/2) und Longitude(min) ist y1 (-B/2).
Die Mitte von A (A/2) ist x0 (0), von B (B/2) ist y0 (0). So bekommst du die Fläche, die du darstellen willst so ausgerichtest, dass in der Bildmitte die Mitte der Karte ist, die du möchtest. Dies erleichtert dann auch die Transformation (Drehung) der Karte (0-360) falls du das noch zusätzlich implementieren möchtest.

Dies könnte dann die Fläche sein, die du darstellen möchtest. Anschliessend, wie du geschrieben hast, die Punkte, die du darstellen willst mit den Skalierungsfaktoren multiplizieren und auf der Fläche positionieren. Dabei musst du die Punkte von links nach rechts und von oben nach unten Zeichnen; in etwa so:
Java:
canvas.setWidth(mostRightXCoord-mostLeftXCoord);
canvas.setHeight(mostUpperYCoord-mostLowerYCoord);
// points sind dabei die skalierten Punkte, die du darstellen möchtest.
for(Point point in points) {
	double x = canvas.getWidth() + (mostUpperYCoord - point.getX());
	double y = mostRightXCoord - point.getY();
	drawPoint(x1, y1);
	drawLabel(x1, y1, "Das ist die Bezeichnung");
}
 

Thallius

Top Contributor
Naja wenn man es genau machen will kann man überhaupt nicht mit Lat und Long rechnen sondern muss diese erstmal in eine Entfernnung umrechnen. Da sich die Koordinaten auf einen Ort auf einer Kugel beizehen, kann man nicht eifnach die Differenz aus Lat1 und Lat2 bilden um eine Entfernung zu erhalten. Dazu muss man die Erdkrümmung an der entsprechenden Stelle mit einberechnen (In Äquatornähe ist sie größer als an den Polen). Dafür gibt es beliebig komplizierte Methoden.

Gruß

Claus
 

knilch

Bekanntes Mitglied
Naja wenn man es genau machen will kann man überhaupt nicht mit Lat und Long rechnen sondern muss diese erstmal in eine Entfernnung umrechnen. Da sich die Koordinaten auf einen Ort auf einer Kugel beizehen, kann man nicht eifnach die Differenz aus Lat1 und Lat2 bilden um eine Entfernung zu erhalten. Dazu muss man die Erdkrümmung an der entsprechenden Stelle mit einberechnen (In Äquatornähe ist sie größer als an den Polen). Dafür gibt es beliebig komplizierte Methoden.
Da stimme ich mit dir überein.
Ich denke, für einen ersten Kontakt mit der Darstellung von Koodinaten ohne Hilfsmittel wie google-maps etc. kann dies sicher mal versucht werden.
Jedoch wie du geschrieben hast, wird die genaue Darstellung der Punkte nicht so trivial sein, da diese umberechnet werden müssen. Z.b. Gauß-Krüger-System oder UTM-Koordinatensystem Koordinatensystem
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
G Affine Transformation AWT, Swing, JavaFX & SWT 7
M Hough-Transformation für Kreise und andere Formen AWT, Swing, JavaFX & SWT 3
S 2D-Grafik affine Transformation für Text-Shape AWT, Swing, JavaFX & SWT 0
P Problem - Zeichenungsfehler nach Skalierung oder Transformation AWT, Swing, JavaFX & SWT 4
MiMa Darstellung von FXML ateien nicht korrekt (SceneBuilder) AWT, Swing, JavaFX & SWT 2
D Button und Textfeld Darstellung AWT, Swing, JavaFX & SWT 3
G listener repaint() - verschiedene Darstellung AWT, Swing, JavaFX & SWT 24
H JavaFX - Button und Text - Falsche Darstellung AWT, Swing, JavaFX & SWT 3
Y Darstellung und MouseHover bei bestimmten Wörtern in einem String AWT, Swing, JavaFX & SWT 2
W Swing bzgl. Tableskalierung/Darstellung einer Matrix AWT, Swing, JavaFX & SWT 8
J Problem mit Button darstellung AWT, Swing, JavaFX & SWT 23
M Swing JTable, wie erreiche ich folgende Darstellung? AWT, Swing, JavaFX & SWT 10
M AWT LabelArray verschobene Darstellung AWT, Swing, JavaFX & SWT 2
N Swing Java Komponente zur Darstellung von klickbaren Links, die Java Funktionen ausführen können AWT, Swing, JavaFX & SWT 2
A Swing Darstellung von JComponents in Swing AWT, Swing, JavaFX & SWT 14
M Swing JTable drucken/Darstellung AWT, Swing, JavaFX & SWT 2
E Swing Darstellung einer Zeilenbar AWT, Swing, JavaFX & SWT 6
M Eine nicht korrekte Darstellung bei repaint() warum? AWT, Swing, JavaFX & SWT 4
U Swing Problem bei der Darstellung "komplexer Objecte" in einer JList mit AbstractListModel: AWT, Swing, JavaFX & SWT 3
Y LayoutManager Keine vollständige Darstellung der Tabelle mit GridBagLayout AWT, Swing, JavaFX & SWT 3
A Darstellung dauert zu lange. Wie rest verzögern? AWT, Swing, JavaFX & SWT 7
S LayoutManager Fehlerhafte Darstellung einer Statusleiste/Statusbar AWT, Swing, JavaFX & SWT 6
H Thread-Problem mit der Darstellung beim Sperren des Fensters AWT, Swing, JavaFX & SWT 2
S Grafische Darstellung von signalen AWT, Swing, JavaFX & SWT 2
S jTable size und Text darstellung AWT, Swing, JavaFX & SWT 2
L SWT Darstellung des Datums in Textfeld? AWT, Swing, JavaFX & SWT 2
M SWT Probleme bei der Darstellung des "&"-Zeichens... AWT, Swing, JavaFX & SWT 3
E Darstellung komplexer Formen, z.B. gebogener Pfeil AWT, Swing, JavaFX & SWT 2
P Problem mit Darstellung von JButton(s) AWT, Swing, JavaFX & SWT 2
D Darstellung in Swing wie HTML? AWT, Swing, JavaFX & SWT 2
R Darstellung von JButton AWT, Swing, JavaFX & SWT 6
G Swing Darstellung JTable AWT, Swing, JavaFX & SWT 2
T Swing Java Darstellung einer Tabelle AWT, Swing, JavaFX & SWT 3
S Unterschiedliche Darstellung Java 5 und 6 AWT, Swing, JavaFX & SWT 7
B Probleme bei JPanel Darstellung AWT, Swing, JavaFX & SWT 6
M GBL - Darstellung gestreckt? AWT, Swing, JavaFX & SWT 3
P Applet darstellung von Textfeldern Problem AWT, Swing, JavaFX & SWT 3
O JComboBox andere Darstellung des Inhaltes + größe der Auswah AWT, Swing, JavaFX & SWT 11
M Swing mit Gtk - Fehlerhafte Darstellung AWT, Swing, JavaFX & SWT 3
S JTree - Darstellung von Ordnern rückwärts AWT, Swing, JavaFX & SWT 4
C Fragen zur Darstellung einer JTable mittels Renderer AWT, Swing, JavaFX & SWT 2
H Darstellung einer Kurve im Koordinatensystem AWT, Swing, JavaFX & SWT 8
T [gelöst] JFrame Grundlagen (Größe und Darstellung) AWT, Swing, JavaFX & SWT 6
G JTable dynamische Darstellung der ankommenden Daten AWT, Swing, JavaFX & SWT 19
G Darstellung von JComboBox AWT, Swing, JavaFX & SWT 14
S Gui Darstellung AWT, Swing, JavaFX & SWT 2
M Komische Sache bei der Darstellung auf einem JPanel AWT, Swing, JavaFX & SWT 5
S Swing Element für Explorer-Fenster darstellung AWT, Swing, JavaFX & SWT 13
P Darstellung eines Graphen AWT, Swing, JavaFX & SWT 2
G keine darstellung in JTable AWT, Swing, JavaFX & SWT 2
A JLabel: Unterschiede zw. JRE 1.3 und 1.5 in der Darstellung AWT, Swing, JavaFX & SWT 3
B Komische Darstellung unter Windows 2000 AWT, Swing, JavaFX & SWT 2
Z Seltsame Darstellung verschachtelter GridBagLayouts AWT, Swing, JavaFX & SWT 2
M SWT Darstellung Linux / Win verschieden? AWT, Swing, JavaFX & SWT 4
P Fehlerhafte Darstellung bei JLabel.setText AWT, Swing, JavaFX & SWT 2
C Timer, Darstellung einer Uhr AWT, Swing, JavaFX & SWT 4
D Wie Darstellung / Layout als Liste AWT, Swing, JavaFX & SWT 2
T darstellung eines polynom 5.grades AWT, Swing, JavaFX & SWT 2
S JTable + Sortieren => Problem bei Darstellung AWT, Swing, JavaFX & SWT 13
U JSlider - Probleme bei der Darstellung AWT, Swing, JavaFX & SWT 3
V jTalbe: Probs bei Icon Darstellung AWT, Swing, JavaFX & SWT 4
Z Empfehlung für solche Darstellung! AWT, Swing, JavaFX & SWT 4
F Darstellung von Tastaturkürzel in JMenuItem AWT, Swing, JavaFX & SWT 13
R Mehrzeilige Darstellung von Spalten in SWING-Tabellen AWT, Swing, JavaFX & SWT 5
M Problem mit JTree-Darstellung AWT, Swing, JavaFX & SWT 5
T Problem mit Darstellung AWT, Swing, JavaFX & SWT 6
C Polygon Koordinaten richtig sortieren AWT, Swing, JavaFX & SWT 7
C Kleineres Bild an bestimmte Koordinaten setzen AWT, Swing, JavaFX & SWT 6
S JButtons an Koordinaten setzen AWT, Swing, JavaFX & SWT 3
J Java FX Koordinaten NACH Animation setzen, wie? AWT, Swing, JavaFX & SWT 9
F Swing Rotation eines Bildes mit beliebigen Koordinaten um den Mittelpunkt AWT, Swing, JavaFX & SWT 3
J in actionPerformed() Koordinaten ändern AWT, Swing, JavaFX & SWT 9
P JavaFX Szenegraph - Koordinaten von Children einer Group AWT, Swing, JavaFX & SWT 0
C Bild Koordinaten AWT, Swing, JavaFX & SWT 6
S Polygon mit double-Koordinaten AWT, Swing, JavaFX & SWT 2
K 3D-Grafik 2 "Boxen" auf unterschiedlichen Koordinaten AWT, Swing, JavaFX & SWT 2
Luk10 Fragen zum Koordinaten System AWT, Swing, JavaFX & SWT 3
K LayoutManager Buttons auf bestimmte x und y Koordinaten AWT, Swing, JavaFX & SWT 2
W 2D-Grafik Koordinaten nicht immer die selben AWT, Swing, JavaFX & SWT 9
J Koordinaten von JButton AWT, Swing, JavaFX & SWT 2
C Caret Position mit X-Y-Koordinaten ermitteln AWT, Swing, JavaFX & SWT 2
D Swing JTable, Zellen-Farbe über Koordinaten ändern AWT, Swing, JavaFX & SWT 9
Y AWT Maus Koordinaten abspeichern in eine Textfile AWT, Swing, JavaFX & SWT 3
D Swing JViewPort, Absolut Koordinaten berechnen. AWT, Swing, JavaFX & SWT 2
C permanente aktualisierung der Koordinaten der Maus auf einem Panel AWT, Swing, JavaFX & SWT 8
T SWT Canvas Koordinaten per MouseMove auslesen AWT, Swing, JavaFX & SWT 1
S Koordinaten aus Array verwenden zum zeichnen auf JPanel?! AWT, Swing, JavaFX & SWT 3
S Swing Text -> HTML: Caret-Koordinaten verschoben AWT, Swing, JavaFX & SWT 6
aze SwingConstants.Center Koordinaten für JLabel herausfinden AWT, Swing, JavaFX & SWT 6
T Choice "gezielt" darstellen aber wie - mit Koordinaten aber wie? AWT, Swing, JavaFX & SWT 6
D Koordinaten von einem Kreissegment berechnen AWT, Swing, JavaFX & SWT 6
D Mouse Koordinaten AWT, Swing, JavaFX & SWT 2
R drawString mit double Koordinaten AWT, Swing, JavaFX & SWT 5
M Grafik flexibel an berechneten Koordinaten positionieren AWT, Swing, JavaFX & SWT 4
N Alle Pixel-Koordinaten von z.B. g.drawLine(.) speichern AWT, Swing, JavaFX & SWT 7
N Koordinaten erfassen AWT, Swing, JavaFX & SWT 5
S Koordinaten/Raster (ähnlich Schachbrett) anzeigen/ausblenden AWT, Swing, JavaFX & SWT 10
F Ermittlung der X- und Y- Koordinaten im Tree bei Tastaturst. AWT, Swing, JavaFX & SWT 5
D Koordinaten der Bildschirmposition auslesen (MouseListener?) AWT, Swing, JavaFX & SWT 7

Ähnliche Java Themen

Neue Themen


Oben