2012-02-03 3 views
0

Cohen이 Windows Phone GPS 에뮬레이터를 사용하여 속도를 직접 계산하려고합니다.WP7 GPS 속도를 계산할 때 이상한 결과가 발생했습니다.

void watcher_PositionChanged(object sender, GeoPositionChangedEventArgs<GeoCoordinate> e) 
    { 
    DateTime curTime  = DateTime.Now; 
    double curDistance  = e.Position.Location.GetDistanceTo(lastKnownPosition); 
    TimeSpan curTimeOffset = curTime - lastRecvTime; 
    double curSpeed  = curDistance/curTimeOffset.TotalSeconds; 

LastKnownPosition이 마지막 GeoCoordinate를 나타내는 경우 lastRecvTime과 동일한 점입니다. 여기서 curSpeed와 관련된 결과가 불안정 해집니다. 때때로 속도는 10m/s이고 때로는 20m/s로 뛰는 경우도 있습니다.

내가 여기서 뭐하는거야?

+0

일반적인 Windows 시간 추정과 같은 소리 : http://xkcd.com/612/ – nybbler

+0

'직선'으로 걷고 있습니까? –

+0

GPS 에뮬레이터가 직선 만 수행하도록 구성되었으므로 예 –

답변

0

GPS의 정확도는 제한적입니다. 초당 20 개의 수정본을 가져와 이동하는 경우 - 일반적으로 (하드웨어, 위성에 대한 시선, GPS에 사용 가능한 위성 수에 따라) 두 가지 수정간에 위치 차이가 약 0.5m 인 경우 - 이동 속도가 10m/s라고 가정 할 경우, GPS의 정확도보다 낮습니다.

몇 초마다 수정 프로그램을 사용하거나 순환 배열을 사용하여 수정 프로그램을 효율적으로 구현하고 평균 속도를 사용하십시오. 나는 두 가지의 조합을 제안 할 것이다.

+0

그래서 기본적으로 말하는 것은 누적되어야한다는 것입니다. 약 3 초 뒤로 말합니다. 다음과 같이 평균 속도를 찾으십시오. 합격 된 총 거리/3 초? –

+0

기본적으로는 yes이지만 Location 인스턴스와의 시차를 사용하십시오. – Stefan

+0

Stefan : 어떻게 e.Position.Timestamp를 utc로 변환 할 수 있습니까? 그리고 시간에 대한 올바른 변수입니까? –