mcpField
R
roadstyle

roadstyle

ローカル
khoshkhah.github.io地図・旅行11 日前に更新

roadstyle について

roadstyle は、OpenStreetMap の地名や道路データからインタラクティブな道路マップを作成する Python ライブラリとコマンドラインツールです。道路のスタイル設定、データによる色分け、ストリートビュー、JavaScript API に対応した単体 HTML を生成し、MCP サーバーから AI アプリがコードなしで地図と PNG プレビューを作成できます。

主な機能

  1. 01地名や道路データから地図を描画
  2. 02オフライン対応の単体 HTML を出力
  3. 03データ列に基づく道路の色分け
  4. 04道路から Google Street View を表示
  5. 05JavaScript API による地図操作
  6. 06AI エージェント向けの地図生成ツール

活用シーン

  1. 01OpenStreetMap から特定地域の道路地図を作成
  2. 02交通量や速度を色で可視化
  3. 03単体 HTML 地図を共有
  4. 04AI エージェントに地図を描画させプレビューを確認

MCP 対応

MCP サーバーはクライアントに `render_place`、`render_file`、`snapshot` を公開します。HTML 地図を保存し、パスと PNG プレビューを返します。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"khoshkhah-roadstyle": {
"command": "uvx",
"args": [
"roadstyle-mcp"
],
"env": {
"CARTO_API_KEY": "<CARTO_API_KEY>"
}
}
}
}
起動コマンドuvx roadstyle-mcp
設定が必要な環境変数
CARTO_API_KEYシークレットCARTO basemap key; without it maps use the keyless esri_street base map

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
pypiroadstyle-mcp0.25.0

ツール

3

掲載時のツール一覧 · 4 日前に更新

パラメーター型必須説明
placestringはい
optionsanyいいえ
output_pathanyいいえ
network_typestringいいえ

詳細

roadstyle のロゴ

roadstyle

Python から美しく、インタラクティブな道路地図を作成できます。
実際の道路地図、Google Street View、JavaScript API を備えたオフライン対応の HTML ファイルを 1 つ作成します。

PyPI Python のバージョン テスト ドキュメント ライセンス:MIT

インストール · クイックスタート · ギャラリー · ライブマップ · AI エージェント · ドキュメント

橋、トンネル、ラウンドアバウトが順序どおりに描画され、Rue de la Colle が選択され、道路を映す Street View のフローティングウィンドウが表示された、3D のモナコの roadstyle 地図

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 の橋
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.md
    
  • AGENTS.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 はキー不要の埋め込みです。キーを取得するには:

  1. Google Cloud コンソールでプロジェクトを作成し、Maps JavaScript API を有効にします(Google はプロジェクトに課金アカウントを設定するよう求めます)。
  2. API とサービス > 認証情報 で API キーを作成します。
  3. キーを制限します:アプリケーションの制限 は ウェブサイト とし、サイトのアドレス(例: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)から提供されています。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。