/ / Codes postaux canadiens Radius - php, mysql, code postal

Codes postaux canadiens Radius - php, mysql, code postal

J'utilise le script suivant que j'ai trouvé sur le net pour récupérer tous les codes postaux entre les coordonnées d'un ensemble donné.

En l'utilisant, je crains que, lorsque certains codes postaux saisis soient supérieurs à la distance entrée; pas beaucoup - environ 20 km de distance.

function GetPostalCodes($latitude, $longitude, $range) {
$radius = 3959;
$north = rad2deg(asin(sin(deg2rad($latitude)) * cos($range / $radius) + cos(deg2rad($latitude)) * sin($range / $radius) * cos(deg2rad(0))));
$south = rad2deg(asin(sin(deg2rad($latitude)) * cos($range / $radius) + cos(deg2rad($latitude)) * sin($range / $radius) * cos(deg2rad(180))));
$east = rad2deg(deg2rad($longitude) + atan2(sin(deg2rad(90)) * sin($range / $radius) * cos(deg2rad($latitude)), cos($range / $radius) - sin(deg2rad($latitude)) * sin(deg2rad($north))));
$west = rad2deg(deg2rad($longitude) + atan2(sin(deg2rad(270)) * sin($range / $radius) * cos(deg2rad($latitude)), cos($range / $radius) - sin(deg2rad($latitude)) * sin(deg2rad($north))));
$return = DBSelectAllArrays("SELECT postal FROM postalcodes WHERE (latitude <= $north AND latitude >= $south AND longitude <= $east AND longitude >= $west)");
krsort($return);
if (empty($return)) return false;
return $return;
}

Y a-t-il quelque chose qui me manque pour obtenir un résultat plus précis?

Réponses:

0 pour la réponse № 1

Compte tenu de vos commentaires:

$radius = 6371.0; // mean radius of Earth in km

C’est tiré de wikipedia, mais je l’ai vu dans une tolérance de +/- 3 km d’autres sources J'ai commencé à me demander si vous utilisiez grande distance de cercle calculs, mais ceci est plus important pour la précision sur de longues distances en raison de la courbure de la surface de la terre.


0 pour la réponse № 2

Tim, vous avez commencé par utiliser un cadre de sélection(rectangle) et ensuite avec la formule Haversine, vous obtiendrez un rayon (cercle), ce qui est généralement beaucoup mieux si vous voulez juste les gens à une certaine distance. Pour les personnes qui peuvent se déplacer jusqu’à une certaine distance, pensez aux zones métropolitaines, dont la forme varie. Données sur les régions métropolitaines du Canada