Wednesday 21 August 2019

Transform coordinates in MapInfo with GSB data


Does anybody know if MapInfo (or MapBasic) is capable to do coordinate transformation using the NTv2 (National Transformation version 2) method?


Currently Switzerland changes their national coordinate reference system from CH1903 to CH1903+. For transformation the authoritiy provides a CHENYX06a.gsb file in NTv2 Format. Can I use this in MapInfo?


When I check the MapInfo Program folder it already contains a couple of .gsb files (but not the swiss one, CHENYX06a.gsb) and a file called NTv2.xml where you can see some reference data. So, in principle MapInfo should be capable to perform such transformation but I don't know how to trigger their usage.


When I try the normal conversion from CH1903 to CH1903+ the coordinates are shifted but the errors are up to 0.8 meters. Just for comparison, when I do the conversion in PROJ.4 using the CHENYX06a.gsb file, then the errors are in the range of Millimeters!


Appendix:


Looks like solution from Peter Horsbøll Møller does not work. Here the result of my test:



Easting     Northing    New Easting MI   New Northing MI   New Easting correct   New Northing correct    Delta meters
602030.68 191775.03 2602030.4 1191775.2 2602030.74 1191775.03 0.380
617306.30 268507.30 2617306.6 1268507.9 2617306.92 1268507.87 0.321
776668.10 265372.68 2776669.3 1265372.2 2776668.59 1265372.25 0.712
497313.29 145625.44 2497312.1 1145626.0 2497312.65 1145626.14 0.568
722758.81 87649.67 2722758.5 1087648.6 2722759.06 1087648.19 0.694

"correct" values are taken from Swisstopo sample data. In case somebody likes to reproduce the issue, here you can download the GSB-File: CHENyx06 dataset


Maybe one problem is, both coordinates are using the Datum (as far as I understand). In PROJ4 I use this string for transformation.


cs2cs -f "%.3f" +proj=somerc +lat_0=46.95240555555556 +lon_0=7.439583333333333 +k_0=1 +x_0=600000 +y_0=200000 +ellps=bessel +nadgrids=CHENYX06a.gsb +units=m

+to +proj=somerc +lat_0=46.95240555555556 +lon_0=7.439583333333333 +k_0=1 +x_0=2600000 +y_0=1200000 +ellps=bessel +nadgrids=@null +units=m

The results are matching in range of Millimeters to the officaly values provided by Swisstopo.



Answer



I asked internally here at Pitney Bowes and got this reply:



You should be able to do it by copying the gsb file to MapInfo Pro folder end editing the NTv2.xml file.


You will need to add this transformation to the NTv2.xml file:





NTv2 for Switzerland from CH1903 to CH1903+
CHENYX06a.gsb
true

1003


158




You can run some testing using these MapBasic statements from the MapBasic window:


Commit Table SwissPoints As "D:\SwissPoints Plus Bounded.TAB" CoordSys Earth Projection 25, 158, "m", 7.439583333333, 46.952405555556, 2600000, 1200000 Bounds (-1000000, -1000000) (3000000, 3000000) Interactive
Open Table "D:\SwissPoints Plus Bounded.TAB" Interactive
Set Coordsys table SwissPoints_Plus_Bounded
Update SwissPoints_Plus_Bounded Set EAST_MI = CentroidX(OBJ)
Update SwissPoints_Plus_Bounded Set NORTH_MI = CentroidY(OBJ)
Browse * From SwissPoints_Plus_Bounded
Update SwissPoints_Plus_Bounded Set DELTA_EAST = EAST_CORR - EAST_MI
Update SwissPoints_Plus_Bounded Set DELTA_NORTH = NORTH_CORR - NORTH_MI


I now get these values:


Name
Zerwald 602030.68 191775.03 2602030.75 1191775.00 2602030.74 1191775.03 -0.014 0.034
Chrischona 617306.3 268507.3 2617306.92 1268507.87 2617306.92 1268507.87 0.004 -0.002
Pfaender 776668.1 265372.68 2776668.59 1265372.27 2776668.59 1265372.25 0.004 -0.018
La Givrine 497313.29 145625.44 2497312.66 1145626.10 2497312.65 1145626.14 -0.014 0.040
Monte Generoso 722758.81 87649.67 2722759.05 1087648.23 2722759.06 1087648.19 0.010 -0.038

The last two values are the difference in Y and Y compared to the values from the document.



No comments:

Post a Comment

arcpy - Changing output name when exporting data driven pages to JPG?

Is there a way to save the output JPG, changing the output file name to the page name, instead of page number? I mean changing the script fo...