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