2018年1月29日月曜日

コマ図+キューシートみたいなもの、一区切りにする

はじめに

ルート検索サイトから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.4 3.6.6, 各種ライブラリ
  • GPSBabel Version 1.5.3(日本語ファイル名で処理ができない。)
  • GPSBabel Version 1.5.4(ソースからmake)
  • ImageMagick 6.9.7-4

作成手順

ルート検索サイトでルートを作って、データをダウンロードする

  1. ルート検索サイトで、ルートを作成する。
  2. Route と Track の2種類のデータをダウンロードする。
  3. 名前は例えば、トラックデータを Sakura.gpx 、ルートデータを Sakura.rwg とかに変更する。
  4. 以後の各スクリプトでは、Sakura の部分を使って、作業ディレクトリやファイルを作っている。 日本語名には対応していない。
    • 検索サイトは、 RideWithGPSPlotaRoute のふたつのサイトで確認。
    • 手元に落とした後、ルート変更は面倒なので、できるだけサイト上で作り込む方がよい。
    • いずれのサイトも、「右折」とかのポイントが設定される。これらのポイントをルートポイントとする。
    • ルートポイントの内容は、手元のPCにダウンロードしてからも編集可能だが、 手元での修正は、OSM地図か、地理院の地図を背景にした作業なので、 地図情報が必要な作業は、googleマップとかが参照できる、このタイミングで終わらせたい。
    • 余分なルートポイントの削除は、手元のPCで作業する方が楽なので、気にしなくてよい。
    • コマ図の作成では、3つの連続したルートポイントが所定の距離(例えば750m)の中にある場合に、 拡大エリアとみなして、その範囲を拡大表示するようにしている。結構いいかげんな処理なので、 期待してはいけない。まあ一応、迷いそうな場所は3点設定にするとよい。ただし、図が増え過ぎに注意。
    • コマ図1枚に表示するルートポイントは3つまでなので、工夫が必要。
    • コマ図1枚に表示するトラックの区間距離の上限が設定できる(不完全)。
    • ルートポイントの新たな作成は、地図情報が必要でない場合、手元PCでの作業の方が早い場合がある。
    • ただし、手元PCでの作業は、OSMの地図上での作業なので、不正確な場合があるので、注意。
    • トラックデータをサイトで間引く必要はない。手元PC上で gpsbabel を使えば簡単に間引ける。

Route データをTrack データにマージする

python _merge_rp.py Sakura.ini
  1. 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/ <<- ダウンロードした地図データ置き場
  2. Sakura というディレクトリが作製され、 その下に Sakura_mer.gpx として作成する。
  3. ルートデータの内容をCSV形式でも吐き出すので、一覧を見て確認できる。 csv ファイルは、Sakura/csv 配下に作成される。
  4. マージする際、別ファイルで用意したリストを用いて語句を置換させる。 リストファイルは、`mylibs/_translate.dic` 。
    • 残念ながら、ルートポイントはトラックポイントにリンクした座標になっていない。
    • 右折ポイントから次の左折ポイントまでの距離を、Route.gpx のみで知ることが出来ない。
    • 各ルートポイントに最も近いTrackPoint候補を選び出し、 そのトラックポイント name という項目を追加し、RoutePoint の情報を埋め込んでいる。
    • 複数候補が見つかることがほとんどなので、 該当するポイントすべてに、キーワードを追加している。
    • トラックポイントの name という項目は、gpx の track の仕様にある項目。
    • トラックポイントの name の中身が、「右折」とか「信号直進」とか。
    • なお、対応する ルートポイントがないトラックポイントの name は、'X' (変更可)としている。 空白だと、RouteConverterのデフォ値が埋め込まれるので、 設定した方がよい。

マージしたトラックデータの編集(手作業)

  1. 編集は、 RouteConverterViking で行う。
  2. 作業内容
    1. 重複点の削除
    2. ルートポイントの記述の追加。 X から 交差点直進 への変更など。
    3. 不要な記述の削除 Turn Left から X に変更など
    4. 長過ぎるコメントを短くする(日本語で7文字3行以下にしたい。半角が入るとずれる)
    5. 拡大エリ3点への対応(追加や除外)
    6. 部分的なルート修正(追加、変更、削除など)
    7. "右クランク120m" とかで、2点を1点にするとか、ポイントを減らす努力をすること
      • RouteConverterは、地図を見ながら表計算ソフトみたいに nameデータを操作できる。
      • 座標の修正は得意ではないので、name の修正と、ポイントの削除だけに絞りたい。
      • ルート自体の修正は、Vikingの方が作業しやすい。修正時にポイントを追加した場合、 Nameを X にすることを忘れないように。
      • カシミール3Dでは、name は扱えないみたい。
      • トラックポイントを間引くのは、gpsbabel で行うので、ここで行う必要はない。
      • この作業が、もっとも時間を要するので、必ずバックアップを。
      • 前段階のスクリプトは、ファイルがあると、上書きしないようにしている。

修正したトラックデータから コマ図+キュー の図化

python _mapcue.py Sakura.ini
  1. 2種類の画像ファイルを作成
    1. Sakura/map-N`と `Sakura/map-W に連番で作成される
    2. 折本とKOBOに使う画像ファイルと、マップケース用の、A5サイズに4つのコマ図と対応するキューシートを並べたもの
  2. 修正したトラックデータから、X 以外のデータを抽出し、 近接アラート付きのウェイポイントファイルとCSVファイルを出力する。
    1. Sakura/Sakura_ale.gpx
    2. Sakura/csv/Sakura_cue.csv, Sakura/csv/Sakura_all.csv
  3. GPSデバイス用に、修正したトラックデータを gpsbabel で間引いたデータを Sakura/Sakura_rde.gpx に出力。

不要な画像ファイルを画像ビュアーなどで削除する

  1. 自宅周辺とか知った土地とかの画像は不要なので、 画像ビュアなどで、削除するか別フォルダへ移動する。
  2. フォルダ内(Sakura/map-NSakura/map-W)の全ての画像ファイルが、 この後のアレンジ用スクリプトの対象。

印刷用の pdfファイル と KOBO用の cbz ファイルを作成

python _arrange_map.py Sakura.ini
  1. 印刷用pdfファイル(折本用レイアウトとA4(A5+A5))を作成
    1. 折本用レイアウト(8枚/A4) Sakura/Sakura_cuemap_N.pdf
    1. マップケース用(2枚/A4) Sakura/Sakura_cuemap_N.pdf ふたつ折りで使う
    1. 中間ファイルを Sakura/maps_pack/ に作る。
  2. KOBO用のグレースケールのcbzファイルを作成 Sakura/Sakura.cbz
  3. いずれも imagemagic を使用

GPSデバイス、KOBOに転送、pdfの印刷

  1. 印刷して折本や、マップケース用とかにする。
  2. KOBOに転送する。cbzファイルには目次がないので、epubに変換して作業しても良いが、KOBOの動作が重くなる。
  3. GPSデバイスにトラックデータと近接アラート付きwaypointを転送する
  4. 必要なら、 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 件のコメント:

コメントを投稿

麻のボディタオル

2018年の秋(まだ、自転車を封印してない)、 近江上布伝統産業会館 で、興味からボディタオルを購入した。 お、よかった。: 自然派パン工房 ふるさとの道 ほぼ毎日風呂で使ってきて、ついに寿命がきたようだ。 お店の方に、「糸が痩せて破れてくる」まで使える、と...