mcpField
I
isochrone

isochrone

本地服务
github.com/capan地图与出行26 周前更新

关于 isochrone

isochrone 按出行时间和行动模式绘制柏林可步行到达的街道网络,而非填充多边形;还可按加权日常目的地为城区排序。

主要功能

  1. 01按到达时间显示街道可达范围
  2. 02步行、婴儿车和轮椅模式
  3. 03按七类目的地加权排序
  4. 04预计算全城可达性数据

适用场景

  1. 01查询时限内可到达的街道
  2. 02比较不同起点的可达范围
  3. 03按日常需求排序柏林城区

MCP 相关

`isochrone-mcp` 向 MCP 客户端提供 `reachable_area` 工具。输入起点、时限、模式和可选目标后,返回文字摘要及地图链接。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"capan-isochrone": {
"command": "npx",
"args": [
"-y",
"isochrone-mcp"
]
}
}
}
启动命令npx -y isochrone-mcp

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npmisochrone-mcp0.1.4

工具

2

收录的工具列表 · 更新于 2 周前

参数类型必填说明
latnumber是起点纬度(WGS84)
lonnumber是起点经度(WGS84)
targetobject否可选目的地:报告其是否能在给定时间内到达,以及预计到达时间
target.latnumber是
target.lonnumber是
minutesinteger否时间预算,单位为分钟。速度较快的配置允许的时间更短:步行最多 25 分钟,骑行最多 10 分钟,因为搜索区域越大,计算量也越大。省略时使用该配置的合理默认值。
profileenum否出行方式配置walk | stroller | wheelchair | bike
include_placesboolean否同时汇总各类别中可到达地点的数量(餐饮、商店、文化、医疗、学习、户外、金融)
include_geometryboolean否同时返回原始 GeoJSON(10 个到达时间区间,数据量较大)

详细介绍

isochrone

demo uptime

在线体验:iso.huseyincapan.dev

点击地图上的任意位置,即可查看步行 15 分钟内实际可到达的街道网络——按到达时间着色,并提供考虑楼梯和未铺装道路的出行模式。

OSM 数据 → PostGIS + pgRouting → Express → Leaflet。

同一个街角、同样的 15 分钟,用两种方式绘制:实际可到达的街道网络,以及围绕它绘制的凸包

为什么不用多边形?

我能找到的每张等时圈地图,都是用填充多边形来回答问题。除非你是鸽子,否则这种做法就是错的:多边形声称你可以到达街区中央、穿越铁路路堑、步行穿过建筑物。在上方的街角,同样是 15 分钟,可到达的街道总长为 107.6 km;围绕这些街道绘制的凸包覆盖 3.28 km²,却声称有 30.4 km 的街道可达,而实际上步行无法到达。本地图绘制的是街道网络。

工作原理

pgr_drivingDistance 从距离点击位置最近的顶点开始遍历街道图,直至用完时间预算,并返回每条可达边及其到达时间。这些边会按时间分成 10 个等长区间并直接绘制出来。

边的成本为 length / speed,单位为秒;每次请求都会根据所选模式计算,因此模式只需几个数值,无需更改架构:

模式速度楼梯未铺装道路
walk1.4 m/s半速正常
stroller1.2 m/s不可通行0.6×
wheelchair0.9 m/s不可通行不可通行

这些系数是估算值,并非实测数据——参见已知问题。

我应该住在哪里?

回答一份简短问卷,为七类日常设施(餐饮、绿地、游乐场、杂货店、医疗、幼儿园、学校)设定权重,整个柏林地图就会重新排序,显示对你而言真正的 15 分钟城市在哪里,可按步行、骑行或轮椅出行查看。

关键在于,回答问题时不会进行路径计算:21 个覆盖全市的可达性表面(7 个类别 × 3 种模式,每个约 134,000 个网格单元)都已离线预先计算,因此只需一次聚合查询就能重新排列城市。这里刻意不提供婴儿车模式:其速度系数未经校准,不能将其当作实测数据发布。

向 Claude 询问相关信息(MCP)

isochrone-mcp 包让任何 MCP 客户端都能通过此 API 回答可达性问题:

claude mcp add isochrone -- npx -y isochrone-mcp
Claude 回答可达性问题后,在地图上绘制等时圈

一个工具 reachable_area:起点 + 分钟数 + 模式,可选目标(“我能及时到达那里吗?”)。返回文字摘要和地图链接,而不是一堆坐标。详情见 mcp/。

已知问题

  • 图中的孤立部分。 点击位置最近的顶点可能位于一个不连通的片段上——52.515,13.400 只能到达 13 个节点。解决方法是一次性创建 pgr_connectedComponents 表,供顶点查询关联使用。
  • 校准。 上述速度都是估算值。Google 的 Isochrones API(Preview)支持 WALK 并返回 GeoJSON,因此可以用它来校准 walk 模式。它没有婴儿车或轮椅模式,因此这些模式仍未经验证。
  • 被困起点会显示为一个小圆点,而不是提示“此模式无法到达”。

自行运行

开发环境设置、部署、城市数据导入和运维说明见 docs/OPERATIONS.md。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。