旅行 trip-map

旅行地図ジェネレータ

旅程に載せる地図を SVG で生成。広域ルート図(Natural Earth)、海岸線つきエリア地図(OpenStreetMap)、路線模式図の3種類。Python 標準ライブラリのみで動作。

最終更新 MIT ライセンス
目次
  1. 3種類の地図
  2. 使い方
  3. 進め方
  4. 1. どの地図が要るか決める
  5. 2. 座標を集める
  6. 3. 仕様ファイルを書く
  7. 4. 生成して必ず目視する
  8. 5. 計画書に埋め込む
  9. 制約
  10. ライセンス
Claude がこのスキルを読み込む条件

旅行計画書に載せる地図を SVG で生成する。空港間の移動を示す広域ルート図、海岸線つきのエリア地図、駅と宿の位置関係を示す路線模式図の3種類。ユーザーが旅程に地図を入れたい、ルート図を作りたい、観光地の位置関係や移動時間を図で示したいと言ったときに使う。外部パッケージ不要(Python 標準ライブラリのみ)。Use when the user wants a map, route diagram, or area map for a trip itinerary or travel document.

SKILL.md の frontmatter にある description です。依頼の内容がここに書かれた状況に当てはまると、Claude が自分でこのスキルを読み込みます。

旅程に載せる地図を SVG で生成する。Python 標準ライブラリだけで動き、追加インストールは要らない。

SVG なのでそのまま HTML に埋め込め、trip-planner-pdf で PDF 化するとベクタのまま入る(拡大しても劣化しない)。

3種類の地図

スクリプト何の図かいつ使うか通信
route_map.py空港間の移動を1枚で見せる広域図。緯度経度グリッド、便名と時刻つき複数の出発地から合流する旅程、離島を挟む旅程初回のみ
area_map.py実際の海岸線に観光地と所要時間を重ねたエリア図島・沿岸部の観光地の位置関係と移動時間を示すbbox ごと初回のみ
transit_map.py駅を等間隔に並べた路線模式図。宿・目的地を引き出し線で示す市街地の動線(空港→宿→繁華街)を示す不要

選び方:地理的な正確さが要るなら area_map、順序と乗り換えが伝わればよいなら transit_map。 市街地の図に area_map を使うと、海岸線しか出ないうえ道路も鉄道も無いので役に立たない。

使い方

cd skills/trip-map
python3 scripts/route_map.py   examples/route.json   -o out/route-map.svg
python3 scripts/area_map.py    examples/area.json    -o out/area-map.svg
python3 scripts/transit_map.py examples/transit.json -o out/transit-map.svg

仕様ファイルの書き方は references/spec.mdexamples/ をコピーして数値を差し替えるのが最短。

海岸線が取れないとき(Overpass が混雑・オフライン):

python3 scripts/area_map.py area.json --no-coast   # 位置関係だけの図になる

進め方

1. どの地図が要るか決める

計画書の内容から判断する。地図は3枚まで。 情報が同じ地図を角度を変えて並べても価値は増えない。

  • 出発地が複数ある/飛行機や船で島を移動する → route_map
  • 車で回る日がある → area_map(所要時間を note に入れる)
  • 市街地を公共交通で動く日がある → transit_map

2. 座標を集める

地点ごとに経緯度が必要。小数点以下4桁で十分。 references/spec.md の「座標の調べ方」を参照。地名から座標を引くときは、必ず生成後の図で位置を確認する。

3. 仕様ファイルを書く

  • route_mapstatus は工程表の区分(確定/未手配/提案)と一致させる。計画書と図で情報が食い違わないこと
  • area_mapnote には車での所要時間を入れる。「近そうに見えて2時間かかる」を図で潰せる
  • 往復の便を描くときは片方の bend を負値にする。同じ線に重なって1本に見えてしまう

4. 生成して必ず目視する

SVG を生成しただけで完了にしない。 ブラウザか以下のコマンドで画像にして確認する。

../trip-planner-pdf/scripts/build-pdf.sh --preview check.html preview.png

見るべき点:

  • 点が意図した場所にあるか(座標の桁間違いは海の上に出るのですぐ分かる)
  • ラベルが重なっていないか → anchor の向きを変える、label_dy でずらす
  • 図の外にはみ出していないか → bbox を広げる、size を変える
  • 出典表記が入っているか

5. 計画書に埋め込む

HTML(trip-planner-pdf)に入れる場合:

<figure>
  <img src="images/area-map.svg" alt="エリア地図">
  <figcaption>海岸線: © OpenStreetMap contributors (ODbL)</figcaption>
</figure>

Markdown に入れる場合も同じく <img> タグで参照する(![]() でも表示されるが、キャプションを付けにくい)。

図のすぐ下に読み方を1〜2文添える。「破線は未手配の便」「北部の岬は片道70分なので日帰りは玉取崎まで」のように、図から読み取ってほしい結論を書く。

制約

  • 道路・鉄道の線形は描けない。 OSM から取るのは海岸線のみ。道路網が要るなら地図サービスのスクリーンショットを使う(その場合は各サービスの利用規約に従うこと)
  • 地名ラベルの自動配置はしない。 重なったら anchorlabel_dy で手動調整する
  • transit_map は駅間を等間隔に描く。実距離は反映しない
  • 縮尺バーは bbox 中央の緯度で計算している。南北に広い図では端で誤差が出る

ライセンス

生成される SVG には出典表記が自動で入る。消さないこと。 Natural Earth はパブリックドメイン、OpenStreetMap は ODbL(帰属表示が義務)。 Overpass API は公共の無料サービスなので、bbox を絞りキャッシュを活かして負荷をかけない(references/spec.md の作法を参照)。

インストール

個人用(全プロジェクトで使う)

git clone https://github.com/yuuint/claude-skills.git
cp -r claude-skills/skills/trip-map ~/.claude/skills/

プロジェクト単位(チームで共有する)

cp -r claude-skills/skills/trip-map <your-project>/.claude/skills/

同梱ファイル

SKILL.md から参照される参考資料・テンプレート・スクリプトです。ディレクトリごとコピーしてください。