python을 통해 GPX 파일에 대한 데이터 변환 (time 삽입값)

5484 단어 Python3

의 목적


GPX 파일(trk:추적 지점)의 시간 데이터 변환
타임에 잘못된 값이 있으므로 Google Earth Pro가 작동을 멈출 수 있으므로 보간되었습니다.
- 잘못된 값 예: 2000-00-00T00:00Z(gpxgy로 채우면 None)
환경:
* Windows10 Home 64bit
* Anaconda3-5.2.0-Windows-x86_64/Python 3.6 version
* gpxpy 1.3.4

[준비] gpxpy 설치


1. Anaconda Navigator의 "Environments"→"base(root)"→"Open Terminal"
2. 설치
   pip install gpxpy   →"distributed 1.21.8 requires msgpack, which is not installed."경고를 보냈기 때문에 msgpack도
   pip install msgpack

[프로그램 예]


변환 전 파일 (sample timeloss.gpx) 을time 수정하여 변환 후 파일로 출력 (sample timefix.gpx)
import gpxpy
import gpxpy.gpx
from datetime import datetime, timedelta

gpx_file_r = open('sample_timeloss.gpx', 'r')
gpx_file_w = open('sample_timefix.gpx', 'w')

# Parsing an gpx file():
gpx = gpxpy.parse(gpx_file_r)

time_set = datetime(2018,1,1,0,0)   # (1)initial date
gps_delta = timedelta(seconds=1)    # (2)gps period: 1s

for track in gpx.tracks:
    for segment in track.segments:
        for point in segment.points:
            if point.time == None:               # (3) invalid time
                time_set = time_set + gps_delta
                point.time = time_set
            else:                                # (4) valid time
                  time_set = point.time  
#            print('Point at ({0},{1}) -> {2}'.format(point.latitude, point.longitude, point.time))

gpx_file_w.write(gpx.to_xml())
gpx_file_r.close()
gpx_file_w.close()
(1) GPX 파일의 시작 시간이 잘못된 값일 때의 초기 값
(2) 여기서 trkpt 간격은 1s
(3) time가 잘못된 값(None)인 경우 timetrkpt 간격 업데이트 set의 값 설정
(4) 유효한 값은 timeset에 유지됩니다.잘못된 값 변환에 사용

[변환 예]


왼쪽(변환 전)→오른쪽(변환 후)에서 보듯이 타임 무효값을 삽입할 수 있습니다

★ Google Earth Pro도 더 이상 다운되지 않음

【참고문헌】


【1】 https://qiita.com/key/items/20f903a5ac66b6f09782
【2】 파이톤으로 시작하는 데이터 검색, 준비, 분석, 프레젠테이션(Jacqueline Kazil)
【3】 https://pypi.org/project/gpxpy/
【4】 https://docs.python.jp/2/library/datetime.html

좋은 웹페이지 즐겨찾기