Geometry erstellen die abhängig von Variablen ist

RedVelvet

Mitglied
Moin!
So ich soll für eine Hausarbeit ein Programm schreiben, dass in einem SimViewer eine Geometrische Darstellung (es handelt sich um maritime Suchnuster) anzeigt. Diese Darstellung soll basierend sein auf 2 Werten die vorher berechnet wurden (Datum und S). Die generelle Darstellung von Linien und einfachen vorbestimmten Geometrischen Formen bekomme ich auch hin. Jedoch weiß ich nicht wie ich das jetzt abhängig machen kann vom vorher berechnetem Datum und S. Sobald ich etwas anderes als eine Zahl für die Koordinaten eingebe kommt eine Fehlermeldung, das man halt nur Zahlen eingeben soll.
Weiß da jemand einen Weg drumherum?
Java:
SimViewer2 simViewer = new SimViewer2();
                    WKTReader reader = new WKTReader();
                    Geometry geometry;
                    try {

                        geometry = reader.read("LINESTRING(8 54, 9 55, 12 49)");
                        simViewer.addLinePainter(geometry);

                    } catch (ParseException e1) {
                        // TODO Auto-generated catch block
                        e1.printStackTrace();
                    }
So sieht es momentan aus. Der Anfangspunkt müsste das Datum sein und die weiteren Pubkte sind abhängig von S.

Bin in Java absolut nicht gut, da es nur Teil eines Modules meines Nautikstudiums ist......
Freue mich über jeden Tipp.
 
Scheiße...wozu brauchen Seefahrer sowas? Ich hab das bei meiner Schwester (studierte irgendwas mit Wirtschaft) warum die eine komplette Java-Vorlesung hatten.

Aber seis drum:
Ehrlich gesagt verstehe ich dein Problem noch nicht so recht. Koordinaten in Abhängigkeit eines Datums...wie soll diese Abhängigkeit aussehen? Du kannst natürlich alle Nicht-Zahlen aus einem Datumstring entfernen, aber das ist sicher nicht das was du wolltest.
 
OK sorry... also das Datum ist eine Position mit Latitude und Longitude und S ist eine Distanz in Seemeilen.
Hilft das?
Also die Aussgangsposition die momentan bei der LInie 54°N und 8°E ist soll dann die Koordinaten des Datums übernehmen und die weiteren Koordinaten sind abhängig von der Entfernung die S in Seemeilen aus wirft (also dann sowas wie Latitude Datum + Distanz S)......
Und ja ich benutze die Klasse unter org.locationtech.jts.geom, da mir mein Prof das so vorgeschlagen hat und wir das in einer Übung schon benutt haben.
 
Ah...so ein Datum meinst du.

Wie sollst du denn die Daten darstellen? Du schreibst daß du die Darstellung von Linien hinbekommst - wie stellst du die denn da? Swing? JavaFX?

Du hast auf jeden Fall irgendeine Form von rechteckiger Präsentationsfläche, deren Größe z.B. als Breite x Höhe in Pixeln angebeben ist. Dann mußt du überlegen, wo in deiner Präsentationsfläche 0°N und 0°E ist und wo das Ende der beiden Richtungen ist.

Und dann eben deine Positionskoordinaten in Pixelpositionen umrechnen - das ist aber einfacher Dreisatz.

Versuche, möglichst nicht monolithisch zu programmieren. Also anstatt großer Methoden lieber viele, kleinere Methoden. Ich mache das manchmal so, daß ich das eigentliche Problem in einer Methode zunächst in grobe Teilschritte zerlege und das dann immer feiner auflöse. Für einzelne Teilschritte einfach erstmal eine Methode deklarieren, aber ohne sie zu implementieren. Und dann das große Problem erstmal auf dieser oberflächlichen Ebene lösen.

Erst danach die deklarierten "Zwischenschrittmethoden" implementieren, die sind in der Regel deutlich einfacher. Wenn nicht: dann wieder in Teilschritte zerlegen. Usw...
 
OK also leider verwirrt mich das ganze gerade etwas ......simviewer.png
Also ich stelle es im SimViewer dar (vom Prof erstellte quasi elektronische Seekarte).

Die Punkte hier sind die Koordinaten der Punkte hier:
Java:
 geometry = reader.read("LINESTRING(8 54, 9 55, 12 49)")
Nun muss ich aber statt der Zahlen dort irgendwie etwas eingeben was den Bezug zum Datum (Koordinaten) und S darstellt. ....
 
Du musst halt den LINESTRING dynamisch zusammenbauen. Wenn es nur um die Verbindung zwischen zwei Punkten geht:
Java:
int lon1 = 8;
int lon2 = 9;
int lat1 = 54;
int lat2 = 55;

String str = String.format("LINESTRING(%d %d, %d %d)", lon1, lat1, lon2, lat2);
geometry = reader.read(str);

Wobei mich es etwas wundert, dass man hier erst einen String einlesen muss. Ich würde vermuten, dass Du direkt eine Geometry mit den entsprechenden Punkten erzeugen kannst.
 

Zurück
Oben