GPS 데이터에서 최대 속도 계산


10

트랙에 대한 원시 GPS 위치가 있으며 최대 속도를 가져와야합니다. 간단한 방법 (2 점 사이의 속도를 계산하고 최대를 취하십시오)은 GPS 부정확성으로 인해 의미없는 숫자를 제공합니다. 이 문제를 해결하기 위해 기성품 알고리즘을 제안 할 수 있습니까?


포인트가 뛰어 내리면 위치에 둘 이상의 포인트가 있다고 말하는 것입니까? 대부분의 질문은 후 처리 (정확도)가 아닌 실시간 데이터 표시에 관심이있는 것처럼 들립니다.
Brad Nesom

'원시'gps 위치가있는 경우 반드시 NMEA RMC 문자열의 표준 요소 인 매듭 속도로 접지 속도를 가져야합니다.
nagytech

답변:


13

물론 속도를 얻으려면 시간이 있어야합니다 . 따라서 시간을 늘림으로써 {시간, X, Y} 열을 사용하여 스프레드 시트 방식으로 시간별로 포인트를 주문할 수 있습니다.

다음은 GPS 장치가 거의 반 시계 방향 회로를 완성한 예입니다.

여행지도

이 포인트는 동일한 시간 간격으로 얻지 못했습니다. 따라서 지도만으로는 속도를 추정 할 수 없습니다. (이 여행을 시각화하는 데 도움이 되도록 거의 동일한 간격으로 gps 값을 수집해야 하므로 여행이 두 중간 지점과 끝에서 빠르게 시작되고 느려졌 음을 알 수 있습니다.)

속도에 관심이 있으므로 연속 행 사이의 거리와 시간 차이를 계산하십시오. 거리를 시간 차이로 나누면 순간 속도 추정치가 제공됩니다. 그것이 전부입니다. 이러한 추정치 대 시간의 도표를 보자.

속도 대 시간 도표

빨간색 점은 속도를 표시하고 회색 곡선은 눈을 안내하기 위해 매끄럽고 매끄 럽습니다. GIS에서 스프레드 시트 또는 간단한 데이터 요약 함수를 사용하는 경우 최대 속도 시간과 최대 속도 자체는 플롯에서 명확하고 지금까지 데이터에서 쉽게 얻을 수 있습니다. 그러나 이러한 속도 추정치는 GPS 지점에 측정 오류가 분명히 있기 때문에 의심됩니다.

측정 오차에 대처하는 한 가지 방법 은 여러 기간 사이 의 거리누적하고 이를 사용하여 시간을 추정하는 것입니다. 예를 들어 이전에 계산 된 {시차, 거리} 데이터가

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

연속 된 행의 각 쌍을 추가 하여 경과 시간과 기간에 걸친 총 거리를 얻습니다.

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

누적 된 시간과 거리에 대한 속도를 다시 계산하십시오.

많은 시간 동안이 계산을 수행 할 수 있으며, 더 오랜 시간에 걸쳐 속도 추정치를 평균화하는 비용으로 더욱 부드럽고 안정적인 플롯을 얻을 수 있습니다. 다음은 각각 3 및 5 시간 동안 계산 된 동일한 데이터의 도표입니다.

속도 대 시간 도표, 3 구간 계산

속도 대 시간 도표, 5 구간 계산

스무딩 양에 따라 최대 속도가 어떻게 감소하는지 확인하십시오. 이것은 항상 일어날 것입니다. 고유 한 정답은 없습니다. 매끄럽게하는 정도는 측정의 가변성과 속도를 추정하려는 기간에 따라 다릅니다. 이 예에서는 최대 2.5 점 (연속 GPS 포인트 기준)을보고 할 수 있지만 GPS 위치의 오류로 인해 다소 신뢰할 수 없습니다. 5주기 매끄러움을 기준으로 2.1의 최저 속도를보고 할 수 있습니다.


이것은 간단한 방법이지만 반드시 최고는 아닙니다. 경로를 따라 구성 요소 경로에 수직 인 다른 구성 요소로 GPS 위치 오류를 분해 하면 경로 를 따라 구성 요소가 통과 한 총 거리의 추정치에 영향을 미치지 않습니다 (경로가 충분히 샘플링 된 경우). "모서리를 자르지 마십시오"). 경로에 수직 인 구성 요소가 증가합니다명백한 거리. 이것은 잠재적으로 추정치를 상향 편향시킵니다. 그러나 GPS 판독 값 사이의 일반적인 거리가 일반적인 거리 오차에 비해 크면 바이어스가 작고 GPS 시퀀스에 의해 포착되지 않은 경로의 작은 흔들림에 대해 보상 될 수 있습니다 (즉, 일부 코너 절단은 항상 완료). 따라서 경로가 "흔들리는"주파수 또는 GPS 측정 오류가 큰 주파수에 비해 GPS 샘플링 주파수가 매우 낮은 경우가 아니라면 이러한 고유 한 바이어스에 대처하기 위해보다 정교한 추정기를 개발하는 것은 가치가 없을 것입니다.

레코드의 경우 시뮬레이션 된 데이터이므로 정확한 결과를 표시 할 수 있습니다 .

실제 속도 대 시간 도표

이를 이전 도표와 비교하면이 특정 경우 에 최대 속도가 실제 최대 속도를 과대 평가 한 반면 5주기 속도의 최대 속도가 너무 낮다는 것을 알 수 있습니다.

일반적으로 GPS 포인트를 고주파수로 수집 할 경우 최대 원시 속도가 너무 높아질 수 있습니다. 실제 최대 속도를 과대 평가하는 경향이 있습니다. 실제 상황에서 이보다 더 많은 것을 말하려면 GPS 오류의 특성 및 크기, GPS 수집 빈도 및 기본 경로의 비틀림에 대한 전체 통계 분석이 필요합니다.


2

이것은 기성품 스크립트 또는 알고리즘이 아닙니다. 아래 이미지에서 내가 한 평균 속도 (kph)를 보여주는 작업 :

  1. GPX 파일에서 gpsbabel 필터를 직접 실행하십시오.
  2. GRASS에서 GPX 파일을 래스터 포인트로 변환합니다.
  3. r.neighbors지정된 래스터 창의 평균 속도를 얻기 위해 실행 합니다.

내 평균 자전거 속도


일련의 위치를 ​​래스터로 표현하여 속도 를 얻는 방법을 분명히 설명해 주 시겠습니까?
whuber

gpsbabel을 사용하여 GPX의 트랙 포인트에서 속도 정보를 합성 할 수 있습니다. gpsbabel.org/htmldoc-development/filter_track.html . 그런 다음이 데이터를 벡터 포인트로 가져와 GRASS에서 래스터로 변환하십시오. 이 이미지에서 여러 GPX를 사용했습니다. 를 사용 r.neighbors하면 평균 속도를 얻습니다.
Maning가요

설명해 주셔서 감사합니다. 그러나 gpsbabel이 속도를 계산했다면 왜 r.neighbors를 사용합니까? 그리드에서 충분히 가까운 다른 경로를 따르는 속도와 한 경로의 속도를 잠재적으로 혼합하지 않습니까? 또한 GPS 수집 시간이 고르지 않은 경우 속도 평균이 바이어스됩니다. 예를 들어 60 초에 60 미터를 이동하면 초당 1 미터가되었지만 1 초에 10 미터에 59 초에 50 미터를 더한 경우 (중간 지점에서 + 9m 위치 오차로 인해), 평균 속도는 5.4m / s로 계산됩니다.
whuber

@ whuber, 맞습니다. 이지도에서는 ​​개별 속도가 아니라 시간에 따른 총 속도를 찾고 있습니다. 내 모든 트랙은 1 초 간격입니다.
2

창의적인 솔루션의 경우 +1 (나는 분명히 문제를
벡터화

1

GPS 데이터가 정확하지 않기 때문에 최대 속도 만 추정 할 수 있습니다.

부정확의 영향을 최소화하기 위해 세그먼트가 아닌 폴리 라인 (평균 속도)에서 속도를 계산하여 계산할 수 있습니다.

가장 관련성 높은 부분 만 유지하기 위해 데이터를 먼저 청소 해 보셨습니까 (예 : Douglas-Peucker)?


1
Douglas-Peucker는 실제로 데이터를 정리하지 않습니다. 원래 모양을 유지하면서 포인트를 제거하기 만하면 실제로 오류를 악화시킬 수도 있습니다.
JaakL
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.