# Ticket #3176 (reopened enhancement)

Opened 4 years ago

## Add TOWGS[] coefficients to Pulkovo 1942 (SK-42) coordinate system (EPSG 4284)

Reported by: Owned by: dron warmerdam normal OGR_SRS 1.7.0 minor datum shift, pulkovo

### Description

There is no TOWGS transformation defined for "Pulkovo 1942" CS in EPSG tables. But this transformation is specified in appropriate Russian official documents. I am attaching such a document. It is a GOST (An Official State Standard) number "P 51794-2001". It is written in Russian, but the part interesting for us contains mostly math, so it is pretty readable. I will translate some parts of this document below.

Page 1:

```GOST P 51794-2001

THE STATE STANDARD OF THE RUSSIAN FEDERATION

positioning system.

COORDINATE SYSTEMS.

Methods of points coordinates transformations

Introduced 2002/07/01

1. Scope of usage

This document defines: coordinate systems included in the systems of geodesic
parameters "Earth Parameters", "World Geodetic System" and coordinate system of the
Russian Federation; methods of coordinate and coordinate increments transformations
from system to another one, and usage of numerical values of coordinate system
transformation parameters in geodesic, navigational, cartographic activities using

2. Terms and abbreviations

...skipped...
```

Page 4:

```... skipped ...

4.2 Coordinate transformation

Users of GLONASS and GPS navigation systems should perform the coordinate
transformations from PZ coordinate system into WGS and back, as well as from PZ
and WGS into reference ccoordinate system of the Russian Federation. These
coordinate transformations should be performed using 7-parametric transformation.

Parameters of the transformation between coordinate systems PZ and WGS are listed
in Appendix B.

Transformation from WGS system into the reference system of the Russian Federation
is being performed by sequential transformation into PZ system and then into
reference system coordinates.

Transformation of the Cartesian coordinates performed using formula:

|X|               | 1  +RZ -RY | |X|   |DX|
|Y|  = (1 + DS) * |-RZ  1  +RX |.|Y| + |DY|
|Z|               |+RY -RX  1  | |Z|   |DZ|
b                                a

where DX, DY, DZ --- linear parameters of the transformation, m;
RX, RY, RZ --- angular parameters of the transformation, radians;
DS --- difference in scale parameters of the coordinate systems;
a,b --- coordinate systems.
```

... and continues on page 5:

```Reverse transformation of the cartesian coordinates performed using formula

|X|               | 1  -RZ +RY | |X|   |DX|
|Y|  = (1 - DS) * |+RZ  1  -RX |.|Y| - |DY|
|Z|               |-RY +RX  1  | |Z|   |DZ|
a                                b

... the rest is skipped ...
```

Now lets look at the appendixes.

Page 9:

```GOST P 51794-2001

APPENDIX A
(mandatory)

Parameters of transformation between coordinate system PZ ("Earth Parameters")
and national reference systems of Russia

Transformation from the reference Coordinate System 1942 into system PZ-90

DX = (+25 +/-2) m; RX = 0.00" +/-0.1";
DY = (-141 +/-2) m; RY = -0.35" +/-0.1;
DZ = (-80 +/-3) m; RZ = -0.66" +/-0,1";
DS = (0.00 +/-0.25) * 10^-6;

|X|      | 1          -3.3*10^-6 +1.8*10^-6| |X|      | 25 |
|Y|   =  |+3.3*10^-6   1          0        |.|Y|   +  |-141|
|Z|      |-1.8*10^-6   0          1        | |Z|      |-80 |
PZ-90                                        SK-42

Transformation from the PZ-90 coordinate system into the reference
Coordinate System 1942

|X|      | 1          +3.3*10^-6 -1.8*10^-6| |X|      | 25 |
|Y|   =  |-3.3*10^-6   1          0        |.|Y|   -  |-141|
|Z|      |+1.8*10^-6   0          1        | |Z|      |-80 |
SK-42                                        PZ-90

Transformation from the reference Coordinate System 1995 into system PZ-90

DX = +25.90 m;
DY = -130.94 m;
DZ = -81.76 m;

|X|      |X|      | 25.90 |
|Y|   =  |Y|   +  |-130.94|
|Z|      |Z|      |-81.76 |
PZ-90    SK-95

Transformation from the PZ-90 coordinate system into reference
Coordinate System 1995

|X|      |X|      | 25.90 |
|Y|   =  |Y|   -  |-130.94|
|Z|      |Z|      |-81.76 |
SK-95    PZ-90
```

Page 10

```GOST P 51794-2001

APPENDIX B
(mandatory)

Parameters of transformation between coordinate system PZ ("Earth Parameters")
and WGS coordinate system

Transformation from the coordinate system PZ-90 into WGS-84

DX = (-1.08 +/-0.2) m; RX = 0;
DY = (-0.27 +/-0.2) m; RY = 0;
DZ = (-0.90 +/-0.3) m; RZ = -0.16" +/-0,01";
DS = (-0.12 +/-0.06) * 10^-6;

|X|                       | 1          -0.82*10^-6 0| |X|      |-1.1|
|Y|   =  (1-0.12*10^-6) * |0.82*10^-6   1          0|.|Y|   +  |-0.3|
|Z|                       |0            0          1| |Z|      |-0.9|
WGS-84                                                PZ-90

Transformation from the coordinate system WGS-84 into PZ-90

|X|                       | 1          0.82*10^-6 0| |X|        |-1.1|
|Y|   =  (1+0.12*10^-6) * |-0.82*10^-6 1          0|.|Y|     -  |-0.3|
|Z|                       | 0          0          1| |Z|        |-0.9|
PZ-90                                                 WGS-84

```

The document states that in order to transform coordinates from the SK-42 into WGS-84 systems they should be transformed into PZ-90 first and afterward to WGS-84. After a trivial matrix math I've got the following formula for transformation from SK-42 to WGS-84:

```|X|                       | 1          -4.12*10^-6 1.8*10^-6| |X|        | 23.9 |
|Y|   =  (1-0.12*10^-6) * | 4.12*10^-6  1          0        |.|Y|     +  |-141.3|
|Z|                       |-1.8*10^-6   0          1        | |Z|        |-80.9 |
WGS-84                                                        SK-42
```

After conversion to arc seconds we can get:

```+towgs84=23.9,-141.3,-80.9,0,-0.37,-0.85,-0.12
```

Finally what I am suggesting to do is to apply the following patch

```--- gcs.override.csv	(revision 17777)
+++ gcs.override.csv	(working copy)
@@ -25,4 +25,9 @@
# From Jan: http://bugzilla.remotesensing.org/show_bug.cgi?id=1336
#
4313,Belge 1972,6313,Reseau National Belge 1972,6313,9122,7022,8901,1,0,6422,9606,106.868628,-52.297783,103.723893,-0.336570,0.456955,-1.842183,1.0000012747
+#
+# Seven-parameter transformation for Pulkovo 1942
+# as defined by the GOST P 51794-2001
+#
+4284,Pulkovo 1942,6284,Pulkovo 1942,6284,9122,7024,8901,1,0,6422,9607,23.9,-141.3,-80.9,0,-0.37,-0.85,-0.12
```

and propagate this parameters in PROJ.4 data files.

Please, note that this issue is very important for Russia, because Pulkovo 1942 (SK-42) Coordinate System was used more than a half of the century in USSR and virtually every map produced here was made in that system. Also a very few people feel themselves confident with this datum conversion staff, so the chances that someone else will raise this issue are quite small.

Best regards, Andrey

## Change History

### Changed 4 years ago by dron

GOST P 51794-2001 (The Russian State Standard)

### Changed 4 years ago by dron

• status changed from new to closed
• resolution set to fixed

There were no objections so I have applied the patch in r17853. Also I will send the appropriate request to EPSG people to update the tables.

### Changed 4 years ago by warmerdam

I have upstreamed these changes into libgeotiff, and pulled back down with a new message in the *.override.csv headers indicating that these files are owned by the libgeotiff project (r17854).

### Changed 3 years ago by dron

• status changed from closed to reopened
• severity changed from major to minor
• type changed from defect to enhancement
• version changed from unspecified to 1.7.0
• keywords datum shift, pulkovo added
• resolution fixed deleted

Well, this isn't an end of the story. There is a newer document called GOST P 51794-2008 introduced September 01, 2009. That new official standard contains updated transformation coefficients and obsoletes the older GOST P 51794-2001, described above.

To make the long story short I will only translate the parts, containing parameters.

Page 11:

```GOST P 51794-2008

APPENDIX A
(mandatory)

Parameters of transformation between coordinate system PZ ("Earth Parameters")
and national reference systems of Russia

Transformation from the reference Coordinate System 1942 into system PZ-90.02

DX = +23.93 m; RX = 0.00";
DY = -141.03 m; RY = -0.35";
DZ = -79.98 m; RZ = -0.79";
DS = -0.22 * 10^-6;

|X|                         | 1            -3.8300*10^-6 +1.6968*10^-6| |X|      | 23.93 |
|Y|   =   (1+(-0.22)*10^-6) |+3.8300*10^-6  1             0           |.|Y|   +  |-141.03|
|Z|                         |-1.6968*10^-6  0             1           | |Z|      |-79.98 |
PZ-90.02                                                                SK-42

Transformation from the PZ-90.02 coordinate system into the reference
Coordinate System 1942

|X|                       | 1            +3.8300*10^-6 -1.6968*10^-6| |X|        | 23.93   |
|Y|   = (1-(-0.22)*10^-6) |-3.8300*10^-6  1             0           |.|Y|   -    |-141.03|
|Z|                       |+1.6968*10^-6  0             1           | |Z|        |-79.98 |
SK-42                                                                 PZ-90.02

Transformation from the reference Coordinate System 1995 into system PZ-90.02

DX = +24.83 m; RX = 0.00";
DY = -130.97 m; RY = 0.00";
DZ = -81.74 m; RZ = -0.13";
DS = (-0.22)*10^-6;

|X|                       |1             -0.6302*10^-6 0| |X|     | 24.83 |
|Y|   = (1+(-0.22)*10^-6) |+0.6302*10^-6  1            0|.|Y|   + |-130.97|
|Z|                       |0              0            1| |Z|     |-81.74 |
PZ-90.02                                                  SK-95

Transformation from the PZ-90.02 coordinate system into reference
Coordinate System 1995

|X|                       |1             +0.6302*10^-6 0| |X|        | 24.83 |
|Y|   =  (1-(-0.22)*10^-6)|-0.6302*10^-6  1            0|.|Y|   -    |-130.97|
|Z|                       |0              0            1| |Z|        |-81.74 |
SK-95                                                     PZ-90.02

```

Page 13:

```GOST P 51794-2008

APPENDIX C
(mandatory)

Parameters of transformation between verified coordinate system PZ ("Earth Parameters") and WGS coordinate system

Transformation from the coordinate system PZ-90.02 into WGS-84

DX = -0.36 m; RX = 0;
DY = +0.08 m; RY = 0;
DZ = +0.18 m; RZ = 0;
DS = 0;

|X|             |X|        |-0.36|
|Y|   =         |Y|   +    |+0.08|
|Z|             |Z|        |+0.18|
WGS-84(G1150)   PZ-90.02

Transformation from the coordinate system WGS-84 into PZ-90.02

|X|        |X|             |-0.36|
|Y|   =    |Y|     -       |+0.08|
|Z|        |Z|             |+0.18|
PZ-90.02   WGS-84(G1150)
```

So the updated formula for SK-42 to WGS-84 transformation is

```|X|      | 1            -3.8300*10^-6 1.6968*10^-6| |X|        | 24.29 |
|Y|   =  | 3.8300*10^-6  1            0           |.|Y|     +  |-141.06|
|Z|      |-1.6968*10^-6  0            1           | |Z|        |-80.11 |
WGS-84                                              SK-42

```

and after conversion to arc seconds:

```+towgs84=24.29,-141.06,-80.11,0,-0.35,-0.79,0
```

There is a subtle deviation from the previously computed values and for practical usage there is no a big difference because the difference is beyond the accuracy of SK-42 coordinate system determination. But for the sake of clarity and standardization there is a patch:

```--- gcs.override.csv	(revision 18682)
+++ gcs.override.csv	(working copy)
@@ -35,8 +35,8 @@
4313,Belge 1972,6313,Reseau National Belge 1972,6313,9122,7022,8901,1,0,6422,9606,106.868628,-52.297783,103.723893,-0.336570,0.456955,-1.842183,1.0000012747
#
# Seven-parameter transformation for Pulkovo 1942
-# as defined by the GOST P 51794-2001.
+# as defined by GOST P 51794-2008.
# See http://trac.osgeo.org/gdal/ticket/3176 for details.
#
-4284,Pulkovo 1942,6284,Pulkovo 1942,6284,9122,7024,8901,1,0,6422,9607,23.9,-141.3,-80.9,0,-0.37,-0.85,-0.12
+4284,Pulkovo 1942,6284,Pulkovo 1942,6284,9122,7024,8901,1,0,6422,9607,24.29,-141.06,-80.11,0,-0.35,-0.79,0
```

### Changed 3 years ago by dron

GOST P 51794-2008 (The Russian State Standard)

### Changed 3 years ago by dron

I've made a small mistake in calculations, the final formula is

```|X|      | 1            -3.8300*10^-6 1.6968*10^-6| |X|        | 23.57 |
|Y|   =  | 3.8300*10^-6  1            0           |.|Y|     +  |-141.0 |
|Z|      |-1.6968*10^-6  0            1           | |Z|        |-79.85 |
WGS-84                                              SK-42

```

and PROJ.4 line is

```+towgs84=23.57,-141.0,-79.85,0,-0.35,-0.79,0
```

The updated patch:

```--- gcs.override.csv	(revision 18682)
+++ gcs.override.csv	(working copy)
@@ -35,8 +35,8 @@
4313,Belge 1972,6313,Reseau National Belge 1972,6313,9122,7022,8901,1,0,6422,9606,106.868628,-52.297783,103.723893,-0.336570,0.456955,-1.842183,1.0000012747
#
# Seven-parameter transformation for Pulkovo 1942
-# as defined by the GOST P 51794-2001.
+# as defined by GOST P 51794-2008.
# See http://trac.osgeo.org/gdal/ticket/3176 for details.
#
-4284,Pulkovo 1942,6284,Pulkovo 1942,6284,9122,7024,8901,1,0,6422,9607,23.9,-141.3,-80.9,0,-0.37,-0.85,-0.12
+4284,Pulkovo 1942,6284,Pulkovo 1942,6284,9122,7024,8901,1,0,6422,9607,23.57,-141.0,-79.85,0,-0.35,-0.79,0
```

### Changed 3 years ago by dron

Maxima batch file to compute SK-42 to WGS-84 transformation parameters

### Changed 3 years ago by dron

...And now I know why the EPSG:4284 record does not contain a transformation. There are multiple transformations defined for that CS and coefficients mentioned in the initial bug report already contained in EPSG database as record number 1267. As per bug #3357 we don't have a way to reference multiple transformations, so there is no transformation at all.

Note: See TracTickets for help on using tickets.