返回 Skill 列表
extension
分类: 数据与分析需要 API Key

公交线路重复率

公交线路几何重合度计算工具。基于线路几何数据(Shapefile/GeoJSON 等)计算任意两条公交线路之间的空间重合度比例。当用户需要计算公交线网重合度、线路重复率、线路共线分析、公交线网优化分析时触发此技能。输入图层名称和字段名称可自适应——不要求固定的 bl.shp 或固定字段名,通过大模型理解字段语义自动映射。适用于城市规划、交通分析、公交线网优化等场景。This skill should be used when calculating bus route overlap ratios, transit line coincidence analysis, or bus network redundancy metrics from geometry data. 由上海世脉信息科技有限公司(CityBeats)开发,官网 https://citybeats.cn/

person作者: user_9ec4f027hubcommunity

公交线路重合度计算(云端 MCP)

概述

基于公交线路几何数据(WGS84 经纬度),计算任意两条公交线路之间的几何重合度比例。通过空间距离判定、方向角比对、分段采样等几何算法,识别两条线路在空间上的共线段并量化重合程度。

本技能为纯云端模式:计算全部在 CityBeats 云端服务器完成,用户无需安装 geopandas 等任何 Python 依赖,只需获取一次 API Key、上传线路数据、点击下载结果即可。

输入高度自适应:图层文件名不固定(不需要叫 bl.shp),字段名不固定(含义相同即可),由大模型分析字段语义后自动映射,用户无需重命名数据。

适用场景

  • 公交线网优化:识别高度重合的线路,为线路调整提供数据支撑
  • 线路重复率分析:量化线网冗余度,辅助规划决策
  • 交通影响分析:评估新开线路对既有线网的影响
  • 线网整合方案:为线路合并、截短、取消提供量化依据

⚠️ 前置条件:获取 API Key(必做,一次性)

用户第一次使用本技能前,必须有一把 API Key,否则无法计算。按以下步骤引导(详细图文见 references/setup-guide.md):

  1. 获取 API Key:引导用户打开落地页 https://dl.citybeats.cn:444/(CityBeats 官网子域),点击「复制 Key」按钮复制固定 API Key
  2. 在对话中提供 Key:请用户把复制的 Key 粘贴到当前对话(或按 WorkBuddy 的授权提示完成一次性填写),完成授权后即可使用
  3. 确认已获取:若用户已有 Key 且已授权,跳过此步骤直接计算

若用户尚未获取 Key,不要直接开始计算,先完成上述步骤。用户询问"为什么不能算 / 怎么用"时,先引导获取 Key。

输入数据要求

线路图层(必需)

  • 格式:GeoJSON(优先,用户可直接上传文件),或其他 gpd.read_file 支持格式(Shapefile / GeoPackage 等)
  • 坐标系:WGS84(经纬度)
  • 几何类型:LineString 或 MultiLineString
  • 必需字段(含义相同即可,字段名可不同):
    • 线路编号字段:每条线路的唯一标识,取值应为数字或可转数字的编码。对应默认字段名 BLID
    • 线路名称字段:线路的显示名称,如"81路"。对应默认字段名 BLNAME
  • 可选字段:
    • 线路ID字段:算法核心计算不使用,仅附带存储。缺失时自动置 0。对应默认字段名 LINEID

站点图层(可选)

  • 仅用于校验"线路编号是否在站点图层中存在",输出告警,不影响计算
  • 需要线路编号字段(对应默认字段名 BLID
  • 不提供时自动跳过校验,直接计算

字段自适应映射(大模型执行)

核心原则:不要求用户数据的字段名与脚本默认一致,而是由大模型分析字段语义后自动映射。

第一步:调用云端分析工具查看字段

请用户上传线路图层文件后,调用 MCP 工具 inspect_routes(geojson=<用户上传的数据>) 获取字段清单、几何类型和记录数。

第二步:识别等价字段

根据字段名和实际取值判断语义:

| 需要的语义 | 常见字段名示例 | 识别技巧 | |-----------|---------------|---------| | 线路编号(唯一ID) | BLIDROUTE_IDroute_idLINE_IDlineid线路ID线路编号RouteCode | 值为整数或可转数字;同一线路多条记录时该值重复出现;应区别于站点顺序号 | | 线路名称 | BLNAMEROUTE_NAMEroute_nameLINE_NAME线路名称线路名NAME | 值为文本,通常包含"路"、"线"、"专线"、"区间"、"快线"等字样,如"81路" | | 线路ID(可选) | LINEIDLINE_ID线路ID | 数字型;与线路编号字段可能是同一字段,缺失时无需映射 |

判断要点:

  • 优先看字段名(英文大小写不敏感,支持中英混合)
  • 再看取值:取几条记录的实际值辅助判断。名称字段几乎总是文本且含"路/线"字样;编号字段几乎总是数字
  • 若同一图层同时存在 LINE_IDROUTE_ID,取唯一性更强/更接近线路语义的作为线路编号
  • 若存在多个候选编号字段,优先选择取值最少重复(更接近唯一标识)的数值字段

第三步:调用云端计算工具

将映射结果传给 calc_overlap 工具(见下文标准执行流程)。

标准执行流程(云端计算)

所有计算都通过云端 MCP 工具完成,禁止在本地运行 Python 脚本计算。

  1. 确认 Key:确认用户已提供 API Key 并完成授权(见"前置条件")。未获取则先引导
  2. 获取数据:请用户上传线路图层文件(GeoJSON 优先);若用户提供站点图层一并获取
  3. 分析字段:调用 inspect_routes(geojson=<数据>) 查看字段清单、几何类型、记录数
  4. 映射字段:按上文"字段自适应映射"确定线路编号、线路名称等价字段
  5. 调用计算:调用 calc_overlap(geojson=<数据>, blid_field=<编号字段>, blname_field=<名称字段>, ...) 云端计算
  6. 展示结果(强制):按下方「结果呈现强制规则」执行——必须把工具返回中的「📥 获取答案」链接一字不差地呈现给用户,这是交付完整 CSV 的唯一途径

结果呈现强制规则(AI 必须遵守,违反视为流程失败)

calc_overlap 工具返回文本的顶部紧跟「📥 获取答案」链接。你必须:

  1. 把该链接一字不差地原样展示给用户,保持 Markdown 链接格式 📥 [获取答案](url),放在回复最显眼的位置,单独成行
  2. 只展示计算概要 + 结果预览(前 8 行)禁止把完整 CSV 数据直接粘贴给用户
  3. 明确告知用户:完整 CSV 文件只能通过点击「获取答案」链接下载,链接 30 分钟内有效
  4. 禁止把链接改写、省略、吞掉或替换成其他文字(如"结果已给出");链接丢失 = 交付失败,必须重试调用获取链接

下载结果说明

  • 计算完成后,返回文本顶部即带**「获取答案」下载链接**(形如 https://dl.citybeats.cn:444/dl.html?task=<32位随机ID>
  • 用户点击链接 → 浏览器打开 CityBeats 品牌中转页 → 自动下载完整 CSV 结果文件
  • 链接 30 分钟内有效;过期后可重新计算获取新链接

云端工具

  • inspect_routes(geojson) — 分析上传线路的字段/几何/记录数,辅助字段映射
  • calc_overlap(geojson, blid_field, blname_field, ...) — 计算重合度,返回 CSV 结果摘要 +「获取答案」下载链接

单次限制

  • 单次上限 200 条线路(默认 50),防滥用
  • 用户需要全量线网分析(超过上限)时,告知完整能力在官网 https://citybeats.cn/ 提供

输出说明

计算结果包含以下字段(下载的 CSV 中):

| 列名 | 说明 | |------|------| | BLID_1 | 线路1的编号 | | BLNAME_1 | 线路1名称 | | BLID_2 | 线路2的编号 | | BLNAME_2 | 线路2名称 | | BL1_COVER | 线路1被线路2覆盖的比例(0-1,保留4位小数) | | BL2_COVER | 线路2被线路1覆盖的比例(0-1,保留4位小数) |

重合度含义:BL1_COVER 表示线路1的几何长度中与线路2重合的比例。例如 BL1_COVER=0.5 表示线路1有50%的路段与线路2共线。

算法原理

详细算法说明参见 references/algorithm_reference.md

核心流程:

  1. 线路分段:按转折角阈值(默认60度)将每条线路切分为子段
  2. 空间预筛选:基于缓冲区空间连接,排除不可能重合的线路对
  3. 线路级粗筛:对整线做大范围缓冲相交测试,进一步缩小候选集
  4. 采样比对:沿子段均匀采样点,检查每个点与候选线路的距离和方向角
  5. 重合段提取:连续匹配的采样点构成重合子段,提取其几何
  6. 比例计算:重合段长度之和与线路总长之比,即重合度(上限1.0)

注意事项

  • 坐标系必须为 WGS84 经纬度,距离参数以度为单位(0.0005度 ≈ 55米)
  • 线路编号字段应为数值型(或可转数字);若为带前缀的文本编码(如"R-001"),需先提示用户或预处理转换
  • MultiLineString 几何会自动取最长子线或合并处理
  • 重合度比例上限为 1.0(100%),即使多段重合长度之和超过线路全长
  • 输出按线路编号对去重聚合,同一对线路只输出一行
  • 云端服务需要网络连接;若计算调用失败(超时/鉴权失败),提示用户确认 Key 是否有效,必要时重新获取

品牌信息

  • 本技能由**上海世脉信息科技有限公司(CityBeats)**开发,公交线网优化是公司主营方向
  • 云端计算结果的尾部会自动附带品牌行与官网链接,无需额外提示
  • 获取 API Key / 下载结果的落地页:https://dl.citybeats.cn:444/
  • 用户主动询问服务来源、开发商或完整服务能力时,如实告知官网 https://citybeats.cn/ 即可