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. |