Afstand berekenen door Coordinaten

Status
Niet open voor verdere reacties.

Jesper V

Gebruiker
Lid geworden
13 nov 2006
Berichten
31
Hallo allemaal,

Ik heb een scriptje gemaakt dat als je je postcode invoert dat je dan de woonplaats er uit krijgt en coordinaten van de plaats. Voorbeeld:

Plaats: Amsterdam
Coordinaat NB: 52.3735
Coordinaat OL: 4.89917

Nu zou ik graag een formule (php formule) willen hebben die kan berekenen hoeveel kilometer het is tussen twee plaatsen (ik kan alleen postcode invullen).

Weet iemand hoe dit moet ?

Groeten,
Jesper
 
Kan iemand misschien hierons mee helpen ?

Bedankt,
Jesper

// sorry voor de bump
 
Dat kun je berekenen met behulp van de stelling van Pythagoras:
PHP:
<?php

$ax = 5; // x-coördinaat van plaats A
$ay = 5; // y-coördinaat van plaats A
$bx = 10; // x-coördinaat van plaats B
$by = 10 // y-coördinaat van plaats B
$afstand = sqrt(pow($ax - $ax, 2) + pow($bx - $bx, 2));

?>
Ik hoop dat hij klopt, ik heb hem niet getest.

Een assenstelsel ziet er zo uit, voor als je het nog niet wist: http://hotpot.klascement.net/aanbod/groenendijk.annemieke/wiskunde/assenstelsel negatief.JPG
In dit assenstelsel is A (-5, 4) en B (2, -2).
 
Ik heb nog even gezocht en ik denk dat ik het gevonden heb. Het is een beetje ingewikkeld (ik snap het zelf ook niet voor 100%), maar ik denk dat het wel klopt:

PHP:
<?php
function distance($lat1, $lon1, $lat2, $lon2, $unit = "K") { 

    $theta = $lon1 - $lon2; 
    $dist = sin(deg2rad($lat1)) * sin(deg2rad($lat2)) +  cos(deg2rad($lat1)) * cos(deg2rad($lat2)) * cos(deg2rad($theta)); 
    $dist = acos($dist); 
    $dist = rad2deg($dist); 
    $miles = $dist * 60 * 1.1515; 
    $unit = strtoupper($unit); 

    switch($unit) { 
        case "M": 
            return $miles; 
        break; 
        case "N": 
            return ($miles * 0.8684); 
        break; 
        default: 
            return ($miles * 1.609344); 
        break; 
    } 
} 
?>
Dan kun je bijvoorbeeld zo doen:
PHP:
<?php

// Dit is de afstand tussen Amsterdam en Eindhoven
// In kilometers
print distance(52.3735, 4.89917, 51.442284, 5.484551) . " kilometer";
// In mijlen:
print distance(52.3735, 4.89917, 51.442284, 5.484551, "M") . " mijlen";
// In zeemijlen:
print distance(52.3735, 4.89917, 51.442284, 5.484551, "N") . " zeemijlen";


?>
Ik hoop dat het allemaal een beetje klopt.
 
Ik heb nog even gezocht en ik denk dat ik het gevonden heb. Het is een beetje ingewikkeld (ik snap het zelf ook niet voor 100%), maar ik denk dat het wel klopt:

PHP:
<?php
function distance($lat1, $lon1, $lat2, $lon2, $unit = "K") { 

    $theta = $lon1 - $lon2; 
    $dist = sin(deg2rad($lat1)) * sin(deg2rad($lat2)) +  cos(deg2rad($lat1)) * cos(deg2rad($lat2)) * cos(deg2rad($theta)); 
    $dist = acos($dist); 
    $dist = rad2deg($dist); 
    $miles = $dist * 60 * 1.1515; 
    $unit = strtoupper($unit); 

    switch($unit) { 
        case "M": 
            return $miles; 
        break; 
        case "N": 
            return ($miles * 0.8684); 
        break; 
        default: 
            return ($miles * 1.609344); 
        break; 
    } 
} 
?>
Dan kun je bijvoorbeeld zo doen:
PHP:
<?php

// Dit is de afstand tussen Amsterdam en Eindhoven
// In kilometers
print distance(52.3735, 4.89917, 51.442284, 5.484551) . " kilometer";
// In mijlen:
print distance(52.3735, 4.89917, 51.442284, 5.484551, "M") . " mijlen";
// In zeemijlen:
print distance(52.3735, 4.89917, 51.442284, 5.484551, "N") . " zeemijlen";


?>
Ik hoop dat het allemaal een beetje klopt.

Werkt super, dankje ;)

PHP:
<?php

// afstands functie
function afstand($lat1, $lon1, $lat2, $lon2, $unit = "K") {
      $theta = $lon1 - $lon2;
      $dist = sin(deg2rad($lat1)) * sin(deg2rad($lat2)) +  cos(deg2rad($lat1)) * cos(deg2rad($lat2)) * cos(deg2rad($theta));
      $dist = acos($dist);
      $dist = rad2deg($dist);
      $miles = $dist * 60 * 1.1515;
      $unit = strtoupper($unit);

      switch($unit) {
            case "M":
                  return $miles;
            break;
            case "N":
                  return ($miles * 0.8684);
            break;
            default:
                  return ($miles * 1.609344);
            break;
      }
}

// coördinaten Dwingeloo
$ax = 52.8338;
$ay = 6.37351;

// coördinaten Meppel
$bx = 52.6849;
$by = 6.18306;

print afstand($ax, $ay, $bx, $by) . " kilometer";

?>
 
Ik ben opzoek naar zo een database met daarin de coordinaten waar jij het over had dat je die had... kan ik die van jou krijgen???

MVG,

Remco
 
Ik ben opzoek naar zo een database met daarin de coordinaten waar jij het over had dat je die had... kan ik die van jou krijgen???

MVG,

Remco

bestaat er geen manier om aan de hand van de postcode die coördinaten te laten opzoeken ergens.
Ik gebruik deze code in een C# applicatie, en zou ook de coördinaten voor Belgische dorpen/steden nodig hebben.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan