2017-01-05 1 views
-1

그래서 나는 십진법의 경도와 위도를 이해하려고 노력하고 있으며, 어떻게 계량화되고 있는지 궁금해하고 있습니다. Long Lat Finder 을 사용했지만이 두 값을 계량화하는 방법을 이해할 수 없습니다.데이터베이스 쿼리를 사용하여 장거리가 범위 내에 있는지 확인하는 방법은 무엇입니까?

목표는 long-lat A를 사용합니다 (예 : (37.349852, -122.023752)). < = 및> = 1을 사용하여 1 마일 거리 내에있는 모든 long-lats를 가져 오는 데이터베이스 쿼리를 설계하고 싶습니다. long 값과 lat 값을 비교합니다. 이것이 가능한가?

편집 : 궁극적으로 데이터베이스 레벨에서 장거리를 비교하는 효율적인 알고리즘을 설계하여 현재 위치에서 현재 위치에서 1 마일 떨어진 위치에 마커 만 식별되도록하십시오. 데이터베이스에서 1000 초의 long-lats를 상상해보십시오. 검색 범위를 좁히는 방법을 결정하여 계산 거리가 X 마일 떨어진 마커를 결정하는 데 비용이 많이 들지 않도록하십시오.

+0

"1 마일"값을 long/lat로 변환해야합니다. 여기 [here] (http://stackoverflow.com/a/1253545/515948)에서 설명한 것과 같습니다. –

+1

[다음 작업에 대한 간단한 계산 lat/lon + km 거리?] (http://stackoverflow.com/questions/1253499/simple-calculations-for-working-with-lat-lon-km-distance) –

+0

안녕하세요, 단순히 계산하지 않으려 고합니다. 여기 거리. 내 전반적인 목표는 내 데이터베이스에 1000 초 (또는 수백만)의 long-lats가 주어 졌으므로 거리 방정식이 모든 단일 장거리와 사용자의 현재 위치 사이에서 계산되지 않도록 검색 범위를 좁히는 방법이 있습니까? 100,000 개가 저장되어있는 데이터베이스에서 긴 부분의 중요한 부분 집합을 걸러내는 방법은 1000 개 또는 무언가 사이의 거리를 계산하는 것입니까? – btramisetty

답변

0

"반경"을 사용하는 대신 "사각형"경계를 사용하여 결과를 제한하십시오. 옆면이 A 인 직사각형의 경우 이 원하는 거리 인 경우 longlat의 모든 점은 A/(2*R)보다 센터의 long과 lat에 더 가깝습니다 (이 수식에 라디안이 있으므로이 값을 변환해야 함). 직사각형에 속한다. R은 지구 반경입니다. 이 필터는 전체 스캔에 대해 최소 및 최대 각도를 한 번만 계산해야하며 위도/경도의 인덱스를 활용할 수 있습니다.

원하는 경우 첫 번째 필터에서 반환 한 점의 중심으로부터의 거리를 계산하여 주어진 "반경"/ 거리의 점만 필터링 할 수 있습니다. 이 방법을 사용하면 사각형으로 묶인 점에 대해서만 거리를 계산합니다. 이렇게하면 거리 계산이 ~ 1000 배로 제한됩니다.

개선 사항은 두 개의 정사각형을 사용할 수 있습니다. 하나는 바깥 쪽 원, 하나는 원으로 경계를 이루는 것입니다. 내부 사각형의 점은 "양호"합니다. 두 개의 사각형 사이의 범위에있는 점에 대해서만 중심까지의 거리를 계산합니다. 이 향상으로 거리 계산을 10-100 배로 제한 할 수 있습니다.

관련 문제