77 lines
2.7 KiB
JavaScript
77 lines
2.7 KiB
JavaScript
function LonLatToXY(lon, lat)
|
|
{
|
|
var x0 = 155000.00;
|
|
var y0 = 463000.00;
|
|
|
|
var f0 = 52.15517440;
|
|
var l0 = 5.38720621;
|
|
|
|
var c01=190094.945; var d10= 309056.544;
|
|
var c11=-11832.228; var d02= 3638.893;
|
|
var c21= -114.221; var d20= 73.077;
|
|
var c03= -32.391; var d12= -157.984;
|
|
var c10= -0.705; var d30= 59.788;
|
|
var c31= -2.340; var d01= 0.433;
|
|
var c13= -0.608; var d22= -6.439;
|
|
var c02= -0.008; var d11= -0.032;
|
|
var c23= 0.148; var d04= 0.092;
|
|
var d14= 0.054;
|
|
|
|
var df=(lat - f0) * 0.36;
|
|
var dl=(lon - l0) * 0.36;
|
|
|
|
var dx =c01*dl + c11*df*dl + c21*Math.pow(df,2.0)*dl + c03*Math.pow(dl,3.0);
|
|
dx+=c10*df + c31*Math.pow(df,3.0)*dl + c13*df*Math.pow(dl,3.0) + c02*Math.pow(dl,2.0);
|
|
dx+=c23*Math.pow(df,2.0)*Math.pow(dl,3.0);
|
|
var resX=x0 + dx;
|
|
|
|
var dy =d10*df + d02*Math.pow(dl,2.0) + d20*Math.pow(df,2.0) + d12*df*Math.pow(dl,2.0);
|
|
dy+=d30*Math.pow(df,3.0) + d01*dl + d22*Math.pow(df,2.0)*Math.pow(dl,2.0) + d11*df*dl;
|
|
dy+=d04*Math.pow(dl,4.0) + d14*df*Math.pow(dl,4.0);
|
|
var resY =y0 + dy;
|
|
return { X:resX, Y:resY }
|
|
}
|
|
|
|
function XYToLonLat(x, y)
|
|
{
|
|
var x0 = 155000.000;
|
|
var y0 = 463000.000;
|
|
|
|
//var f0 = 52.156160556;
|
|
//var l0 = 5.387638889;
|
|
var f0 = 52.15517440;
|
|
var l0 = 5.38720621;
|
|
|
|
var a01=3235.65389 ; var b10=5260.52916;
|
|
var a20= -32.58297 ; var b11= 105.94684;
|
|
var a02= -0.24750 ; var b12= 2.45656;
|
|
var a21= -0.84978 ; var b30= -0.81885;
|
|
var a03= -0.06550 ; var b13= 0.05594;
|
|
var a22= -0.01709 ; var b31= -0.05607;
|
|
var a10= -0.00738 ; var b01= 0.01199;
|
|
var a40= 0.00530 ; var b32= -0.00256;
|
|
var a23= -0.00039 ; var b14= 0.00128;
|
|
var a41= 0.00033 ; var b02= 0.00022;
|
|
var a11= -0.00012 ; var b20= -0.00022;
|
|
var b50= 0.00026;
|
|
|
|
|
|
var dx=(x-x0)*Math.pow(10,-5);
|
|
var dy=(y-y0)*Math.pow(10,-5);
|
|
|
|
var df = a01*dy + a20*Math.pow(dx,2) + a02*Math.pow(dy,2);
|
|
df += a21*Math.pow(dx,2)*dy + a03*Math.pow(dy,3) + a22*Math.pow(dx,2)*Math.pow(dy,2);
|
|
df += a10*dx + a40*Math.pow(dx,4) + a23*Math.pow(dx,2)*Math.pow(dy,3);
|
|
df += a41*Math.pow(dx,4)*dy + a11*dx*dy,4;
|
|
var f = f0 + df/3600;
|
|
|
|
var dl = b10*dx + b11*dx*dy + b12*dx*Math.pow(dy,2);
|
|
df += b30*Math.pow(dx,3) + b13*dx*Math.pow(dy,3) + b31*Math.pow(dx,3)*dy;
|
|
df += b01*dy + b32*Math.pow(dx,3)*Math.pow(dy,2) + b14*dx*Math.pow(dy,4);
|
|
dl += b02*Math.pow(dy,2) + b20*Math.pow(dx,2) + b50*Math.pow(dx,5);
|
|
|
|
var l = l0 + dl/3600;
|
|
|
|
return { Lat:f, Lon: l }
|
|
}
|