Prototyp und Beschreibung der Funktion getepsg2geodll()

(Funktion der freischaltpflichtigen Gruppe "Parameterermittlung")

 

getepsg2geodll()
Ermittlung der zu einem EPSG-Code äquivalenten GeoDLL-Codes.

Prototyp der DLL-Funktion in C++ Syntax (Kleinschreibung beachten!):
extern "C" __declspec(dllimport) unsigned long __stdcall getepsg2geodll(
    unsigned short nEpsg,
    unsigned short *nCoordSys,
    unsigned short *nRefSys,
    unsigned short *nStrip,
    unsigned long *lNoStrip,
    unsigned long *l3D,
    unsigned short *nUnit,
    char **pszConti,
    char **pszCountry);

Prototyp der DLL-Funktion in Visual Objects Syntax:
_DLL function getepsg2geodll(;
     nEpsg as word,;                       // 2 Byte
     nCoordSys ref word,;                  // 4 Byte
     nRefSys ref word,;                    // 4 Byte
     nStrip ref word,;                     // 4 Byte
     lNoStrip ref logic,;                  // 4 Byte
     l3D ref logic,;                       // 4 Byte
     nUnit ref word,;                      // 4 Byte
     pszConti ref psz,;                    // 4 Byte, char**, 3 alloc.
     pszCountry ref psz);                  // 4 Byte, char**, 6 alloc.
as logic pascal:geodll32.getepsg2geodll    // 4 Byte

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


Die Funktion ermittelt zu einem als EPSG-Code übergebenen Koordinaten-
bezugssystem die dazu äquivalenten GeoDLL-Codes für das Koordinatensystem,
das Bezugssystem und für die verwendete Maßeinheit. Zusätzlich werden für
das EPSG-Koordinatenbezugssystem die Meridianstreifennummer und ein Flag
für deren Verwendung, sowie ein Flag für die Projektionsart 2D oder 3D
zurückgegeben. Zum Zweck der räumlichen Zuordnung des EPSG-Koordinaten-
bezugssystems werden Kennungen für den Kontinent und für das Land ermittelt.
Die ermittelten GeoDLL-Codes und Eigenschaften können direkt an andere
GeoDLL-Funktionen, wie z.B. coordtrans(), als Parameter übergeben werden.

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.

Die Funktion getepsg2geodll() ermittelt die äquivalent zu einem EPSG-
Koordinatenbezugssystem passenden Nummern des GeoDLL-Koordinatensystems
und des GeoDLL-Bezugssystems. Es wird ausdrücklich darauf hingewiesen,
dass von GeoDLL nicht immer genau dieselben Parameter für die Koordinaten-
transformation 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 Vermessungs-
verwaltungen 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 Parametersä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 Koordinatensysteme und Bezugssysteme bei der Programmierung
mit GeoDLL vereinfachen.

Funktionen mit EPSG-Codierung:
coordtransepsg()   Koordinatentransformation mit EPSG-Codes
getepsg2geodll()   Diese Funktion
getepsgcrsname()   Ermittlung der Bezeichnung eines EPSG-CRS


Die Parameter werden folgendermaßen übergeben bzw. zurückgegeben:
nEpsg       Kennung des EPSG-Koordinatenbezugssystems für das die GeoDLL-
            Kennungen ermittelt werden sollen.

nCoordSys   Referenz auf die die GeoDLL-Kennung für das äquivalente
(ref)       Koordinatensystem.

nRefSys     Referenz auf die die GeoDLL-Kennung für das äquivalente
(ref)       Bezugssystem.

nStrip      Referenz auf die GeoDLL-äquivalente Meridianstreifennummer
(ref)       bei Meridianstreifensystemen.

lNoStrip    Referenz auf ein Flag für die Unterdrückung der Meridian-
(ref)       streifennummer im Ostwert. Dieser Parameter kann nur dann TRUE
            sein, wenn in nCoordSys ein "Transversales Mercator Streifen-
            system" eingetragen ist.
TRUE (1)    Ostwerte werden ohne führende Meridianstreifennummer berechnet.
FALSE (0)   Ostwerte werden mit führender Meridianstreifennummer berechnet.

l3D         Referenz auf ein Flag für die Darstellung der Koordinaten
(ref)       mit der dritten Koordinatenkomponente "Ellipsoidische Höhe".
TRUE (1)    Koordinaten werden mit dritter Koordinatenkomponente berechnet.
FALSE (0)   Koordinaten werden ohne dritte Koordinatenkomponente berechnet.

nUnit       Referenz auf die GeoDLL-Kennung für die Maßeinheit, die für die
(ref)       Koordinaten verwendet wird.
            00 = Ohne Auswirkung
            01 = Internationales Meter
            02 = Legales Meter
            03 = Internationales Fuß
            04 = US Survey Fuß
            05 = Britisches Fuß
            06 = Indisches Fuß
            07 = Preußisches Fuß
            08 = Internationales Yard
            09 = US Survey Yard
            10 = Britisches Yard
            11 = Indisches Yard
            12 = Kilometer
            13 = Seemeile
            14 = Landmeile

pszConti    Referenz auf die alphanumerische Kennung für den Kontinent.
(ref)       EU = Europäischer Kontinent
            NA = Nordamerikanischer Kontinent
            MA = Mittelamerika und Karibik
            SA = Südamerikanischer Kontinent
            AS = Asiatischer Kontinent
            NO = Naher und Mittlerer Osten
            AF = Afrikanischer Kontinent
            AA = Australischer Kontinent
            PI = Polynesien, Indonesien, Mikronesien
            WW = Weltweite Systeme
            Achtung: "ref pszConti" entspricht "char**" in C. Es müssen
            3 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()".

pszCountry  Referenz auf die alphanumerische Kennung für das Land.
(ref)       Die zweistelligen alphanumerischen Kennungen in Großschreibung
            entsprechen dem "ISO 3166-1 alpha-2"-Code.
            URL: http://en.wikipedia.org/wiki/ISO_two-letter_country_codes
            Sonderkennungen:
            #I = Internationale Koordinatenbezugssysteme (kontinentweit)
            #M = Multinationale Koordinatenbezugssysteme (kontinentweit)
            #G = Google/OSM Welt/Pixel/Kachel-Koordinaten (weltweit)
            #W = GPS Messungen - ITRS-Epochen (kontinentweit oder weltweit)
            Die zweistelligen Länderkennungen können zusätzlich durch eine
            mit Bindestrich abgesetzte Regionskennung erweitert sein. Das wird
            beispielsweise bei den einzelnen Staaten der USA angewendet.
            Beispiele:
            DE    = Deutschland
            US-AL = USA Alabama
            Achtung: "ref pszCountry" entspricht "char**" in C. Es müssen
            6 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()".

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


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 nur
wenige Funktionsaufrufe zu Testzwecken (Sharewareprinzip) möglich.