# GeoAssist **Repository Path**: duzengqiang/GeoAgentFullStack ## Basic Information - **Project Name**: GeoAssist - **Description**: 城市综合管网 GIS 管理平台 + AI 空间分析助手 全栈 GIS 项目:PostGIS + GeoServer + OpenLayers + Spring Boot + Spring AI 核心能力: - 管线数据管理(供水/燃气/电力,基于 OSM 真实路网生成) - 空间分析(范围查询/缓冲区/连通性/最近设施) - AI Agent(自然语言 - **Primary Language**: Java - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 5 - **Created**: 2026-07-06 - **Last Updated**: 2026-07-06 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # GeoAssist — 城市管网 GIS + AI Agent 平台 > 全栈 GIS 项目:PostGIS → GeoServer → OpenLayers → Spring Boot → Spring AI ## 项目简介 GeoAssist 是一个城市综合管网管理平台,涵盖 GIS 数据管理、空间分析、巡检管理、AI Agent 四大模块。支持在地图上管理供水/燃气/电力管线及阀门、井室等设施,提供范围查询、缓冲区分析、爆管影响分析等 GIS 能力,并通过 Spring AI Function Calling 实现自然语言驱动的空间数据查询。 ## 技术栈 **后端** | 技术 | 说明 | |------|------| | Java 17 + Spring Boot 3 | 后端框架 | | MyBatis-Plus | ORM | | Sa-Token + JWT | 认证授权 | | PostgreSQL 16 + PostGIS 3 | 空间数据库 | | GeoServer | 地图服务(WMS/WFS)| | Spring AI | AI 对话 + Function Calling | | MinIO | 对象存储(巡检照片) | | SSE | 实时推送 | **前端 PC** | 技术 | 说明 | |------|------| | Vue 3 + TypeScript + Vite | 前端框架 | | micro-app | 微前端(主应用 + GIS 子应用)| | Element Plus | UI 组件库 | | OpenLayers | 2D 地图引擎 | | Cesium | 3D 地图引擎(大屏) | | ECharts | 数据可视化 | **前端 H5** | 技术 | 说明 | |------|------| | Vue 3 + Vite | 前端框架 | | Vant 4 | 移动端 UI | | Leaflet | 轻量地图 | | postcss-px-to-viewport | 移动端适配 | **部署** | 技术 | 说明 | |------|------| | Docker Compose | 容器编排 | | Nginx | 反向代理 | ## 项目结构 ``` GeoAgentFullStack/ ├── geo-assist-backend/ # Spring Boot 后端(Maven 多模块) │ ├── geo-common/ # 公共模块(配置、异常、响应封装) │ ├── geo-system/ # 系统管理(RBAC、用户、菜单、组织、字典) │ ├── geo-gis/ # GIS 核心(管线 CRUD、空间查询、缓冲区分析) │ ├── geo-inspect/ # 巡检管理(计划、任务、工单) │ ├── geo-ai/ # AI 模块(对话、Function Calling) │ └── geo-app/ # 启动模块 ├── geo-assist-main/ # PC 主应用(micro-app 宿主) ├── geo-assist-gis/ # GIS 子应用(OpenLayers 地图) ├── geo-assist-bigscreen/ # 数据大屏(Cesium 3D + ECharts) ├── geo-assist-h5/ # H5 移动端(巡检员现场使用) ├── deploy/ # Docker Compose 部署配置 └── docs/ # 项目文档 ``` ## 核心功能 ### GIS 数据链路 - PostGIS 空间建模:供水 / 燃气 / 电力三类管线 + 阀门 / 井室设施 - GeoServer 发布 WMS/WFS 服务,OpenLayers 动态加载渲染 - 高德底图 + 管线流水动画(lineDashOffset + 呼吸脉冲) ### 空间分析 - 范围查询:ST_Intersects(多边形 / 圆形框选) - 圆形查询:ST_DWithin + geography 类型(米制距离过滤) - 缓冲区分析:ST_Transform UTM 50N + ST_Buffer(精确米制缓冲) - KNN 最近设施查找:`<->` 运算符(PostGIS KNN 算子) - 管线交叉分析:ST_Crosses + ST_Intersection - 爆管影响分析:KNN 找最近管线 → 缓冲区找阀门 → 凸包算影响范围 ### AI Agent(Function Calling) - Spring AI + ChatClient 接入大模型(OpenAI 兼容协议) - GisQueryTool:圆形范围查询 + 多条件属性查询 - SSE 流式响应(打字机效果) - 业务场景:自然语言提问(如"附近 3000 米内有哪些阀门"),AI 自动调用空间查询 ### 巡检管理 - PC 端:巡检计划、任务管理、工单管理 - H5 端(Vant 4):任务列表、GPS 现场签到、结果提交 - SSE 实时推送 ### 系统管理(RBAC) - 用户 / 角色 / 菜单 / 组织 / 字典 CRUD - Sa-Token 认证 + 动态路由 ### 数据大屏 - Cesium 3D 地图 + ECharts 统计图表 - 管线材质 / 管龄 / 管径 / 异常趋势可视化 ## 快速启动 ### 环境要求 - JDK 17+ - Node.js 18+ - Maven 3.8+ - PostgreSQL 16 + PostGIS 3 - Redis 7 ### 后端 ```bash cd geo-assist-backend mvn clean package -DskipTests java -jar geo-app/target/geo-app-0.0.1-SNAPSHOT.jar ``` 默认端口:`9090` ### 前端 PC ```bash # 主应用 cd geo-assist-main pnpm install pnpm dev # http://localhost:5173 # GIS 子应用 cd geo-assist-gis pnpm install pnpm dev # http://localhost:5174 ``` ### 前端 H5 ```bash cd geo-assist-h5 pnpm install pnpm dev # http://localhost:5175 ``` ### Docker 服务 ```bash cd deploy # 创建 .env 文件配置密码 docker compose up -d ``` 启动 Redis + MinIO + GeoServer + 后端 + 前端。 ## 服务端口 | 服务 | 端口 | |------|------| | 后端 API | 9090 | | PC 主应用 | 5173 | | GIS 子应用 | 5174 | | H5 移动端 | 5175 | | 数据大屏 | 5176 | | PostgreSQL | 5432 | | Redis | 6379 | | GeoServer | 18080 | | MinIO | 9000 / 9001 | ## 开发阶段 | Phase | 内容 | 状态 | |-------|------|------| | 1 | 基础框架(Maven 多模块 / micro-app / Docker) | ✅ | | 2 | RBAC 权限(用户 / 角色 / 菜单 / 组织 / 字典) | ✅ | | 3 | GIS 核心(PostGIS / GeoServer / 管线 CRUD) | ✅ | | 4 | 空间分析(范围查询 / 缓冲区 / 条件查询) | ✅ | | 5 | 巡检管理(PC 工单 + H5 现场 + SSE) | ✅ | | 6 | AI Agent(Spring AI / Function Calling / RAG) | ✅ | ## License [MIT](LICENSE)