Prototyp und Beschreibung der Funktion coordtransepsg()

(Funktion der freischaltpflichtigen Gruppe "Koordinatentransformationen")

 

coordtransepsg()
Koordinatentransformation und Bezugssystemwechsel mit EPSG-Codes der
Koordinatenbezugssysteme.

Prototyp der DLL-Funktion in C++ Syntax (Kleinschreibung beachten!):
extern "C" __declspec(dllimport) unsigned long __stdcall coordtransepsg(
     double nCoordXQ,
     double nCoordYQ,
     double nEllHgtQ,
     unsigned short nEpsgQ,
     double *nCoordXZ,
     double *nCoordYZ,
     double *nEllHgtZ,
     unsigned short nEpsgZ);

Prototyp der DLL-Funktion in Visual Objects Syntax:
_DLL function coordtransepsg(;
     nCoordXQ as real8,;                   // 8 Byte
     nCoordYQ as real8,;                   // 8 Byte
     nEllHgtQ as real8,;                   // 8 Byte
     nEpsgQ as word,;                      // 2 Byte
     nCoordXZ ref real8,;                  // 4 Byte
     nCoordYZ ref real8,;                  // 4 Byte
     nEllHgtZ ref real8,;                  // 4 Byte
     nEpsgZ as word);                      // 2 Byte
as logic pascal:geodll32.coordtransepsg    // 4 Byte


Die Funktion rechnet die numerischen Quellkoordinaten nCoordXQ und nCoordYQ
aus dem EPSG-Quell-Koordinatenbezugssystem nEpsgQ in die numerischen
Zielkoordinaten nCoordXZ und nCoordYZ des EPSG-Ziel-Koordinatenbezugssystems
nEpsgZ um. Für Quell- und Zielkoordinaten werden jeweils zwei numerische
Parameter übergeben. Die Transformation wird mit hoher Genauigkeit und
großer Geschwindigkeit durchgeführt.

Wenn eines der EPSG-Koordinatenbezugssysteme ein 3D-System ist, wird die
ellipsoidische Höhe nEllHgtQ des für das Quellsystem verwendeten Ellipsoiden
verwendet. Als Ergebnis wird die ellipsoidische Höhe nEllHgtZ des im
Zielsystem verwendeten Ellipsoiden zurückgegeben. Die Berechnungen sind auch
mit kartesischen Koordinaten möglich.

Anhand der EPSG-Codes werden alle Einstellungen zu den Koordinatensystemen
und Bezugssystemen der äquivalenten EPSG-Koordinatenbezugssysteme
vorgenommen. Außerdem werden, falls notwendig, die Meridianstreifennummern
und die Projektionsart 2D oder 3D eingestellt.

EPSG ist die Abkürzung für "European Petroleum Survey Group Geodesy". Das
ist eine Arbeitsgruppe der europäischen Öl- und Gaserkundungsunternehmen.
Die EPSG und deren Nachfolger OGP "International Association of Oil and Gas
Producers" haben es sich zur Aufgabe gemacht, ein Systems mit weltweit
eindeutigen Schlüsselnummern (EPSG-Codes) geodätischer Daten wie
Koordinatenbezugssysteme, Referenzellipsoide oder Kartenprojektionen
aufzubauen.

Für die meisten EPSG-Codes können neben dem voreingestellten Koordinatensystem
verschiedene Bezugssysteme verwendet werden. In GeoDLL ist aber nur ein
einziges Bezugssystem voreingestellt. Um festzustellen welche Koordinaten-
und Bezugssysteme und anderen Parameter in GeoDLL für einen bestimmten
EPSG-Code voreingestellt sind, können Sie die Funktion getepsg2geodll()
(siehe unten) verwenden. Falls Sie von den voreingestellten Parametern
abweichen möchten, nutzen Sie bitte nicht coordtransepsg(), sondern eine der
anderen coordtrans??()-Funktionen. Vorzugsweise ist die Funktion
coordtrans3dex() zu verwenden, da sie alle zu einem EPSG-Code passenden
Parameter verarbeiten kann. Die in GeoDLL zu den EPSG-Codes voreingestellten
Koordinaten- und Bezugssysteme und anderen Parameter sind mit Ihren GeoDLL-
Nummern in der "Liste der unterstützten EPSG-Codes" im Benutzerhandbuch und
im online-Handbuch (http://www.killetsoft.de/h_geodll_d/handbuch_d.htm)
aufgeführt.

Einige EPSG-Codes verwenden Referenzsysteme mit Datumsübergängen per NTv2-
oder HARN-Dateien. Dies ist bei Verwendung der Funktion coordtransepsg()
nicht immer auf den ersten Blick ersichtlich. Daher sollte Folgendes
beachtet werden:
1. NTv2- oder HARN-Datumswechsel funktionieren nur im Wirkungsbereich der
   NTv2- oder HARN-Datei. In der Regel ist das beispielsweise nur ein
   Land / Staat, ein US-Bundesstaat oder ein deutsches Bundesland.
2. Beide Bezugssysteme müssen vom gleichen Typ sein:
   Helmert / Molodenski --› Helmert / Molodenski.
   NTv2 / HARN --› NTv2 / HARN (mit derselben NTv2- oder HARN-Datei).

Es wird ausdrücklich darauf hingewiesen, dass von GeoDLL nicht immer genau
dieselben Parameter für die Koordinatentransformation und für den
Bezugssystemwechsel verwendet werden, wie sie in der EPSG-Datenbank
vorhanden sind. Der Grund dafür ist, dass manche EPSG-Parametersätze nicht
den Qualitätsansprüchen von KilletSoft genügen. GeoDLL verwendet meist
Parametersätze, die von den jeweiligen Vermessungsverwaltungen
veröffentlicht oder KilletSoft aus erster Hand zur Verfügung gestellt oder
dort eingekauft worden sind. KilletSoft hat im Laufe der Jahre eine eigene
qualitativ hochwertige Datensammlung mit exakten geodätischen Parameter-
sätzen angelegt. Da die EPSG-Kodierung in vielen GIS verwendet wird und
dadurch einen hohen Bekanntheitsgrad erhalten hat, stellen wir einige
Funktionen zur Verfügung, welche die Auswahl der benötigten Koordinaten-
systeme und Bezugssysteme bei der Programmierung mit GeoDLL vereinfachen.

Funktionen mit EPSG-Codierung:
coordtransepsg()   Diese Funktion
getepsg2geodll()   Ermittlung der zu einem EPSG-Code gehörenden
                   voreingestellten GeoDLL-Nummern
getepsgcrsname()   Ermittlung der Bezeichnung eines EPSG-CRS


Die Parameter werden folgendermaßen übergeben bzw. zurückgegeben:
nCoordXQ    Längen-, Ost- oder X-Komponente der numerischen
            Quellkoordinate.
            Das Eingabeformat der Koordinate (Notation) ist im Datenblatt
            des EPSG-Koordinatenbezugssystems (siehe EPSG-Datenbank)
            beschrieben.

nCoordYQ    Breiten-, Nord- oder Y-Komponente der numerischen
            Quellkoordinate.
            Das Eingabeformat der Koordinate (Notation) ist im Datenblatt
            des EPSG-Koordinatenbezugssystems (siehe EPSG-Datenbank)
            beschrieben.

nEllHgtQ    Ellipsoidische Höhe der Quellkoordinate
              oder
            Z-Komponente bei kartesischen Koordinaten.
            Wenn es sich bei dem EPSG-Koordinatenbezugssystem um ein
            3D-System handelt, wird die ellipsoidische Höhe der
            Quellkoordinate berücksichtigt.

nEpsgQ      EPSG-Code für das Quell-Koordinatenbezugssystem.
            Alle Parameter sind im Datenblatt des EPSG-Koordinatenbezugs-
            systems (siehe EPSG-Datenbank) beschrieben.

nCoordXZ    Längen-, Ost- oder X-Komponente der numerischen
(ref)       Zielkoordinate.
            Das Rückgabeformat der Koordinate (Notation) ist im Datenblatt
            des EPSG-Koordinatenbezugssystems (siehe EPSG-Datenbank)
            beschrieben.

nCoordYZ    Breiten-, Nord- oder Y-Komponente der numerischen
(ref)       Zielkoordinate.
            Das Rückgabeformat der Koordinate (Notation) ist im Datenblatt
            des EPSG-Koordinatenbezugssystems (siehe EPSG-Datenbank)
            beschrieben.

nEllHgtQ    Ellipsoidische Höhe der Zielkoordinate.
(ref)         oder
            Z-Komponente bei kartesischen Koordinaten.
            Wenn es sich bei dem EPSG-Koordinatenbezugssystem um ein
            3D-System handelt, wird die ellipsoidische Höhe der
            Zielkoordinate berechnet.

nEpsgZ      EPSG-Code für das Ziel-Koordinatenbezugssystem.
            Alle Parameter sind im Datenblatt des EPSG-Koordinatenbezugs-
            systems (siehe EPSG-Datenbank) beschrieben.

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


Gültigkeitsbereiche
Die Bereichsgrenzen der Quellkoordinaten und der errechneten
Zielkoordinaten werden anhand der standardmäßig voreingestellten Werte
überprüft. Die Syntax- und Bereichüberprüfung kann mithilfe der Funktion
setCoordArea() ein- oder ausgeschaltet werden.


Besonderheiten bei der Verwendung von NTv2-Gitterdateien
Download von NTv2-Dateien:
Die gebräuchlichen NTv2-Dateien können von der KilletSoft-
Internetseite herunter geladen oder bei Anbietern von Geodiensten bezogen
werden.

Verschlüsselte NTv2-Dateien:
Zum Schutz von Rechten einiger Autoren, die NTv2-Dateien speziell für
die Nutzung mit KilletSoft-Produkten zur Verfügung stellen, unterstützt
GeoDLL verschlüsselte NTv2-Dateien, die von der KilletSoft-Internetseite
herunter geladen werden können.

Polygonale Gültigkeitsbereiche:
Der Gültigkeitsbereich einer NTv2-Datei ist standardmäßig durch
viereckige Koordinatenfenster festgelegt. Um trotzdem polygonale
Strukturen, wie z.B. Landesgrenzen zu realisieren, kann der Hersteller
in seiner NTv2-Datei einen polygonalen Gültigkeitsbereich festlegen. Dazu
werden die außerhalb der polygonalen Gültigkeit liegenden Gittermaschen
durch die exopolygonalen Einträge -99/-99 in ihren Shift- oder
Genauigkeitswerten gekennzeichnet. GeoDLL kann die Gittermaschen auf
exopolygonale Einträge prüfen und bei Treffern von der Berechnung
ausschließen und mit einer Fehlermeldung kommentieren. Die Überprüfung wird
mit der Funktion setntvpolyvalid() ein- oder ausgeschaltet. Detaillierte
Informationen finden Sie im Hilfe-Kapitel "Polygonale Gültigkeitsbereiche".

Weitere Hinweise entnehmen Sie bitte der Beschreibung der Funktionen
coordtrans und coordtrans3d().


Freischaltung
Die Funktion ist Bestandteil der freischaltpflichtigen Funktionsgruppe
"Koordinatentransformationen". 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.

Bezugssystemwechsel mit NTv2-Gitterdateien erfordern zusätzlich die
Freischaltung der Funktionsgruppe "NTv2-Transformationen".