roadstyle について
roadstyle は、OpenStreetMap の地名や道路データからインタラクティブな道路マップを作成する Python ライブラリとコマンドラインツールです。道路のスタイル設定、データによる色分け、ストリートビュー、JavaScript API に対応した単体 HTML を生成し、MCP サーバーから AI アプリがコードなしで地図と PNG プレビューを作成できます。
主な機能
- 01地名や道路データから地図を描画
- 02オフライン対応の単体 HTML を出力
- 03データ列に基づく道路の色分け
- 04道路から Google Street View を表示
- 05JavaScript API による地図操作
- 06AI エージェント向けの地図生成ツール
活用シーン
- 01OpenStreetMap から特定地域の道路地図を作成
- 02交通量や速度を色で可視化
- 03単体 HTML 地図を共有
- 04AI エージェントに地図を描画させプレビューを確認
MCP 対応
MCP サーバーはクライアントに `render_place`、`render_file`、`snapshot` を公開します。HTML 地図を保存し、パスと PNG プレビューを返します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
3掲載時のツール一覧 · 4 日前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| place | string | はい | |
| options | any | いいえ | |
| output_path | any | いいえ | |
| network_type | string | いいえ |
詳細
roadstyle
Python から美しく、インタラクティブな道路地図を作成できます。
実際の道路地図、Google Street View、JavaScript API を備えたオフライン対応の HTML ファイルを 1 つ作成します。
インストール · クイックスタート · ギャラリー · ライブマップ · AI エージェント · ドキュメント

roadstyle を選ぶ理由
- 実際の道路地図。 ケーシングと塗りつぶし、ズームに応じて変化する道路幅、道路名、一方通行の矢印、下を通るトンネルと上を渡る橋、オプションの 3D 橋桁を表示します。
- オフライン対応ファイル 1 つ。 地図、データ、スタイルを 1 つの HTML ページにまとめています。サーバーなしで開いたり、メールで送ったり、あらゆるウェブサイトに掲載したりできます。
- Street View を内蔵。 道路をクリックすると、その道路の進行方向を向いた Google Street View を表示します。
- あらゆる道路データに対応。 GeoDataFrame、ファイル、DuckDB、Arrow、osmnx または duckOSM を利用できます。
- データに基づく色分け。 速度、交通量、その他の任意の列で色分けでき、凡例と色分けメニューも表示できます。
- スクリプトから操作可能。 独自のダッシュボード向けに、
window.rs*JavaScript API とイベントを利用できます。 - AI エージェントですぐに利用可能。 MCP サーバーとエージェントスキルを備えています。
インストール
pip install roadstyle # core
pip install "roadstyle[all]" # + studio, numeric ramps, vector tiles, lonboard, DuckDB, …
Python ≥ 3.10。個別の追加機能と開発環境のセットアップについては、インストールを参照してください。
クイックスタート
OpenStreetMap から作成する場合。データは不要です。 osmnx を使えば、任意の場所を指定できます(pip install osmnx)。
import osmnx as ox
import roadstyle as rs
G = ox.graph_from_place("Tartu, Estonia", network_type="drive", simplify=False)
G = ox.simplify_graph(G, edge_attrs_differ=["bridge", "tunnel"]) # keep tunnels and bridges apart
rs.render_edges(ox.graph_to_gdfs(G, nodes=False)).save("tartu.html")
独自のデータから作成する場合。 ラインジオメトリと highway 列を含む、任意のファイルまたは GeoDataFrame を利用できます。
import geopandas as gpd
import roadstyle as rs
edges = gpd.read_file("edges.gpkg") # LineStrings + a `highway` column, any CRS
rs.render_edges(edges).save("map.html") # open map.html: no server (Street View needs one)
他のスタイル:
rs.render_edges(edges, basemap="dark_matter", view_3d=True) # dark, 3D bridge decks
rs.render_edges(edges, palette="carto", basemap="positron") # the classic OSM look
rs.render_edges(edges, color_by="aadt", cmap="viridis") # colour by your data
rs.render_edges(edges, palette="mono", color_options={ # several colourings,
"Traffic": {"color_by": "aadt", "cmap": "viridis"}, # switched in the browser
"Speed": {"color_by": "maxspeed_kmh", "cmap": "magma"}})
rs.render_edges(edges, tiles=True) # 100k+ edges
rs.render_dashboard(edges).save("dashboard.html") # map + query sidebar
rs.render_street_view(edges).save("street_view.html") # map and Street View side by side
Python を使わない場合は、roadstyle edges.gpkg -o map.html --basemap dark_matter を実行するか、ワークベンチで操作してください:pip install "roadstyle[studio]" && roadstyle studio。
ギャラリー
![]() 道路地図風の表示 rs.render_edges(edges) | ![]() 橋とトンネル rs.render_edges(edges) | ![]() データに応じた色分け color_by="maxspeed_kmh" |
![]() 3D の橋 view_3d=True | ![]() ストリートビュー 道路をクリック | ![]() ダッシュボード rs.render_dashboard(edges) |
各表示とそのコードはこちら:ギャラリー。
入力データ
必須なのは geometry と highway のみです。ほかの列を指定すると機能が有効になります。
| 列 | 機能 |
|---|---|
geometry(LineString、任意の CRS) | エッジ。各エッジは有向です。双方向道路は、ジオメトリが逆向きの 2 つのエッジで表されます |
highway(OSM クラス) | 色、幅、縁取り、描画順 |
name | 道路ラベル、ポップアップのタイトル |
oneway | 方向を示す矢印 |
bridge / tunnel / layer | 立体交差:トンネルは下に、橋は上の橋桁に表示されます |
edge_id | ポップアップ。64 ビット ID は正確に保持されます |
| その他の列 | ポップアップに表示され、JavaScript からクエリできます |
duckOSM(duckosm export-gis)は、この形式をそのままエクスポートします。また、osmnx のエッジもそのまま使えます:rs.render_edges(ox.graph_to_gdfs(G, nodes=False))。
JavaScript から操作する
保存したページでは、window.rs* 関数と rs:* イベントが公開されます。
const ids = rsQuery(p => p.maxspeed_kmh > 30); // feature ids whose properties match
rsColor(ids, "#ff00aa"); rsFocus(ids); // paint them, fit the camera
document.addEventListener("rs:select", e => console.log(e.detail.properties));
すべての関数とイベントについては、JavaScript APIをご覧ください。
AI エージェント向け
MCP サーバー。 MCP 対応の AI アプリ(Claude Code、Claude Desktop、Cursor など)で、コードを書かずに道路地図を描画できます。render_place("Tartu, Estonia")、render_file("roads.gpkg")、snapshot を使います。
それぞれ HTML 地図を保存し、そのパスとエージェントが確認できる PNG プレビューを返します。
claude mcp add roadstyle -- uvx roadstyle-mcp
Claude Desktop と地図の保存場所
claude_desktop_config.json に記述します。
{"mcpServers": {"roadstyle": {"command": "uvx", "args": ["roadstyle-mcp"]}}}
地図は ~/roadstyle-maps/ に保存されます。PNG プレビューには Chromium が必要です。インストールは一度だけで済みます。
uvx --from roadstyle-mcp playwright install chromium。
Claude Code プラグイン。 MCP サーバーと以下のスキルをまとめてインストールできます。
/plugin marketplace add Khoshkhah/roadstyle
/plugin install roadstyle@roadstyle
コードを書くエージェント向け:
skills/roadstyle/SKILL.md:roadstyle を 使う エージェント向けのスキルです(1 回の呼び出し、データ契約、JS API、注意点)。 Claude Code にインストールするには:mkdir -p ~/.claude/skills/roadstyle && curl -fsSL -o ~/.claude/skills/roadstyle/SKILL.md \ https://raw.githubusercontent.com/Khoshkhah/roadstyle/main/skills/roadstyle/SKILL.mdAGENTS.md:このリポジトリで 作業する エージェント向けです。llms.txt:LLM 向けにリンク一覧としてまとめたドキュメントサイトです。
API キー
どちらのキーも任意です。キーがなくても roadstyle は動作しますが、機能が一部制限されます。
- CARTO:デフォルトのベースマップに使用します。キーがない場合、タイルに API KEY REQUIRED と表示されます。
CARTO_API_KEYを設定するか、キー不要のベースマップ(esri_street、esri_dark_gray、osm、blank)を使ってください。 - Google Maps:ストリートビューに使用します。ストリートビューはキーなしでも使えます。キーを追加すると Linked モードが使えるようになります。実際のパノラマに合わせて、地図上のマーカーが一緒に移動し、向きを変えます。
CARTO キーの設定
デフォルトのベースマップ(voyager)、positron、dark_matter は CARTO が提供しています。キーがない場合、タイルに API KEY REQUIRED と表示されます。
carto.com/basemaps/apikey で無料のキーを取得し、次のいずれかの方法で設定してください。
export CARTO_API_KEY="…" # environment variable
{ "config": { "api_keys": { "carto": "…" } } }
この JSON を ~/.config/roadstyle/roadstyle.json、または実行元のフォルダーにある roadstyle.json として保存します。Python では代わりに rs.render_edges(edges, api_key="…") を渡すこともできます。キーがない場合は、キー不要のベースマップ esri_street、esri_dark_gray、osm、blank を使ってください。
Google Maps キーの設定
ストリートビューはキーなしでも、キー不要の Google 埋め込みを使って動作します。Google Maps JavaScript API のキーがあると、ストリートビューパネルとウィンドウに Linked / Classic の切り替えが表示されます。Linked は実際のパノラマです。地図上のマーカーが一緒に移動し、向きを変え、Google 独自の道路写真だけが表示されます。Classic はキー不要の埋め込みです。キーを取得するには:
- Google Cloud コンソールでプロジェクトを作成し、Maps JavaScript API を有効にします(Google はプロジェクトに課金アカウントを設定するよう求めます)。
- API とサービス > 認証情報 で API キーを作成します。
- キーを制限します:アプリケーションの制限 は ウェブサイト とし、サイトのアドレス(例:
https://example.com/*)を登録します。API の制限 は Maps JavaScript API のみにします。
次に、キーを渡します。
rs.render_edges(edges, street_view_key="AIza…") # the floating Street View window
rs.render_street_view(edges, street_view_key="AIza…") # the side-by-side page
ブラウザー用のすべてのキーと同様、キーはページに書き込まれるため、キーを保護するのは手順 3 のサイト制限です。そのため、Linked が使えるのは登録したアドレスのみです。localhost で試すには、http://localhost:*/* をリストに追加してください。たとえば環境変数を使うなどして、キーを git に含めないようにしてください。
詳細:設定とベースマップ · Google ストリートビュー。
ドキュメント
**khoshkhah.github.io/roadstyle**では、すべてのページでライブマップをご覧いただけます。
| 場所 | 内容 |
|---|---|
| はじめに | インストール、最初のマップ、データに必要なもの |
| ガイド | 道路のスタイル設定 · データに応じた色分け · 独自のレイヤー · Google Street View · 大規模なネットワーク · ダッシュボードとJavaScript · ウェブサイトでの利用 |
| ギャラリー | 各スタイルの画像と1行のコード |
| Rustエンジン | engine="rust"(実験的):同じマップを3~12倍高速に表示します。ブラウザ用パッケージとクレートも利用できます |
| リファレンス | すべてのパラメーター · JavaScript API · 設定とベースマップ · コマンドライン |
| 変更履歴 | 各リリースでの変更内容 |
使用技術
- MapLibre GL JS(BSD-3-Clause)がすべてのウェブマップを描画します。roadstyleがスタイルと データを作成し、保存したページごとにMapLibreのコピーを埋め込むため、オフラインでも開けます。
- **OpenStreetMap**のデータ(© OpenStreetMap contributors、ODbL)と **openstreetmap-carto**のスタイルを使用しています。roadstyleはこのスタイルに従って道路のクラス、 色、幅を設定します。
- **HiGHS**が、SciPyを通じて、どの道路を最前面に描画するかを解決します。
- ジオメトリには**GeoPandasとShapelyを使用します。 ノートブック用バックエンドにはlonboard(deck.gl)とfolium** を使用します。
ライセンス
MIT。ベースマップのタイルは、独自の帰属表示と利用規約を定める サードパーティーのサービス(CARTO、OSM、Esri)から提供されています。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。





