Prototyp und Beschreibung der Funktion convntvbin2polyvalid() (Funktion der freischaltpflichtigen Gruppe "NTv2-Werkzeuge") |
convntvbin2polyvalid() NTv2-Binärdatei mit polygonalen Gültigkeitsbereichen ergänzen. Prototyp der DLL-Funktion in C++ Syntax (Kleinschreibung beachten!): extern "C" __declspec(dllimport) unsigned long __stdcall convntvbin2polyvalid( const char *pszFileBinary, const char *pszFilePolyValid, const char *pszFileShape, unsigned short nTyp); Prototyp der DLL-Funktion in Visual Objects Syntax: _DLL function convntvbin2polyvalid(; pszFileBinary as psz,; // 4 Byte, char* pszFilePolyValid as psz,; // 4 Byte, char* pszFileShape as psz,; // 4 Byte, char* nTyp as word) // 2 Byte as logic pascal:geodll32.convntvbin2polyvalid // 4 Byte Die Funktion kopiert eine NTv2-Binärdatei unter Berücksichtigung des Polygonalen Gültigkeitsbereichs in eine neue NTv2-Binärdatei. Mit Hilfe von NTv2-Gitterdateien ist es möglich, Punkte von einem Koordinaten- bezugssystem in ein anderes mit sehr hoher Genauigkeit zu transformieren. Eine NTv2-Datei enthält ein oder mehrere viereckige Koordinatengitter, die in den NTv2-Headern definiert sind. Anstelle eines viereckigen Bereichs soll und darf aber nur ein darin enthaltener polygonaler Bereich abgedeckt sein, z.B. ein Staatsgebiet innerhalb der Landesgrenzen. Die Funktion convntvbin2polyvalid() realisiert den Polygonalen Gültigkeits- bereich in NTv2-Dateien. Koordinaten außerhalb des Gültigkeitsbereich können dann mit den KilletSoft-Produkten TRANSDAT und GeoDLL und vieler GIS-Software von Herstellern, die Polygonale Gültigkeitsbereiche unterstützen, von den Berechnungen ausgeschlossen oder durch einen Warnhinweis quittiert werden. Der Polygonale Gültigkeitsbereich wird dabei mit einer Shape-Datei realisiert, die die Umrisse des Gültigkeitsbereichs als Polygone enthält. Das kann zum Beispiel der Grenzumriss eines Landes für die Polygonalen Gültigkeitsbereiche der in dem Land verwendeten NTv2-Datei sein. Die in der Shape-Datei enthaltenen Polygone müssen als Geographische Koordinaten in dezimaler Notation vorliegen. Das Bezugssystem der Umriss-Koordinaten sollte möglichst genau dem Quellbezugssystem der NTv2-Datei entsprechen. Eine in einem anderen Koordinatenbezugssystem vorliegende Shape-Datei kann mit dem Programm TRANSDAT von KilletSoft in eine neue Shape-Datei mit dem benötigten System umgerechnet werden. Die normalerweise zu einer Shape-Datei gehörenden dBase- und Index-Dateien werden nicht benötigt. Es genügt die Objekt-Datei mit den Polygonen, die den Dateityp ".shp" im Dateinamen hat. Der Inhalt der Shape-Datei kann aus einem einzelnen Polygon oder aus mehreren Polygonen bestehen. Diese dürfen jeweils mit oder ohne Sub-Polygone in der Shape-Datei vorkommen. Das ist der Fall, wenn zum Beispiel eine Landesgrenze mit den zum Land gehörenden Inseln dargestellt werden soll. Ein weiterer Fall wären die Polygone von untergeordneten administrativen Einheiten, wie zum Beispiel Bundesländer, aus denen ein Land zusammen gesetzt ist. Maßgeblich sind nur die Außengrenzen des gesamten Objekts. Die Shape-Datei kann den Umriss des benötigten Gebiets in folgenden Polygon-Zusammenstellungen enthalten: Einzelne Shape-Figur mit einem einzelnen Polygon Einzelne Shape-Figur mit mehreren Sub-Polygonen Mehrere Shape-Figuren mit jeweils einem Polygon Mehrere Shape-Figuren mit jeweils mehreren Sub-Polygonen Umrissdateien im Shape-Format können in unterschiedlicher Qualität von einigen Internetseiten herunter geladen werden. Wenn man bezüglich der Qualität, der Auflösung und des verwendeten Bezugssystems sicher gehen will, sollte man nach einer geeigneten Umrissdatei bei den zuständigen Behörden nachfragen. Hier sind einige Internetseiten, von denen Umrissdateien herunter geladen werden können: http://www.diva-gis.org/gdata https://freegisdata.rtwilson.com https://gisgeography.com/best-free-gis-data-sources-raster-vector Der im Textverlauf verwendete Begriff "exopolygonaler Eintrag" steht für den Eintrag eines Kennwertes in eine Gittermasche einer NTv2-Datei zum Ausschluss dieser Gittermasche aus dem Wirkungsbereich der NTv2-Datei. Daraus folgt, dass alle Gittermaschen mit exopolygonalen Einträgen ungültig sind. Die Funktion convntvbin2polyvalid() kennzeichnet alle außerhalb der Polygone der verwendeten Shapedatei liegenden Gittermaschen in der NTv2-Datei durch das Einbringen exopolygonaler Einträge als ungültig. Durch die Verwendung exopolygonaler Einträge in den Verschiebungswerten oder in den Genauigkeitswerten der NTv2-Datei ergeben sich zwei Methoden zur Realisierung polygonaler Gültigkeitsbereiche. Die beiden Methoden unter- scheiden sich in den Auswirkungen erheblich. Methode 1: Exopolygonale Einträge ersetzen die Genauigkeitswerte der Gittermaschen. Es wird genau eine Gittermasche angesprochen, die sich einen Gitterabstand in nördlicher und einen Gitterabstand in westlicher Richtung vom Gitterpunkt erstreckt. Das ist genau die Gittermasche, die durch den Gitterpunkt definiert ist und die bei der Interpolation einer darin befindlichen Koordinate angesprochen wird. Diese Gittermasche wird aus dem polygonalen Gültigkeitsbereich des NTv2-Gitters ausgeschlossen. Methode 2: Exopolygonale Einträge ersetzen die Verschiebungswerte der Gittermaschen. Bei der bilinearen Interpolation werden die vier benachbarten Gitterpunkte einer Koordinate verwendet, in denen jeweils exopolygonale Einträge enthalten sein können. Daher werden insgesamt vier Gittermaschen angesprochen, die sich je einen Gitterabstand in nördlicher und südlicher und je einen Gitter- abstand in westlicher und östlicher Richtung vom Gitterpunkt erstrecken. Das sind die vier Gittermaschen, die um den Gitterpunkt herum angeordnet sind. Genau diese vier Gittermaschen werden aus dem polygonalen Gültigkeitsbereich des NTv2-Gitters ausgeschlossen. Zur Unterscheidung von der Original-Gitterdatei werden in der neu erstellten NTv2-Gitterdatei die Einträge UPDATED in allen Gitter-Headern mit dem Datum des Erstellungstages überschrieben. NTv2-Binärdateien mit Syntaxfehlern werden von GeoDLL mit einer Fehlermeldung abgelehnt. Eine möglicherweise vorhandene KilletSoft-Verschlüsselung der NTv2-Datei und darin bereits eingetragene Polygonale Gültigkeitsbereiche bleiben bei der Übertragung in die neue NTv2-Datei erhalten. Sie können die von GeoDLL unterstützten NTv2-Dateien direkt von der KilletSoft Internetseite "http://www.killetsoft.de/p_gdln_d.htm#download" herunterladen oder dort die Verweise zu den Originalquellen verwenden. Auf der Internetseite finden Sie auch eine ausführliche Beschreibung des NTv2-Standards. Die Verwendung von polygonalen Gültigkeitsbereichen ist auf der KilletSoft Internetseite "http://www.killetsoft.de/t_1512_d.htm" in unserem White Paper "Vorschlag zur Verwendung polygonaler Gültigkeitsbereiche in NTv2- Gitterdateien" detailliert beschrieben. Da die Funktion wegen der umfangreichen Berechnungen zeitintensiv ist, kann mit der Funktion seteventloop() die Event-Bearbeitung während der Berechnung durch Unterbrechung der Bearbeitungsschleife zugelassen werden. Die Dateinamen der NTv2-Binärdatei,der neu zu erzeugenden NTv2-Binär- Datei und der Shape-Datei dürfen jeweils einen Laufwerksbuchstaben und eine Verzeichniskette enthalten. Beispiel: Binärdatei "c:\programm_ntv2\BeTA2007.gsb" Neue Datei "c:\programm_ntv2\BeTA2007_scope.gsb" Shape-Datei "c:\programm_ntv2\Germany_border.shp" Achtung, in C-Syntax müssen doppelte Backslashes verwendet werden! Die Parameter werden folgendermaßen übergeben bzw. zurückgegeben: pszFileBinary Dateiname der als Quelle verwendeten NTv2-Binärdatei. Der Dateiname darf einen Laufwerksbuchstaben und eine Verzeichnis- kette enthalten. Der Dateiname sollte die Dateinamens- erweiterung ".gsb" haben. pszFilePolyValid Dateiname der zu erzeugenden NTv2-Binärdatei mit den Exopolygonalen Einträgen. Der Dateiname darf einen Laufwerks- buchstaben und eine Verzeichniskette enthalten. Der Dateiname sollte die Dateinamenserweiterung ".gsb" haben. pszFileShape Dateiname der Shapedatei mit den polygonalen Gültigkeits- bereichen. Die Gültigkeitsbereiche müssen darin als Polygon- Objekte vorliegen. Der Dateiname darf einen Laufwerksbuchstaben und eine Verzeichniskette enthalten. Der Dateiname sollte die Dateinamenserweiterung ".shp" haben. nTyp Eine von zwei zwei Methoden zur Realisierung Polygonaler Gültigkeitsbereiche (siehe oben) 1 Exopolygonale Einträge ersetzen die Genauigkeitswerte der Gittermaschen. 2 Exopolygonale Einträge ersetzen die Verschiebungswerte der Gittermaschen. returnWert Im Fehlerfall gibt die Funktion FALSE zurück, sonst TRUE. Freischaltung: Die Funktion ist Bestandteil der freischaltpflichtigen Funktionsgruppe "NTv2-Werkzeuge". 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 mit dieser Funktion keine Funktions- aufrufe zu Testzwecken (Sharewareprinzip) möglich. |