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
Reference
이 문제에 관하여(python을 통해 GPX 파일에 대한 데이터 변환 (time 삽입값)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/oinu-poppo/items/d2977c24b04c60fd82c7
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
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()
Reference
이 문제에 관하여(python을 통해 GPX 파일에 대한 데이터 변환 (time 삽입값)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/oinu-poppo/items/d2977c24b04c60fd82c7텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)