Prototyp und Beschreibung der Funktion getrefsys()

(Funktion der freischaltpflichtigen Gruppe "Parameterermittlung")

 

getrefsys()
Ermittlung der Transformationsparameter für den Bezugssystemwechsel
zwischen den Quell- zum Ziel-Bezugssystemen.

Prototyp der DLL-Funktion in C++ Syntax (Kleinschreibung beachten!):
extern "C" __declspec(dllimport) unsigned long __stdcall getrefsys(
     unsigned short wRefSysQ,
     unsigned short wRefSysZ,
     unsigned short wCoordSysQ,
     unsigned short wCoordSysZ,
     char **pszRefSys,
     unsigned long lForBack);

Prototyp der DLL-Funktion in Visual Objects Syntax:
_DLL function getrefsys(;
     wRefSysQ as word,;                    // 2 Byte
     wRefSysZ as word,;                    // 2 Byte
     wCoordSysQ as word,;                  // 2 Byte
     wCoordSysZ as word,;                  // 2 Byte
     pszRefSys ref psz,;                   // 4 Byte, char**, 1200 alloc.
     lForBack as logic);                   // 4 Byte
as logic pascal:geodll32.getrefsys         // 4 Byte

Die Allokation von Speicher für "ref psz" / "char**" ist nur notwendig,
wenn zuvor setstringallocate(FALSE) aufgerufen worden ist.


Die Funktion gibt die zu den in den Parametern wRefSysQ und wRefSysZ
übergebenen Quell- und Zielbezugssystemen passenden Transformations-
parameter für den Bezugssystemwechsel als formatierten Text in der
Variablen pszRefSys zurück. Der Text wird in der zuvor mit der Funktion
setLanguage() gesetzten Sprache zurückgegeben.


Die Parameter werden folgendermaßen übergeben bzw. zurückgegeben:
wRefSysQ    Geodätisches Quell-Bezugssystem. Die verfügbaren Bezugssysteme
            sind in der Liste "Koordinatenbezugssysteme" aufgeführt.

wRefSysZ    Geodätisches Ziel-Bezugssystem in das Koordinaten von einem
            Quell-Bezugssystem transformiert werden sollen. Die
            verfügbaren Bezugssysteme sind in der Liste "Koordinaten- und
            Bezugssysteme" aufgeführt.

wCoordSysQ  Quell-Koordinatensystem. Es wird nur benötigt, wenn für das
            Quell- oder Zielbezugssystem die Kennungen 1100, 1150 oder
            1200 (Kein geodätischer Bezugssystemwechsel) eingetragen ist,
            um den verwendeten Standard-Ellipsoid anzuzeigen. Es wird
            außerdem benötigt, wenn für das Quell-Bezugssystem die Kennung
            0 (Standard-Bezugssystem) eingetragen ist, um das zum
            Koordinatensystem passende Standard-Bezugssystem anzuzeigen.
            Die verfügbaren Koordinatensysteme sind in der Liste
            "Koordinatenbezugssysteme" aufgeführt.

wCoordSysZ  Ziel-Koordinatensystem. Es wird nur benötigt, wenn für das
            Quell- oder Zielbezugssystem die Kennungen 1100, 1150 oder
            1200 (Kein geodätischer Bezugssystemwechsel) eingetragen ist,
            um den verwendeten Standard-Ellipsoid anzuzeigen. Es wird
            außerdem benötigt, wenn für das Ziel-Bezugssystem die Kennung
            0 (Standard-Bezugssystem) eingetragen ist, um das zum
            Koordinatensystem passende Standard-Bezugssystem anzuzeigen.
            Die verfügbaren Koordinatensysteme sind in der Liste
            "Koordinatenbezugssysteme" aufgeführt.

pszRefSys   Die Transformationsparameter werden formatiert und mit einer
(ref)       Beschreibung versehen in einem Text per Referenz zurückgegeben.
            Die Zeilen des Textes sind mit "Return und LineFeed"
            voneinander getrennt.
            Achtung: "ref pszRefSys" entspricht "char**" in C. Es müssen
            1200 Byte Speicher für den Null terminated string in
            Abhängigkeit vom Aufruf der Funktion setstringallocate()
            allokiert werden. Beachten Sie dazu die Hinweise in der
            Beschreibung der Funktion setstringallocate()".

lForBack    Flag für die Darstellungsart von Sieben-Helmert-Parametern.
            Eine Erläuterung zur Vorwärts- und Rückwärtstransformation
            finden Sie weiter unten.
TRUE:       Die sieben Parameter einer Helmert-Transformation werden
            jeweils für die Vorwärts-Transformation vom Quellsystem nach
            WGS84 und für die Rückwärts-Transformation von WGS84 zum
            Zielsystem separat dargestellt.
FALSE:      Die sieben Parameter einer Helmert-Transformation der
            Vorwärts-Transformation und der Rückwärts-Transformation sind
            addiert. Sie gelten direkt vom Quell- zum Zielsystem und werden
            gemeinsam dargestellt. Benutzerdefinierte Bezugssystemwechsel
            werden immer in dieser Form dargestellt.

returnWert  Im Fehlerfall gibt die Funktion FALSE zurück, sonst TRUE.


Bezugssystemwechsel mit Helmert-Transformationsparametern führt GeoDLL als
Vorwärts- und Rückwärts-Transformationen aus. Bei der vom Quellsystem
ausgehenden Vorwärts-Transformation werden zuerst die Rotationen und
danach die Translationen ausgeführt. Bei der zum Zielsystem führenden
Rückwärts-Transformation werden in umgekehrter Reihenfolge zuerst die
Translationen und dann die Rotationen berechnet. Vorwärts- und Rückwarts-
Transformationen werden jeweils über das aktuelle dynamische Bezugssystem
WGS84 ausgeführt. Nur benutzerdefinierte Bezugssystemwechsel bilden hier
eine Ausnahme. Sie werden immer direkt vom Quellsystem zum Zielsystem
berechnet.


Durch die Verwendung von Vorwärts- und Rückwärts-Transformationen in GeoDLL
kommt es bei der Hin- und Zurück-Berechnung von Koordinaten nicht zu den in
vielen GIS-Systemen auftretenden geringfügigen Abweichungen.

Mit eingeschaltetem Flag lForBack sieht der zurückgegebene formatierte
Text je nach den übergebenen Quell- und Ziel-Bezugssystemen z.B. so aus:

  Geodätische Bezugssysteme:
  DHDN/PD (DE Alte Länder Süd ‹±1m), Rauenberg, Bessel
     nach
  ETRS89 (EU), geozentrisch, GRS80

  Transformationsparameter:
  7 Parameter Helmert-Transformation (Bursa-Wolf)
  Coordinate Frame Rotation
  Vorwärts- und Rückwärtstransformation separat

  Vorwärtstransformation Quellsystem nach WGS84
  00597.046300 Verschiebung auf der X-Achse [Meter]
  00071.349100 Verschiebung auf der Y-Achse [Meter]
  00412.187300 Verschiebung auf der Z-Achse [Meter]
  -00.89181300 Rotation um die X-Achse [Sekunden]
  -00.05477000 Rotation um die Y-Achse [Sekunden]
  001.54161600 Rotation um die Z-Achse [Sekunden]
  0007.5733800 Maßstabsfaktor [ppm]

  Rückwärtstransformation WGS84 zum Zielsystem
  00000.053700 Verschiebung auf der X-Achse [Meter]
  00000.050900 Verschiebung auf der Y-Achse [Meter]
  -0000.087300 Verschiebung auf der Z-Achse [Meter]
  -00.00218700 Rotation um die X-Achse [Sekunden]
  -00.01323000 Rotation um die Y-Achse [Sekunden]
  000.02138400 Rotation um die Z-Achse [Sekunden]
  0000.0026200 Maßstabsfaktor [ppm]

Mit ausgeschaltetem Flag lForBack sieht der zurückgegebene formatierte
Text je nach den übergebenen Quell- und Ziel-Bezugssystemen z.B. so aus:

  Geodätische Bezugssysteme:
  DHDN/PD (DE Alte Länder Süd ‹±1m), Rauenberg, Bessel
     nach
  ETRS89 (EU), geozentrisch, GRS80

  Transformationsparameter:
  7 Parameter Helmert-Transformation (Bursa-Wolf)
  Coordinate Frame Rotation
  Vorwärts- und Rückwärtstransformation vereint

  Transformation vom Quellsystem zum Zielsystem
  00597.100000 Verschiebung auf der X-Achse [Meter]
  00071.400000 Verschiebung auf der Y-Achse [Meter]
  00412.100000 Verschiebung auf der Z-Achse [Meter]
  -00.89400000 Rotation um die X-Achse [Sekunden]
  -00.06800000 Rotation um die Y-Achse [Sekunden]
  001.56300000 Rotation um die Z-Achse [Sekunden]
  0007.5760000 Maßstabsfaktor [ppm]


Freischaltung:
Die Funktion ist Bestandteil der freischaltpflichtigen Funktionsgruppe
"Parameterermittlung". 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
keine Funktionsaufrufe möglich.