puntos postales postal por mexico mapa google entre distancias distancia codigos codigo calcular buscar argentina php mysql algorithm math distance
https://www.zipcodeapi.com/API#distance

por - Cálculo de distancia entre códigos postales en PHP



distancias por codigo postal (5)

Consulte la fórmula de Haversine para calcular distancias de círculo grandes entre dos puntos. Algunas muestras más se pueden encontrar here

Fórmula Haversine:

  • R = radio de la tierra (radio medio = 6,371 km)
  • Δlat = lat2- lat1
  • Δlong = long2- long1
  • a = sin² (Δlat / 2) + cos (lat1) .cos (lat2) .sin² (Δlong / 2)
  • c = 2.atan2 (√a, √ (1-a))
  • d = Rc

(Tenga en cuenta que los ángulos deben estar en radianes para pasar a las funciones trigonométricas).

Agarré una base de datos de los códigos postales y sus langitudes / latitudes, etc. desde esta página . Tiene los siguientes campos:

ZIP, LATITUDE, LONGITUD, CIUDAD, ESTADO, CONDADO, ZIP_CLASS

Los datos estaban en un archivo de texto, pero lo inserté en una tabla MySQL. Mi pregunta ahora es, ¿cómo puedo utilizar los campos anteriores para calcular la distancia entre dos códigos postales que un usuario puede ingresar en el sitio web? Código de trabajo en PHP será apreciado


En su tabla comprimida, necesita tomar las coordenadas (lat, long) para los dos puntos para los que desea obtener la distancia.

A continuación, puede calcular la distancia a la derecha en el SQL o con PHP. Ambos métodos se describen en esta publicación:

http://dev.strategystar.net/2011/10/mysql-php-get-distance-between-two-coordinates-in-miles-kilometers/

El cálculo en el ejemplo se basa en la fórmula ya discutida en este hilo. Proporciona el radio de la Tierra en millas y kilómetros por lo que le permitirá obtener la distancia entre dos puntos en ambas unidades.

El enlace anterior es excelente porque el método de cálculo no incluye ningún número mágico, ¡solo el radio de la tierra!


Esta es la respuesta de Mike con algunas anotaciones para los números mágicos . Me pareció que funcionaba bien para algunos datos de prueba :

function calc_distance($point1, $point2) { $radius = 3958; // Earth''s radius (miles) $deg_per_rad = 57.29578; // Number of degrees/radian (for conversion) $distance = ($radius * pi() * sqrt( ($point1[''lat''] - $point2[''lat'']) * ($point1[''lat''] - $point2[''lat'']) + cos($point1[''lat''] / $deg_per_rad) // Convert these to * cos($point2[''lat''] / $deg_per_rad) // radians for cos() * ($point1[''long''] - $point2[''long'']) * ($point1[''long''] - $point2[''long'']) ) / 180); return $distance; // Returned using the units used for $radius. }


Se puede hacer con solo matemáticas ...

function calc_distance($point1, $point2) { $distance = (3958 * 3.1415926 * sqrt( ($point1[''lat''] - $point2[''lat'']) * ($point1[''lat''] - $point2[''lat'']) + cos($point1[''lat''] / 57.29578) * cos($point2[''lat''] / 57.29578) * ($point1[''long''] - $point2[''long'']) * ($point1[''long''] - $point2[''long'']) ) / 180); return $distance; }