我試圖解析KML文件,以計算與下面的算法兩個相鄰點之間的速度(類似於myTracks Android應用程序一樣)算法從KML跟蹤GPS座標
public double calculateSpeed(Location prev, Location curr) {
double deltaDistance = curr.distanceTo(prev);
double deltaTime = (curr.getTime() - prev.getTime())/1000.0;
double speedInMph = deltaDistance/deltaTime * 2.2369;
return speedInMph;
}
計算速度代碼初始化位置更新:
locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
Criteria criteria = new Criteria();
provider = locationManager.getBestProvider(criteria, false);
locationManager.requestLocationUpdates(provider,1000,5,locationListener);
鏈接樣本KML文件和日誌文件:
https://dl.dropboxusercontent.com/u/29927114/kml/doc.kml https://dl.dropboxusercontent.com/u/29927114/kml/Log.txt
但我的問題是,有時值不正確。
對於例如:在下面登錄值來作爲74的速度,73,71,39 ,97,75,74和22,22,10 ,3085,20%,20除突出顯示的偏差值的剩餘值看起來是正確的。有沒有辦法找到/放棄這些值,或者我的算法存在一個基本缺陷?
05-02 09:08:10.657: D/KMLParser(11545): Attributes: when: 2014-04-30T17:03:32.070Z
05-02 09:08:10.657: D/KMLParser(11545): Attributes: gx:coord: -1.40748616 52.13896311 175.0
05-02 09:08:10.658: I/KMLParser(11545): 1. -1.40783922, 52.13916636 2. -1.40748616, 52.13896311
05-02 09:08:10.658: I/KMLParser(11545): Dist = 33.102333068847656, Time = 0.999 mps = 74.1207295712766
05-02 09:08:10.658: E/KMLParser(11545): Index = 2, Speed = 74.0
05-02 09:08:10.658: D/KMLParser(11545): Attributes: when: 2014-04-30T17:03:33.073Z
05-02 09:08:10.658: D/KMLParser(11545): Attributes: gx:coord: -1.4071429 52.13875571 174.0
05-02 09:08:10.659: I/KMLParser(11545): 1. -1.40748616, 52.13896311 2. -1.4071429, 52.13875571
05-02 09:08:10.659: I/KMLParser(11545): Dist = 32.93754959106445, Time = 1.003 mph = 73.45763178489739
05-02 09:08:10.659: E/KMLParser(11545): Index = 3, Speed = 73.0
05-02 09:08:10.659: D/KMLParser(11545): Attributes: when: 2014-04-30T17:03:34.073Z
05-02 09:08:10.659: D/KMLParser(11545): Attributes: gx:coord: -1.40680545 52.13855525 173.0
05-02 09:08:10.660: I/KMLParser(11545): 1. -1.4071429, 52.13875571 2. -1.40680545, 52.13855525
05-02 09:08:10.660: I/KMLParser(11545): Dist = 32.11391067504883, Time = 1.0 mph = 71.83560678901672
05-02 09:08:10.660: E/KMLParser(11545): Index = 4, Speed = 71.0
05-02 09:08:10.660: D/KMLParser(11545): Attributes: when: 2014-04-30T17:03:35.073Z
05-02 09:08:10.660: D/KMLParser(11545): Attributes: gx:coord: -1.40663056 52.13844134 173.0
05-02 09:08:10.661: I/KMLParser(11545): 1. -1.40680545, 52.13855525 2. -1.40663056, 52.13844134
05-02 09:08:10.661: I/KMLParser(11545): Dist = 17.43634796142578, Time = 1.0 mph = 39.00336675491333
05-02 09:08:10.661: E/KMLParser(11545): Index = 5, Speed = 39.0
05-02 09:08:10.661: D/KMLParser(11545): Attributes: when: 2014-04-30T17:03:36.601Z
05-02 09:08:10.661: D/KMLParser(11545): Attributes: gx:coord: -1.40592909 52.13802792 172.0
05-02 09:08:10.662: I/KMLParser(11545): 1. -1.40663056, 52.13844134 2. -1.40592909, 52.13802792
05-02 09:08:10.662: I/KMLParser(11545): Dist = 66.50345611572266, Time = 1.528 mph = 97.35705561862565
05-02 09:08:10.662: E/KMLParser(11545): Index = 6, Speed = 97.0
05-02 09:08:10.662: D/KMLParser(11545): Attributes: when: 2014-04-30T17:03:37.601Z
05-02 09:08:10.662: D/KMLParser(11545): Attributes: gx:coord: -1.40557412 52.13781792 172.0
05-02 09:08:10.663: I/KMLParser(11545): 1. -1.40592909, 52.13802792 2. -1.40557412, 52.13781792
05-02 09:08:10.663: I/KMLParser(11545): Dist = 33.71452713012695, Time = 1.0 mph = 75.41602573738098
05-02 09:08:10.663: E/KMLParser(11545): Index = 7, Speed = 75.0
05-02 09:08:10.663: D/KMLParser(11545): Attributes: when: 2014-04-30T17:03:38.600Z
05-02 09:08:10.663: D/KMLParser(11545): Attributes: gx:coord: -1.40522992 52.13760866 172.0
05-02 09:08:10.663: I/KMLParser(11545): 1. -1.40557412, 52.13781792 2. -1.40522992, 52.13760866
05-02 09:08:10.663: I/KMLParser(11545): Dist = 33.12906265258789, Time = 0.999 mph = 74.18058082840226
05-02 09:08:10.663: E/KMLParser(11545): Index = 8, Speed = 74.0
05-02 09:08:11.551: E/KMLParser(11545): Index = 1035, Speed = 19.0
05-02 09:08:11.551: D/KMLParser(11545): Attributes: when: 2014-04-30T17:22:54.642Z
05-02 09:08:11.552: D/KMLParser(11545): Attributes: gx:coord: -1.20618821 51.89674183 128.0
05-02 09:08:11.556: I/KMLParser(11545): 1. -1.20617359, 51.89683068 2. -1.20618821, 51.89674183
05-02 09:08:11.556: I/KMLParser(11545): Dist = 9.93702220916748, Time = 0.998 mph = 22.272670320327393
05-02 09:08:11.556: E/KMLParser(11545): Index = 1036, Speed = 22.0
05-02 09:08:11.556: D/KMLParser(11545): Attributes: when: 2014-04-30T17:22:55.642Z
05-02 09:08:11.556: D/KMLParser(11545): Attributes: gx:coord: -1.20618857 51.89665264 129.0
05-02 09:08:11.557: I/KMLParser(11545): 1. -1.20618821, 51.89674183 2. -1.20618857, 51.89665264
05-02 09:08:11.557: I/KMLParser(11545): Dist = 9.92379093170166, Time = 1.0 mph = 22.198527935123444
05-02 09:08:11.557: E/KMLParser(11545): Index = 1037, Speed = 22.0
05-02 09:08:11.557: D/KMLParser(11545): Attributes: when: 2014-04-30T17:22:57.636Z
05-02 09:08:11.557: D/KMLParser(11545): Attributes: gx:coord: -1.20619499 51.89656647 129.0
05-02 09:08:11.558: I/KMLParser(11545): 1. -1.20618857, 51.89665264 2. -1.20619499, 51.89656647
05-02 09:08:11.558: I/KMLParser(11545): Dist = 9.597917556762695, Time = 1.994 mph = 10.767092167864831
05-02 09:08:11.558: E/KMLParser(11545): Index = 1038, Speed = 10.0
05-02 09:08:11.558: D/KMLParser(11545): Attributes: when: 2014-04-30T17:22:57.643Z
05-02 09:08:11.558: D/KMLParser(11545): Attributes: gx:coord: -1.20619719 51.89647971 130.0
05-02 09:08:11.559: I/KMLParser(11545): 1. -1.20619499, 51.89656647 2. -1.20619719, 51.89647971
05-02 09:08:11.559: I/KMLParser(11545): Dist = 9.654572486877441, Time = 0.007 mph = 3085.1875994137354
05-02 09:08:11.559: E/KMLParser(11545): Index = 1039, Speed = 3085.0
05-02 09:08:11.559: D/KMLParser(11545): Attributes: when: 2014-04-30T17:22:58.639Z
05-02 09:08:11.559: D/KMLParser(11545): Attributes: gx:coord: -1.20620314 51.89639872 130.0
05-02 09:08:11.560: I/KMLParser(11545): 1. -1.20619719, 51.89647971 2. -1.20620314, 51.89639872
05-02 09:08:11.560: I/KMLParser(11545): Dist = 9.020686149597168, Time = 0.996 mph = 20.25941048999388
05-02 09:08:11.560: E/KMLParser(11545): Index = 1040, Speed = 20.0
05-02 09:08:11.560: D/KMLParser(11545): Attributes: when: 2014-04-30T17:22:59.638Z
05-02 09:08:11.560: D/KMLParser(11545): Attributes: gx:coord: -1.2062078 51.89631631 129.0
05-02 09:08:11.560: I/KMLParser(11545): 1. -1.20620314, 51.89639872 2. -1.2062078, 51.89631631
05-02 09:08:11.560: I/KMLParser(11545): Dist = 9.174989700317383, Time = 0.999 mph = 20.54407853917913
05-02 09:08:11.560: E/KMLParser(11545): Index = 1041, Speed = 20.0
您是否有在您的kml中登錄的gps點的準確性?或者,更簡單地說,您能否向我們提供kml或至少一部分? – Legisey
@frouil,感謝您的評論,我已更新我的問題與示例代碼和鏈接爲kml文件和logcat輸出 – Harish