2012-09-30 3 views
1

나는 주변 관심 장소 (POI)를 표시하는 안드로이드 응용 프로그램을 디자인하고 있습니다. POI는 데이터베이스에 저장 될 것이고, 나는 가까운 POI를 효율적으로 검색하고 가장 가까운 100 개 위치의 정렬 된 목록을 검색 할 수 있기를 원합니다.지리적 위치가 포함 된 데이터베이스 설계

효율적으로 검색 할 수 있도록 데이터베이스를 어떻게 디자인해야하는지 궁금합니다. 사용해야하는 특정 SQL 형식이나 검색 속도를 높이기위한 특수 알고리즘이 있습니까? 데이터베이스에 100 개의 위치 만 있으면 문제가되지 않지만 10,000 개 이상이면 어려울 수 있습니다.

+0

[this] (http://stackoverflow.com/questions/3695224/android-sqlite-getting-nearest-locations-with-latitude-and-longitude)와 (과) 비슷한가요? – PinnyM

답변

1

좋은 다차원 색인을 사용하여 데이터베이스를 사용합니다. 이를 통해 데이터베이스는 효율적인 경계 상자 쿼리를 수행 할 수 있습니다. 경계 상자 쿼리를위한 GIST 인덱스가 있으므로 PostgreSQL을 선택하는 것이 좋습니다. MySQL과 MS SQL은 수용 가능한 기능을 가지고 있습니다.

다른 문제는 좌표계 선택입니다. GPS Lat, 긴 좌표는 각입니다. 따라서 거리 계산법을 선택하는 방법이 있습니다.

1) 모든 위도, 직교 좌표 X, Y 좌표 변환 - 이것은 작은 (미국 주) 크기의 영역에 적용됩니다. 이것은 위도, 경도 및 직교 좌표 사이에서 변환하는지도 투영 함수를 필요로합니다.

2) 호버린 식 http://www.movable-type.co.uk/scripts/latlong.html을 사용하십시오. 하지만 조심해! 색인 키는 위도, 경도에 있습니다. 이 선택에 부작용이있을 수 있습니다.

PostGIS는 PostgreSQL GIS 응용 프로그램입니다. 가장 가까운 포인트 쿼리에 대해서는 무게가 크지 만 작동합니다.

관련 문제