AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Koordinatentransformation GaussKrueger->Laengen/Breitengrad
Thema durchsuchen
Ansicht
Themen-Optionen

Koordinatentransformation GaussKrueger->Laengen/Breitengrad

Ein Thema von brechi · begonnen am 23. Sep 2008 · letzter Beitrag vom 24. Sep 2008
Antwort Antwort
brechi

Registriert seit: 30. Jan 2004
823 Beiträge
 
#1

Koordinatentransformation GaussKrueger->Laengen/Breitengr

  Alt 23. Sep 2008, 15:47
Hallo,
ich versuch seit einiger Zeit GaussKrueger Koordinaten in andere Formate umzuwandeln (bzw. Umwandling kartesisch, geografisch etc.)

Als Codegrundlage verwende ich die Diplomarbeit von http://home.arcor.de/ernst_werner/diplom/d3.pdf
Zum Vergleich auf Richtigkeit nehme ich dabei die Umgewandelten Koodinaten von MapInfo.

Schon bei der Umwandlung von GaussKrueger in Geografische Koordinaten (Längen/Breitengrade) kommt es zu leichten Abweichungen, im Gegensatz zu dem was mir MapInfo umrechnet. Bei Rückumwandlung dieser in GK hab ich dann Abweichugnen von ca. 400Metern (was natürlich viel zu viel ist).

Der Code:

Delphi-Quellcode:
procedure GkToEll(X, Y, a, e: Extended; var fi, lambda: Extended);
var
  f, n, Grd, sigma, Bf, Nf, Mf, tf, b1, b2, b3, b4, b5, {b6, }est, eta: Extended;

  e2: Extended;
begin
  e2 := e*e;
  est := Sqrt(e2 / (1 - e2));

  f := 1 - Sqrt(1 - (e2));
  n := f / (2-f);
  Grd := (a / (1 + n)) * (1 + 1/4 * Power(n,2) + (1 / 64) * Power(n,4));
  sigma := x / Grd;

  Bf := sigma + (3 / 2) * (n - (9 / 16) * Power(n,3)) * Sin(2 * sigma) + (21 / 16) * Power(n,2) * Sin(4 * sigma) + (151 / 96) * Power(n,3) * Sin(6 * sigma);

  Nf := a / Sqrt(1 - e2 * Power(Sin(Bf),2));
  Mf := Power((a * (1 - e2)) / (1 - e2 * Power(Sin(Bf),2)), (3 / 2));
  tf := Tan(Bf);
  eta := est * Cos(Bf);

  b1 := 1 / (Nf * Cos(Bf));
  b2 := -tf / (2 * Mf * Nf);

  b3 := -(1 + 2 * Power(tf,2) + Power(eta,2)) / (6 * Power(nf,3) * Cos(Bf));

  b4 := (tf / (24 * Mf * Power(nf,3))) * (5 + 3 * Power(tf,2) + Power(eta,2) - 9 * Power(eta,2) * Power(tf,2) - 4 * Power(eta,4));

  b5 := (1 / (120 * Power(nf,5) * Cos(Bf))) * (28 * Power(tf,2) + 24 * Power(tf,4) + 6 * Power(eta,2) + 8 * Power(eta,2) * Power(tf,2));

  fi := Bf + b2 * Power(y,2) + b4 * Power(y,4) {+ b6 * Power(y,6)};
  lambda := b1 * y + b3 * Power(y,3) + b5 * Power(y,5);
end;

var
  Hochwert, Rechtswert: Extended;
  X, Y: Extended;
  bg, lg, hg: Extended;
  L: Integer;

  a, b: Extended;
  linEx, numEx1, numEx2: Extended;

  fi, lambda: Extended;
  alpha, gamma, beta, delta, epsilon, zeta: Extended;
begin
  // GaussKrueger DHDN (Bessel)
  Rechtswert := 3563200.64; // 9.95134518... Bessel laut MapInfo
  Hochwert := 5924051.07; // 53.44584275... Bessel laut MapInfo
  L := 9; // 9° = GK3

  a := 6377397.155; // Bessel Halbachse groß
  b := 6356078.96282; // Bessel Halbachse klein

  linEx := sqrt(a * a - b * b);
  numEx1 := linEx / a;
  numEx2 := linEx / b;

  Y := Rechtswert - 500000 - L * 1000000 / 3;
  X := Hochwert;

  GkToEll(X, Y, a, numEx1, fi, lambda);

  Writeln(Format('Breitengrad: %12.5f, Laengengrad: %12.5f',[lambda * 180 / pi + L, fi * 180 / pi]));

  // Ausgabe: 9.95132 / 53.44965
end.
Ich finde den verdammten Fehler nicht. Andere Umwandlungen verwenden für GaussKrüger immer zu viele Konstanten. Im Grunde sollten aber die Halbachsen + Offset usw. reichen. Dann kann ich die z.b. für WGS84 und mit der 7-Parametertransformation später leicht austauschen und somit alle denkbaren Umwandlungen vornehmen.
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#2

Re: Koordinatentransformation GaussKrueger->Laengen/Breit

  Alt 23. Sep 2008, 19:13
Da gibts doch was bei DT under Tipps und Tricks

Edit:
Ah, hier[url=http://www.delphi-treff.de/tipps/mathematik/wiki/Geographische%20in%20Gauß-Krüger-Koordinaten%20umrechnen/]. Ich brauchte das (aber nur das) auch schonmal und ich konnte mich grad nicht erinnern, mich näher mit der Mathematik beschäftigt zu haben
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
brechi

Registriert seit: 30. Jan 2004
823 Beiträge
 
#3

Re: Koordinatentransformation GaussKrueger->Laengen/Breit

  Alt 24. Sep 2008, 08:28
Danke den Source kenne ich, sind mir aber zu viele Konstanten drin. Und irgendwie stimmen da auch die Variablen nicht überein (wird anders berechnet) Sonst würde ich schon schauen in welchem Teil der Fehler ist.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:15 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz