>데이터 베이스 >MySQL 튜토리얼 >MySQL에서 위도와 경도를 사용하여 두 점 사이의 거리를 계산하는 방법은 무엇입니까?

MySQL에서 위도와 경도를 사용하여 두 점 사이의 거리를 계산하는 방법은 무엇입니까?

Linda Hamilton
Linda Hamilton원래의
2024-12-18 12:05:20610검색

How to Calculate the Distance Between Two Points Using Latitude and Longitude in MySQL?

MySQL에서 위도와 경도를 사용하여 두 점 사이의 거리 계산

위도와 경도를 고려하여 두 점 사이의 거리를 결정하기 위해 MySQL은 다음을 제공합니다. 강력한 공식. 이 시나리오에서는 한 명의 사용자가 도시 3에 위치하고 있으며 도시 7과 같은 다른 도시의 사용자까지의 거리를 찾으려고 합니다.

해결책은 다음 쿼리를 활용하는 것입니다.

SELECT a.city AS from_city, b.city AS to_city, 
   111.111 *
    DEGREES(ACOS(LEAST(1.0, COS(RADIANS(a.Latitude))
         * COS(RADIANS(b.Latitude))
         * COS(RADIANS(a.Longitude - b.Longitude))
         + SIN(RADIANS(a.Latitude))
         * SIN(RADIANS(b.Latitude))))) AS distance_in_km
  FROM city AS a
  JOIN city AS b ON a.id <> b.id
 WHERE a.city = 3 AND b.city = 7

이 쿼리는 구면의 두 점 사이의 거리를 킬로미터 단위로 계산하는 구면 코사인 법칙 공식을 사용합니다. 테이블 자체를 결합하여 계산을 위해 두 개의 좌표 쌍을 검색할 수 있습니다.

이 쿼리의 결과는 도시 3과 도시 7 사이의 거리를 킬로미터 단위로 제공합니다. 법정 마일 단위의 거리를 얻으려면 상수 111.1111을 69.0으로 바꾸면 됩니다.

가까운 지점을 효율적으로 찾으려면 ST_Distance_Sphere 함수를 사용하는 것이 좋습니다.

select ST_Distance_Sphere(
    point(-87.6770458, 41.9631174),
    point(-73.9898293, 40.7628267)) 

또는 경계 상자 계산을 통해 다음을 수행할 수 있습니다. 검색을 더욱 최적화하기 위해 사용됩니다.

위 내용은 MySQL에서 위도와 경도를 사용하여 두 점 사이의 거리를 계산하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.