Zoals te zien is, heb ik de taal even leeggelaten in de topictitel, want die is niet heel erg relevant in dit geval.
Op de website van NSGI (https://www.nsgi.nl/rdnaptrans) zijn de berekeningen te downloaden om om te rekenen vanaf ETRS89 naar RD.
Ik heb hier eerst geprobeerd een PHP-implementatie van variant 1 te maken. En die lijkt te werken op het probleem na dat de uitkomsten niet kloppen.
Daarna een hoop rondgezocht op internet en een implementatie is SAS gevonden. Deze heb ik toen naar PHP vertaald. En nogmaals geprobeerd en ik kwam weer op verkeerde uitkomsten uit. Nu bestaat de berekening uit meerdere stappen, waarbij ik dus niet weet in welke stap ik de fout moet zoeken.
ik ben nu dus op zoek naar iemand die me de verschillende tussenresultaten kan leveren bij een ETRS89-coördinaat.
SAS-implementatie
De gevolgde SAS-implementatie is:
https://github.com/FVelli...ain/gm_rdnaptrans2018.sas
Die schijnt correct te zijn, maar ik heb geen SAS tot mijn beschikking om daar tussenresultaten uit te halen.
Mijn controle-coördinaat
Voor mijn controle gebruik ik de eerste coördinaat in het bestand: Z001_ETRS89andRDNAP.txt
https://github.com/FVelli...n/Z001_ETRS89andRDNAP.txt
ETRS89:
lat: 51.728601274
lon: 4.712120126
hoogte: 301.7981
Verwacht resultaat:
x:108360.8790
y:415757.2745
h:258.0057
Mijn resultaat:
'gmv_RD_x_lon' => float 108360.88437748
'gmv_RD_y_lat' => float 415757.27429712
'gmv_NAP_height' => float 258.01342490227
Het gaat maar om kleine verschillen, maar de afwijking is te groot om geaccepteerd te worden als correct. Het verwachte resultaat is wat geaccepteerd wordt.
Benodigd
De resultaten van de verschillende stappen die in de pdf worden genoemd.
ik heb de namen van de waarden genomen zoals die genoemd worden in de SAS-implementatie:
2.1 Omrekenen naar radialen
Mijn resultaat:
'gmv_ETRS89_lat_rad' => float 0.90283440968263
'gmv_ETRS89_lon_rad' => float 0.08224201094819
2.2 Datum transformatie (stap 1)
'gmv_geoc_cart_ETRS89_X' => float 3945358.2222048
'gmv_geoc_cart_ETRS89_Y' => float 325207.73269047
'gmv_geoc_cart_ETRS89_Z' => float 4984189.6144722
2.2 Helbert-transformatie naar pseudo Bessel (stap 2)
'gmv_geoc_cart_ETRS89_X' => float 3945358.2222048
'gmv_geoc_cart_ETRS89_Y' => float 325207.73269047
'gmv_geoc_cart_ETRS89_Z' => float 4984189.6144722
'gmv_geog_ellips_psdo_Bessel_lat' => float 0.90285076437824
'gmv_geog_ellips_psdo_Bessel_lon' => float 0.082247920070159
2.3 Iteratieve RDcorrectie
'gmv_geog_ellips_real_Bessel_lat' => float 51.72953802384
'gmv_geog_ellips_real_Bessel_lon' => float 4.7124591666284
2.4 Omzetting naar RD
'gmv_RD_x_lon' => float 108360.88437748
'gmv_RD_y_lat' => float 415757.27429712
2.5 Hoogte-correctie
'gmv_NAP_height' => float 258.01342490227
Waarbij dus de laatste drie fout zijn.
Wie kan mij op weg helpen met de juiste tussenresultaten bij de genoemde ETRS89-coördinaten?
Zodat ik specifiek kan zoeken waar de fout zit.
Voor de compleetheid, de complete lijst met variabelen zoals die uit mijn PHP-versie van het SAS-script komen:
De waarden in de correctioncache, zijn diegene die zijn opgezocht in een mysql-db voor stap 2.3 en 2.5.
Op de website van NSGI (https://www.nsgi.nl/rdnaptrans) zijn de berekeningen te downloaden om om te rekenen vanaf ETRS89 naar RD.
Ik heb hier eerst geprobeerd een PHP-implementatie van variant 1 te maken. En die lijkt te werken op het probleem na dat de uitkomsten niet kloppen.
Daarna een hoop rondgezocht op internet en een implementatie is SAS gevonden. Deze heb ik toen naar PHP vertaald. En nogmaals geprobeerd en ik kwam weer op verkeerde uitkomsten uit. Nu bestaat de berekening uit meerdere stappen, waarbij ik dus niet weet in welke stap ik de fout moet zoeken.
ik ben nu dus op zoek naar iemand die me de verschillende tussenresultaten kan leveren bij een ETRS89-coördinaat.
SAS-implementatie
De gevolgde SAS-implementatie is:
https://github.com/FVelli...ain/gm_rdnaptrans2018.sas
Die schijnt correct te zijn, maar ik heb geen SAS tot mijn beschikking om daar tussenresultaten uit te halen.
Mijn controle-coördinaat
Voor mijn controle gebruik ik de eerste coördinaat in het bestand: Z001_ETRS89andRDNAP.txt
https://github.com/FVelli...n/Z001_ETRS89andRDNAP.txt
ETRS89:
lat: 51.728601274
lon: 4.712120126
hoogte: 301.7981
Verwacht resultaat:
x:108360.8790
y:415757.2745
h:258.0057
Mijn resultaat:
'gmv_RD_x_lon' => float 108360.88437748
'gmv_RD_y_lat' => float 415757.27429712
'gmv_NAP_height' => float 258.01342490227
Het gaat maar om kleine verschillen, maar de afwijking is te groot om geaccepteerd te worden als correct. Het verwachte resultaat is wat geaccepteerd wordt.
Benodigd
De resultaten van de verschillende stappen die in de pdf worden genoemd.
ik heb de namen van de waarden genomen zoals die genoemd worden in de SAS-implementatie:
2.1 Omrekenen naar radialen
Mijn resultaat:
'gmv_ETRS89_lat_rad' => float 0.90283440968263
'gmv_ETRS89_lon_rad' => float 0.08224201094819
2.2 Datum transformatie (stap 1)
'gmv_geoc_cart_ETRS89_X' => float 3945358.2222048
'gmv_geoc_cart_ETRS89_Y' => float 325207.73269047
'gmv_geoc_cart_ETRS89_Z' => float 4984189.6144722
2.2 Helbert-transformatie naar pseudo Bessel (stap 2)
'gmv_geoc_cart_ETRS89_X' => float 3945358.2222048
'gmv_geoc_cart_ETRS89_Y' => float 325207.73269047
'gmv_geoc_cart_ETRS89_Z' => float 4984189.6144722
'gmv_geog_ellips_psdo_Bessel_lat' => float 0.90285076437824
'gmv_geog_ellips_psdo_Bessel_lon' => float 0.082247920070159
2.3 Iteratieve RDcorrectie
'gmv_geog_ellips_real_Bessel_lat' => float 51.72953802384
'gmv_geog_ellips_real_Bessel_lon' => float 4.7124591666284
2.4 Omzetting naar RD
'gmv_RD_x_lon' => float 108360.88437748
'gmv_RD_y_lat' => float 415757.27429712
2.5 Hoogte-correctie
'gmv_NAP_height' => float 258.01342490227
Waarbij dus de laatste drie fout zijn.
Wie kan mij op weg helpen met de juiste tussenresultaten bij de genoemde ETRS89-coördinaten?
Zodat ik specifiek kan zoeken waar de fout zit.
Voor de compleetheid, de complete lijst met variabelen zoals die uit mijn PHP-versie van het SAS-script komen:
De waarden in de correctioncache, zijn diegene die zijn opgezocht in een mysql-db voor stap 2.3 en 2.5.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
| 'correctionCache' => array (size=4) 51.7375,4.7200 => array (size=3) 'LatCor' => string '0.000000320' (length=11) 'LonCor' => string '-0.000000440' (length=12) 'Height' => string '43.7790' (length=7) 51.7375,4.7400 => array (size=3) 'LatCor' => string '0.000000320' (length=11) 'LonCor' => string '-0.000000520' (length=12) 'Height' => string '43.7699' (length=7) 51.7250,4.7200 => array (size=3) 'LatCor' => string '0.000000298' (length=11) 'LonCor' => string '-0.000000414' (length=12) 'Height' => string '43.7949' (length=7) 51.7250,4.7400 => array (size=3) 'LatCor' => string '0.000000296' (length=11) 'LonCor' => string '-0.000000493' (length=12) 'Height' => string '43.7855' (length=7) 'gmv_GRS80_a' => int 6378137 'gmv_GRS80_f' => float 0.0033528106811823 'gmv_ETRS89_h0' => int 43 'gmv_epsilon_GRS80_threshold' => float 2.0E-11 'gmv_tX' => float -565.7346 'gmv_tY' => float -50.4058 'gmv_tZ' => float -465.2895 'gmv_D_dec' => float 5.3876388888889 'gmv_D_rad' => float 0.0940320375196 'gmv_alpha' => float -1.9151255475293E-6 'gmv_beta' => float 1.6036473018269E-6 'gmv_gamma' => float -9.0954585716021E-6 'gmv_delta' => float -4.07242E-6 'gmv_tX_inv' => float 565.7381 'gmv_tY_inv' => float 50.4018 'gmv_tZ_inv' => float 465.2904 'gmv_alpha_inv' => float 1.9151400919398E-6 'gmv_beta_inv' => float -1.6036279092796E-6 'gmv_gamma_inv' => float 9.0954634197389E-6 'gmv_delta_inv' => float 4.07244E-6 'gmv_B1841_a' => float 6377397.155 'gmv_B1841_f' => float 0.0033427731821748 'gmv_epsilon_B1841_threshold' => float 2.0E-11 'gmv_RD_Bessel_h0' => int 0 'gmv_phi_min' => int 50 'gmv_phi_max' => int 56 'gmv_labda_min' => int 2 'gmv_labda_max' => int 8 'gmv_phi_delta' => float 0.0125 'gmv_labda_delta' => float 0.02 'gmv_c0' => int 0 'gmv_epsilon_RD_threshold' => float 1.0E-9 'gmv_k_amersfoort' => float 0.9999079 'gmv_x0_amersfoort' => int 155000 'gmv_y0_amersfoort' => int 463000 'gmv_phi0_amersfoort' => float 0.91029672689324 'gmv_labda0_amersfoort' => float 0.0940320375196 'lmv_height_bln' => int 1 'gmv_ETRS89_lat_dec' => float 51.728601274 'gmv_ETRS89_lon_dec' => float 4.712120126 'gmv_ETRS89_height' => float 301.7981 'gmv_ETRS89_lat_rad' => float 0.90283440968263 'gmv_ETRS89_lon_rad' => float 0.08224201094819 'gmv_geoc_cart_ETRS89_X' => float 3945358.2222048 'gmv_geoc_cart_ETRS89_Y' => float 325207.73269047 'gmv_geoc_cart_ETRS89_Z' => float 4984189.6144722 'gmv_geoc_cart_RD_Bessel_X' => float 3944765.4696156 'gmv_geoc_cart_RD_Bessel_Y' => float 325182.34180738 'gmv_geoc_cart_RD_Bessel_Z' => float 4983710.9769915 'gmv_geog_ellips_psdo_Bessel_lat' => float 0.90285076437824 'gmv_geog_ellips_psdo_Bessel_lon' => float 0.082247920070159 'lmv_phi0' => float 51.729538329034 'lmv_phi' => float 51.729538329034 'lmv_phi1' => float 51.72953802384 'lmv_labda0' => float 4.7124586937494 'lmv_labda' => float 4.7124586937494 'lmv_labda1' => float 4.7124591666284 'gmv_geog_ellips_real_Bessel_lat' => float 51.72953802384 'gmv_geog_ellips_real_Bessel_lon' => float 4.7124591666284 'gmv_RD_x_lon' => float 108360.88437748 'gmv_RD_y_lat' => float 415757.27429712 'gmv_NAP_height' => float 258.01342490227 |
[ Voor 7% gewijzigd door jvdmeer op 06-08-2022 00:20 . Reden: Zag een copy-paste fout ]