• Willkommen im Geoclub - dem größten deutschsprachigen Geocaching-Forum. Registriere dich kostenlos, um alle Inhalte zu sehen und neue Beiträge zu erstellen.

Excel-Tabelle GPS-WGS84 nach Gauss-Krüger-DHDN.

olim

Geonewbie
In dem Excel File gk_nach_gps von moenks page kann man ja auch eine Höhe eingeben.
Was ich nicht so ganz verstanden habe bisher ist wie die Höhe an Gauss-Krüger Koordinaten gebunden ist, da ich auch tools gefunden habe die die Koordinaten höhenunabhängig transformieren. Ist die Höhe denn zwingend an die GK-Koordinaten gebunden?
Ich habe obige Excel-File in Matlab implementiert um sie auf Flächendaten im GK-Format anzuwenden. Das Problem ist nun dass die transformierten Höhenwerte in GPS sehr oft negativ werden und dann mit Validierung in Google Earth keinen Sinn mehr ergeben. Zudem habe ich ein Tool gefunden unter: http://www.hans-adelt.de/hans/gps.html
welches mir andere - mehr sinnhafte - Höhenwerte ausgibt, und das bei zu Moenks Tool identischen Lat/Lon Werten.
Welches Tool hat Recht? Und wie sind die Höhenunterschiede zu erklären?

VIELEN DANK
olim
 

pfeffer

Geowizard
In der Umrechnung beziehen sich die Höhenangaben auf den jeweiligen Ellipsoid.
Die in Karten üblichen Höhenangaben beziehen sich jedoch auf Höhen, die unter Verwendung der Fließrichtung des Wassers bzw. des Lots ermittelt wurden.
Die Lot-Höhen weichen aus 2 Gründen von denen der Ellipse ab:
a) Die Ungleichmäßigkeit des Schwerefeldes der Erde führt zu unregelmäßgen Abweichungen (z.B. ein Gebirge in der Nähe zieht alles an und macht sozusagen das Lot etwas schief).

b) Die Zentrifugalkraft führt abhängig vom Breitengrad zu einer systematischen Verschiebung gegenüber der ellipsoiden Höhe.

Wofür brauchst Du die Höhe?

Ursache dafür, dass Höhe 0 in Gauß-Krüger nicht der Höhe 0 in WGS84 entspricht, liegt daran, dass die jeweiligen Ellipsen leicht unterschiedlich groß, gegeneinander verdreht und verschoben sind. Das liegt widerum daran, dass bei den Gauß-Krüger-Koordinaten der (Bessel-) Ellipsoid so gelegt wurde, dass er für Deutschland gut passt, während in WGS84 der Ellipsoid so gelegt wurde, dass die Abweichungen auf der ganzen Welt möglichst klein sind.

Einfach 0 für die Höhe einsetzen und im Ergebnis die Höhe als 0 zu interpretieren liefert in der Ebene korrekte Koordinaten, Ich schätze, bis auf mm. Ein Unterschied ergibt sich ja bloß, durch die Abweichung der Lotrichtungen der Ellipsen.

Gruß,
Pfeffer.
 

olim

Geonewbie
Danke für die schnelle Antwort!

Ich brauche die Höhenangaben nicht unbedingt, bzw. habe ich schon Höhenangaben in meinem Datensatz die aber dann wohl nach den von dir genannten Methoden bestimmt sind und nicht direkt zu den Gauss-Krüger Koordinaten gehören. Das macht auch Sinn da sie nicht direkt zusammen abgespeichert sind.

Ich hatte nur nach einer Erklärung der unterschiedlichen Höhen-Ergebnisse meiner 2 Tools gesucht, konnte mir diese jedoch nicht inhaltlich erklären da ich nicht über das entsprechende Hintergrundwissen verfüge. Die beiden Tools liefern übrigens auch bei Höhe 0 unterschiedliche Höhen-Ouputs, allerdings macht das ja nach deiner Erklärung auch Sinn!

Wichtig wäre für mich nochmal zu wissen welcher Parametersatz zu empfehlen wäre wenn ich eine komplette Deutschland Karte mit 1800 Messpunkten transformieren möchte. Reicht einer aus, oder müsste ich z.B. für Niedersachsen einen anderen wählen (hatte da vorher was gelesen dass die etwas eigenes benutzt haben). Wie groß sind die Unterschiede zwischen Deutschland 1995 und Deutschland 2001? Achso, mein Datensatz stammt aus den Jahren 1987 bis 1992.
 

pfeffer

Geowizard
Es kommt drauf an, welche Genauigkeit Du haben willst.
Die alten Messmethoden (ohne Satelitenunterstützung) konnten über große Entfernungen einfach nicht die absoulte Genauigkeit erreichen, wie es heute mit Hilfer der Sateliten möglich ist. Deswegen gab es "Netzspannungen", insbesondere über große Entfernungen. Deswegen hat das Bundesamt für Geodäsie und Kartographie Deutschland in 4 Zonen (Nord-, Mittel- und Süddeutschland + DDR) eingeteilt und dafür jeweils eigene Ellipsoid-Dreh-, Verschiebe- und -vergrößerungsparameter bestimmt:
Code:
	//	 taken from http://www.crs-geo.eu/crseu/EN/Home/homepage__node.html?__nnn=true click on "national CRS" -> germany -> DE_DHDN / GK_3 -> DE_DHDN (North) to ETRS89
	//	 they are the same as http://www.geoclub.de/files/GK_nach_GPS.xls "Parametersatz 4 = Deutschland Nord" (rotation *-1)
	/** use this for nord Germany, maximum deviation sub meter, valid in the former BRD (west germany) in 52°20' N ... 55°00' N */
	private static final TransformParameters GK_NORD_GERMANY_TO_WGS84 = new TransformParameters(590.5, 69.5, 411.6, 0.796, 0.052, 3.601, 8.300, BESSEL);

	//	 taken from http://crs.bkg.bund.de/crs-eu/ click on "national CRS" -> germany -> DE_DHDN / GK_3 -> DE_DHDN (Middle) to ETRS89 (rotation *-1)
	/** use this for mid-Germany, maximum deviation sub meter, valid in the former BRD (west germany) in 50°20' N ... 52°20' N */
	private static final TransformParameters GK_MID_GERMANY_TO_WGS84 = new TransformParameters(584.8, 67.0, 400.3, -0.105, -0.013, 2.378, 10.290, BESSEL);

	//	 taken from http://crs.bkg.bund.de/crs-eu/ click on "national CRS" -> germany -> DE_DHDN / GK_3 -> DE_DHDN (South) to ETRS89 (rotation *-1)
	/** use this for south Germany, maximum deviation sub meter, valid in the former BRD (west germany) in 47°00' N ... 50°20' N */
	private static final TransformParameters GK_SOUTH_GERMANY_TO_WGS84 = new TransformParameters(597.1, 71.4, 412.1, -0.894, -0.068, 1.563, -7.580, BESSEL);

	private static Area FORMER_GDR = new Area(new CWPoint(54.923414, 10.503013), new CWPoint(50.402578, 14.520637)); 

	// taken from http://www.lverma.nrw.de/produkte/druckschriften/verwaltungsvorschriften/images/gps/TrafopsNRW.pdf for NRW this transform has deviations lower than 34cm.
	/** use this for NRW in Germany. Deviations less than 34 cm */
	private static final TransformParameters GK_NRW_GERMANY_TO_WGS84 = new TransformParameters(566.1, 116.3, 390.1, -1.11, -0.24, 3.76, -12.6, BESSEL);
	// taken from http://www.lverma.nrw.de/produkte/druckschriften/verwaltungsvorschriften/images/gps/TrafopsNRW.pdf for NRW this transform has deviations lower than 113cm.
	// these matches to  http://www.geoclub.de/files/GK_nach_GPS.xls "Parametersatz 3 = Deutschland 1995"
	/** Use this for Germany if there is no more specific available. Deviations less than 113 cm */
	private static final TransformParameters GK_GERMANY_1995_TO_WGS84 = new TransformParameters(582, 105, 414, -1.04, -0.35, +3.08, -8.3, BESSEL);
Manche Landesvermessungsämter haben für ihr Hoheitsgebiet nochmal welche bestimmt (z.B. NRW), die für diesen Bereich dann besonders genau sind.
Das Problem bei Verwendung unterschieldicher Parameter ist natürlich, dass man an den Grenzen Sprünge bekommt. Deswegen hat das BGK eine sehr großartige Lösung (NTv2) parat, die 1. die genauste ist, 2. keine Sprünge verursacht und 3. ganz einfach zu programmieren ist. Leider haben sie das Verfahren und die Daten erst veröffentlicht, nach dem ich die Umrechnung in Cachewolf schon programmiert hatte.
Die Lösung sieht ein gleichmäßiges Raster von Stützpunkten, die in ganz D verteilt sind vor, zwischen denen einfach interpoliert wird (siehe http://crs.bkg.bund.de/crseu/crs/descrtrans/BeTA/BETA2007dokumentationV13.pdf ). Die Umrechnungsparameter für die Stützpunkte werden vom BKG bereitgestellt (siehe http://crs.bkg.bund.de/crseu/crs/descrtrans/BeTA/BETA2007.gsa ).
Eine sehr gute Anlaufstelle ist das BKG und die von denen gepflegte Seite über alle europäischen Raumbezugssysteme: http://www.crs-geo.eu/nn_124226/crseu/EN/CRS__Description/crs-national__node.html?__nnn=true

Gruß,
Pfeffer.
 

olim

Geonewbie
Super, vielen Dank nochmal.
Ich schaue mir das an. Ich denke dass diese Lösung ausreichende Genauigkeit gewährleisten wird. Sieht sehr interessant und einfach implementierbar aus.
Ob ich dann aber mein anderes Transformationsskript überhaupt noch brauche ist fraglich.
 

pfeffer

Geowizard
Du brauchst es, wenn Du die Daten in Gauß-Krüger vorliegen hast, weiterhin. NTv2 macht nur den Datumsübergang von Potdam/Rautenberg-lat-lon zu ETRS89-lat-lon.

Gruß,
Pfeffer.
 

olim

Geonewbie
okay, und Potsdam/Rautenberg lat/lon bekomme ich indem ich Breiten- und Längengrad aus den Gauss-Krüger Koordinaten extrahiere und dann auf den Bessel Ellipsoiden projeziere?
 

pfeffer

Geowizard
genau, bzw. Breiten- und Längengrad gibt es nicht in Gauß-Krüger. Sie heißen dort "Rechts- und Hochwert", engl. "Easting, Northing" und sind nicht in Grad, sondern in Metern (vom Äquator bzw vom zentralen Meridian des jeweiligen Streifens [+500000]) angegeben.

Gruß,
Pfeffer.
 

olim

Geonewbie
okay, ich poste hier einfach mal den MATLAB code um Gauss Krüger in DHDN mittels Bessel Ellipsoid zu überführen. entspricht soweit dem ersten Teil der Tabelle gk_nach_gps.

Code:
% Transform Gauss-Krüger to DHDN

function [lat,lon]=gk2gps(hw,rw)

y0=floor(rw/10^6);
L0=y0*3; %determine "Meridianstreifen"
y=rw-(y0*10^6)-500000; %distance from Meridianstreifen

%construct Bessel Ellipsoid
a=6377397.155;
b=6356078.962;
e=(a^2-b^2)/a^2;

n=(a-b)/(a+b);
alpha=((a+b)/2)*(1+(1/4*n^2)+(1/64*n^4));
beta=(3/2*n)-(27/32*n^3)+(269/512*n^5);
gamma=(21/16*n^2)-(55/32*n^4);
delta=(151/96*n^3)-(417/128*n^5);
epsilon=1097/512*n^4;
%

B0=hw/alpha;
BF=B0+(beta*sin(2*B0))+(gamma*sin(4*B0))+(delta*sin(6*B0))+(epsilon*sin(8*B0));

NF=a/sqrt(1-(e*sin(BF)^2));
etaF=sqrt(a^2/b^2*e*cos(BF)^2);
tauF=tan(BF);

%help variables B17 B18 B23 B24
B17=tauF/2/NF^2*(-1-etaF^2)*y^2;
B18=tauF/24/NF^4*(5+(3*tauF^2+6*etaF^2-6*tauF^2*etaF^2-4*etaF^4-9*tauF^2*etaF^4))*y^4;
B23=1/NF/cos(BF)*y;
B24=1/6/NF^3/cos(BF)*(-1-2*tauF^2-etaF^2)*y^3;


%geographic latitude (DHDN)
lat=(BF+B17+B18)*180/pi;

%geographic longitude (DHDN)
lon=L0+(B23+B24)*180/pi;

Um dann weiterzukommen muss ich die passenden Punkte im Gitternetz finden. Wie allerdings meine Längen bzw. Breitengrad Werte in DHDN folgende von NTv2 gestellte Bedingung erfüllen können ist mir nicht klar geworden.

E_LONG <= qlon <= W_LONG
S_LAT <= qlat <= N_LAT

mit den Werten:
S_LAT 169200.000000
N_LAT 199080.000000
E_LONG -56400.000000
W_LONG -19800.000000

Was muss ich mit meinen lat/lon Koordinaten noch vorher machen?
 

pfeffer

Geowizard
ich glaube, in Sekunden umrechnen, also *3600.

Ich glaube, am Anfang der Datei ist die Einheit angegeben, und zwar als Sekunden.

Gruß,
Pfeffer.
 

olim

Geonewbie
ach, ich wusste es musste so etwas simples sein! :???:
wie dem auch sei, das Skript läuft jetzt prima.... deutschlandweit... und kann auch auf Nachfrage gern weitergegeben werden.

Vielen Dank nochmal!
 
Oben