[GIS] proj.4 definition for Moscow GCS_Bessel_1841 to WGS84 convertion

arcgis-servercoordinate systemleaflet

I'm developing an app which should show a map using Leaflet framework but i have no luck as
the coordinate system on the map server differs from the one used by Leaflet.

  1. As a map server i use Arcgis which is accessed by means of REST interface
  2. The coordinate system used by the server is GCS_Bessel_1841. WKT definition: GEOGCS["GCS_Bessel_1841",DATUM["D_Bessel_1841",SPHEROID["Bessel_1841",6377397.155,299.1528128]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",37.5],PARAMETER["Scale_Factor",1.0],PARAMETER["Latitude_Of_Origin",55.66666666666666],UNIT["Meter",1.0]

  3. I use proj.4 to convert GCS_Bessel_1841 to WGS84 (used by leaflet) but can't figure out how to make a correct definition especially how to write +towgs84.

The question is how to figure out the values for DX,DY,DZ,RX,RY,RZ.

The afterall my proj.4 defitiion looks like:
+proj=tmerc +lon_0=37.5 +lat_0=55.66666666666666 +ellps=bessel +towgs84=0,0,0,0,0,0,0 +a=6377397.155 +b=6356078.962818188 +pm=greenwich +k_0=1 +x_0=0 +y_0=0 +units=m +no_defs

The Leaflet code:

`var crs = new L.Proj.CRS('EPSG:3857',
'+proj=tmerc +lat_0=55.66666666666666 +lon_0=37.5 +k=1 +x_0=0 +y_0=0 +ellps=bessel +units=m +no_defs',
{
origin: [-5622500.0, 3830200.0],
resolutions: [
305.74811314055756,
152.87405657041106,
76.43702828507324,
38.21851414253662,
19.10925707126831,
9.554628535634155,
4.77731426794937,
2.388657133974685,
1.1943285668550503,
0.5971642835598172,
0.29858214164761665,
0.14929107082380833
]
});

var map = new L.Map('map', {
crs: crs
});

var tileUrl = 'http://egip.mka.mos.ru/arcgis/rest/services/osnova_wgs_cached/MapServer/tile/{z}/{y}/{x}',
attrib = '© 2012',
tilelayer = new L.TileLayer(tileUrl, {
maxZoom: 12,
minZoom: 0,
continuousWorld: true,
attribution: attrib,
});

map.addLayer(tilelayer);
map.setView([ 55.750984, 37.617571], 0);

map.on('mousemove', onMapMouseMove);'
`

Best Answer

This is how QGIS writes the proj-string and WKT with +towgs84-parameter:

+proj=longlat +ellps=bessel +towgs84=598.1,73.7,418.2,0.202,0.045,-2.455,6.7 +no_defs

GEOGCS["DHDN",DATUM["Deutsches_Hauptdreiecksnetz",SPHEROID["Bessel 1841",6377397.155,299.1528128,AUTHORITY["EPSG","7004"]],TOWGS84[598.1,73.7,418.2,0.202,0.045,-2.455,6.7],AUTHORITY["EPSG","6314"]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],UNIT["degree",0.0174532925199433,AUTHORITY["EPSG","9122"]],AUTHORITY["EPSG","4314"]]

But keep in mind that there is no overall value for converting any Bessel-1841-Data to WGS84.

For Germany, there were a lot of parametres published, until a NADgrid for the whole country was created. This applies the correct shift for every point inside Germany.

Other surveying authorities have done similar conversions, but with other values.


EDIT

There is a forum entry in Russian http://gis-lab.info/forum/viewtopic.php?t=9386

giving the following proj parameters:

+proj=tmerc +lat_0=55.6666666667 +lon_0=37.5 +x_0=0 +y_0=0 +k_0=1. +a=6377397 +rf=299.15 +towgs84=396,165,557.7,-0.05,0.04,0.01,0 +no_defs

Maybe you get lucky with those values.

Related Question