>데이터 베이스 >MySQL 튜토리얼 >좌표를 사용하여 반경 5마일 내의 건물을 찾는 방법은 무엇입니까?

좌표를 사용하여 반경 5마일 내의 건물을 찾는 방법은 무엇입니까?

DDD
DDD원래의
2025-01-09 11:37:43736검색

How to Find Buildings Within a 5-Mile Radius Using Coordinates?

좌표를 통해 반경 5마일 이내의 건물 찾기

이 가이드에서는 주어진 좌표에서 반경 5마일 내의 모든 건물을 효율적으로 검색하는 방법을 자세히 설명합니다.

1단계: 데이터 저장 최적화

지오메트리 또는 지리 데이터 유형을 사용하여 건물 위치 데이터를 저장합니다. 이를 통해 공간 쿼리 성능이 크게 향상되고 데이터 유형 변환 문제가 방지됩니다.

2단계: ST_DWithin 또는 ST_Distance 사용

거리 계산을 용이하게 하는 두 가지 기능:

  1. ST_DWithin: 이 함수는 도형이 지정된 거리 내에 있는지 효율적으로 결정합니다. (-4.6314, 54.0887)에서 5마일 이내의 건물을 찾으려면:

    <code class="language-sql">SELECT name, longitude, latitude
    FROM building
    WHERE ST_DWithin('POINT(-4.6314 54.0887)'::geography, ST_MakePoint(longitude, latitude), 8046.72);
    -- 8046.72 meters = 5 miles</code>
  2. ST_Distance: 이 함수는 거리를 미터 단위로 계산합니다. distance * 0.000621371을 사용하여 미터를 마일로 변환합니다. (-4.6314, 54.0887)로부터 5마일 이내에 있는 건물의 경우:

    <code class="language-sql">SELECT name, longitude, latitude,
    ST_Distance('POINT(-4.6314 54.0887)'::geography, ST_MakePoint(longitude, latitude)) * 0.000621371 AS distance_miles
    FROM building
    WHERE distance_miles <= 5;</code>

3단계: 주요 고려사항

  • ST_MakePoint에서 경도, 위도의 올바른 순서를 유지하세요.
  • ST_Distance 계산은 공간 인덱스를 우회합니다. 성능 병목 현상을 방지하려면 SELECT 절에 사용하세요.
  • Amazon Athena는 ST_Distance의 거리 계산에 각도를 사용합니다.

위 내용은 좌표를 사용하여 반경 5마일 내의 건물을 찾는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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