logo

省水利三维模型资源汇聚平台

基于 RuoYi-Vue + SuperMap iClient3D + Cesium 的水利三维 GIS 可视化平台

项目简介 | 技术栈 | 项目启动 | 功能模块 | 功能使用说明 | 项目结构

--- ## 项目简介 **省水利三维模型资源汇聚平台** 是一个面向水利行业的二三维一体化 GIS 可视化管理系统。平台基于 RuoYi-Vue 前后端分离框架(v3.9.1)构建,深度融合 SuperMap iClient3D for WebGL 和 Cesium 三维地球引擎,实现水利工程模型资源的汇聚、管理、展示与分析。 平台提供水利工程模型的上传、分类管理、三维场景展示、空间分析、自定义服务接入等功能,旨在为水利信息化建设提供三维可视化基础支撑。 --- ## 技术栈 ### 后端技术 | 技术 | 说明 | 版本 | |------|------|------| | Spring Boot | 应用框架 | 2.5.15 | | Spring Security | 安全认证框架 | 5.7.14 | | MyBatis | ORM 框架 | - | | Druid | 数据库连接池 | 1.2.27 | | Redis | 分布式缓存 | - | | JWT | 令牌认证 | 0.9.1 | | Swagger | API 文档 | 3.0.0 | | Fastjson | JSON 处理 | 2.0.60 | | PageHelper | 分页插件 | 1.4.7 | | Oshi | 系统监控 | 6.9.1 | | Apache POI | Excel 处理 | 4.1.2 | | Druid | 数据库连接池/监控 | - | ### 前端技术 | 技术 | 说明 | 版本 | |------|------|------| | Vue 3 | 前端框架 | 3.5.16 | | Element Plus | UI 组件库 | 2.10.7 | | Vite | 构建工具 | 6.3.5 | | Pinia | 状态管理 | 3.0.2 | | Vue Router | 路由管理 | 4.5.1 | | Axios | HTTP 请求库 | 1.9.0 | | ECharts | 数据可视化 | 5.6.0 | | Cesium | 三维地球引擎 | 1.140.0 | | SuperMap iClient3D | 三维 GIS 组件库 | 1.2.2 | | Three.js | 3D 渲染引擎 | 0.182.0 | ### 数据库 - **达梦数据库(DM8)**:主数据库 - **Redis**:缓存与会话管理 --- ## 项目启动 ### 环境要求 - **JDK**:1.8+ - **Maven**:3.6+ - **Node.js**:20+ - **Redis**:5.0+ - **达梦数据库(DM8)** - **IDE**:推荐使用 IntelliJ IDEA + VS Code ### 1. 数据库初始化 创建达梦数据库实例(如 `WATERSHED`),执行初始化 SQL 脚本: ```bash # 按顺序执行以下脚本 sql/ry_20250522.sql # RuoYi 系统核心表(用户、角色、菜单等) sql/quartz.sql # 定时任务 quartz 表 sql/watershed_model.sql # 水利工程模型表 sql/watershed_facility.sql # 水利设施表 sql/watershed_equipment.sql # 机电设备表 sql/create_service_table.sql # 自定义服务表 sql/cesium_map_config.sql # Cesium 地图配置表 sql/cesium_geojson.sql # GeoJSON 数据表 sql/watershed_menu.sql # 流域管理菜单权限配置 ``` > 默认管理员账号:`admin` / `admin123` > 如果使用 MySQL,请使用 `ry_20250522.sql`(该脚本为 MySQL 语法),其它 SQL 脚本为达梦语法。请根据实际数据库类型选择对应的初始化脚本。 ### 2. 修改配置文件 #### 后端配置 `ruoyi-admin/src/main/resources/` **application-druid.yml** — 配置数据库连接: ```yaml spring: datasource: druid: master: url: jdbc:dm://192.168.0.145:30236?charSet=utf8 username: YOUR_DB_USERNAME password: YOUR_DB_PASSWORD ``` **application.yml** — 配置 Redis 和文件上传路径: ```yaml spring: redis: host: YOUR_REDIS_HOST port: 6379 password: YOUR_REDIS_PASSWORD database: 14 ruoyi: profile: uploads/models # 模型文件上传路径 ``` ### 3. 启动后端服务 ```bash cd ruoyi-admin mvn spring-boot:run ``` - 后端默认端口:**8448** - 访问地址:`http://localhost:8448` - Swagger 接口文档:`http://localhost:8448/swagger-ui.html` - Druid 监控页面:`http://localhost:8448/druid`(账号:ruoyi / 密码:123456) ### 4. 启动前端服务 ```bash cd RuoYi-Vue3 # 首次启动需安装依赖 npm install # 启动开发服务器 npm run dev ``` - 前端默认端口:**80** - 访问地址:`http://localhost` - 开发环境 API 代理:`/dev-api` → `http://localhost:8448` ### 5. 访问系统 1. 浏览器打开 `http://localhost` 2. 默认登录账号:`admin` / `admin123`(需输入验证码) 3. 登录后将进入 **水利三维模型平台首页**(3D 场景),可通过导航栏切换到 **模型管理** 或 **后台管理** ### 前端构建部署 ```bash cd RuoYi-Vue3 # 生产环境构建 npm run build:prod # 预发布环境构建 npm run build:stage ``` 构建产物在 `RuoYi-Vue3/dist/` 目录,部署到 Nginx 即可。 --- ## 功能模块 ### 一、系统基础管理(RuoYi) 基于 RuoYi-Vue 框架内置权限管理系统,提供完整的用户、角色、权限管理能力: #### 1. 用户管理 用户是系统操作者,支持用户的增删改查、状态管理、角色分配。 - **使用方式**:进入「后台管理 → 系统管理 → 用户管理」,可添加/编辑/删除用户,分配角色和部门 #### 2. 部门管理 配置系统组织机构(公司、部门、小组),树结构展现,支持数据权限。 - **使用方式**:进入「后台管理 → 系统管理 → 部门管理」,可新增/编辑/删除部门节点 #### 3. 岗位管理 配置系统用户所属担任职务。 - **使用方式**:进入「后台管理 → 系统管理 → 岗位管理」,管理岗位编码、名称、排序 #### 4. 菜单管理 配置系统菜单、操作权限、按钮权限标识等,支持外链和内链。 - **使用方式**:进入「后台管理 → 系统管理 → 菜单管理」,可配置树形菜单结构及权限标识 #### 5. 角色管理 角色菜单权限分配、设置角色按机构进行数据范围权限划分。 - **使用方式**:进入「后台管理 → 系统管理 → 角色管理」,分配菜单权限和数据权限 #### 6. 字典管理 对系统中经常使用的一些较为固定的数据进行维护。 - **使用方式**:进入「后台管理 → 系统管理 → 字典管理」,管理字典类型和字典数据 #### 7. 参数管理 对系统动态配置常用参数。 - **使用方式**:进入「后台管理 → 系统管理 → 参数管理」,添加/编辑系统参数配置 #### 8. 通知公告 系统通知公告信息发布维护。 - **使用方式**:进入「后台管理 → 系统管理 → 通知公告」,发布和管理公告 #### 9. 操作日志 系统正常操作日志记录和查询;系统异常信息日志记录和查询。 - **使用方式**:进入「后台管理 → 系统监控 → 操作日志」,查看操作记录 #### 10. 登录日志 系统登录日志记录查询包含登录异常。 - **使用方式**:进入「后台管理 → 系统监控 → 登录日志」,查看登录记录 #### 11. 在线用户 当前系统中活跃用户状态监控,支持强制下线。 - **使用方式**:进入「后台管理 → 系统监控 → 在线用户」,查看并管理在线用户 #### 12. 定时任务 在线(添加、修改、删除)任务调度包含执行结果日志。 - **使用方式**:进入「后台管理 → 系统监控 → 定时任务」,管理 Cron 任务 #### 13. 代码生成 前后端代码的生成(Java、HTML、Vue、SQL),支持 CRUD 下载。 - **使用方式**:进入「后台管理 → 系统工具 → 代码生成」,导入数据库表,一键生成前后端代码 #### 14. 系统接口(Swagger) 根据业务代码自动生成相关的 API 接口文档。 - **使用方式**:进入「后台管理 → 系统工具 → 系统接口」,或直接访问 `/swagger-ui.html` #### 15. 服务监控 监视当前系统 CPU、内存、磁盘、堆栈等相关信息。 - **使用方式**:进入「后台管理 → 系统监控 → 服务监控」,查看服务器运行状态 #### 16. 缓存监控 对系统的缓存信息查询,命令统计等。 - **使用方式**:进入「后台管理 → 系统监控 → 缓存监控」,查看 Redis 缓存状态 #### 17. 在线构建器 拖动表单元素生成相应的 HTML 代码。 - **使用方式**:进入「后台管理 → 系统工具 → 表单构建」,拖拽组件生成表单 #### 18. 连接池监视(Druid) 监视当前系统数据库连接池状态,可进行分析 SQL 找出系统性能瓶颈。 - **使用方式**:访问 `/druid`,输入账号密码查看 SQL 监控 --- ### 二、水利三维模型平台(核心业务) #### 1. 首页 — 三维 GIS 场景 三维地球主界面,集成 SuperMap Cesium 3D 引擎,提供丰富的地图交互能力。 **页面布局**: - **顶部导航栏**:首页 / 模型管理 / 后台管理 切换入口 - **左侧侧边栏**:数据服务、三维分析、地形分析、裁剪分析、图层、场景、绘制、特效等工具菜单 - **主区域**:Cesium 三维地球场景 **使用方式**: - 鼠标中键拖拽旋转视角,左键拖拽平移,滚轮缩放 - 点击左侧菜单展开功能面板 - 支持切换多种在线底图(BingMap、天地图、OSM、SuperMap 等) #### 2. 数据服务 加载各类 GIS 数据服务到三维场景中。 **公共服务**(预配置): | 服务名称 | 类型 | 说明 | |---------|------|------| | CBD | S3M 场景 | SuperMap 在线三维城市数据 | | 倾斜摄影模型 | S3M | 倾斜摄影三维模型 | | 白模 | S3M | 城市建筑白模(线框模式) | | BIM 建筑 | S3M | BIM 建筑模型展示 | | 珠峰地形影像 | 影像+地形 | 珠穆朗玛峰区域地形与影像 | | 点云 | S3M 点云 | 三维点云数据 | | 京津地区 MVT | MVT 矢量瓦片 | 矢量地图服务 | **在线底图**: - BingMap、天地图(影像/矢量/地形)、OSM、SuperMap 暗色/亮色底图 - STK 地形、天地图地形 **自定义服务**: - 支持添加场景、S3M、影像、地形、矢量瓦片五种类型的自定义服务 - 双击服务名称加载到场景,已加载的服务可卸载 **使用方式**: - 点击侧边栏「数据服务」展开菜单 - 单击公共服务缩略图加载/卸载数据 - 点击「自定义服务 +」按钮添加自定义 GIS 服务 URL #### 3. 模型管理 水利工程模型的上传、分类、查看与管理。 **模型分类体系**: | 一级分类 | 二级分类 | 示例 | |---------|---------|------| | 水利工程实体 | 水库工程、水闸工程、泵站工程、灌区工程、堤防与护岸工程 | | | 水系水利设施 | 河流、湖泊与水库水面、渠道与输水管道、河口与海岸带 | | | 地理环境要素 | 地形地貌、行政区划、重要地物 | | | 自然生态景观 | 湖泊湿地、森林公园、地质公园、海岸带景观 | | | 模型集与项目 | 待分类模型、XX 市防洪排涝工程 | | **使用方式**: **模型查看**: 1. 进入「模型管理」页面 2. 左侧菜单选择模型分类 3. 右侧表格展示该类模型列表 4. 双击模型名称在 3D 场景中加载展示 **模型上传**: 1. 在模型管理页面点击「上传模型」按钮 2. 选择模型文件(支持 S3M、GLB、GLTF、OSGB 等格式) 3. 填写模型名称、类型、格式等信息 4. 上传完成后在对应分类中查看 **模型预览**: - 点击模型列表中的「预览」按钮,在新对话框中查看 3D 模型 - 支持环境光、主光源强度调节 - 支持鼠标拖拽旋转/缩放查看模型细节 #### 4. 自定义服务管理 管理用户自定义的 GIS 服务,持久化保存服务配置。 **使用方式**: - 在数据服务菜单中点击「自定义服务 +」按钮 - 输入服务名称、类型(场景/S3M/影像/地形/矢量瓦片)和 URL - 支持配置是否需要 Token 认证 - 保存后服务出现在自定义服务列表中,双击加载到场景 #### 5. 三维分析工具 提供丰富的三维空间分析能力: | 分析类型 | 功能 | 使用方式 | |---------|------|---------| | **量算** | 测量距离、面积、高度 | 点击「三维分析 → 量算」,在地图上点选测量 | | **阴影分析** | 模拟建筑物阴影覆盖范围 | 点击「三维分析 → 阴影分析」,设置时间参数 | | **天际线分析** | 分析场景天际线轮廓 | 点击「三维分析 → 天际线分析」 | | **通视分析** | 分析两点间可视性 | 点击「三维分析 → 通视分析」,设置观察点和目标点 | | **剖面分析** | 分析地形剖面 | 点击「三维分析 → 剖面分析」,绘制剖面线 | | **可视域分析** | 分析观察点的可视范围 | 点击「三维分析 → 可视域分析」,设置观察点参数 | | **开敞度分析** | 分析空间开敞程度 | 点击「三维分析 → 开敞度分析」 | | **三维空间查询** | 三维场景空间查询 | 点击「三维分析 → 三维空间查询」 | | **拾取坐标** | 拾取场景中任意点坐标 | 点击「三维分析 → 拾取坐标」,点击地图获取经纬度 | #### 6. 地形分析 | 功能 | 说明 | 使用方式 | |-----|------|---------| | 地形操作 | 地形开挖、填方等操作 | 点击「地形分析 → 地形操作」,绘制区域 | | 淹没分析 | 模拟水位上升淹没范围 | 点击「地形分析 → 淹没分析」,设置水位高度 | | 坡度坡向分析 | 分析地形坡度和坡向 | 点击「地形分析 → 坡度坡向分析」 | | 等值线分析 | 生成地形等高线 | 点击「地形分析 → 等值线分析」 | #### 7. 裁剪分析 | 功能 | 说明 | 使用方式 | |-----|------|---------| | Box 裁剪 | 长方体裁剪三维模型 | 点击「裁剪分析 → Box 裁剪」,调整裁剪盒 | | 平面裁剪 | 平面裁剪三维模型 | 点击「裁剪分析 → 平面裁剪」,调整裁切面 | | Cross 裁剪 | 交叉裁剪 | 点击「裁剪分析 → Cross 裁剪」 | | 多边形裁剪 | 多边形区域裁剪 | 点击「裁剪分析 → 多边形裁剪」,绘制多边形 | #### 8. 图层管理 | 功能 | 说明 | |-----|------| | S3M 图层属性设置 | 查看和修改 S3M 图层属性 | | S3M 图层风格设置 | 调整 S3M 图层显示风格(颜色、透明度等) | | S3M 图层操作 | S3M 图层的显示/隐藏、移除等操作 | | 图层管理 | 统一管理所有已加载图层 | | 影像图层属性设置 | 影像图层的属性设置 | | 倾斜摄影模型操作 | 倾斜摄影模型的交互操作 | | MVT 矢量瓦片 | 矢量瓦片图层风格设置 | | PBR | PBR 材质渲染 | #### 9. 场景 | 功能 | 说明 | 使用方式 | |-----|------|---------| | 分屏 | 左右分屏对比显示 | 点击「场景 → 分屏」 | | 卷帘 | 上下卷帘对比 | 点击「场景 → 卷帘」,拖动卷帘线 | | 场景属性设置 | 设置场景背景色、雾效等 | 点击「场景 → 场景属性设置」 | | 灯光 | 添加点光源、聚光灯 | 点击「场景 → 灯光」,设置灯光位置和参数 | | 沿线飞行 | 沿指定路径飞行浏览 | 点击「场景 → 沿线飞行」,绘制飞行路径 | | 视频投放 | 将视频投射到三维模型表面 | 点击「场景 → 视频投放」 | | 体元栅格 | 带时序的体元栅格数据渲染 | 点击「场景 → 带时序的体元栅格」 | | 鹰眼 | 鹰眼概览图 | 点击「场景 → 鹰眼」,显示小窗口概览 | #### 10. 绘制 | 功能 | 说明 | 使用方式 | |-----|------|---------| | 绘制线面 | 在场景中绘制线和面 | 点击「绘制 → 绘制线面」,点击地图绘制 | | 绘制体 | 绘制立方体、球体等几何体 | 点击「绘制 → 绘制体」 | | 添加点符号 | 在场景中添加带图标标记 | 点击「绘制 → 添加点符号」,选择符号类型 | #### 11. 特效 | 功能 | 说明 | |-----|------| | 扫描线 | 添加扫描线特效 | | 粒子 | 粒子系统特效(火焰、烟雾、雨水、喷泉等) | 支持多种粒子预设:化学火焰、基础火焰、小型火焰、干粉、建筑火焰、暗火、森林火焰、水柱、油气火焰、流淌火、烟熏火、烟雾、爆炸起火、环状火焰、雨水、雾状水等。 #### 12. 台风路径 加载和查看台风路径数据,在三维场景中动态展示台风轨迹。 **使用方式**: - 点击侧边栏「台风」菜单 - 点击台风名称(如「竹节草」)在场景中加载台风路径 - 可从「首页 → 台风路径」页面查看台风数据表格 - 支持上传新的台风路径数据(JSON 格式) #### 13. 模型预览器 独立的 3D 模型预览查看工具,支持 GLB/GLTF 等格式模型的详细查看。 **使用方法**: - 在模型管理页面点击「预览」按钮 - 支持光照调节(环境光、主光源、辅助光的强度与角度) - 鼠标拖拽旋转、滚轮缩放 - 支持 Three.js 和 Cesium 两种渲染模式 #### 14. 水利设施管理 管理水利设施的基本信息、位置、负责人等。 **使用方式**: - 进入「后台管理 → 流域管理 → 水利设施」 - 可新增、编辑、删除水利设施 - 支持经度/纬度坐标标注,可在三维场景中定位显示 - 关联三维模型路径,支持设施三维展示 #### 15. 机电设备管理 管理泵站、闸门等机电设备的详细参数和维护信息。 **使用方式**: - 进入「后台管理 → 流域管理 → 机电设备」 - 管理设备编号、名称、型号、额定参数等 - 支持维护周期管理,记录安装日期和保养计划 - 设备状态管理(正常运行/维护中/故障/待机) --- ## 项目结构 ``` PlatformModel ├── ruoyi-admin # 后台管理模块(启动入口) │ └── src/main/ │ ├── java/com/ruoyi/web/ │ │ └── controller/ │ │ └── watershed/ # 水利业务 Controller │ │ ├── WatershedModelController.java │ │ └── WatershedServiceController.java │ └── resources/ │ ├── application.yml # 主配置 │ ├── application-druid.yml # 数据源配置 │ └── sql/ # SQL 初始化脚本 ├── ruoyi-common # 公共模块(工具类、通用组件) ├── ruoyi-framework # 核心框架(安全、配置、权限) ├── ruoyi-system # 系统模块(业务实体、Service、Mapper) ├── ruoyi-quartz # 定时任务模块 ├── ruoyi-generator # 代码生成模块 ├── RuoYi-Vue3 # 前端项目 │ ├── src/ │ │ ├── api/ # API 接口封装 │ │ │ ├── watershed/ # 水利业务 API │ │ │ ├── system/ # 系统管理 API │ │ │ ├── monitor/ # 系统监控 API │ │ │ └── cesium/ # Cesium 地图配置 API │ │ ├── views/ # 页面组件 │ │ │ ├── front/ # 前台页面(三维平台首页、模型管理) │ │ │ │ ├── HydrologicalPlatform.vue # 三维平台首页 │ │ │ │ ├── ModelManagement.vue # 模型管理页面 │ │ │ │ ├── PageHeader.vue # 顶部导航栏 │ │ │ │ └── content/ # 内容组件 │ │ │ │ ├── ShuiliGongcheng.vue # 水利工程模型列表 │ │ │ │ ├── ShuiliSheshi.vue # 水利设施 │ │ │ │ ├── JidianShebei.vue # 机电设备 │ │ │ │ ├── TyphoonPath.vue # 台风路径 │ │ │ │ └── ModelPreview.vue # 模型预览 │ │ │ ├── system/ # 系统管理页面 │ │ │ ├── monitor/ # 系统监控页面 │ │ │ ├── tool/ # 系统工具页面 │ │ │ └── login.vue # 登录页面 │ │ ├── supermap-cesium-module/ # SuperMap Cesium 三维模块 │ │ │ ├── config/ # 配置文件 │ │ │ │ ├── views_config.js # 三维分析组件配置 │ │ │ │ └── server_config.js # 服务数据配置 │ │ │ ├── components/ # 三维分析功能组件 │ │ │ │ ├── analysis_3d/ # 三维分析 │ │ │ │ ├── clip/ # 裁剪分析 │ │ │ │ ├── draw/ # 绘制 │ │ │ │ ├── fly/ # 飞行 │ │ │ │ └── layer/ # 图层 │ │ │ └── views/layout/ # 三维场景布局 │ │ ├── router/index.js # 路由配置 │ │ ├── store/ # 状态管理 │ │ └── main.js # 入口文件 │ ├── public/ │ │ ├── Cesium/ # Cesium 引擎库 │ │ ├── img/ # 图片资源 │ │ └── data/ # 三维模型数据 │ ├── index.html │ ├── vite.config.js │ └── package.json └── pom.xml # Maven 父项目配置 ``` --- ## 默认账号 | 角色 | 账号 | 密码 | |-----|------|------| | 超级管理员 | admin | admin123 | | 普通用户 | ry | admin123 | --- ## 相关链接 - [RuoYi-Vue 官方文档](http://doc.ruoyi.vip) - [SuperMap iClient3D for WebGL](https://iclient.supermap.io/) - [Cesium 官方文档](https://cesium.com/learn/) - [Element Plus 组件库](https://element-plus.org/) - [Vue 3 官方文档](https://cn.vuejs.org/)