문제

PHP를 서버 스크립팅 언어로, MySQL을 Databse로 사용하여 GEO 근접 검색 기능을 사용하여 응용 프로그램을 작성하고 있습니다.

상황을 고려하십시오 :

여기서 우리는 위도 및 경도 위치를 갖는 특정 물체 세트가 각각의 객체와 함께 보입니다. KM의 범위/반경과 함께 국가 및/또는 도시와 같은 위치 세부 사항을 지정할 때 MySQL 쿼리를 사용하여 반경/범위와 함께 놓인 객체를 얻습니다.

SELECT [columns] 
FROM [column] 
WHERE 1=1 
AND 3963.191 * 
    ACOS(
    (SIN(PI() * [latitude] / 180) * SIN(PI() * [column].latitude / 180)) + 
    (COS(PI() * [latitude] /180) * cos(PI() * [column].latitude / 180) * COS(PI() * [column].longitude / 180 - PI() * [longitude] / 180)) ) 
    <= 10

위의 계산은 지구의 국가/도심 지점에서 10km 지역 내에있는 물체를 제공합니다.

이제이 10km 지역에 있지 않고 지구의 국가/도심 지점에서 15km 떨어진 곳에있는 물체 (위도와 경도)가 하나 있다고 가정합니다. 이 개체에는 서비스 범위가 10km입니다 (최대 10km의 서비스 제공).

이제 문제는 국가/도심 지점에서 10km 범위 내의 물체를 찾고 있다면 서비스 범위가 10km 인 물체 (국가/도심 지점을 제외하고)도 검색에 포함되어야합니다.

어떻게 가능하게 할 수 있습니까? 나는 국가/도심 위도, 긴 좌표, 범위/반경 (객체를 찾아야 함)과 전달 반경 (EG10 km)과 해당 좌표가있는 물체가 있습니다.

PHP, MySQL을 사용하여 수행하는 방법을 안내해 주시겠습니까?

도움이 되었습니까?

해결책

MySQL 공간 확장을 사용하십시오http://dev.mysql.com/doc/refman/5.1/en/spatial-extensions.html

반면에, 주어진 하나와 교차하는 다른 원을 식별하고 싶다면 원의 중심 사이의 거리는 반경의 합계보다 적습니다. 다시 말해, 원래 포인트와 범위가 트리플에 의해 주어 졌다고 가정합니다 (엑스0,와이0,아르 자형0), 당신은 모두가 필요합니다 (엑스N,와이N,아르 자형N)

√((엑스0 - 엑스N)² + (와이0 - 와이N)²) ≤ 아르 자형0 + 아르 자형N

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top