GPS verilerinden maksimum hızı hesapla


10

Bir parkur için ham GPS konumlarım var ve maksimum hıza ihtiyacım var. Basit yöntemler (2 nokta arasındaki hızı hesapla, maks. Al) GPS yanlışlığı nedeniyle anlamsız büyük sayılar verecektir, nokta atlıyor. Bunu çözmek için iyi bir hazır algoritma önerebilir misiniz?


Nokta atlıyorsa, bir yerde birden fazla noktanız olduğunu mu söylüyorsunuz? Sorunuzun büyük kısmı, işlem sonrası değil gerçek zamanlı verileri görüntülemekle ilgileniyormuşsunuz gibi görünüyor (doğruluk için).
Brad Nesom

Eğer 'ham' gps konumlarınız varsa, o zaman, elbette, NMEA RMC dizesinde standart bir unsur olan düğümlerde yerdeki hıza sahip olmalısınız.
nagytech

Yanıtlar:


13

Hız almak için elbette zamanınız olmalı . Böylece puanlarınızı zamana göre artırarak {Time, X, Y} sütunlarıyla moda gibi bir e-tabloda sipariş edebilirsiniz.

GPS biriminin saat yönünün tersine bir devreyi neredeyse tamamladığı bir örnek:

Gezinin haritası

Bu noktalar eşit zaman aralıklarında elde edilmemiştir. Bu nedenle , sadece haritadan hızları tahmin etmek imkansızdır. (Bu yolculuğu görselleştirmenize yardımcı olmak için, gps değerlerini neredeyse eşit aralıklarla topladığınızdan emin oldum , böylece yolculuğun hızlı bir şekilde başladığını ve iki ara noktada ve sonunda yavaşladığını görebilirsiniz.)

Hızla ilgilendiğinizden, ardışık satırlar arasındaki mesafeleri ve zaman farklarını hesaplayın. Mesafeleri zaman farklarına göre bölmek anlık hız tahminleri verir. Hepsi bu kadar. Zamana karşı bu tahminlerin bir grafiğine bakalım:

Hız ve zamanın grafiği

Kırmızı noktalar hızları çizer, gri eğri sadece göze rehberlik etmek için ham bir pürüzsüzdür. Maksimum hızın süresi ve maksimum hızın kendisi grafikten anlaşılır ve bir CBS'de bir elektronik tablo veya basit veri özeti işlevleri kullanıyorsanız şimdiye kadar verilerden kolayca elde edilebilir. Bununla birlikte, bu hız tahminleri şüphelidir çünkü gps noktalarında açıkça bazı ölçüm hataları vardır.

Ölçüm hatasıyla başa çıkmanın bir yolu, birden fazla zaman aralığı arasındaki mesafeleri biriktirmek ve zamanları tahmin etmek için kullanmaktır. Örneğin, daha önce hesaplanan {Zaman farkı, Mesafe} verileri

d(Time) Distance
0.90        0.17
0.90        0.53
1.00        0.45
1.10        0.29
0.80        0.11

daha sonra her bir ardışık satır çifti eklenerek geçen süreler ve iki zaman dilimi boyunca toplam mesafeler elde edilir:

d(Time) Distance
1.80        0.70
1.90        0.98
2.10        0.74
1.90        0.40

Toplam süreler ve mesafeler için hızları yeniden hesaplayın.

Bu hesaplama, herhangi bir sayıda zaman periyodu için gerçekleştirilebilir ve daha uzun süre boyunca hız tahminlerinin ortalaması alınarak daha pürüzsüz ve daha güvenilir grafikler elde edilebilir. Aşağıda sırasıyla 3 ve 5 zaman periyodu için hesaplanan aynı verilerin grafikleri verilmiştir:

Hız ve zaman grafiği, 3 aralıklı hesaplama

Hız ve zaman grafiği, 5 aralıklı hesaplama

Düzgünleştirme miktarıyla maksimum hızın nasıl azaldığına dikkat edin. Bu her zaman olacak. Benzersiz bir doğru cevap yoktur: ne kadar düzleştirdiğiniz, ölçümlerdeki değişkenliğe ve hızları tahmin etmek istediğiniz zaman aralıklarına bağlıdır. Bu örnekte, maksimum hızı 2.5'e kadar (ardışık GPS noktalarına bağlı olarak) bildirebilirsiniz, ancak GPS konumlarındaki hatalar nedeniyle biraz güvenilmez olacaktır. Beş periyotlu yumuşaklığa bağlı olarak maksimum hızı 2,1'e kadar düşürebilirsiniz.


Bu basit bir yöntemdir, ancak mutlaka en iyisi değildir. GPS konum hatasını yol boyunca bir bileşene ve yola dik başka bir bileşene ayrıştırırsak , yol boyunca bileşenlerin, izlenen toplam mesafe tahminlerini etkilemediğini görürüz (yolun yeterince iyi örneklenmesi şartıyla: "köşeleri kesmeyin"). Yola dikey bileşenler artargörünür mesafeler. Bu potansiyel olarak tahminleri yukarıya doğru yönlendirir. Bununla birlikte, GPS okumaları arasındaki tipik mesafe tipik mesafe hatasına kıyasla büyük olduğunda, sapma küçüktür ve muhtemelen GPS dizisi tarafından yakalanmayan yoldaki küçük kıpırdanmalar için telafi edilir (yani, bazı köşe kesimleri her zaman yapılır). Bu nedenle, GPS örnekleme frekansı, yolun "kıpır kıpır" veya GPS ölçüm hatasının büyük olduğu frekansa kıyasla çok düşük olmadıkça, bu doğal önyargılarla başa çıkmak için daha sofistike bir tahminci geliştirmeye değmez.

Kayıt için, doğru, doğru sonucu gösterebiliriz , çünkü bunlar simüle edilmiş verilerdir:

Gerçek hızın zamana karşı çizimi

Bunu önceki grafiklerle karşılaştırmak , bu özel durumda , ham hızların maksimum değerinin, gerçek maksimum değerin üzerinde olduğundan, beş dönem hızlarının maksimum değerinin çok düşük olduğunu gösterir.

Genel olarak, GPS noktaları yüksek frekansla toplandığında, maksimum ham hız muhtemelen çok yüksek olacaktır: gerçek maksimum değeri abartır. Herhangi bir pratik durumda bundan daha fazlasını söylemek, GPS hatalarının, GPS toplama sıklığının ve altta yatan yolun kıvrımlılığının niteliği ve büyüklüğünün daha kapsamlı bir istatistiksel analizini gerektirecektir.


2

Bu hazır bir komut dosyası veya algoritma değildir. Aşağıdaki görüntüde ortalama hızı (kph cinsinden) gösteren ne yaptım:

  1. Doğrudan GPX dosyasında bir gpsbabel filtresi çalıştırın.
  2. GPX dosyasını GRASS'ta raster noktalarına dönüştürün.
  3. r.neighborsBelirli bir tarama penceresi için ortalama hızı elde etmek üzere çalıştırın .

ortalama bisiklet hızım


Bir konum dizisinin raster sunumundan nasıl hız almanın mümkün olduğunu açıklayabilir misiniz ?
whuber

Gpsbabel kullanarak hız bilgilerini GPX'in izleme noktalarından sentezleyebilirsiniz. gpsbabel.org/htmldoc-development/filter_track.html . Ardından bu verileri vektör noktaları olarak içe aktarın ve GRASS'ta raster biçimine dönüştürün. Bu görüntüde birden fazla GPX kullandım. Kullanarak r.neighborsortalama hızı elde ediyorum.
Maning

Açıklama için çok teşekkürler. Ancak, gpsbabel hızı hesapladıysa, neden r.neighbors kullanıyorsunuz? Bu, bir rota boyunca hızları, şebekeye yeterince yakın olan diğer güzergahlar boyunca hızlarla karıştırmaz mı? Ayrıca, GPS toplama süreleri eşit aralıklı olmadığında hız ortalamasına ağırlık verilir. Örneğin, 60 saniyede 60 metre seyahat ederseniz, saniyede bir metre gitmişsinizdir, ancak 1 saniyede 10 metreye ve 59 saniyede 50 metreye bölünürse (bir orta noktada +9 m konum hatası nedeniyle), ortalama hız 5,4 m / s olarak hesaplanır: brüt fazla tahmin.
whuber

@whuber, haklısın. Bu harita için, bireysel hızı değil, zaman içindeki toplam hızı arıyorum. Tüm parçalarım 1 sn. Aralıklı.
Maning

Yaratıcı bir çözüm için +1. (Görünüşe göre vektör problemlerine raster çözümleri bulmayı seviyorum, ancak sınırlarını bilmek güzel.)
Whuber

1

GPS verileriniz yanlış olduğundan, yalnızca maksimum hızı tahmin edebileceksiniz.

Yanlışlıkların etkisini en aza indirmek için hızı segmentlerde değil, çoklu çizgilerde (ortalama hız) hesaplayarak hesaplamaya çalışabilirsiniz.

Yalnızca en alakalı noktaları korumak için önce verilerinizi temizlemeyi denediniz mi (örneğin Douglas-Peucker)?


1
Douglas-Peucker verileri gerçekten temizlemez - sadece orijinal şekli korumaya çalışırken puanları kaldırır, böylece aslında hataların daha da kötü görünmesine neden olabilir.
JaakL
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.