문제

나는 우편 번호 데이터베이스와 그들의 랑지병/위도 등을 가져 왔습니다.이 페이지. 다음 분야가 있습니다.

지퍼, 위도, 경도, 도시, 주, 카운티, zip_class

데이터는 텍스트 파일에 있었지만 MySQL 테이블에 삽입했습니다. 내 질문은 이제 위의 필드를 사용하여 사용자가 웹 사이트에 입력 할 수있는 두 개의 우편 번호 사이의 거리를 계산할 수있는 방법입니다. PHP의 작업 코드에 감사드립니다

도움이 되었습니까?

해결책

당신은 또한 거리를 계산하기 위해 웹 서비스를 치는 것도 시도 할 수 있습니다. 다른 사람이 무거운 리프팅을하게하십시오.

https://www.zipcodeapi.com/api#distance

다른 팁

이것은 Mike의 답변입니다. 마법 번호. 그것은 나를 위해 잘 작동하는 것 같았습니다 일부 테스트 데이터:

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.
}

수학만으로 수행 할 수 있습니다 ...

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;
}

확인하십시오 Haversine 공식 두 지점 사이의 큰 원 거리를 계산합니다. 더 많은 샘플을 찾을 수 있습니다 여기

Haversine 공식 :

  • r = 지구 반경 (평균 반경 = 6,371km)
  • Δ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

(각도는 트리그 함수로 전달하려면 라디안에 있어야합니다).

지퍼 테이블에서는 거리를 얻고 싶은 두 지점의 좌표 (LAT, Long)를 가져와야합니다.

그런 다음 SQL에서 오른쪽 거리를 계산하거나 PHP로 계산할 수 있습니다. 두 방법 모두이 게시물에 요약되어 있습니다.

http://dev.strategystar.net/2011/10/mysql-php-get-distance-betwo-coordinates-inmiles-kilometers/

이 예제의 계산은이 스레드에서 이미 논의 된 공식을 기반으로합니다. 마일과 킬로미터 모두에서 지구의 반경을 제공하므로 두 단위에서 두 지점 사이의 거리를 얻을 수 있습니다.

계산 방법에는 지구의 반경 만 포함되지 않기 때문에 위의 링크는 훌륭합니다!

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top