Op werk ben ik bezig met het in en exporteren van coordinaten van RD naar wgs en andersom. Nu heb ik een hele mooie formule gevonden van RD naar wgs, maar ik wil hem nu ook hebben van wgs naar RD. Kan iemand mij helpen onderstaande formule van X en y als input naar longtitude en latitude als input te schrijven? Dat het antwoord x en y eruit komt?
dX = (X - 155000) * 10 ^ -5
dY = (y - 463000) * 10 ^ -5
SomN = (3235.65389 * dY) + (-32.58297 * dX ^ 2) + (-0.2475 * dY ^ 2) + (-0.84978 * dX ^ 2 * dY) + (-0.0655 * dY ^ 3) + (-0.01709 * dX ^ 2 * dY ^ 2) + (-0.00738 * dX) + (0.0053 * dX ^ 4) + (-0.00039 * dX ^ 2 * dY ^ 3) + (0.00033 * dX ^ 4 * dY) + (-0.00012 * dX * dY)
SomE = (5260.52916 * dX) + (105.94684 * dX * dY) + (2.45656 * dX * dY ^ 2) + (-0.81885 * dX ^ 3) + (0.05594 * dX * dY ^ 3) + (-0.05607 * dX ^ 3 * dY) + (0.01199 * dY) + (-0.00256 * dX ^ 3 * dY ^ 2) + (0.00128 * dX * dY ^ 4) + (0.00022 * dY ^ 2) + (-0.00022 * dX ^ 2) + (0.00026 * dX ^ 5)
latitude = (52.15517 + (SomN / 3600))
Longitude = (5.387206 + (SomE / 3600))
Formule omdraaien!
Re: Formule omdraaien!
Zie http://home.solcon.nl/pvanmanen/Downloa ... rmules.pdf
onder de paragraaf
"Transformatie van RD-coördinaten naar ellipsoïdische WGS84-coördinaten (j, l) en vice versa"
De rechter kolom op pagina 2 geeft jouw bovenstaande formule,
de linker kolom op pagina 3 de formule die je zoekt.
Kom je hiermee verder?
onder de paragraaf
"Transformatie van RD-coördinaten naar ellipsoïdische WGS84-coördinaten (j, l) en vice versa"
De rechter kolom op pagina 2 geeft jouw bovenstaande formule,
de linker kolom op pagina 3 de formule die je zoekt.
Kom je hiermee verder?
Re: Formule omdraaien!
Hartstikke bedankt!
Als ik het goed heb kom ik dan op het volgende uit:
dF = 0.36 * (InputF - 52.1551744)
dL = 0.36 * (InputL - 5.38720621)
SomX = (190094.945 * dL) + (-11832.228 * dF * dL) + (-144.221 * (dF ^ 2) * dL) + (-32.391 * (dL ^ 3)) + (-0.705 * dF) + (-2.34 * (dF ^ 3) * dL) + (-0.608 * dF * (dL ^ 3)) + (-0.008 * (dL ^ 2)) + (0.148 * (dF ^ 2) * (dL ^ 3))
SomY = (309056.544 * dF) + (3638.893 * (dL ^ 2)) + (73.077 * (dF ^ 2)) + (-157.984 * dF * (dL ^ 2)) + (59.788 * (dF ^ 3)) + (0.433 * dL) + (-6.439 * (dF ^ 2) * (dL ^ 2)) + (-0.032 * dF * dL) + (0.092 * (dL ^ 4)) + (-0.054 * dF * (dL ^ 4))
X = 155000 + SomX
y = 463000 + SomY
Waarbij InputF en InputL als gps coordinaten zijn en x en y in RD.
Als ik het goed heb kom ik dan op het volgende uit:
dF = 0.36 * (InputF - 52.1551744)
dL = 0.36 * (InputL - 5.38720621)
SomX = (190094.945 * dL) + (-11832.228 * dF * dL) + (-144.221 * (dF ^ 2) * dL) + (-32.391 * (dL ^ 3)) + (-0.705 * dF) + (-2.34 * (dF ^ 3) * dL) + (-0.608 * dF * (dL ^ 3)) + (-0.008 * (dL ^ 2)) + (0.148 * (dF ^ 2) * (dL ^ 3))
SomY = (309056.544 * dF) + (3638.893 * (dL ^ 2)) + (73.077 * (dF ^ 2)) + (-157.984 * dF * (dL ^ 2)) + (59.788 * (dF ^ 3)) + (0.433 * dL) + (-6.439 * (dF ^ 2) * (dL ^ 2)) + (-0.032 * dF * dL) + (0.092 * (dL ^ 4)) + (-0.054 * dF * (dL ^ 4))
X = 155000 + SomX
y = 463000 + SomY
Waarbij InputF en InputL als gps coordinaten zijn en x en y in RD.
Re: Formule omdraaien!
Volgens het document kan er een afwijking zijn en helaas zie ik die ook. Is er een mogelijkheid om die afwijking ongedaan te maken of niet te laten voorkomen?
Re: Formule omdraaien!
Controleer je constanten nog even:
(die -144.221 moet in ieder geval -114.221 zijn):
Dit levert als output:
[52.3745325270, 4.88352559145]
[120700.722776, 487525.501259]
[53.2193831670, 6.56820052908]
[233883.131225, 582065.167605]
Deze getallen komen ook overeen met
https://www.gpscoordinaten.nl/convertee ... inaten.php
Heb je een voorbeeld met een te grote afwijking?
En hoe nauwkeurig wil je je omzetting hebben?
(die -144.221 moet in ieder geval -114.221 zijn):
Met deze Pari/GP code krijg ik in ieder geval dezelfde antwoorden als in Rekenvoorbeeld 2:Dusty schreef:SomX = (190094.945 * dL) + (-11832.228 * dF * dL) + (-144.221 * (dF ^ 2) * dL) + (-32.391 * (dL ^ 3)) + (-0.705 * dF) + (-2.34 * (dF ^ 3) * dL) + (-0.608 * dF * (dL ^ 3)) + (-0.008 * (dL ^ 2)) + (0.148 * (dF ^ 2) * (dL ^ 3))
Code: Selecteer alles
init()={
KL=
[0, 1, 3235.65389, 1, 0, 5260.52916;
2, 0, -32.58297, 1, 1, 105.94684;
0, 2, -0.24750, 1, 2, 2.45656;
2, 1, -0.84978, 3, 0, -0.81885;
0, 3, -0.06550, 1, 3, 0.05594;
2, 2, -0.01709, 3, 1, -0.05607;
1, 0, -0.00738, 0, 1, 0.01199;
4, 0, 0.00530, 3, 2, -0.00256;
2, 3, -0.00039, 1, 4, 0.00128;
4, 1, 0.00033, 0, 2, 0.00022;
1, 1, -0.00012, 2, 0, -0.00022;
0, 0, 0, 5, 0, 0.00026 ];
RS=
[0, 1, 190094.945, 1, 0, 309056.544;
1, 1, -11832.228, 0, 2, 3638.893;
2, 1, -114.221, 2, 0, 73.077;
0, 3, -32.391, 1, 2, -157.984;
1, 0, -0.705, 3, 0, 59.788;
3, 1, -2.340, 0, 1, 0.433;
1, 3, -0.608, 2, 2, -6.439;
0, 2, -0.008, 1, 1, -0.032;
2, 3, 0.148, 0, 4, 0.092;
0, 0, 0, 1, 4, -0.054 ];
X0 = 155000.00;
Y0 = 463000.00;
p0 = 52.15517440; \\ phi0
l0 = 5.38720621; \\ lambda0
}
RD2WGS(X,Y)={
dX = (X-X0)*10^-5;
dY = (Y-Y0)*10^-5;
s=0;
for(i=1,12, s+=(KL[i,3]*dX^KL[i,1]*dY^KL[i,2]) );
p_out=p0 + s/3600;
s=0;
for(i=1,12, s+=(KL[i,6]*dX^KL[i,4]*dY^KL[i,5]) );
l_out=l0 + s/3600;
[p_out, l_out] \\ return vector
}
WGS2RD(p,l)={
dp=0.36*(p-p0);
dl=0.36*(l-l0);
s=0;
for(i=1,10, s+=(RS[i,3]*dp^RS[i,1]*dl^RS[i,2]) );
x_out=X0 + s;
s=0;
for(i=1,10, s+=(RS[i,6]*dp^RS[i,4]*dl^RS[i,5]) );
y_out=Y0 + s;
[x_out, y_out] \\ return vector
}
\\MAIN PROGRAM:
{
\\ lees alle constanten in:
init();
\\ rekenvoorbeeld 2:
\\ Westertoren Amsterdam:
w = RD2WGS(120700.723, 487525.501);
print(w);
v = WGS2RD(w[1],w[2]);
print(v);
\\ Martinitoren Groningen:
print();
w2 = RD2WGS(233883.131, 582065.167);
print(w2);
v2 = WGS2RD(w2[1],w2[2]);
print(v2);
}
[52.3745325270, 4.88352559145]
[120700.722776, 487525.501259]
[53.2193831670, 6.56820052908]
[233883.131225, 582065.167605]
Deze getallen komen ook overeen met
https://www.gpscoordinaten.nl/convertee ... inaten.php
Heb je een voorbeeld met een te grote afwijking?
En hoe nauwkeurig wil je je omzetting hebben?