はじめに
ルート検索サイトからDLしたトラックデータとルートデータを用いて、 "キューシートもどき"と、地理院の地図上にトラックを表示した"コマ図もどき"を、 組み合わせた画像ファイルを作成させるスクリプト。キューシートに使うポイントデータは、 CSVファイルと、アラート付きウェイポイントデータとして、 コマ図に使ったトラックデータは、GPS デバイス用の間引いたデータで出力する。
なお、ダウンロードしたままのデータは使用に耐えないので、 エディタとかで編集作業が必要になる。
年末で作業を一区切りにして、まとめたもの。今頃になってしまった。 遠出するとか使う機会が少ないので、忘れないように。
作業環境(2018-08)
Debian Stretch 4.9.65-3 (2017-12-03) x86_64- Debian Stretch 4.9.110-3 (2018-08-21) x86_64
-
- pyenv, Python
3.5.43.6.6, 各種ライブラリ - matplotlib, cv2
- gpxpy, pandas, numpy
- pythonでgoogleマップや地理院地図を表示してみる - Qiita
- subprocess, textwrap など
- pyenv, Python
GPSBabel Version 1.5.3(日本語ファイル名で処理ができない。)- GPSBabel Version 1.5.4(ソースからmake)
- ImageMagick 6.9.7-4
作成手順
ルート検索サイトでルートを作って、データをダウンロードする
- ルート検索サイトで、ルートを作成する。
- Route と Track の2種類のデータをダウンロードする。
- 名前は例えば、トラックデータを Sakura.gpx 、ルートデータを Sakura.rwg とかに変更する。
- 以後の各スクリプトでは、Sakura の部分を使って、作業ディレクトリやファイルを作っている。
日本語名には対応していない。
- 検索サイトは、 RideWithGPS と PlotaRoute のふたつのサイトで確認。
- 手元に落とした後、ルート変更は面倒なので、できるだけサイト上で作り込む方がよい。
- いずれのサイトも、「右折」とかのポイントが設定される。これらのポイントをルートポイントとする。
- ルートポイントの内容は、手元のPCにダウンロードしてからも編集可能だが、 手元での修正は、OSM地図か、地理院の地図を背景にした作業なので、 地図情報が必要な作業は、googleマップとかが参照できる、このタイミングで終わらせたい。
- 余分なルートポイントの削除は、手元のPCで作業する方が楽なので、気にしなくてよい。
- コマ図の作成では、3つの連続したルートポイントが所定の距離(例えば750m)の中にある場合に、 拡大エリアとみなして、その範囲を拡大表示するようにしている。結構いいかげんな処理なので、 期待してはいけない。まあ一応、迷いそうな場所は3点設定にするとよい。ただし、図が増え過ぎに注意。
- コマ図1枚に表示するルートポイントは3つまでなので、工夫が必要。
- コマ図1枚に表示するトラックの区間距離の上限が設定できる(不完全)。
- ルートポイントの新たな作成は、地図情報が必要でない場合、手元PCでの作業の方が早い場合がある。
- ただし、手元PCでの作業は、OSMの地図上での作業なので、不正確な場合があるので、注意。
- トラックデータをサイトで間引く必要はない。手元PC上で gpsbabel を使えば簡単に間引ける。
Route データをTrack データにマージする
python _merge_rp.py Sakura.ini
-
Sakura.ini は以降のスクリプト共通で読み込ませる。 このスクリプトでは、track_gpx_file だけ使っている。
[input] track_gpx_file = Sakura.gpx route_gpx_file = Sakura.rwg mat_title_name = お花見ライド [control] job = 0 <<- 未 start_trip = 0.0 <<- 未 start_map_page = 0 end_map_page = 0 span_00 = 5.50 <<- 1枚にプロットさせる上限距離 span_01 = 2.80 <<- 各spanは、地理院地図のスケール切替に使う値 span_02 = 1.40 <<- 変更すると、内部も変更要。すこしなら大丈夫かも。 span_03 = 0.75 <<- 拡大エリア 3点の閾値 750m off_span = 0.05 <<- 始点終点に足し込む距離 co_trip = 1.004 <<- 距離の補正。計算した距離を 0.4% 割り増す。 NoName = X <<- RoutePoint が無い TrackPoint の 記述内容。NoData とかでもよい。 tiles_dir = /home/hogehoge/maptiles/ <<- ダウンロードした地図データ置き場
- Sakura というディレクトリが作製され、 その下に Sakura_mer.gpx として作成する。
- ルートデータの内容をCSV形式でも吐き出すので、一覧を見て確認できる。 csv ファイルは、Sakura/csv 配下に作成される。
- マージする際、別ファイルで用意したリストを用いて語句を置換させる。
リストファイルは、`mylibs/_translate.dic` 。
- 残念ながら、ルートポイントはトラックポイントにリンクした座標になっていない。
- 右折ポイントから次の左折ポイントまでの距離を、Route.gpx のみで知ることが出来ない。
- 各ルートポイントに最も近いTrackPoint候補を選び出し、 そのトラックポイント name という項目を追加し、RoutePoint の情報を埋め込んでいる。
- 複数候補が見つかることがほとんどなので、 該当するポイントすべてに、キーワードを追加している。
- トラックポイントの name という項目は、gpx の track の仕様にある項目。
- トラックポイントの name の中身が、「右折」とか「信号直進」とか。
- なお、対応する ルートポイントがないトラックポイントの name は、'X' (変更可)としている。 空白だと、RouteConverterのデフォ値が埋め込まれるので、 設定した方がよい。
マージしたトラックデータの編集(手作業)
- 編集は、 RouteConverter か Viking で行う。
- 作業内容
- 重複点の削除
- ルートポイントの記述の追加。 X から 交差点直進 への変更など。
- 不要な記述の削除 Turn Left から X に変更など
- 長過ぎるコメントを短くする(日本語で7文字3行以下にしたい。半角が入るとずれる)
- 拡大エリ3点への対応(追加や除外)
- 部分的なルート修正(追加、変更、削除など)
- "右クランク120m" とかで、2点を1点にするとか、ポイントを減らす努力をすること
- RouteConverterは、地図を見ながら表計算ソフトみたいに nameデータを操作できる。
- 座標の修正は得意ではないので、name の修正と、ポイントの削除だけに絞りたい。
- ルート自体の修正は、Vikingの方が作業しやすい。修正時にポイントを追加した場合、 Nameを X にすることを忘れないように。
- カシミール3Dでは、name は扱えないみたい。
- トラックポイントを間引くのは、gpsbabel で行うので、ここで行う必要はない。
- この作業が、もっとも時間を要するので、必ずバックアップを。
- 前段階のスクリプトは、ファイルがあると、上書きしないようにしている。
修正したトラックデータから コマ図+キュー の図化
python _mapcue.py Sakura.ini
- 2種類の画像ファイルを作成
- Sakura/map-N`と `Sakura/map-W に連番で作成される
- 折本とKOBOに使う画像ファイルと、マップケース用の、A5サイズに4つのコマ図と対応するキューシートを並べたもの
-
修正したトラックデータから、X 以外のデータを抽出し、
近接アラート付きのウェイポイントファイルとCSVファイルを出力する。
- Sakura/Sakura_ale.gpx
- Sakura/csv/Sakura_cue.csv, Sakura/csv/Sakura_all.csv
- GPSデバイス用に、修正したトラックデータを gpsbabel で間引いたデータを Sakura/Sakura_rde.gpx に出力。
不要な画像ファイルを画像ビュアーなどで削除する
- 自宅周辺とか知った土地とかの画像は不要なので、 画像ビュアなどで、削除するか別フォルダへ移動する。
- フォルダ内(Sakura/map-N と Sakura/map-W)の全ての画像ファイルが、 この後のアレンジ用スクリプトの対象。
印刷用の pdfファイル と KOBO用の cbz ファイルを作成
python _arrange_map.py Sakura.ini
-
印刷用pdfファイル(折本用レイアウトとA4(A5+A5))を作成
- 折本用レイアウト(8枚/A4) Sakura/Sakura_cuemap_N.pdf
- マップケース用(2枚/A4) Sakura/Sakura_cuemap_N.pdf ふたつ折りで使う
- 中間ファイルを Sakura/maps_pack/ に作る。
- KOBO用のグレースケールのcbzファイルを作成 Sakura/Sakura.cbz
- いずれも imagemagic を使用
GPSデバイス、KOBOに転送、pdfの印刷
- 印刷して折本や、マップケース用とかにする。
- KOBOに転送する。cbzファイルには目次がないので、epubに変換して作業しても良いが、KOBOの動作が重くなる。
- GPSデバイスにトラックデータと近接アラート付きwaypointを転送する
- 必要なら、 csvファイルからキューシートを作成、印刷する
ディレクトリ、ファイル関係
├── _merge_rp.py : ├── _mapcue.py : ├── _arrange_map.py : │ └ mylibs : │ ├── mybase.py │ ├── mygps.py │ ├── mygpsf.py │ ├── mymap.py │ ├── mymap2.py │ ├── myplot.py │ ├── mytbl.py │ └── _translate.dic │ ├── Sakura.gpx : ダウンロードしたトラックデータ ├── Sakura.rwg : ダウンロードしたルートデータ ├── Sakura.ini : 設定ファイル └── Sakura : 保存フォルダ ├── Sakura.cbz : KOBO用 ├── Sakura_cuemap_N.pdf : 折本用の 8ページ/A4 にレイアウトしたpdf ├── Sakura_cuemap_W.pdf : マップケース用に 2ページ/A4 にレイアウトしたpdf ├── Sakura_mer.gpx : トラックにルートをマージしたトラックデータ ├── Sakura_rdu.gpx : gpsbabelで間引いたトラックデータ ├── Sakura_ale.gpx : route point を alert waypoint にしたデータ ├── csv : │ ├── Sakura_all.csv : │ └── Sakura_cue.csv : キューシート用csv ├── map-N : キュー+コマ図(type N) 単独 │ └── N-map***.png : ├── map-W : キュー+コマ図(type W) 単独 │ └── W-map***.png : └── maps_pack : A4にレイアウトした画像ファイル ├── N-map***_S.jpg : └── W-map***_W.jpg : /home/hogehoge/maptiles/ : ダウンロードした地図データ置き場
0 件のコメント:
コメントを投稿