> 데이터 베이스 > MySQL 튜토리얼 > MySQL 공간 확장을 사용하여 원 내에서 점을 어떻게 찾을 수 있습니까?

MySQL 공간 확장을 사용하여 원 내에서 점을 어떻게 찾을 수 있습니까?

DDD
풀어 주다: 2025-01-06 12:27:41
원래의
743명이 탐색했습니다.

How Can I Find Points Within a Circle Using MySQL Spatial Extensions?

MySQL 공간 확장을 사용하여 원 내 지점 찾기

배경

MySQL 공간 확장을 사용하면 사용자는 MySQL 데이터베이스에 저장된 공간 데이터를 조작하고 분석합니다. 일반적인 작업 중 하나는 주어진 원 내에 위치한 점을 식별하는 것입니다. 이 시나리오는 위치 기반 서비스 및 지리 공간 분석과 같은 애플리케이션에서 자주 발생합니다.

위도 및 경도에 대한 MySQL 거리 함수 사용

사용되지 않는 정보:

처음에는 MySQL 공간 확장이 위도 및 위도를 지원하지 않는다는 질문이 있었습니다. 경도 거리 계산. 그러나 이 정보는 오래된 정보입니다. MySQL 5.7부터 공간 확장은 위도 및 경도 좌표를 사용하여 정의된 점 간의 유클리드 거리 계산을 지원합니다.

구현 예

MySQL 공간을 사용하여 원 내 점을 선택하려면 확장을 사용하려면 ST_Distance() 함수를 사용할 수 있습니다. 이 함수는 두 지점 사이의 거리를 미터 단위로 계산합니다. 사용자 위치 주변에 반경 100미터의 가상 원을 생성하고 '플래그' 좌표와 원 중심 사이의 거리가 이 반경 내에 있는지 확인하면 원 내의 지점을 필터링할 수 있습니다.

다음은 샘플 쿼리입니다.

SELECT id, name, ST_Distance(coordinates, ST_PointFromGeoJSON('{ "type": "Point", "coordinates": [<user_longitude>, <user_latitude>] })) AS distance_in_meters
FROM flags
HAVING distance_in_meters <= 100
ORDER BY distance_in_meters ASC;
로그인 후 복사

이 쿼리는 100미터 반경 원 내의 모든 '플래그'를 검색합니다. 사용자 위치.

추가 참고 사항:

  • SHOW VARIABLES에 '공간' 항목이 있는지 확인하여 MySQL 버전이 공간 확장을 지원하는지 확인하세요. 출력.
  • 공간 인덱스는 공간 작업에 대한 쿼리 성능을 크게 향상시킬 수 있습니다. '좌표' 열에 공간 인덱스를 생성하는 것을 고려해 보세요.
  • 유클리드 거리 계산이 아닌 더 복잡한 시나리오의 경우 구형 계산을 지원하는 추가 도구나 외부 라이브러리를 사용해야 할 수도 있습니다.

위 내용은 MySQL 공간 확장을 사용하여 원 내에서 점을 어떻게 찾을 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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