一个基于 AI 大模型的 GIS 平台项目,支持资产统计、风险评估、巡检建议、生成报告、空间分析等功能。
架构
┌─────────────────────────────────────────────────────┐
│ 前端 (Vue 3 + TS + OpenLayers + 天地图) │
│ 2D 地图 · 对话面板 · SSE 流式解析 · 打字机渲染 │
└───────────────────────┬─────────────────────────────┘
│ HTTP / SSE
▼
┌─────────────────────────────────────────────────────┐
│ 后端 (Spring Boot 3.5 + JDK 21 + Spring AI Alibaba) │
│ ChatClient · @Tool 工具集 · 记忆持久化 · 调用日志切面 │
└───────┬───────────────────────────────┬─────────────┘
│ │
▼ ▼
┌───────────────────────┐ ┌─────────────────────────┐
│ PostgreSQL 15 │ │ DashScope(阿里云百炼) │
│ + PostGIS(空间查询) │ │ qwen-plus 对话 │
│ + pgvector(向量检索) │ │ text-embedding-v3 向量化 │
└───────────────────────┘ └─────────────────────────┘
用户提问
│
▼
大模型 结合系统提示词 + 要素概要 + 历史,自行判断:
│
├─ 能直接答的("要素数量、状态等")
│ → 不调工具,直接基于注入的要素数据回答
│
└─ 需要精确计算/执行动作的 → 发起 tool call:
├─ "移动地图到泵站A1" → Search(查坐标)
├─ "分析周边3公里风险点" → Nearby(组合工具:内部查库+再调一次AI排序)
├─ "生成500米缓冲区" → Buffer(GeoTools 投影变换 + JTS buffer)
└─ "生成风险分析报告" → Report(确定性流水线:查询→AI摘要→证据→落库)
│
▼
框架在后端执行 Java 方法,把结果文本交回模型
│
▼
模型基于真实结果组织最终回答
演示
- 资产统计
Q: 简述图中资产,包括数量、状态等
- 资产评估
Q: 哪个资产优先级最高,为什么
- 巡检建议
Q: 请给出巡检路线建议
- 报告总结
Q: 请根据图中资产生成一份评估报告
- 空间分析
Q: 为泵站A1执行缓冲区分析,半径为1000米