Tính tốc độ tối đa từ dữ liệu GPS


10

Tôi có các vị trí GPS thô cho một bản nhạc và cần có tốc độ tối đa. Các phương pháp đơn giản (tính tốc độ giữa 2 điểm, lấy tối đa) sẽ cho số lượng lớn vô nghĩa do không chính xác GPS, điểm đang nhảy xung quanh. Bạn có thể đề xuất một thuật toán làm sẵn tốt để giải quyết điều này?


Nếu điểm đang nhảy xung quanh bạn có nói rằng bạn có nhiều hơn một điểm tại một địa điểm không? Phần lớn câu hỏi của bạn nghe có vẻ như bạn quan tâm đến việc hiển thị dữ liệu thời gian thực và không xử lý hậu kỳ (cho chính xác).
Brad Nesom

Nếu bạn có các vị trí gps 'thô', thì bằng mọi cách, bạn nên có tốc độ trên mặt đất trong các nút thắt là một yếu tố tiêu chuẩn trong chuỗi NMEA RMC.
nagytech

Câu trả lời:


13

Để có được tốc độ, bạn phải có thời gian, tất nhiên. Do đó, bạn có thể sắp xếp các điểm của mình theo thời gian trong một bảng tính như thời trang, với các cột {Thời gian, X, Y}, bằng cách tăng thời gian.

Dưới đây là một ví dụ trong đó đơn vị GPS gần như hoàn thành một mạch ngược chiều kim đồng hồ:

Bản đồ chuyến đi

Những điểm này không đạt được trong khoảng thời gian bằng nhau. Do đó , không thể chỉ từ bản đồ để ước tính tốc độ. (Tuy nhiên, để giúp bạn hình dung chuyến đi này, tôi đã đảm bảo thu thập các giá trị gps theo các khoảng gần như bằng nhau, để bạn có thể thấy rằng chuyến đi bắt đầu nhanh và chậm ở hai điểm trung gian và ở cuối.)

Bởi vì bạn quan tâm đến tốc độ, hãy tính khoảng cách giữa các hàng liên tiếp cũng như sự khác biệt về thời gian. Chia khoảng cách theo chênh lệch thời gian cho ước tính tốc độ tức thời. Thats tất cả để có nó. Hãy xem xét một âm mưu của những ước tính đó theo thời gian:

Âm mưu của tốc độ so với thời gian

Các điểm màu đỏ vẽ đồ thị tốc độ trong khi đường cong màu xám là mịn mượt, chỉ để hướng mắt. Thời gian của tốc độ tối đa và tốc độ tối đa của chính nó, rõ ràng từ âm mưu và sẵn sàng thu được từ dữ liệu nếu bạn đang sử dụng bảng tính hoặc các chức năng tóm tắt dữ liệu đơn giản trong GIS. Tuy nhiên, những ước tính tốc độ này là đáng ngờ vì các điểm gps rõ ràng có một số lỗi đo lường trong đó.

Một cách để đối phó với lỗi đo lường là tích lũy khoảng cách giữa nhiều khoảng thời gian và sử dụng chúng để ước tính thời gian. Ví dụ: nếu dữ liệu {Chênh lệch thời gian, Khoảng cách} được tính toán trước đó là

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

sau đó thời gian đã trôi qua và tổng khoảng cách trong hai khoảng thời gian có được bằng cách thêm từng cặp hàng liên tiếp:

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

Tính toán lại tốc độ cho thời gian và khoảng cách tích lũy.

Người ta có thể thực hiện phép tính này cho bất kỳ khoảng thời gian nào, đạt được các lô đáng tin cậy và mượt mà hơn bao giờ hết với chi phí tính trung bình cho các ước tính tốc độ trong khoảng thời gian dài hơn. Dưới đây là các ô của cùng một dữ liệu được tính trong 3 và 5 khoảng thời gian:

Âm mưu tốc độ so với thời gian, tính toán 3 khoảng

Âm mưu của tốc độ so với thời gian, tính toán 5 khoảng

Lưu ý cách giảm tốc độ tối đa với mức độ làm mịn. Điều này sẽ luôn xảy ra. Không có câu trả lời đúng duy nhất: mức độ mượt mà của bạn phụ thuộc vào độ biến thiên của các phép đo và vào khoảng thời gian bạn muốn ước tính tốc độ. Trong ví dụ này, bạn có thể báo cáo tốc độ tối đa lên tới 2,5 (dựa trên các điểm GPS liên tiếp), nhưng nó sẽ hơi không đáng tin do các lỗi trong các vị trí GPS. Bạn có thể báo cáo tốc độ tối đa thấp tới 2.1 dựa trên độ mịn năm kỳ.


Đây là một phương pháp đơn giản nhưng không nhất thiết là tốt nhất. Nếu chúng tôi phân tách lỗi vị trí GPS thành một thành phần dọc theo đường dẫn và một thành phần khác vuông góc với đường dẫn, chúng tôi thấy rằng các thành phần dọc theo đường dẫn không ảnh hưởng đến ước tính của tổng khoảng cách đi qua (với điều kiện đường dẫn được lấy mẫu đủ tốt: đó là, bạn không "cắt góc"). Các thành phần vuông góc với đường dẫn tăngkhoảng cách rõ ràng. Điều này có khả năng thiên vị ước tính đi lên. Tuy nhiên, khi khoảng cách điển hình giữa các lần đọc GPS lớn so với lỗi khoảng cách thông thường, độ lệch nhỏ và có thể được bù cho các vặn nhỏ trong đường dẫn không được bắt bởi trình tự GPS (nghĩa là, một số cắt góc là luôn luôn thực hiện). Do đó, có lẽ không đáng để phát triển một công cụ ước tính phức tạp hơn để đối phó với những sai lệch vốn có này, trừ khi tần số lấy mẫu GPS rất thấp so với tần số mà đường dẫn "lắc lư" hoặc lỗi đo GPS là lớn.

Đối với bản ghi, chúng tôi có thể hiển thị kết quả đúng, chính xác , vì đây là những dữ liệu mô phỏng:

Âm mưu của tốc độ thực so với thời gian

So sánh điều này với các ô trước đó cho thấy trong trường hợp cụ thể này , tốc độ tối đa của tốc độ thô đã đánh giá quá mức tối đa thực sự trong khi mức tối đa của tốc độ năm kỳ là quá thấp.

Nói chung, khi các điểm GPS được thu thập với tần suất cao, tốc độ thô tối đa có thể sẽ quá cao: nó có xu hướng đánh giá quá mức tối đa thực sự. Để nói nhiều hơn điều này trong bất kỳ trường hợp thực tế nào sẽ yêu cầu phân tích thống kê đầy đủ hơn về bản chất và kích thước của các lỗi GPS, tần số thu thập GPS và độ quanh co của đường dẫn bên dưới.


2

Đây không phải là một kịch bản hoặc thuật toán làm sẵn. Những gì tôi đã làm trong hình ảnh dưới đây cho thấy tốc độ trung bình (tính bằng kph):

  1. Chạy bộ lọc gpsbabel trực tiếp trên tệp GPX.
  2. Chuyển đổi tệp GPX thành các điểm raster trong GRASS.
  3. Chạy r.neighborsđể có được tốc độ trung bình cho một cửa sổ raster được chỉ định.

tốc độ đạp xe trung bình của tôi


Bạn có thể làm rõ làm thế nào có thể có được tốc độ từ một đại diện raster của một chuỗi các vị trí?
whuber

Bạn có thể tổng hợp thông tin tốc độ từ các điểm theo dõi của GPX bằng cách sử dụng gpsbabel. gpsbabel.org/htmldoc-development/filter_track.html . Sau đó nhập dữ liệu này dưới dạng các điểm vectơ và chuyển đổi sang raster trong GRASS. Tôi đã sử dụng nhiều GPX trên hình ảnh này. Sử dụng r.neighbors, tôi nhận được tốc độ trung bình.
maning 17/03

Rất cám ơn đã giải thích. Nhưng, nếu gpsbabel đã tính toán tốc độ, tại sao bạn sử dụng r.neighbor? Sẽ không có khả năng trộn tốc độ dọc theo một tuyến với tốc độ dọc theo bất kỳ tuyến nào khác đủ gần trên lưới? Ngoài ra, tốc độ trung bình là sai lệch khi thời gian thu thập GPS không đều nhau. Ví dụ: nếu bạn di chuyển 60 mét trong 60 giây, bạn đã đi được một mét mỗi giây, nhưng nếu nó bị vỡ thành 10 mét trong 1 giây cộng với 50 mét trong 59 giây (do lỗi vị trí +9 m tại điểm giữa), tốc độ trung bình tính đến 5,4 m / s: một sự đánh giá quá cao.
whuber

@whuber, bạn đúng rồi. Đối với bản đồ này, tôi không tìm kiếm tốc độ riêng lẻ mà là tốc độ tổng hợp theo thời gian. Tất cả các bài hát của tôi là trong khoảng thời gian 1 giây.
maning 17/03

+1 cho một giải pháp sáng tạo. (Tôi thích tìm giải pháp raster cho các vấn đề vectơ rõ ràng, nhưng thật tốt khi biết những hạn chế của chúng.)
whuber

1

Vì dữ liệu GPS của bạn không chính xác, bạn sẽ chỉ có thể ước tính tốc độ tối đa.

Bạn có thể thử tính toán nó bằng cách tính toán tốc độ không phải trên các phân đoạn mà trên các đường dẫn (tốc độ trung bình), để giảm thiểu ảnh hưởng của sự không chính xác.

Bạn đã thử làm sạch dữ liệu của mình trước tiên (ví dụ Douglas-Peucker) để chỉ giữ các điểm có liên quan nhất?


1
Douglas-Peucker không thực sự làm sạch dữ liệu - nó chỉ xóa các điểm trong khi cố gắng giữ hình dạng ban đầu, vì vậy trên thực tế, nó thậm chí có thể làm cho các lỗi trông tệ hơn.
JaakL
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.