===== NTv2 (Gitterbasierter Transformationsansatz) ===== \\ ==== Übersicht ==== Dieser Ansatz ermöglicht die Transformation zweidimensionaler Koordinaten (ohne Höhe) und arbeitet auf einem regelmäßigen Passpunktgitter. Für jeden Gitterpunkt wird dir Differenz der Längen- und Breitenunterschiede zwischen dem Quell- Zielbezugssystem berechnet und in einer gespeichert. {{:lib:tf:ntv2:griddelta.png?400|}} Die Transformation erfolgt durch eine bilineare Interpolation zwischen den Koordinaten-Differenzen der umliegenden vier Gitterpunkte. | {{:lib:tf:ntv2:trans_bi_lin_1.png?300|}} | {{:lib:tf:ntv2:trans_bi_lin_2.png?300|}} | Die Genauigkeit der Transformation ist abhängig von der Maschengröße des Gitters und der Qualität der Parameter, welche zur Berechnung der NTv2-Datei benutzt werden. NTv2 ist ein open-source-Ansatz, der wegen seiner Einfachheit und Performance insbesondere zur Überführung von Daten in geographischen Informationssystemen geeignet ist und inzwischen von allen gängigen kommerziellen GIS-Programmsystemen sowie GIS-Datenbankaufsätzen unterstützt wird. Es gib zwei Formate für NTv2-Dateien: * Binärformat (*.gsb) * ASCII-Format (*.gsa) In der Regel werden GSB-Dateien verwendet, weil hiermit eine wesentlich höhere Performance erreicht werden kann. \\ ==== NTv2-Header ==== Um eine performante Transformation mit einer NTv2-Datei durchzuführen, werden einige Parameter vorne in der NTv2-Datei gespeichert - der NTv2-Header. Eine NTv2-Datei (GSB) beinhaltet einen HEADER ^ NTv2-Header ^^^ ^ Name ^ Datentyp ^ Bezeichnung ^ | NUM_OREC | number |Number of overview record fields - must be 11 | | NUM_SREC | number | Number of sub-file record fields - must be 11 | | NUM_FILE | number | Number of sub-files | | GS_TYPE | string | Grid-shift units: "SECONDS", "MINUTES", or "DEGREES" | | VERSION | string | Version ID of distortion model | | SYSTEM_F | string | From reference system | | SYSTEM_T | string | To reference system | | MAJOR_F | double | From semi-major axis (in meters) | | MINOR_F | double | From semi-minor axis (in meters) | | MAJOR_T | double | To semi-major axis (in meters) | | MINOR_T | double | To semi-minor axis (in meters) | \\ ==== Gitter-Header ==== Eine NTv2-Datei kann midesten ein oder mehrere Gitter beinhalten, die jeweils einen Gitter-HEADER haben. Alle Gitter einer NTv2-Datei basieren auf die gleichen (beide) Ellipsoide, die im NTv2-HEADER definiert sind. ^ GRID-Header ^^^ ^ Name ^ Datentyp ^ Bezeichnung ^ | SUB_NAME | string | Sub-file name | | PARENT | string | Parent file name or "NONE" | | CREATED | string | Creation date | | UPDATED | string | Last revision date (may be blank) | | S_LAT | double | South latitude (in gs-units) | | N_LAT | double | North latitude (in gs-units) | | E_LONG | double | East longitude (in gs-units) Note: +west/-east | | W_LONG | double | West longitude (in gs-units) Note: +west/-east | | LAT_INC | double | Latitude increment (in gs-units) | | LONG_INC | double | Longitude increment (in gs-units) | | GS_COUNT | number | Number of grid-shift records following | \\ ==== Ungewöhnliche Verwendung der (von/bis) Werte ==== Wenn man sich die Werte für Min/Max ansieht, stellt man fest, dass sie in einem ungewöhnlichen Wertebereich liegen. So ist MIN größer MAX! Die NTv2-Definition wurde vom „Gouvernement of Kanada“ definiert. Kanada liegt westlich von Greenwich, dementsprechend müssten die Koordinaten negativ sein, man hat sie aber positiv in die Formel eingebaut, so dass sie für Europa nun (widersinnig) negativ sind und alle Matrizen spiegelbildlich aufgebaut sind. {{:lib:tf:ntv2:ntv2_min_mx.png?750|}}