关于 carto-routing-od-analysis
面向 CARTO 空间分析工作流的技能,介绍路线、出行时间矩阵、等时圈和基于 H3 的 OD 流量分析。它区分适用于临时查询的 MCP 工具与适用于表级重复处理的工作流。
主要功能
- 01计算驾车或步行路线
- 02生成等时圈与等距圈
- 03构建出发地—目的地矩阵
- 04基于 H3 聚合 OD 流量
- 05提供工作流处理模式
适用场景
- 01比较地点的出行可达范围
- 02按出行时间寻找最近设施
- 03评估目的地可达性
- 04汇总并可视化通勤流向
MCP 相关
CARTO MCP 服务提供 `route`、`calculate_isolines` 和 `calculate_od_matrix` 等临时分析工具,并可用于创建、验证和运行工作流。API token 会话不开放临时分析和创作工具,可改用 CLI 或 OAuth 会话。
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ cartodb/ agent-skills --skill carto-routing-od-analysis安装后在 Claude Code 中输入/carto-routing-od-analysis确认已加载。
详细介绍
路径规划与起讫点分析
计算路径、行程时间/距离矩阵和等值线覆盖区域(驾车和步行模式),并通过空间索引分析 OD 流动模式。根据规模,可选择两种访问方式:
- 单次/临时(MCP 优先):对于单条路径、某个地点的等值线或较小的 OD 矩阵,CARTO MCP 工具
route、calculate_isolines和calculate_od_matrix可直接处理(每个工具也都有capabilities操作,用于列出支持的模式/范围类型)。无需工作流。这些工具可在任何 MCP 宿主上运行,包括无法使用 CLI 的沙盒聊天宿主。交互式请求优先使用这些工具。 - 表级规模/可重复执行:若需对整张表进行计算或构建可复用的管道,请使用下方的工作流模式。加载
carto-create-workflow,了解开发流程、JSON 结构和验证方式——它涵盖两种路径(连接后使用 MCPcreate_workflow/validate_workflow/run_workflow;否则使用carto workflowsCLI;路由指引见carto-basics/references/access-paths.md)。
在 API 令牌 MCP 会话中,临时处理/创作工具会被隐藏(仅可读取/发现)——请改用 CLI,或通过 OAuth 重新连接。
说明
主要有三种工作流模式。请根据使用场景选择:
| 模式 | 组件 | 适用场景 |
|---|---|---|
| 等值线/等时圈 | native.isolines | 需要计算地点周边的覆盖区多边形(例如“10 分钟内可到达的所有地点”) |
| OD 矩阵 | native.routesodmatrix | 需要计算每个起讫点对之间的行程时间/距离(分析用途,不包含几何图形) |
| 路径创建 | native.routes | 需要生成 OD 点对之间的实际路径线几何(可视化、详细路径) |
模式 A:生成等值线/等时圈
管道:
Source Points -> (Filter) -> Isolines -> (Polyfill / Enrich) -> Save
步骤 A1:加载源点
使用 native.gettablebyname 加载地点(商店、车站、设施)。
成功:表中包含几何列和唯一地点标识符。
步骤 A2:生成等值线
使用 native.isolines 并设置:
| 输入 | 说明 | 示例 |
|---|---|---|
mode | 出行模式 | car 或 walk |
range_type | 范围的度量类型 | time 或 distance |
range | 阈值 | 时间用秒表示(例如 600 = 10 分钟),距离用米表示(例如 5000 = 5 公里) |
成功:每个输入点都有一个关联的多边形几何,表示可到达区域。
步骤 A3:后处理(可选)
生成等值线后的常见后续操作:
- 填充六边形网格 + 丰富数据:使用
native.h3polyfill将等值线多边形转换为 H3,然后补充人口统计或 POI 数据(参见商圈分析技能)。 - 重叠分析:使用
native.spatialjoin查找相互重叠的等值线,识别由多个地点覆盖的区域。 - 覆盖区合并:使用
native.dissolve将所有等值线多边形合并为单个覆盖范围。
步骤 A4:保存
使用 native.saveastable 持久化等值线多边形或丰富后的结果,然后验证并上传工作流(使用 MCP create_workflow/validate_workflow,或运行 carto workflows create)。
模式 B:OD 矩阵(行程时间/距离)
管道:
Origins Table -> ┐
├-> OD Matrix -> (Filter/Aggregate) -> Save
Destinations Table -> ┘
步骤 B1:加载起点和终点
使用两个 native.gettablebyname 节点——一个用于起点,一个用于终点。两者都需要几何列。
成功:得到两张表,每张表都包含点几何和唯一标识符。
步骤 B2:计算 OD 矩阵
使用 native.routesodmatrix 并设置:
| 输入 | 说明 |
|---|---|
mode | car 或 walk |
| 起点输入 | 连接至起点表节点 |
| 终点输入 | 连接至终点表节点 |
输出列:origin_id、destination_id、duration_s、distance_m。
成功:每个起讫点对对应一行,包含行程时间和距离。
步骤 B3:筛选或聚合(可选)
常见的后处理:
- 最近目的地:使用
native.groupby查找每个起点对应的最小duration_s,然后连接回去以获取最近的目的地。 - 阈值筛选:使用
native.where仅保留在时间/距离限制范围内的配对(例如,30 分钟阈值可使用duration_s < 1800)。 - 可达性评分:使用
native.groupby统计每个起点在阈值范围内可到达的目的地数量。
步骤 B4:保存
使用 native.saveastable,然后验证并上传(MCP create_workflow 或 carto workflows create)。
模式 C:路线几何
管道:
Origins Table -> ┐
├-> Routes -> Save
Destinations Table -> ┘
步骤 C1:加载起点和目的地
与模式 B 相同——使用两个带点几何的 native.gettablebyname 节点。
步骤 C2:计算路线
使用 native.routes,参数如下:
| 输入 | 说明 |
|---|---|
mode | car 或 walk |
| 起点输入 | 连接到起点表节点 |
| 目的地输入 | 连接到目的地表节点 |
输出:每个 OD 配对对应一条路线线几何(包含 duration_s、distance_m),可在地图上可视化。
步骤 C3:保存
使用 native.saveastable,然后验证并上传(MCP create_workflow 或 carto workflows create)。
模式 D:OD 流量分析(基于网格)
用于大规模分析行程/移动模式(例如出租车行程、骑行、通勤流量),无需调用路线规划 API。
管道:
Trip Data -> H3 (origin) + H3 (destination) -> Group By (origin_h3, dest_h3) -> Save
步骤 D1:加载行程数据
使用 native.gettablebyname。表中应包含起点和目的地的坐标(例如 pickup_lon/lat、dropoff_lon/lat)。
步骤 D2:将起点和目的地索引到 H3
使用 native.selectexpression 为起点和目的地点计算 H3 单元格:
- 起点 H3:根据上车坐标生成
- 目的地 H3:根据下车坐标生成
或者,如果数据具有单独的几何列,则分别使用 native.h3frompoint。
步骤 D3:聚合流量
使用 native.groupby 统计每个(origin_h3, destination_h3)配对的行程数量:
- 分组依据:
origin_h3, destination_h3 - 聚合:
origin_h3,count(每个 OD 配对的行程数量)
成功标志:每个唯一的 OD 单元格配对对应一行,并包含行程数量——可用于流量可视化。
步骤 D4:保存
使用 native.saveastable。
注意事项
- 提供商的大小写规则与 SQL 方言。 此技能使用小写列名(
origin_id、destination_id、duration_s、distance_m、origin_h3等),符合 BigQuery / Databricks / Postgres / Redshift 的惯例。在 Snowflake 中,请使用大写列名(ORIGIN_ID、DURATION_S等)。有关大小写规则和 SQL 方言对应关系,请参阅carto-create-workflow/references/providers/<provider>.md。 - 等时线和路径规划组件会消耗 LDS(Location Data Services)配额。批量操作前,请使用
LDS_QUOTA_INFO检查可用配额。缓冲区(native.buffer)不消耗 LDS 配额,是简单圆形服务范围的免费替代方案。 - OD 矩阵会按平方级增长:N 个起点 x M 个目的地 = N*M 行。请筛选或抽样输入数据,以控制矩阵规模。对于 1000 个起点 x 1000 个目的地,会得到 100 万行。
- 步行模式的实际适用范围远小于驾车模式。超过 20-30 分钟的步行等时线,或范围超过几公里的 OD 矩阵,结果都可能不可靠或为空。
- 路径几何数据可能很大。如果只需进行分析(仅需时间/距离),建议使用 OD 矩阵(模式 B)而非完整路径(模式 C),以减少数据量。
- 一天中的时段会因交通拥堵影响驾车结果。如果组件支持,请指定
departure_time;否则结果将反映典型/平均状况。 - 等时线多边形可能会相互重叠,尤其是位置彼此接近时。如果后续还要丰富数据,请将其填充到空间索引,并对单元格去重,以避免重复计数。
- 对于 OD 流量可视化(模式 D),请使用 H3 单元格中心点,而非原始坐标,以获得更清晰的聚合和可视化效果。较粗的分辨率(例如 H3 res 7-8)比精细分辨率更能呈现有意义的流量模式。
- LDS 路径规划组件需要启用了 LDS API 访问权限的连接。如果连接缺少此权限,验证可能会失败。
参考模板
| 资源 | 描述 |
|---|---|
| 可扩展路径规划教程 | 在 Workflows 中逐步进行可扩展路径规划 |
| OD 模式教程 | 分析起点-目的地模式(纽约市出租车示例) |
| 路径规划模块(BQ) | 将路径规划模块与 BigQuery 的 Analytics Toolbox 配合使用 |
| 等时线生成模板 | 通过 Workflow 模板生成等时圈 |
| 商圈等时线(BQ) | 适用于 BigQuery 的驾车/步行时间等时线商圈 |
| 商圈等时线(SF) | 适用于 Snowflake 的驾车/步行时间等时线商圈 |
常见变体
| 变体 | 方法 |
|---|---|
| 服务区域覆盖范围 | 等时圈(驾车,多种范围,例如 5/10/15 分钟)-> 求并集 -> 衡量覆盖的总人口 |
| 最近的设施 | OD 矩阵 -> 按起点分组 -> min(duration_s) -> 联接回去以获取最近的终点 ID |
| 可达性评分 | OD 矩阵 -> 按阈值筛选 -> 统计每个起点的终点数量 -> 按可达数量评分 |
| 车队路线规划 | 仓库与配送点之间的路线 -> 汇总每条路线的总距离/时间 |
| 通勤流分析 | 行程数据 -> H3 起点 + H3 终点 -> 按 OD 对分组 -> 计数 -> 可视化主要流向 |
| 多模式对比 | 运行两次等时圈(驾车 + 步行)-> 对比覆盖多边形 -> 找出依赖公共交通的区域 |