Formule omdraaien!

Wiskunde is niet alleen een vak op school. Kom je ergens in de praktijk (bijvoorbeeld tijdens je werk) een wiskundig probleem tegen dan kun je hier om hulp vragen.

Formule omdraaien!

Berichtdoor Dusty » 11 Nov 2017, 09:48

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))
Dusty
Nieuw lid
Nieuw lid
 
Berichten: 3
Geregistreerd: 11 Nov 2017, 09:41

Re: Formule omdraaien!

Berichtdoor arie » 11 Nov 2017, 11:32

Zie http://home.solcon.nl/pvanmanen/Download/Transformatieformules.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?
arie
Moderator
Moderator
 
Berichten: 2946
Geregistreerd: 09 Mei 2008, 09:19

Re: Formule omdraaien!

Berichtdoor Dusty » 12 Nov 2017, 18:35

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.
Dusty
Nieuw lid
Nieuw lid
 
Berichten: 3
Geregistreerd: 11 Nov 2017, 09:41

Re: Formule omdraaien!

Berichtdoor Dusty » 12 Nov 2017, 18:49

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?
Dusty
Nieuw lid
Nieuw lid
 
Berichten: 3
Geregistreerd: 11 Nov 2017, 09:41

Re: Formule omdraaien!

Berichtdoor arie » 15 Nov 2017, 08:08

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: Alles selecteren
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/converteer-rd-coordinaten.php


Heb je een voorbeeld met een te grote afwijking?
En hoe nauwkeurig wil je je omzetting hebben?
arie
Moderator
Moderator
 
Berichten: 2946
Geregistreerd: 09 Mei 2008, 09:19


Terug naar Praktijkproblemen

Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers en 4 gasten

Wie is er online?

Er zijn in totaal 4 gebruikers online :: 0 geregistreerd, 0 verborgen en 4 gasten (Gebaseerd op de gebruikers die actief waren gedurende 5 minuten)
De meeste gebruikers ooit tegelijkertijd online was 649 op 31 Okt 2014, 18:45

Gebruikers in dit forum: Geen geregistreerde gebruikers en 4 gasten
Copyright © 2009 Afterburner - Free GPL Template. All Rights Reserved.