Prototyp und Beschreibung der Funktion setuserrefsys()

(Funktion der freischaltpflichtigen Gruppe "Benutzerdefinitionen")

 

setuserrefsys()
Konfiguration der Transformationsparameter für einen benutzerdefinierten
Bezugssystemwechsel zwischen zwei geodätischen Bezugssystemen.

Prototyp der DLL-Funktion in C++ Syntax (Kleinschreibung beachten!):
extern "C" __declspec(dllimport) unsigned long __stdcall setuserrefsys(
     unsigned short nRefSysTyp,
     double nTranslatX,
     double nTranslatY,
     double nTranslatZ,
     double nRotatX,
     double nRotatY,
     double nRotatZ,
     double nMeasure);

Prototyp der DLL-Funktion in Visual Objects Syntax:
_DLL function setuserrefsys(;
     nRefSysTyp as word,;                  // 2 Byte
     nTranslatX as real8,;                 // 8 Byte
     nTranslatY as real8,;                 // 8 Byte
     nTranslatZ as real8,;                 // 8 Byte
     nRotatX as real8,;                    // 8 Byte
     nRotatY as real8,;                    // 8 Byte
     nRotatZ as real8,;                    // 8 Byte
     nMeasure as real8);                   // 8 Byte
as logic pascal:geodll32.setuserrefsys     // 4 Byte


Die Funktion speichert die Transformationsparameter für einen
benutzerdefinierten Bezugssystemwechsel zwischen zwei geodätischen
Bezugssystemen. Es werden drei Verschiebungen und bei Bedarf drei
Drehwinkel und ein Maßstabsfaktor übergeben.

Berechnungsmethoden:
Es gibt drei verschiedene Varianten von Parameter Sätzen mit jeweils
sieben Parametern und eine Variante mit nur drei Parametern. Die Sieben
Parameter Sätze werden Helmert-Transformation oder auch Bursa-Wolf-
Transformation genannt. Sie sind durch drei lineare Verschiebungen
(dx, dy, dz), drei Winkelrotationen um die Achsen (rx, ry, rz) und einen
Skalierungsfaktor definiert. Der Drei Parameter Satz wird als Molodensky-
Transformation bezeichnet. Er ist nur durch drei lineare Verschiebungen
(dx, dy, dz) definiert.

Diese Varianten werden von GeoDLL unterstützt:
   "Coordinate Frame Rotation"
   "Position Vector Transformation"
   "European Standard ISO 19111"
   "Molodensky Transformation"

Coordinate Frame Rotation
Diese Variante der Helmert-Transformation wird von den Vermessungsbehörden
der Vereinigten Staaten, Australiens, Neuseelands und einiger anderer
Länder verwendet.
Die "Coordinate Frame Rotation" ist folgendermaßen definiert:
Blickrichtung vom Erdmittelpunkt in den Weltraum
dabei Drehrichtung positiv gegen den Uhrzeigersinn
Maßeinheit in Altsekunden

Position Vector Transformation
Diese Variante der Helmert-Transformation wird von den meisten
Europäischen Vermessungsbehörden verwendet. Die Variante wird in Europa
immer noch sehr häufig verwendet, wird aber in den nächsten Jahren durch
die Norm ISO 19111 ersetzt werden.
Der Transformationsalgorithmus basiert auf denselben drei
Translationsvektoren und der Maßstabskorrektur wie bei der "Coordinate
Frame Rotation", aber auf unterschiedlichen Definitionen der drei
Drehwinkel. Die Drehwinkel haben entgegengesetzte Vorzeichen, und es ist
einfach eine Methode in die andere umzuwandeln, indem man die Vorzeichen
der drei Drehwinkel ändert.
Die "Position Vector Transformation" ist folgendermaßen definiert:
Blickrichtung vom Weltraum zum Erdmittelpunkt
dabei Drehrichtung positiv im Uhrzeigersinn
Maßeinheit der Drehwinkel in Altsekunden

Europäischer Standard ISO 19111
Diese Variante der Helmert Transformation ist per ISO Richtlinie zum
Europäischen Standard erklärt worden. Die Variante unterscheidet sich von
der "Position Vector Transformation" nur durch die Angabe der drei
Drehwinkel in einer anderen Maßeinheit.
Die Variante "Europäischer Standard ISO 19111" ist folgendermaßen definiert:
Blickrichtung vom Weltraum zum Erdmittelpunkt
dabei Drehrichtung positiv im Uhrzeigersinn
Maßeinheit der Drehwinkel in µRad (Rad * 10^-6)

Molodensky Transformation
Die Berechnung der drei Translationen erfolgt aus den Mittelwerten der
Klaffungen.

Nutzung der Transformationsparameter:
In den Funktionen coordtrans?() werden die Transformationsparameter
genutzt, indem als Kennungen für die Quell- und Zielbezugssysteme
(nRefSysQ, nRefSysZ) die Zahl 1000 übergeben wird.

Es ist zu beachten, dass für einen benutzerdefinierten Bezugssystemwechsel
neben den Transformationsparametern auch die Halbachsen der Quell- und
Zielellipsoide benötigt werden. Das Einlesen der Halbachsen geschieht mit
den Funktionen setuserellsource() und setuserelltarget().


Die Parameter werden folgendermaßen übergeben:
nRefSysTyp (Variante des benutzerdefinierten Bezugssystems)
   Parameter-Variable
               Bezeichnung des Parameters

0              Benutzerdefiniertes Bezugssystem zurücksetzen
   nTranslatX  0.0 oder beliebiger Wert ohne Auswirkung
   nTranslatY  0.0 oder beliebiger Wert ohne Auswirkung
   nTranslatZ  0.0 oder beliebiger Wert ohne Auswirkung
   nRotatX     0.0 oder beliebiger Wert ohne Auswirkung
   nRotatY     0.0 oder beliebiger Wert ohne Auswirkung
   nRotatZ     0.0 oder beliebiger Wert ohne Auswirkung
   nMeasure    0.0 oder beliebiger Wert ohne Auswirkung

1              Benutzerdefiniertes Bezugssystem "Coordinate Frame
               Rotation" setzen
2              Benutzerdefiniertes Bezugssystem "Position Vector
               Transformation" setzen
3              Benutzerdefiniertes Bezugssystem "European Standard
               ISO 19111" setzen
4              Benutzerdefiniertes Bezugssystem "Molodensky Transformation"
               setzen
   nTranslatX  Verschiebung auf der X-Achse in Meter
               Wertebereich: -10000 bis 10000 Meter
   nTranslatY  Verschiebung auf der Y-Achse in Meter
               Wertebereich: -10000 bis 10000 Meter
   nTranslatZ  Verschiebung auf der Z-Achse in Meter
               Wertebereich: -10000 bis 10000 Meter
   nRotatX     Drehwinkel der X-Achse in Sekunden
               Wertebereich: -900 bis 900 Sekunden
               (-4500 bis 4500 µRad bei European Standard ISO 19111)
               (0 bei der Molodensky Transformation)
   nRotatY     Drehwinkel der Y-Achse in Sekunden
               Wertebereich: -900 bis 900 Sekunden
               (-4500 bis 4500 µRad bei European Standard ISO 19111)
               (0 bei der Molodensky Transformation)
   nRotatZ     Drehwinkel der Z-Achse in Sekunden
               Wertebereich: -900 bis 900 Sekunden
               (-4500 bis 4500 µRad bei European Standard ISO 19111)
               (0 bei der Molodensky Transformation)
   nMeasure    Maßstabsfaktor in ppm (parts per million).
               Wertebereich: -1000 bis 1000 ppm
               (0 bei der Molodensky Transformation)

returnWert     Bei erfolgreicher Speicherung der übergebenen
               Transformationsparameter gibt die Funktion TRUE zurück,
               sonst FALSE.


Freischaltung:
Die Funktion ist Bestandteil der freischaltpflichtigen Funktionsgruppe
"Benutzerdefinitionen". Sie wird zusammen mit den anderen Funktionen
der Gruppe durch die Eingabe der bei der Vertriebsfirma erworbenen
Freischaltparameter per Aufruf der Funktion setunlockcode() zur
uneingeschränkten Nutzung frei geschaltet. Ohne die Freischaltung sind nur
wenige Funktionsaufrufe zu Testzwecken (Sharewareprinzip) möglich.