SuperAPI AI 工具集

maproulette-tagfix

通用与其它

查看项目

更新于 10-15 21:42

技能介绍

用途:编写 MapRoulette Tag Fix(协作式)挑战数据,让地图编辑者在 MapRoulette 中审核并批准/拒绝标签修改,由 MapRoulette 写回 OSM。

主要能力与用法:

  1. 按行输出 GeoJSON:一个任务一行,每行是一个 FeatureCollection,行首加 RFC 7464 RS(\x1E)前缀。因为 Tag Fix 的 cooperativeWork 在传统多要素 GeoJSON 中会被忽略。
  2. 使用统一的稳定 OSM type/id:构造 osmId = "${type}/${id}"(如 way/123、node/456、relation/789),同一字符串需放入 features[0].properties.id、features[0].id 和 cooperativeWork.operations[].data.id。MapRoulette 依赖该外部 ID 匹配重建与编辑器预选;不要用裸数字 ID,不要在不同位置用不同字符串,指令中不要用 {{osmIdentifier}},只用 properties.id 与 {{id}}。
  3. 构建 cooperativeWork:meta 为 { version: 2, type: 1 }(type 1 为 Tag Fix,type 2 为 JOSM 的 OSC 协作)。operations 使用 modifyElement,data.id 为目标元素,内部 operations 用 setTags 设置标签、unsetTags 删除标签(数组形式,省略空的 unsetTags)。只编码待修改的增量标签,不包含 OSM 上已有标签。几何仅用于地图定位(Point 或 LineString),不会作为编辑内容发送。若 Tag Fix 会依据官方或第三方数据自动写回 OSM,导出前需按许可/兼容性过滤任务。
  4. 配置 task_markdown 与挑战指令:任务属性中放 id、task_markdown(换行用 .replaceAll('\n', ' \n') 保留 Markdown 换行)、task_updated_at。挑战指令模板用 Mustache 引用属性,例如以 ## Kontext {{id}} 开头再跟 {{task_markdown}}。
  5. 指向远程 GeoJSON 并重建:创建/更新挑战时设置 remoteGeoJson 或上传按行 GeoJSON;静态文件与实时 API 等效。Tag Fix 布局需包含 TagDiffWidget。数据变更后需重建任务,可用 API:curl --fail -sS -X PUT "https://maproulette.org/api/v2/challenge/${CHALLENGE_ID}/rebuild?removeUnmatched=true&skipSnapshot=true" -H "apiKey: ${MAPROULETTE_API_KEY}" -H "accept: /",或在 UI 中执行 Rebuild。create/update 只改元数据,任务由 GeoJSON 源重建;稳定 ID 可避免重复任务,removeUnmatched=true 会移除源中已不存在的未完成任务。可选:用 properties.priority 与挑战优先级规则实现混合优先级。

限制:资料未提供收费、平台支持范围等更多信息;需注意许可合规与 ID 一致性,否则会出现重复或损坏的 Tag Fix。