isochrone について
isochroneは移動時間と移動プロファイルに応じて、ベルリンで到達可能な道路網を表示します。塗りつぶしポリゴンではなく道路網を描き、日常的な目的地の重みに基づく地域ランキングも行います。
主な機能
- 01到達時間別の道路網表示
- 02徒歩、ベビーカー、車椅子のプロファイル
- 037種類の目的地による重み付きランキング
- 04事前計算された市全域の到達データ
活用シーン
- 01時間内に到達できる道路の確認
- 02起点ごとの到達範囲の比較
- 03日常のニーズに応じたベルリン地域の順位付け
MCP 対応
`isochrone-mcp`はMCPクライアントに`reachable_area`ツールを提供します。起点、時間、プロファイル、任意の目的地を受け取り、文章の概要と地図リンクを返します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
2掲載時のツール一覧 · 2 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| lat | number | はい | 出発地点の緯度(WGS84) |
| lon | number | はい | 出発地点の経度(WGS84) |
| target | object | いいえ | 任意の目的地。指定時間内に到達可能かどうかと、おおよその到着時刻を報告します |
| target.lat | number | はい | |
| target.lon | number | はい | |
| minutes | integer | いいえ | 時間の上限(分)。移動速度の速いプロファイルほど上限は短くなります。検索範囲が広いほど処理量が増えるため、徒歩は最大 25 分、自転車は最大 10 分です。省略すると、プロファイルに応じた適切な既定値を使用します。 |
| profile | enum | いいえ | 移動プロファイルwalk | stroller | wheelchair | bike |
| include_places | boolean | いいえ | 各グループ(飲食、買い物、文化、健康、学習、アウトドア、お金)で到達可能な場所の数も集計します |
| include_geometry | boolean | いいえ | 元の GeoJSON も返します(到着時間帯 10 区分、データ量大) |
詳細
isochrone
地図上の任意の場所をクリックすると、徒歩15分以内に実際に到達できる道路ネットワークを表示します。到着時間ごとに色分けされ、階段や未舗装路を考慮した移動プロファイルも利用できます。
OSM データ → PostGIS + pgRouting → Express → Leaflet。
なぜポリゴンではないのか?
私が見つけた等時間圏マップは、どれも塗りつぶしたポリゴンで答えを示します。ハトでない限り、それは誤りです。ポリゴンでは、街区の中央まで行ける、線路の切通しを横断できる、建物の中を歩けると主張することになるからです。上の角では、同じ15分で到達できる道路は107.6 kmありますが、その周囲に描いた外郭は3.28 km²を覆い、実際には歩いて到達できない道路を30.4 kmも含んでいると主張します。このマップは道路ネットワークを描画します。
仕組み
pgr_drivingDistance は、クリック位置に最も近い頂点から道路グラフをたどり、時間の上限に達するまで進んで、到着時間とともに到達可能なすべてのエッジを返します。それらのエッジを10等分の時間帯に分類し、そのまま描画します。
エッジのコストは length / speed で表される秒数で、リクエストごとに選択されたプロファイルに応じて計算されます。そのため、プロファイルの追加はスキーマを変更せず、いくつかの数値を設定するだけです。
| profile | speed | stairs | unpaved |
|---|---|---|---|
walk | 1.4 m/s | 速度半分 | 通常 |
stroller | 1.2 m/s | 通行不可 | 0.6× |
wheelchair | 0.9 m/s | 通行不可 | 通行不可 |
これらの係数は測定値ではなく推定値です。既知の課題をご覧ください。
どこに住むべき?
短いアンケートで、日常生活に関わる7つのレイヤー(飲食店、緑地、遊び場、食料品店、医療、幼稚園、学校)に重み付けすると、ベルリン全体のマップが再評価され、徒歩、自転車、車椅子で移動する場合に、あなたにとっての重み付けされた15分都市が実際にどこにあるかを表示します。
ポイントは、質問に答える時点では経路探索を行わないことです。市全体の到達可能範囲を示す21個のサーフェス(7つのレイヤー × 3つのプロファイル、各約134,000のグリッドセル)をオフラインで事前計算しているため、都市の再評価は1回の集約クエリで済みます。ベビーカーのプロファイルは意図的にここから除外しています。速度係数は未調整の推定値であり、測定値であるかのように公開すべきではないためです。
Claude に質問する(MCP)
isochrone-mcp パッケージを使うと、任意の MCP クライアントからこの API に到達可能性について質問できます。
claude mcp add isochrone -- npx -y isochrone-mcp
1つのツール reachable_area を使い、出発地点、所要時間、プロファイルを指定します。任意で目的地(「時間内にそこまで行けますか?」)も指定できます。座標の羅列ではなく、文章による要約と地図へのリンクが返されます。詳しくは mcp/ をご覧ください。
既知の課題
- グラフの孤立領域。 クリック位置に最も近い頂点が、接続されていない断片上にある場合があります。
52.515,13.400では13個のノードにしか到達できません。対処するには、頂点検索で結合するpgr_connectedComponentsテーブルを一度だけ作成します。 - 調整。 上記の速度は推測値です。Google の Isochrones API(プレビュー)は
WALKをサポートし、GeoJSON を返すため、walkプロファイルをそれに照らして調整できます。ベビーカー/車椅子モードはないため、これらは未検証のままです。 - 到達不能な出発地点は、「このプロファイルでは到達不能」と表示されず、小さな塊として描画されます。
自分で実行する
開発環境のセットアップ、デプロイ、都市データのインポート、運用メモは docs/OPERATIONS.md にあります。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。