背景
作ったもの
ソースコード
# モジュールのインポート
import os, tkinter, tkinter.filedialog, tkinter.messagebox
# ファイル選択ダイアログの表示
root = tkinter.Tk()
root.withdraw()
# 拡張子指定
fTyp = [("","*.gpx")]
iDir = os.path.abspath(os.path.dirname(__file__))
tkinter.messagebox.showinfo('gpxトラック分割プログラム','処理ファイルを選択してください!')
file = tkinter.filedialog.askopenfilename(filetypes = fTyp,initialdir = iDir)
# 処理ファイル名の出力
tkinter.messagebox.showinfo('gpxトラック分割プログラム',file)
header=[]
point_limit = 10000
file_index = 0
footer = " </trkseg>
</trk>
</gpx>"
line_color = " <extensions><gpxx:TrackExtension><gpxx:DisplayColor>Green</gpxx:DisplayColor></gpxx:TrackExtension></extensions>
"
#file_name = "sample.gpx"
file_name = file
with open(file_name,'r') as f:
# header 読み込み
for line in f:
l = line.strip()
header.append(line)
if l.startswith("<trkseg>"):
header_num = len(header)
header.insert(len(header) - 1, line_color)
break
lines = f.readlines()
f.close()
while len(lines) >= header_num + file_index * 3 * point_limit:
file_index += 1
new_file = file_name.rstrip(".gpx") + "_" + str(file_index).zfill(2) + ".gpx"
with open(new_file,'w') as f2:
for headline in header:
f2.write(str(headline))
for line in lines[header_num + (file_index - 1) * 3 * point_limit : header_num + file_index * 3 * point_limit]:
f2.write(line)
else:
f2.write(footer)
print(new_file)
f2.close()
else:
print("Finish!")