> 백엔드 개발 > PHP 튜토리얼 > MySQL만 사용하여 Great Circle Distance를 어떻게 계산할 수 있습니까?

MySQL만 사용하여 Great Circle Distance를 어떻게 계산할 수 있습니까?

Susan Sarandon
풀어 주다: 2024-12-26 14:18:11
원래의
561명이 탐색했습니다.

How Can I Calculate Great Circle Distance Using Only MySQL?

MySQL Great Circle Distance(Haversine Formula)

이 기사에서는 MySQL만을 사용하여 두 지리적 좌표 사이의 대권 거리를 계산하는 문제를 다룹니다. . 여러 SQL 쿼리와 복잡한 계산이 포함된 기존 PHP 구현은 번거로울 수 있습니다.

솔루션

PHP 코드를 순수 MySQL로 변환하기 위해 Haversine 공식을 활용합니다. , 구 위의 두 점 사이의 거리를 계산하는 수학 방정식입니다. 이 공식은 MySQL ACOS() 및 RADIANS() 함수에서 지원됩니다.

해당 MySQL 쿼리는 다음과 같습니다.

SELECT id, (
  3959 * ACOS(
    COS(RADIANS(37)) * COS(RADIANS(lat))
    * COS(RADIANS(lon) - RADIANS(-122)) + SIN(RADIANS(37)) * SIN(RADIANS(lat))
  )
) AS distance
FROM markers
HAVING distance < 25
ORDER BY distance
LIMIT 0, 20;
로그인 후 복사

설명

  • 쿼리는 마커로부터 ID와 계산된 거리를 선택합니다. table.
  • ACOS() 함수는 두 점 사이의 각도를 계산한 다음 3959(지구 반경(마일 단위), 6371(킬로미터 단위))을 곱합니다.
  • RADIANS() 함수는 좌표를 라디안으로 변환합니다.
  • HAVING 절은 거리가 25보다 작은 결과를 필터링합니다. 마일(또는 킬로미터).
  • ORDER BY 절은 결과를 거리별로 오름차순으로 정렬합니다.
  • LIMIT 절은 결과 수를 20으로 제한합니다.

이 MySQL 기반 접근 방식을 사용하면 외부 PHP 계산이나 추가 SQL 없이도 좌표 간 원거리를 효율적으로 계산할 수 있습니다. 쿼리합니다.

위 내용은 MySQL만 사용하여 Great Circle Distance를 어떻게 계산할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿