집 >데이터 베이스 >MySQL 튜토리얼 >MySQL 공간 확장 및 위도/경도를 사용하여 원 내에서 점을 선택하는 방법은 무엇입니까?
MySQL 공간 확장: 위도/경도를 기준으로 원 내 지점 선택
배경:
MySQL은 공간 확장을 사용하여 지리공간 데이터를 저장할 수 있습니다. 이를 통해 점, 선, 다각형을 포함한 공간 객체를 효율적으로 쿼리하고 조작할 수 있습니다. 일반적인 작업 중 하나는 주어진 위치에서 지정된 반경 내의 지점을 선택하는 것입니다.
지리 공간 확장 사용:
이 작업을 수행하기 위해 MySQL은 버퍼를 포함한 여러 지리 공간 기능을 제공합니다. ()는 점이나 선 주위에 완충 구역을 생성합니다. 그러나 MySQL은 기본적으로 위도와 경도를 기반으로 한 근접성 계산을 지원하지 않는다는 점에 유의하는 것이 중요합니다.
대체 접근 방식:
다음을 기반으로 원 내 지점을 결정하려면 위도와 경도에 대해서는 다른 접근 방식이 필요합니다. Great Circle Distance 공식은 지구 표면의 두 지점 사이의 거리를 계산하는 데 사용할 수 있습니다. 이는 지정된 반경 내의 지점을 필터링하기 위해 MySQL 쿼리에 통합될 수 있습니다.
샘플 쿼리:
다음 쿼리는 Great Circle Distance 공식을 사용하여 다음을 수행하는 방법을 보여줍니다. 주어진 위도와 경도에서 반경 100미터 내의 플래그를 선택합니다.
SELECT id, coordinates, name, r, units * DEGREES(ACOS(LEAST(1.0, COS(RADIANS(latpoint)) * COS(RADIANS(latitude)) * COS(RADIANS(longpoint) - RADIANS(longitude)) + SIN(RADIANS(latpoint)) * SIN(RADIANS(latitude))))) AS distance FROM flags JOIN ( SELECT 42.81 AS latpoint, -70.81 AS longpoint, 10.0 AS r, 69.0 AS units ) AS p ON (1=1) WHERE MbrContains(GeomFromText ( CONCAT('LINESTRING(', latpoint-(r/units),' ', longpoint-(r /(units* COS(RADIANS(latpoint)))), ',', latpoint+(r/units) ,' ', longpoint+(r /(units * COS(RADIANS(latpoint)))), ')')), coordinates)
이 쿼리에서 latpoint 및 longpoint 매개변수는 사용자의 위치를 나타냅니다. r 및 단위 매개변수는 반경(미터)과 위도당 거리 단위를 지정합니다.
추가 고려 사항:
이 접근 방식을 따르면 위도와 위치를 기준으로 원 내 지점을 효과적으로 선택할 수 있습니다. MySQL 공간 확장을 사용하여 위치 기반 애플리케이션을 생성할 수 있습니다.
위 내용은 MySQL 공간 확장 및 위도/경도를 사용하여 원 내에서 점을 선택하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!