Home > Archives > 2021年09月25日

2021年09月25日

GPX をぶった切る

XML の文字列に変換した後に力技でぶった切ることにした.カシミール3Dの出したやつを gpxpy で処理した後のものならこれで切れるだろう.

cat > gpx_split5MB.py <<'EOS'
import gpxpy
import sys
import os
if len(sys.argv) < 2:
    print('python3 {0} gpx_file'.format(sys.argv[0]))
    sys.exit(0)
fname=sys.argv[1]
body,ext = os.path.splitext(fname)
def write(ts, head, last, i):
    with open(body + '.' + str(i) + ext, 'w') as of:
        of.write(head)
        for t in ts:
            of.write('\n')
            of.write(t)
        of.write('\n')
        of.write(last)
with open(fname) as f:
    g = gpxpy.parse(f)
    xml=g.to_xml(prettyprint=False)
    trks=xml.split('')
    head=trks[0]
    trks[-1],last=trks[-1].rsplit('\n',maxsplit=1)
    trks=trks[1:]
    i = 0
    k = 0
    s = 0
    ts = []
    while k < len(trks):
        if s + len(head) + len(last) >= 4800000:
             write(ts,head,last,i)
             s = 0
             i += 1
             ts = []
        s += len(trks[k])
        ts += [trks[k]]
        k += 1
    write(ts,head,last,i)
EOS

もうちょい美しいコードを書きたいところだけど動きゃいいや.

とりあえずこれで九州内の GPS 軌跡を google maps に乗せきれた.めでたし.

Home > Archives > 2021年09月25日

Search
Feeds

Page Top