区域 WebGIS 生成器(regional-webgis-generator)
Overview
把「用 AI 生成一个省级/市级区域可视化 WebGIS 系统」这件事,打包成可参数化复用的脚手架。
换个省名 + 行政区划代码(adcode)+ 中心坐标,就能产出两套可直接运行的工程:
- Vite + Mapbox 2.5D 工程(真实立体地图,三级下钻:全国→省→地市→区县,需联网加载 SuperMap CDN 引擎)
- 离线单文件版(纯前端 SVG 渲染,自包含、零网络、双击
file://必现,彻底规避"地图空白"痛点)
本 Skill 只产出这 2 个工程产物。设计方案 md / 公众号推文 md 不在产出范围(用户已有现成模板,需要时自行生成)。
触发方式
- 自然语言:"生成一套浙江省可视化 WebGIS 系统" / "做个四川经济地图" / "XX 省产业可视化"
- 斜杠:
/regional-webgis-generator 浙江 - 调用示例(带参数):
/regional-webgis-generator --province 浙江 --adcode 330000 --center 120.1,29.2
参数清单(生成前必须明确)
| 参数 | 含义 | 示例(浙江) | 获取方式 |
|---|---|---|---|
province |
省/市简称 | 浙江 | 用户给,或据上下文推断 |
province_full |
行政区划全称 | 浙江省 | 用户给(自治区/直辖市自动加"自治区/市") |
adcode |
省级行政区划代码(6 位) | 330000 | DataV / 民政部标准 |
center |
地图中心 lng,lat |
120.1,29.2 | 该省地理中心点 |
slug |
文件名用拼音/英文小写 | zhejiang | 用户给或按拼音转 |
year_start / year_end |
时间序列起止 | 2021 / 2025 | 默认 2021-2025 |
hubs(可选) |
枢纽城市 adcode 列表 | ["330100","330200","330300"] |
用户指定,默认 [] |
themes_def(可选) |
地方特色专题定义(JSON 数组) | [] |
AI 出方案阶段生成,默认空 |
> 若用户只给了省名,先用 WebSearch 查该省 adcode / 中心坐标 / 特色专题,再继续;不要卡住。
标准流程(4 步)
Step 0 · 收集省份参数
向用户确认或自行检索上述参数(adcode、center 最关键)。参考 references/workflow.md 的提示词模板。
Step 1 · AI 出方案(地方特色,仅内部推理)
- 基于该省真实禀赋,构思 3-5 个地方特色专题(如浙江:数字经济、杭州湾、义新欧班列、海岛岸线…)。
- 形成一份「功能清单 + 特色专题 JSON」,不生成独立 md 文档,直接用于后续脚手架与 themes.json。
- 专题 JSON 结构见
references/workflow.md的themes.json说明。
Step 2 · 脚手架(产出 Vite+Mapbox 工程)
运行:
python scripts/init_region.py \
--province 浙江 --province-full 浙江省 \
--adcode 330000 --center 120.1,29.2 --slug zhejiang \
--year-start 2021 --year-end 2025 \
--hubs '["330100","330200","330300"]' \
--themes-def '[]' \
--out ./zhejiang-webgis
- 脚本会复制
assets/webgis-app-template/→--out,替换所有{{...}}省份占位符; - 若联网可用,自动从 DataV 拉取
{adcode}_full.json省级边界(含地市)写入public/data/{slug}.geojson; - 离线时跳过拉取并生成占位,提示用户稍后补边界文件。
- 产物即可运行的 Vite 工程(Deliverable 1)。
Step 3 · 注入真实数据(零后端)
- 找到
--out/data-tooling/数据收集模板.csv,把示例值替换为该省各市真实年鉴数据; - 运行 ETL:
bash cd --out/data-tooling python etl_metrics.py --input 数据收集模板.csv \ --output ../public/data/{slug}-city-metrics.json - (可选)把 Step 1 的特色专题写进
public/data/themes.json; - 校验:14 市(或该省地市数)合计与官方公布值核对。
Step 4 · 离线兜底(产出离线单文件版)
运行:
python scripts/build_static.py --project ./zhejiang-webgis --slug zhejiang
- 读取脚手架里已替换好省份占位符的
src/preview-static.html,注入public/data/下的 geojson/metrics/themes +src/styles.css; - 输出
{out}/preview-static.html—— 纯 SVG、零网络、双击即开(Deliverable 2)。
> 合规要点(审图号 / GCJ-02 vs CGCS2000 / 等保信创)仅作护栏提示,不单独出文档。详见 references/compliance.md。
护栏 / Pitfalls(必遵守,详见 references/pitfalls.md)
- 占位符绝不放在
//或/* */注释行内——本项目已实测:__GEO__写在//注释里,注入多行 JSON 后破坏注释边界,整段脚本语法错误白屏。模板里所有{{...}}与__...__必须独立成行、在可执行代码或字符串中(CSS 注入占位__CSS__必须独占<style>内一行,不能包在/* */里)。 - 离线版必须零网络——
file://下浏览器拦截/挂起跨域 fetch,任何依赖引擎实时渲染+网络请求的版本双击都不稳。离线版所有数据内联、不发起任何请求。 - DataV 坐标为 GCJ-02 偏移坐标系,仅供原型/示意;正式上线须换 CGCS2000 官方边界并取审图号。
Resources
scripts/init_region.py—— 参数化脚手架(复制模板 + 替换省份 token + 可选拉 DataV 边界)scripts/etl_metrics.py—— 零后端:CSV 年鉴数据 → 前端指标 JSONscripts/build_static.py—— Python 离线构建:注入数据生成preview-static.htmlassets/webgis-app-template/—— 最小可运行 Vite+Mapbox 工程(占位符版)assets/preview-static.template.html—— 离线 SVG 渲染模板(占位符驱动)assets/数据收集模板.csv/字段映射表.md—— 数据收集与字段映射(省份无关)references/workflow.md—— 通用 4 步方法论与提示词模板references/compliance.md—— 上线合规清单(通用化)references/pitfalls.md—— 踩坑实录- 收费由官方
alipay-aipaySkill + 支付宝 A2M 网关统一承载;本 Skill 不自实现支付/签名/402 资源服务端,详见下方「支付宝 AI 按量付费接入」。
支付宝 AI 按量付费接入(Pay Skill · A2M 402 协议)
本 Skill 已注册为 Pay Skill(SkillPay),接入支付宝 AI 按量付费(A2M 402 协议),
按生成次数计费(占位单价:CNY 9.90 / 次,模型 per_invocation;正式价格与卖家标识以 A2M 网关配置为准)。
> 关键红线:本 Skill 不自实现任何支付、签名、结算或 402 资源服务端逻辑。
> 真实计费、账单下发(Payment-Needed)、凭证校验(Payment-Proof)与结算,
> 全部由官方 alipay-aipay Skill + 支付宝 A2M 网关承载。
> 本 Skill 仅在 SKILL.md 中声明计费模型(供 SkillPay 平台识别),绝不自行签发账单或验签。
计费模型(声明,非实现)
- 计费维度:
per_invocation(每成功生成 1 套区域 WebGIS = 1 次计费) - 币种 / 单价:
CNY/9.90(占位;激活时由 A2M 网关覆盖为正式价) - 协议:
A2M 402;状态机probe → pay → complete → ack - 对客账单头:
Payment-Needed(Base64URL 账单:out_trade_no/amount/currency/resource_id/pay_before/seller_signature) - 重试凭证头:
Payment-Proof(Base64URL:payment_proof/trade_no/client_session)
如何启用真实计费(委托官方 Skill)
需启用真实扣费时,调用官方 alipay-aipay Skill(不要在本 Skill 内写任何支付代码):
1. 在 WorkBuddy 触发 alipay-aipay(根意图 integration_only,产品 aipay:AI 按量付费);
2. 按其 flow 完成 alipay-cli 登录、AI 按量付费产品开通与沙箱(service_id=api_mock_service_id)配置;
3. 沙箱链路(probe → pay → complete → ack 全通过)验证无误后,再由 A2M 网关切生产。
> 本机当前 alipay-cli 尚未就绪、且无商家账号,故仅做声明 + 本地占位,不发起任何真实支付;
> 真实扣费须经用户显式确认与支付宝商家开通后方可启用。