关于 isochrone
isochrone 按出行时间和行动模式绘制柏林可步行到达的街道网络,而非填充多边形;还可按加权日常目的地为城区排序。
主要功能
- 01按到达时间显示街道可达范围
- 02步行、婴儿车和轮椅模式
- 03按七类目的地加权排序
- 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
在线体验:iso.huseyincapan.dev
点击地图上的任意位置,即可查看步行 15 分钟内实际可到达的街道网络——按到达时间着色,并提供考虑楼梯和未铺装道路的出行模式。
OSM 数据 → PostGIS + pgRouting → Express → Leaflet。
为什么不用多边形?
我能找到的每张等时圈地图,都是用填充多边形来回答问题。除非你是鸽子,否则这种做法就是错的:多边形声称你可以到达街区中央、穿越铁路路堑、步行穿过建筑物。在上方的街角,同样是 15 分钟,可到达的街道总长为 107.6 km;围绕这些街道绘制的凸包覆盖 3.28 km²,却声称有 30.4 km 的街道可达,而实际上步行无法到达。本地图绘制的是街道网络。
工作原理
pgr_drivingDistance 从距离点击位置最近的顶点开始遍历街道图,直至用完时间预算,并返回每条可达边及其到达时间。这些边会按时间分成 10 个等长区间并直接绘制出来。
边的成本为 length / speed,单位为秒;每次请求都会根据所选模式计算,因此模式只需几个数值,无需更改架构:
| 模式 | 速度 | 楼梯 | 未铺装道路 |
|---|---|---|---|
walk | 1.4 m/s | 半速 | 正常 |
stroller | 1.2 m/s | 不可通行 | 0.6× |
wheelchair | 0.9 m/s | 不可通行 | 不可通行 |
这些系数是估算值,并非实测数据——参见已知问题。
我应该住在哪里?
回答一份简短问卷,为七类日常设施(餐饮、绿地、游乐场、杂货店、医疗、幼儿园、学校)设定权重,整个柏林地图就会重新排序,显示对你而言真正的 15 分钟城市在哪里,可按步行、骑行或轮椅出行查看。
关键在于,回答问题时不会进行路径计算:21 个覆盖全市的可达性表面(7 个类别 × 3 种模式,每个约 134,000 个网格单元)都已离线预先计算,因此只需一次聚合查询就能重新排列城市。这里刻意不提供婴儿车模式:其速度系数未经校准,不能将其当作实测数据发布。
向 Claude 询问相关信息(MCP)
isochrone-mcp 包让任何 MCP 客户端都能通过此 API 回答可达性问题:
claude mcp add isochrone -- npx -y isochrone-mcp
一个工具 reachable_area:起点 + 分钟数 + 模式,可选目标(“我能及时到达那里吗?”)。返回文字摘要和地图链接,而不是一堆坐标。详情见 mcp/。
已知问题
- 图中的孤立部分。 点击位置最近的顶点可能位于一个不连通的片段上——
52.515,13.400只能到达 13 个节点。解决方法是一次性创建pgr_connectedComponents表,供顶点查询关联使用。 - 校准。 上述速度都是估算值。Google 的 Isochrones API(Preview)支持
WALK并返回 GeoJSON,因此可以用它来校准walk模式。它没有婴儿车或轮椅模式,因此这些模式仍未经验证。 - 被困起点会显示为一个小圆点,而不是提示“此模式无法到达”。
自行运行
开发环境设置、部署、城市数据导入和运维说明见 docs/OPERATIONS.md。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。