본문 바로가기
  • 밥 하루하루
GNSS 기술 및 실험/GNSS 기술 개요

파이썬(Python)에서 GPX 파일 PLOT

by BobBob 2021. 4. 26.
728x90
반응형

 

RTK를 이용하여 얻은 결과(위도, 경도)를 칼만 필터(Kalman Filter)에 적용해보기 위해서 파이썬(Python)으로 구현된 오픈소스를 찾았습니다. 이것저것 해보는 도중에서 gpx파일을 plot 하는 과정이 있어서 그 내용에 대해 정리해보려 합니다. (python을 이용해서 위도, 경도 표시)

 

gpx가 무엇인지 알아보겠습니다.

위키백과에 정의된 gpx 내용을 가져왔습니다. 자세한 내용은 위키백과에서 참고하시기 바랍니다.

 


GPX(GPS Exchange Format)는 응용 소프트웨어의 공통 GPS 데이터 형식으로 설계된 XML 스키마이다.

구체적인 표현이나 개별적인 용도를 위해 웨이포인트(waypoint), 트랙(track) 및 루트(경로,route)를 기술하는 데 사용된다. 형식은 공개되어 있으며 라이센스 비용을 지불할 필요없이 사용할 수 있다. 위치 데이터 (및 선택적으로 고도, 시간 및 기타 정보)는 태그에 저장되며 GPS 장치와 소프트웨어간에 상호 교환될 수 있다. 데이터에 대한 일반적인 응용 소프트웨어에는 다양한 지도 소스에 투영된 트랙보기,지도 주석 달기, 현위치에서 찍은 시간을 기준으로 사진의 위치 정보 태그 지정등이 포함된다.


 

RTKLIB를 통해 얻은 pos파일을 gpx파일로 변환하여 gpx 파일을 얻었습니다.

pos파일은 gpx 혹은 kml(구글 어스)로 변환할 수 있습니다. 

 

우선 RTKLIB를 통해 저장한 pos 파일을 RTKPLOT로 실행하였고, 아래 그림 같이 나옵니다.

아래 결과는 ublox의 NEO-M8T + RTKLIB를 이용하여 이동하는 차량의 위치 측위를 한 결과입니다.

RTKPLOT를 이용하여 위치(위도, 경도) plot

 

아래 소스는 stack overflow에서 참고하였고, gpx를 plot 할 수 있습니다. 

import gpxpy
import pandas as pd
import matplotlib.pyplot as plt

with open('RTK.gpx') as fh:
    gpx_file = gpxpy.parse(fh)
segment = gpx_file.tracks[0].segments[0]
coords = pd.DataFrame([
    {'lat': p.latitude,
     'lon': p.longitude,
     'ele': p.elevation,
     'time': p.time} for p in segment.points])
coords.head(3)
plt.plot(coords.lon[::1], coords.lat[::1], 'b-')
plt.show()

 

아래 그림은 gpx파일을 python으로 실행하여 위치(위도, 경도)를 plot한 것입니다.

python을 이용하여 위치(위도, 경도) plot

 

RTKPLOT와 python으로 plot 한 결과를 보면 동일하다는 것을 알 수 있습니다. 

 

 

Reference

1. GPX, 위키백과

2. stackoverflow.com/questions/57630287/kalman-filter-parameter-definition-for-vehicle-position-estimation-in-python

 

 

728x90
반응형

댓글