我有下面的代碼下面,這似乎是做工精細:Android的GPS座標散
// GPS Reader // Criteria Criteria criteria = new Criteria(); //criteria.setAccuracy(Criteria.ACCURACY_COARSE); // Used when we can't get a GPS Fix criteria.setAccuracy(Criteria.ACCURACY_FINE); // Used when we can get a GPS Fix criteria.setAltitudeRequired(false); criteria.setBearingRequired(false); criteria.setCostAllowed(true); criteria.setPowerRequirement(Criteria.POWER_LOW); LocationListener locationListener = new MyLocationListener(); LocationManager lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE); lm.requestLocationUpdates(lm.getBestProvider(criteria, true), 0, 0, locationListener);
然而,當我繪製我已經收集了谷歌地圖數據,GPS座標都非常在某些情況下散落,或者它將沿着我正在散步的路線前進,然後突然跳到一英里遠的地方然後回來。有沒有什麼辦法解決這一問題?我猜測某種精度檢查?
更新:
基本上我的問題是這樣的一個例子 - GPS Jitter
更新2:
我認爲不使這個賞金,但我想我還不如完全理解這裏發生的事情,看看我的方法是否過於殺人。我仍然有同樣的問題,即使我的座標具有3m的精度等等,我的座標仍然存在抖動。現在這可能是可用的衛星等。我不知道,但基本上我試圖瞭解是所有這些其他應用程序,尤其是練習應用程序,能夠在相同的情況下獲得如此平穩的讀數。
我當時在Quora,並能找到這個Does any running app have a feature of filtering GPS data to get more accurate tracking?不幸的是,除了你可以使用卡爾曼濾波器,如果你想要的話,它並沒有給我很多洞察力,但肯定必須有不那麼複雜的方法,因爲我懷疑大多數應用程序都在實施這個。
無論如何,如果一個開發人員願意分享他們正在做的一些僞代碼,將不勝感激。我的意思是,如果我卡爾曼卡住了,但我確定必須更容易實現算法,並且希望能夠學習那些以及如何實施它們,這些都是合適的。
上下文:這是一個移動步行應用程序。
我試圖從 Create a smooth curve from a series of GPS coordinates Smooth gps data蒐集信息相關的SO問題:這是一個良好的開端,但我不知道我需要實現正確得到最小二乘法擬合工作適當有啥僞我將有一個樣條GPS數據,然後我可以查看類似谷歌地圖的東西,以確認我做得正確。我認爲問題在於,如果這是我正在處理的一般X和Y數據,而不是GEO的座標,我可以在matlab中寫一些東西進行測試,然後繼續。
更新3
我recieving https://www.dropbox.com/s/ilsf8snao2no65e/gpsdata2.png
守則搞砸了GPS數據的圖像 https://gist.github.com/4505688
你的能量需求和準確性似乎是相互矛盾的。爲ACCURACY_FINE提供結果的唯一提供者是LocationManager.GPS_PROVIDER。爲什麼不直接使用它,而不是像這樣創建一些條件:locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,0,0,MyLocationListener)? –
此外,它可能是分散的,因爲設備不在露天/其他原因導致延遲修復接收。 –
好的,我會回到那個 - 因爲我原來是這樣設置的,但是認爲標準會更好,明天再試。在開闊的天空 - 我在開闊的天空區域,在運行測試時 - 但是當我運行像mapmywalk這樣的程序時,並沒有散射。 – eWizardII