Prototype and description of the function getrefsys()

(Function of the unlock requiring group "Parameter determination")

 

getrefsys()
Determination of the transformation parameters for the Reference System
Transition between the geodetic source and target Reference Systems.

Prototype of the DLL function in C++ syntax (attend lower case!):
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);

Prototype of the DLL function 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

The allocation of memory for "ref psz" / "char**" is necessary only if
setstringallocate(FALSE) is called before.


The function returns the transformation parameters for the Reference
System Transition fitting to the geodetic source and target reference
systems wRefSysQ and wRefSysZ as formatted text in the parameter pszRefSys.
The text is returned in the language set by the function setLanguage()
before.


The parameters are passed and/or returned as follows:
wRefSysQ    Geodetic source Reference System. The available reference
            systems are specified in the list "Coordinate and Reference
            systems".

wRefSysZ    Geodetic target Reference System to which coordinates of
            the source Reference System has to be transformed. The
            available Reference Systems are specified in the list
            "Coordinate Reference Systems".

wCoordSysQ  Source Coordinate System. It is needed only if for the source
            or target Reference Systems the identification 1100, 1150 or
            1200 (no Reference System Transition) is passed, in order to
            indicate the used standard ellipsoid. In addition it is needed,
            if for the source Reference System the identification 0
            (standard Reference System) is passed, in order to indicate the
            standard Reference System that is fitting the coordinate
            system. The available Coordinate Systems are specified in the
            list "Coordinate Reference Systems".

wCoordSysZ  Target Coordinate System. It is needed only if for the source
            or target Reference Systems the identification 1100, 1150 or
            1200 (no Reference System Transition) is passed, in order to
            indicate the used standard ellipsoid. In addition it is needed,
            if for the target Reference System the identification 0
            (standard Reference System) is passed, in order to indicate the
            standard Reference System that is fitting the coordinate
            system. The available Coordinate Systems are specified in the
            list "Coordinate Reference Systems".

pszRefSys   The transformation parameters will be provided together with
(ref)       their descriptions in a formatted text and returned by
            reference. The lines of the text are separated with "Return
            and Linefeed".
            Note: "ref pszRefSys" corresponds to "char**" in C. 1200 bytes
            of memory for the zero terminated string must be allocated with
            dependence to the call of the function setstringallocate().
            Please consider the notes in the description of the function
            setstringallocate().

lForBack    Flag for the representation of Seven Helmert parameters.
            An explanation of the Forward and Backward Transformation can
            be found below.
TRUE:       The seven parameters of the Helmert transformation are each
            presented separately for the Forward Transformation from the
            source system to WGS84 and for the Backward Transformation from
            WGS84 to the target system.
FALSE:      The seven parameters of the Helmert transformation are added
            from the parts Forward Transformation and Backward
            Transformation. They are valid directly from the source to the
            target system and are presented together. User defined
            Reference System Transitions are always shown in this format.

returnVal   In case of an error the function returns FALSE, otherwise TRUE.


GeoDLL calculates Reference System Transitions with Helmert transformation
parameters as Forward and Backward Transformations. With a Forward
Transformation, starting from the source system, first the rotations and
then the translations are performed. With a Backward Transformation,
leading to the target system, in reverse order first the translations and
then the rotations are calculated. Forward and Backward Transformations are
executed each across the current dynamic Reference System WGS84. Only user
defined Reference System Transitions are an exception. They are always
calculated directly from the source to the target system.


Calculating bidirectional coordinate transformations with Forward and
Backward Transformations like in GeoDLL does not lead in minor deviations,
that occur in many GIS.

With "on" switched flag lForBack the returned text looks dependently of
the geodetic source and target Reference Systems e.g. like this:

  Geodetic Reference Systems:
  DHDN/PD (DE Old States South ‹±1m), Rauenberg, Bessel
     to
  ETRS89 (EU), geocentric, GRS80

  Transformation parameters:
  7 Parameter Helmert Transformation (Bursa-Wolf)
  Coordinate Frame Rotation
  Forward and Backward Transformation separate

  Forward Transformation source system to WGS84
  00597.046300 Translation vector for X-axis [meter]
  00071.349100 Translation vector for Y-axis [meter]
  00412.187300 Translation vector for Z-axis [meter]
  -00.89181300 Rotation around the X-axis [seconds]
  -00.05477000 Rotation around the Y-axis [seconds]
  001.54161600 Rotation around the Z-axis [seconds]
  0007.5733800 Scale correction factor [ppm]

  Backward Transformation WGS84 to target system
  00000.053700 Translation vector for X-axis [meter]
  00000.050900 Translation vector for Y-axis [meter]
  -0000.087300 Translation vector for Z-axis [meter]
  -00.00218700 Rotation around the X-axis [seconds]
  -00.01323000 Rotation around the Y-axis [seconds]
  000.02138400 Rotation around the Z-axis [seconds]
  0000.0026200 Scale correction factor [ppm]

With "off" switched flag lForBack the returned text looks dependently of
the geodetic source and target Reference Systems e.g. like this:

  Geodetic Reference Systems:
  DHDN/PD (DE Old States South ‹±1m), Rauenberg, Bessel
     to
  ETRS89 (EU), geocentric, GRS80

  Transformation parameters:
  7 Parameter Helmert Transformation (Bursa-Wolf)
  Coordinate Frame Rotation
  Forward and Backward Transformation united

  Transformation source system to target system
  00597.100000 Translation vector for X-axis [meter]
  00071.400000 Translation vector for Y-axis [meter]
  00412.100000 Translation vector for Z-axis [meter]
  -00.89400000 Rotation around the X-axis [seconds]
  -00.06800000 Rotation around the Y-axis [seconds]
  001.56300000 Rotation around the Z-axis [seconds]
  0007.5760000 Scale correction factor [ppm]

For NTv2 reference systems the returned text looks dependently of the
geodetic source and target Reference Systems e.g. like this:

  Geodetic Reference Systems:
  ETRS89 (DE-BY 2019 NTv2 BY_KanU_OFr ‹±2cm), geoc., GRS80
     to
  DHDN90 (DE-BY 2019 NTv2 BY_KanU_OFr ‹±2cm), Rauenb., Bessel

  Transformation:
  Grid based Reference System with NTv2 grid file
  is just initialized with the NTv2 grid file
  c:\programm_ntv2\deutschland\Bayern\kanu_ntv2_oberfranken.gsb

  The NTv2 grid file should have the following file name:
  kanu_ntv2_oberfranken.gsb  (.gsa)
     or
  by-kanu_oberfranken.gsb  (.gsa)
     or
  kanu_ntv2_oberfranken_ks.gsb  (.gsa)


Unlocking:
This function is a component of the unlock requiring function group
"parameter determination". It is unlocked for unrestricted use together with
the other functions of the group by passing the unlock parameters, acquired
from the software distribution company, trough the function setunlockcode().
Without unlocking no function calls are possible.