Koordinatentransformation Java (BWTA2017) (Geodäsie/Vermessung)

Banda, Wednesday, 16.12.2020, 09:58 (vor 1220 Tagen)
bearbeitet von MichaeL, Wednesday, 16.12.2020, 14:34

Hallo Zusammen,

ich möchte ein kleines Programm in Java schreiben um mithilfe der NTV2-Gitterdatei, Koordinaten von GK nach UTM zu transformieren.

die Objektklasse Punkt beinhaltet dann die Attribute :

Punktnummer, Rechtswert, Hochwert, Höhe

Input Dateien sind: GSI(Leica) und PKT(GEograf)


Das mit dem Einlesen bekomme ich hin, aber bei der Trafo an sich bin ich ein wenig ratlos. Irgendwie muss ja die Gitterdatei eingebunden werden.

Viele Grüße

Avatar

Koordinatentransformation Java (BWTA2017)

MichaeL ⌂, Bad Vilbel, Wednesday, 16.12.2020, 12:22 (vor 1220 Tagen) @ Banda

Hallo,

ich möchte ein kleines Programm in Java schreiben um mithilfe der NTV2-Gitterdatei, Koordinaten von GK nach UTM zu transformieren.

die Objektklasse Punkt beinhaltet dann die Attribute :

Punktnummer, Rechtswert, Hochwert, Höhe

NTv2 transformiert keine kartesischen Koordinaten. Deine Klasse wird Dir also nicht viel nutzen in der gezeigten Form. Die Projektion ist also außerhalb der NTv2-Transformation zu implementieren.

Das mit dem Einlesen bekomme ich hin, aber bei der Trafo an sich bin ich ein wenig ratlos. Irgendwie muss ja die Gitterdatei eingebunden werden.

Wie meinst Du das? Wenn Du die Datei eingelesen hast, wobei dies für Baden-Württemberg aufgrund der Größe problematisch sein könnte, musst Du doch nur die richten Shiftwert extrahieren für die Interpolation. Was verstehst Du unter einbinden? Dateien werden gelesen. Ob das nun NTv2 Dateien sind oder GSI spielt hierbei doch keine Rolle.

Im Übrigen: JAG3D ist ein kostenfreies und quellcodeoffenes Java-Programm, welches mit GeoTra ein Modul besitzt, welches genau das macht, was Du vor hast...

Viele Grüße
Micha

--
applied-geodesy.org - OpenSource Least-Squares Adjustment Software for Geodetic Sciences

Tags:
Koordinatentransformation, JAG3D, Java, NTv2, BWTA2017

Koordinatentransformation Java (BWTA2017)

Banda, Wednesday, 16.12.2020, 14:15 (vor 1220 Tagen) @ MichaeL

Hallo,

ich möchte ein kleines Programm in Java schreiben um mithilfe der NTV2-Gitterdatei, Koordinaten von GK nach UTM zu transformieren.

die Objektklasse Punkt beinhaltet dann die Attribute :

Punktnummer, Rechtswert, Hochwert, Höhe


NTv2 transformiert keine kartesischen Koordinaten. Deine Klasse wird Dir also nicht viel nutzen in der gezeigten Form. Die Projektion ist also außerhalb der NTv2-Transformation zu implementieren.

Das mit dem Einlesen bekomme ich hin, aber bei der Trafo an sich bin ich ein wenig ratlos. Irgendwie muss ja die Gitterdatei eingebunden werden.


Wie meinst Du das? Wenn Du die Datei eingelesen hast, wobei dies für Baden-Württemberg aufgrund der Größe problematisch sein könnte, musst Du doch nur die richten Shiftwert extrahieren für die Interpolation. Was verstehst Du unter einbinden? Dateien werden gelesen. Ob das nun NTv2 Dateien sind oder GSI spielt hierbei doch keine Rolle.

Im Übrigen: JAG3D ist ein kostenfreies und quellcodeoffenes Java-Programm, welches mit GeoTra ein Modul besitzt, welches genau das macht, was Du vor hast...

Viele Grüße
Micha

Ich muss vielleicht ein bißchen weiter ausholen damit du verstehst was ich genau machen möchte.

Wir messen im Außendienst Nägel ein die wir zum Stationieren verwenden.
Im Innendienst wird das ganze dann als Punktdatei(GSI oder PKT) in ein GEOgraf Projekt importiert und umnummeriert in das Kilometerquadrat im UTM System mit fortlaufender Punktnummer.

Also zB. Punkt 600124 RW: 32524300.0 HW: 5364946.000

dieser Punkt bekommt dann entsprechend die Punktnummer 246400001

Geograf kann in dieses Projekt sowohl GK als auch UTM Punkte importieren und die Tranformation wird mithilfe des NTv2-Grids automatisch im hintergrund angewandt.

Nun ist es so das man beim Import ein paar Sachen beachten muss und für ein paar der älteren Mitarbeiter ist das zu kompliziert und es schleichen sich Fehler ein (zB. Punktimport ohne Transformation, oder Umnummerierung vergessen...)

Zur Zeit spiele dann nur ich diese Punkte ein aber ist natürlich für mich ein riesen Aufwand...

Daher war meine Idee, ein Programm zu schreiben, womit die Punkte gleich vorher umnummeriert und transformiert werden, damit die Mitarbeiter nur noch selber die Datei in GEOgraf importieren müssen und ich entlastet werde.

Hast du selbst die BWTA2017.gsb in Jag3d für die Transformation hinterlegt?

Hast du vielleicht eine andere Idee wie wir möglichst fehlerfrei unsere Anschlusspunkte verwalten können?

GEOgraf arbeitet leider nur Grafisch und nicht als Datenbank, sonst wäre vieles einfacher...

Viele Grüße
Banda

Avatar

Koordinatentransformation Java (BWTA2017)

MichaeL ⌂, Bad Vilbel, Wednesday, 16.12.2020, 14:34 (vor 1219 Tagen) @ Banda

Hallo Banda,

Wir messen im Außendienst Nägel ein die wir zum Stationieren verwenden.
Im Innendienst wird das ganze dann als Punktdatei(GSI oder PKT) in ein GEOgraf Projekt importiert und umnummeriert in das Kilometerquadrat im UTM System mit fortlaufender Punktnummer.

Also zB. Punkt 600124 RW: 32524300.0 HW: 5364946.000
dieser Punkt bekommt dann entsprechend die Punktnummer 246400001

Ich kann nicht ganz nachvollziehen, warum Ihr die Punkte nachträglich noch umbenennen müsst (bzw. warum der Außendienst nicht gleich die richtigen Nummern vergibt). Ich gehe jetzt einfach mal davon aus, dass es ein spezieller Workflow bei Euch im Haus ist.

Daher war meine Idee, ein Programm zu schreiben, womit die Punkte gleich vorher umnummeriert und transformiert werden, damit die Mitarbeiter nur noch selber die Datei in GEOgraf importieren müssen und ich entlastet werde.

Okay. Das kann ich nachvollziehen.

Hast du selbst die BWTA2017.gsb in Jag3d für die Transformation hinterlegt?

Die Gitterdatei BWTA2017.gsb kannst Du ja direkt vom Landesvermessungsamt beziehen. Aus diesem Grund liegt die im Downloadpaket nicht explizit bei. Wenn Du sie heruntergeladen und ins JAG3D-Verzeichnis JAG3D\resources\NTv2\ gespeichert hast, dann steht Dir diese Gitterdatei bei nächsten Start der Applikation automatisch zur Verfügung. Alle Gitterdateien, die im genannten Verzeichnis liegen, werden dem Anwender als Option angeboten. In diesem Verzeichnis befindet sich derzeit nur die BETA2007 vom BKG. Die Lösungen der Bundesländer ist nicht enthalten, weil jemand in bspw. Brandenburg selten die Lösung aus Bremen benötigt (und vise versa).

Wenn Du die Umnummerierung realisiert hast, könntest Du auch direkt über Dein Java-Programm die Trafo noch mittels GeoTra anstoßen. Eine Art Beispiel findest Du im Repository in der Klasse GeoTraBatchShell. Die Klasse kann nun noch etwas mehr als Du vielleicht benötigst also nicht erschrecken, den Teil mit der Helmert-Transformation musst Du mal ausblenden.

Hast du vielleicht eine andere Idee wie wir möglichst fehlerfrei unsere Anschlusspunkte verwalten können?

Nein, nicht direkt. Dazu stecke ich zu wenig in Eurem Workflow drin.

Viele Grüße
Micha

--
applied-geodesy.org - OpenSource Least-Squares Adjustment Software for Geodetic Sciences

Koordinatentransformation Java (BWTA2017)

Banda, Wednesday, 16.12.2020, 14:44 (vor 1219 Tagen) @ MichaeL

Hallo Banda,

Wir messen im Außendienst Nägel ein die wir zum Stationieren verwenden.
Im Innendienst wird das ganze dann als Punktdatei(GSI oder PKT) in ein GEOgraf Projekt importiert und umnummeriert in das Kilometerquadrat im UTM System mit fortlaufender Punktnummer.

Also zB. Punkt 600124 RW: 32524300.0 HW: 5364946.000
dieser Punkt bekommt dann entsprechend die Punktnummer 246400001


Ich kann nicht ganz nachvollziehen, warum Ihr die Punkte nachträglich noch umbenennen müsst (bzw. warum der Außendienst nicht gleich die richtigen Nummern vergibt). Ich gehe jetzt einfach mal davon aus, dass es ein spezieller Workflow bei Euch im Haus ist.

Wir bennenen die Punkte immer vorläufig damit wir genau das nicht überlegen müssen bei welcher Punktnummer es dann weitergeht und welche es im jeweiligen KM-Quadrat schon gibt.
Somit kann ich immer mit der gleichen Startpunktnummer in den Außendienst.

Aber vielleicht mache ich mal einen neuen Threa auf um zu schauen was die Kollegen im Forum für ein Nummerierungssystem verwenden.

Daher war meine Idee, ein Programm zu schreiben, womit die Punkte gleich vorher umnummeriert und transformiert werden, damit die Mitarbeiter nur noch selber die Datei in GEOgraf importieren müssen und ich entlastet werde.


Okay. Das kann ich nachvollziehen.

Hast du selbst die BWTA2017.gsb in Jag3d für die Transformation hinterlegt?


Die Gitterdatei BWTA2017.gsb kannst Du ja direkt vom Landesvermessungsamt beziehen. Aus diesem Grund liegt die im Downloadpaket nicht explizit bei. Wenn Du sie heruntergeladen und ins JAG3D-Verzeichnis JAG3D\resources\NTv2\ gespeichert hast, dann steht Dir diese Gitterdatei bei nächsten Start der Applikation automatisch zur Verfügung. Alle Gitterdateien, die im genannten Verzeichnis liegen, werden dem Anwender als Option angeboten. In diesem Verzeichnis befindet sich derzeit nur die BETA2007 vom BKG. Die Lösungen der Bundesländer ist nicht enthalten, weil jemand in bspw. Brandenburg selten die Lösung aus Bremen benötigt (und vise versa).

Wenn Du die Umnummerierung realisiert hast, könntest Du auch direkt über Dein Java-Programm die Trafo noch mittels GeoTra anstoßen. Eine Art Beispiel findest Du im Repository in der Klasse GeoTraBatchShell. Die Klasse kann nun noch etwas mehr als Du vielleicht benötigst also nicht erschrecken, den Teil mit der Helmert-Transformation musst Du mal ausblenden.

Klingt gut, vielleicht kann ich das irgendwie abspecken auf das wesentliche damit die Kollegen das verstehen :).
Was muss ich denn mit den kartesischen Gauß-Krüger Koordinaten machen damit ich diese überhaupt in GeoTra verwenden kann?
Es sieht so aus als ob hier nur ellipsoidische Koordinaten transformiert werden können.

Zielsystem wäre eigentlich ETRS89/UTM32 auch als kartesische Koordinaten.
Ist dann hier ETR89 und UTM (S) die richtige Einstellung?

Hast du vielleicht eine andere Idee wie wir möglichst fehlerfrei unsere Anschlusspunkte verwalten können?


Nein, nicht direkt. Dazu stecke ich zu wenig in Eurem Workflow drin.

Okay aber ich denke mein Ansatz ist schon mal eine Richtung.

Avatar

Koordinatentransformation Java (BWTA2017)

MichaeL ⌂, Bad Vilbel, Wednesday, 16.12.2020, 15:03 (vor 1219 Tagen) @ Banda

Hallo Banda,

Es sieht so aus als ob hier nur ellipsoidische Koordinaten transformiert werden können.

Nein, wenn Du Dir die Oberfläche mal ansiehst, dann wirst Du feststellen, dass auch East/North (Rechts/Hoch) unterstützt wird. Die gezeigte Klasse ist für einen Aufruf auf der Shell (Kommandozeile) gedacht. Hier gibt es die Option -coor, die die Art der Koordinaten abfragt, vgl. Zeile 75ff. Unterstützt werden demnach:

  • CoordinateType.EastNorthHeight,
  • CoordinateType.LatLonHeight und
  • CoordinateType.XYZ,

wobei der letzte Typ geozentrische Koordinaten meint, die für Dich nicht relevant sein sollten (denke ich). Wenn Du also kartesische UTM oder GK Koordinaten hast, dann wäre EastNorthHeight Deine Option. Die Höhe kannst Du hierbei zu Null setzen, da diese für NTv2 nicht relevant ist.

Zielsystem wäre eigentlich ETRS89/UTM32 auch als kartesische Koordinaten.
Ist dann hier ETR89 und UTM (S) die richtige Einstellung?

Nein, UTM(N) für nördliche Hemisphäre. ;-)

Viele Grüße
Micha

--
applied-geodesy.org - OpenSource Least-Squares Adjustment Software for Geodetic Sciences

Koordinatentransformation Java (BWTA2017)

Banda, Wednesday, 16.12.2020, 15:11 (vor 1219 Tagen) @ MichaeL

Hallo Banda,

Es sieht so aus als ob hier nur ellipsoidische Koordinaten transformiert werden können.

Nein, wenn Du Dir die Oberfläche mal ansiehst, dann wirst Du feststellen, dass auch East/North (Rechts/Hoch) unterstützt wird. Die gezeigte Klasse ist für einen Aufruf auf der Shell (Kommandozeile) gedacht. Hier gibt es die Option -coor, die die Art der Koordinaten abfragt, vgl. Zeile 75ff. Unterstützt werden demnach:

  • CoordinateType.EastNorthHeight,
  • CoordinateType.LatLonHeight und
  • CoordinateType.XYZ,

wobei der letzte Typ geozentrische Koordinaten meint, die für Dich nicht relevant sein sollten (denke ich). Wenn Du also kartesische UTM oder GK Koordinaten hast, dann wäre EastNorthHeight Deine Option. Die Höhe kannst Du hierbei zu Null setzen, da diese für NTv2 nicht relevant ist.

Zielsystem wäre eigentlich ETRS89/UTM32 auch als kartesische Koordinaten.
Ist dann hier ETR89 und UTM (S) die richtige Einstellung?

Nein, UTM(N) für nördliche Hemisphäre. ;-)

Viele Grüße
Micha

Super, habe es mal getestet und funktioniert klasse :-)!

Was bräuchte ich denn, um wirklich nur ein simples Programm zu schreiben, dass die Datei mit den Punkten einliest und in UTM32 umwandelt und wieder ausgiebt?

Ich glaube die Oberfläche ist schon zu kompliziert für die Kollegen :s...

Avatar

Koordinatentransformation Java (BWTA2017)

MichaeL ⌂, Bad Vilbel, Wednesday, 16.12.2020, 15:24 (vor 1219 Tagen) @ Banda

Hallo,

Was bräuchte ich denn, um wirklich nur ein simples Programm zu schreiben, dass die Datei mit den Punkten einliest und in UTM32 umwandelt und wieder ausgiebt?

Datei rein und wieder raus wäre am einfachsten über den DualPointFileReaderAndWriter zu lösen. Der liest eine Koordinatendatei ein mit <Punktnummer> <Rechtswert> <Hochwert> und liefert eine Datei mit den transformierten Ergebnisse. Im gezeigten Quellcode ist es die Zeile 191. Der Aufruf readSourceFile() sollte dann alles weitere erledigen. In Deinem Programm müsstest Du also die Argumente: transformator (Zeile 112ff), submissionType (Zeile: 75ff), srcFile, destFile definieren. Was Deine Kollegen nicht sehen sollen, müsstest Du also definieren. Mit der Oberfläche kannst Du leicht validieren, ob alles funktioniert.

Viele Grüße
Micha

--
applied-geodesy.org - OpenSource Least-Squares Adjustment Software for Geodetic Sciences

Koordinatentransformation Java (BWTA2017)

Banda, Wednesday, 16.12.2020, 15:27 (vor 1219 Tagen) @ MichaeL

Hallo,

Was bräuchte ich denn, um wirklich nur ein simples Programm zu schreiben, dass die Datei mit den Punkten einliest und in UTM32 umwandelt und wieder ausgiebt?


Datei rein und wieder raus wäre am einfachsten über den DualPointFileReaderAndWriter zu lösen. Der liest eine Koordinatendatei ein mit <Punktnummer> <Rechtswert> <Hochwert> und liefert eine Datei mit den transformierten Ergebnisse. Im gezeigten Quellcode ist es die Zeile 191. Der Aufruf readSourceFile() sollte dann alles weitere erledigen. In Deinem Programm müsstest Du also die Argumente: transformator (Zeile 112ff), submissionType (Zeile: 75ff), srcFile, destFile definieren. Was Deine Kollegen nicht sehen sollen, müsstest Du also definieren. Mit der Oberfläche kannst Du leicht validieren, ob alles funktioniert.

Viele Grüße
Micha

Super ich danke dir!

Viele Grüße

Koordinatentransformation Java (BWTA2017)

Banda, Wednesday, 16.12.2020, 15:56 (vor 1219 Tagen) @ MichaeL

Ich habe nun mal das ganze Projekt als Archiv in Eclipse importiert. Version ist das Oxygen Release (4.7.0).

beim launchen der GeoTra.java kommen fehler weil wohl librarys fehlen:

Description Resource Path Location Type
Project 'GeoTra v2.0' is missing required library: '\JavaGraticule3Dv3.0\libs\tablelayout.jar' GeoTra v2.0 Build path Build Path Problem

Description Resource Path Location Type
Project 'GeoTra v2.0' is missing required library: '\JavaGraticule3Dv3.0\libs\tools.jar' GeoTra v2.0 Build path Build Path Problem

Grüße
Banda

Avatar

Koordinatentransformation Java (BWTA2017)

MichaeL ⌂, Bad Vilbel, Wednesday, 16.12.2020, 16:27 (vor 1219 Tagen) @ Banda

Hi,

die Bibliotheken findest Du im lib-Verzeichnis von JAG3D oder bei sf.net. Die müsstest Du auch in Eclipse noch hinzufügen. Hier mal die MANIFEST-Datei

Manifest-Version: 1.0
Class-Path: 
  resources/ 
 
  libs/tools.jar 
  libs/tablelayout.jar 
 
Main-Class: com.derletztekick.geodesy.geotra.gui.GeoTra

Du benötigst also auch die tools.jar.

Viele Grüße
Micha

--
applied-geodesy.org - OpenSource Least-Squares Adjustment Software for Geodetic Sciences

Koordinatentransformation Java (BWTA2017)

Steffen, Friday, 18.12.2020, 13:14 (vor 1218 Tagen) @ Banda

Hallo,
eine sehr einfache Transformation für BW bietet KooTransBW.
Eventuell könnte man das Tool noch um eine Punkt(um)nummerierung aufrüsten(lassen).

Gruß Steffen

RSS-Feed dieser Diskussion