2021年09月23日
GPX を領域指定で切り出す
GPX ファイルの各点についておよそ九州を囲むポリゴン内に点があるかどうか判定して,九州内だけの GPS 記録を抜き出すスクリプトを書いてみた.めんどいのでポリゴン内の判定は shapely を使った.
cat > gpx_kyushu.py <<'EOS' import gpxpy import sys import os from shapely.geometry import Point from shapely.geometry.polygon import Polygon rs=[(129.2376598,33.3523184,0), (129.2820851,31.9550298,0), (130.3562645,30.897614,0), (131.6526512,30.968292,0), (132.2005334,32.8147117,0), (131.8853649,33.6580592,0), (130.5889782,34.1288502,0), (129.2376598,33.3523184,0)] poly = Polygon(rs) if len(sys.argv) < 2: print('python3 {0} gpx_file'.format(sys.argv[0])) sys.exit(0) fname=sys.argv[1] with open(fname) as f: g = gpxpy.parse(f) for t in g.tracks: for s in t.segments: s.points = [ p for p in s.points if poly.contains(Point(p.longitude,p.latitude)) ] t.segments = [ s for s in t.segments if len(s.points) > 0 ] g.tracks = [ t for t in g.tracks if len(t.segments) > 0 ] g.simplify() body,ext = os.path.splitext(fname) with open(body + '.kyushu' + ext, 'w') as of: of.write(g.to_xml(prettyprint=False)) EOS
だがしかし,これでも 5MB 越える年があるな…… でも10年分とかでもトータルでは 30MB になってないので,全体をこれで処理した後に 5MB 程度で分割するスクリプト通すのがよいかな.
- Comments: 0
- TrackBack (Close): -