Files
Facilitor/APPL/CAD/latlon.js
Peter Feij 413498318a 0-versie
svn path=/Website/trunk/; revision=6
2009-10-05 06:44:06 +00:00

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 }
}