Postcode.nl

Zoeken van postcodes of adressen

Uw zoekopdracht
  

Voorbeeld: Zoek op adres "Plaatsnaam, straatnaam" of postcode "1234 AB"

Berekening Latitude-Longitude

De database met LatLon coördinaten is uitermate geschikt om bijvoorbeeld locaties met Google Maps te tonen. Het berekenen van afstanden is aanzienlijk moeilijker.

De afstand tussen 2 lat/lon coordinaten is als volgt te berekenen:

DEFINE (R, 6367000); // Radius of the Earth in meters

//example coordinate of neighborhood 2011 in the Netherlands (Haarlem centrum)
$lat1 = 52.3826;
$lon1 = 4.637;

//example coordinate of neighborhood 6199 in the Netherlands (Maastricht-Airport)
$lat2 = 50.9235;
$lon2 = 5.7812;

//convert degrees to radians
$lat1 = ($lat1 * pi() ) / 180;
$lon1 = ($lon1 * pi() ) / 180;
$lat2 = ($lat2 * pi() ) / 180;
$lon2 = ($lon2 * pi() ) / 180;

//Haversine Formula (see here )
$dlon = $lon2 - $lon1;
$dlat = $lat2 - $lat1;
$a = pow(sin($dlat/2), 2) + cos($lat1) * cos($lat2) * pow(sin($dlon/2), 2);
$intermediate_result = 2 * asin(min(1,sqrt($a)));
$distance = R * $intermediate_result;

echo $distance;
?>

R is een constante, te weten de straal van de Aarde. Deze is nu ingevuld in meters, als je R opgeeft in mijlen zal de uitkomst $distance ook in mijlen zijn.
$lat1 en $lon1 zijn de latitude en longitude waarden van het 1e coordinaat en $lat2 en $lon2 zijn de latitude en longitude waarden van het 2e coordinaat.
sin(), cos() en asin() [ook wel bekend als arcsin] zijn standaard trigonometrie functies welke in elke programmeertaal aanwezig zijn. Doorgaans werken ze met radialen in plaats van graden dus is er eerst een conversiestap nodig.
Tenslotte wordt de afstand berekent door middel van de Haversine Formula (hier gedocumenteerd). Deze formule werkt tevens nauwkeurig voor lat/lon coordinaten buiten Nederland.

Deze voorbeeldcode is geschreven in PHP, maar is makkelijk te vertalen naar elke gewenste taal, aangezien de gebruikte functies in elke taal aanwezig zijn.