2013-08-11 1 views
0

iPhone에서 걷기/달리기를 할 때 거리 계산 응용 프로그램을 만들었습니다.지도 키트 및 didUpdateToLocation - iOS의 거리 정확도 계산

내 응용 프로그램을 실행중인 다른 응용 프로그램과 비교했는데 아무도 같은 거리를 제공하지 않습니다.

나이키 GPS : 2.1 km
되는 Runtastic : 2.5 km
내 앱 : 2.9 km 여기

라우팅 거리 계산 :

- (void)locationManager:(CLLocationManager *)manager 
    didUpdateToLocation:(CLLocation *)newLocation 
      fromLocation:(CLLocation *)oldLocation 

{ 
float distInMeter = [newLocation distanceFromLocation:oldLocation]; // which returns in meters 
} 

을하고 나는 다른 변수에 distInMeters을 연결.

왜 이러한 응용 프로그램간에 차이가 있습니까? 더 정확하게 거리를 계산하는 또 다른 방법이 있습니까?

도움 주셔서 감사합니다.

답변

0

이러한 차이는 위치 관리자가 사용자 위치를 제공하는 방식 때문에 발생할 수 있습니다. 특정 방향으로 걷고 있고 GPS가 그 방향에서 완전히 벗어난 위치에 있다고 가정 해 봅시다. 그러나 다음 트랙은 다시 궤도에 오른 것입니다. 사용하지 않은 것을 고려하면 실제로 이동 한 거리보다 더 많은 거리를 차지합니다. 그래서 당신은 그것을 걸러 내야합니다.

GPS가 다른 위치를 제공하는 경우와 같은 일이 발생합니다. 사용자가 4mph에서 조깅을하고 있다고 가정 해 봅시다. 사용자가 갑자기 100mph로 달리기 시작한 것이 불가능할 수 있으므로이를 필터링해야합니다.

기본적으로 일어날 가능성이 매우 적은 것들은 걸러 내야합니다. 그렇게하면 더 정확한 거리를 얻을 수 있습니다.

+0

답장을 보내 주셔서 감사합니다. 아마도 어쩌면 2 위치가 바뀌었을 때마다 거리를 계산할 수 있습니까? 어쩌면 거리가 두 배나되는 다음 위치를 고려하지 않을 수도 있습니다. –

1

이러한 앱은 오랫동안 부정확 한 GPS 데이터로 작업 해 왔으며 위치에서 무작위 점프를 부드럽게하는 방법을 만들었습니다. 구현시 오래된 데이터 또는 허위 데이터를 고려하지 않습니다.

당신은이 Ramer–Douglas–Peucker algorithm (here's one in Javascript) 또는 이들 verycomplicated papers의 일부를 읽고, 아니면 그냥 오래되었거나 매우 다른 GPS 측정 값을 폐기하고보다 정확한 판독이 들어올 때까지 기다릴 수 구현하는 시도 할 수 있습니다.

0

의 GPS 위치가 있어야합니다 거리를 계산하기 전에 필터링. 당신은 단순히 각 위치 사이의 모든 거리를 합산 할 수 없습니다. 거리 함수는 정확하지만 필터링은하지 않습니다. 지도 (mkMapView)의 모든 점을 시각화하면 저속 GPS에서 지그재그 임의의 오류 선이 생성된다는 것을 알 수 있습니다. 이 시각화에서 거리가 왜 더 큰지 분명히 알 수 있습니다.