Beheerder |
|
Beste, ik heb onderstaande functie gemaakt welke de Bessel formule moet voorstellen. Deze formule zou op de millimeter nauwkeurig een afstand kunnen bepalen. Echter kom ik op een verschil van ~ 1 km
Ziet iemand de fout?
$aLiefhebberLat = 523946.4;
$aLiefhebberLong = 053623.7;
// Beoogd 278.412 en ik krijg 278.693
$aLosplaatsLat = 502707.4;
$aLosplaatsLong = 034331.2;
// omrekeningen naar boog
$aLiefhebberLat = 52 + (39/60) + (46.4/3600);
$aLiefhebberLong = 5 + (36/60) + (23.7/3600);
// omrekeningen naar boog
$aLosplaatsLat = 50 + (27/60) + (7.4/3600);
$aLosplaatsLong = 3 + (43/60) + (31.2/3600);
function afstand ( $long1, $lat1, $long2, $lat2 ) {
$k1 = pi() / 180;
$f1 = 0.99664718933525;
$b1 = 6378137;
$e1 = 6.7394967422767E-03;
$b2 = ($lat1 + $lat2) / 2;
$l1 = ($long2 - $long1);
$n1 = pow($e1 * cos($b2 * $k1), 2);
$v1 = pow((1 + $n1), 0.5);
$v2 = $b1 / $v1;
$l2 = $l1 * $v1;
$w1 = atan($f1 * tan ( $lat1 * $k1 ));
$w2 = atan($f1 * tan ( $lat2 * $k1 ));
$s1 = sin($w1) * sin($w2) + cos($w1) * cos($w2) * cos($l2 * $k1);
$afstand = ( atan(-$s1 / sqrt(-$s1 * $s1 + 1 ) ) + 2 * atan( 1 ) ) * $v2;
return $afstand;
}
$aLiefhebberLat = 523946.4; $aLiefhebberLong = 053623.7; // Beoogd 278.412 en ik krijg 278.693 $aLosplaatsLat = 502707.4; $aLosplaatsLong = 034331.2; // omrekeningen naar boog $aLiefhebberLat = 52 + (39/60) + (46.4/3600); $aLiefhebberLong = 5 + (36/60) + (23.7/3600); // omrekeningen naar boog $aLosplaatsLat = 50 + (27/60) + (7.4/3600); $aLosplaatsLong = 3 + (43/60) + (31.2/3600); function afstand ( $long1, $lat1, $long2, $lat2 ) { $f1 = 0.99664718933525; $b1 = 6378137; $e1 = 6.7394967422767E-03; $b2 = ($lat1 + $lat2) / 2; $l1 = ($long2 - $long1); $n1 = pow($e1 * cos($b2 * $k1), 2); $v1 = pow((1 + $n1), 0.5); $v2 = $b1 / $v1; $l2 = $l1 * $v1; $w1 = atan($f1 * tan ( $lat1 * $k1 )); $w2 = atan($f1 * tan ( $lat2 * $k1 )); $afstand = ( atan(-$s1 / sqrt(-$s1 * $s1 + 1 ) ) + 2 * atan( 1 ) ) * $v2; return $afstand; }
|