2012-01-26 2 views
1

나는 사용자를 추적하고 실시간으로 위치를 표시하는 Android 앱을 만들고 있습니다. 나는 그것을 작동 시키지만 데이터베이스에 좌표를 올바르게 저장하는 데 문제가 있습니다. 현재 사용자 위치는 1 초마다 업데이트되고 데이터베이스에 위치를 저장 한 다음 웹 응용 프로그램은 데이터베이스에서 가장 최근 위치를 가져옵니다. 특정 사용자의 위치 목록을 한 행에 저장할 수 있기를 원합니다. MySQL에서 GeoSpatial에 대한 정보를 읽었습니다. 선 스트링 데이터 유형이 작동한다고 생각하지만 PHP로 쿼리를 구현하는 방법에 대한 충분한 정보를 찾지 못하는 것 같습니다. 누군가가 PHP를 사용하여 선 스트링 유형으로 데이터베이스에 좌표를 추가하는 방}을 제공 할 수 있습니까? 또는 한 행의 데이터베이스를 사용하여 좌표를 지속적으로 저장하는 방법에 대한 제안을 제공하십시오.여러 GPS 좌표를 MySQL에 저장 중

감사

은 GPS 좌표
+1

입니다, 대신 더 빠른 속도로 데이터를 변경하기위한 최적화 된 MySQL의되는 NoSQL의 사용을 고려 웹 규모. 예 : http://www.mongodb.org/display/DOCS/Geospatial+Indexing – dkamins

+0

@dkamins에서 MySQL은이 간단한 작업에 적합합니다. – Brad

+0

@Brad MySQL 처리 "사용자의 위치가 매 초마다 업데이트됩니다"는 확장되지 않습니다. – dkamins

답변

2

사용자가 위치한 각 지점을 ID와 타임 스탬프와 함께 테이블에 저장하기 만하면됩니다. 그런 다음 쿼리로 포인트를 조합 할 수 있습니다.

한 행에 전체 트랙을 저장하지 마십시오. 그렇지 않으면 나중에 데이터를 많이 처리 할 수 ​​없습니다.

편집 : 여기에 테이블의 모양은 다음과 같습니다

gps_points

  • ID (BIGINT)
  • USER_ID (int)를
  • 타임 스탬프 (타임 스탬프 또는 날짜에 따라 당신의 필요)
  • lat (double)
  • lon (double)
+0

각 사용자마다 새 테이블을 만드시겠습니까? – mkyong

+2

@Alex : 아니요! 예를 들어 'udid'와 같은 사용자 색인을 추가하십시오. – konsolenfreddy

0

는 X, Y 및 Z의 실수 값 (본질적 스트링 데이터 유형을 위해 무엇 임) 곡선을 보간 점없는 세트의 집합이다. 그래서 저는 타임 스탬프와 같은 추가 정보로 3 개의 플로트 컬럼에 포인트를 저장합니다. 필요한 경우 나중에 주어진 데이터에서 선 스트링을 추정하여 맵에 표시 할 수 있습니다.

-1

내 경험에 따르면 UTM 형식은 직교 이후 데이터베이스에 저장하기가 쉽고 구문이 매우 편리합니다. 그리고 한 줄의 줄에도 적합합니다. 당신은 정보를 쉽게 GPS 여기 UTM 사이에 변환하는 편리한 클래스를 찾을 수 있습니다 :이 접선의 비트가

http://www.ibm.com/developerworks/java/library/j-coordconvert/index.html

+0

UTM을 사용해야하는 이유는 무엇입니까? 변환의 정확성을 잃어 버리고 DB에 더 많은 공간을 낭비하게됩니다. – Brad

+0

@Brad 대부분의 응용 프로그램에 충분할 정도로 평방 미터라고 할 수있는 사전 설정을 설정할 수 있습니다. GPS는 어쨌든 그 정도의 정밀도를 제공하는 경우는 거의 없습니다. 또한 문자열을 데이터베이스의 기본 ID 또는 ID로 사용할 수 있습니다. 그리고 직각 좌표가 쉽게 이웃 ID를 결정할 수 있기 때문에 – Scalarr

+0

WGS84 좌표가 있으면 WGS84 좌표가 필요하고 다른 것으로 변환하면 무언가로 변환 할 때마다 정확도가 떨어집니다. 이 작업을 몇 번해야만한다면, 얼마나 멀리 떨어져 있는지 알 수 있습니다. – Brad

관련 문제