Pagina 1 van 1

Formule omdraaien!

Geplaatst: 11 nov 2017, 09:48
door Dusty
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))

Re: Formule omdraaien!

Geplaatst: 11 nov 2017, 11:32
door arie
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?

Re: Formule omdraaien!

Geplaatst: 12 nov 2017, 18:35
door Dusty
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.

Re: Formule omdraaien!

Geplaatst: 12 nov 2017, 18:49
door Dusty
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!

Geplaatst: 15 nov 2017, 08:08
door arie
Controleer je constanten nog even:
(die -144.221 moet in ieder geval -114.221 zijn):
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))
Met deze Pari/GP code krijg ik in ieder geval dezelfde antwoorden als in Rekenvoorbeeld 2:

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);
}
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?