1. 立项背景和目标
该项目立足于能源基础设施建设的行业背景,针对液化天然气(LNG)管道工程规模大、施工区域分散、安全风险高、多部门协同复杂等管理痛点,旨在通过信息化手段提升工程管理效率与安全性。项目以LNG应急储备项目外输管道工程为具体应用场景,依托成熟的地理信息技术(如WebGIS、3D可视化)、移动互联网与云计算能力,构建一个集地图可视化、工程管理、安全监控和进度跟踪于一体的挂图作战平台。其核心目标包括实现多标段统一管理、实时风险监控、数据驱动决策支持,并通过多源地图集成、3D可视化展示、移动端适配等技术手段,最终达成管理效率提升30%以上、降低安全事故发生率、优化资源配置等业务目标。
2. 软件功能及核心功能模块
系统核心功能模块包括:
地图服务模块:集成天地图、高德、百度等多源底图,支持坐标系转换、地图标注与测量。
项目管理模块:实现项目信息分类(按类型、状态、统管部门)、多维度筛选与搜索。
工程点管理模块:在地图上标注机组、风险点、转角点等,支持详情查看(含图片、视频)。
安全风险点模块:标识风险点位置、桩号距离等信息,提供列表展示与地图定位联动。
航拍全景模块:通过Photo Sphere Viewer展示360°全景图像,支持时间线筛选与上传功能。
3D可视化模块:基于Cesium/Mars3D实现3D场景渲染、模型加载与土方量计算。
视频监控模块:集成Video.js播放实时视频流,支持HLS协议与播放控制。
数据上传模块:支持工程图片、全景图等文件的上传与管理。
用户认证模块:提供登录验证、访客模式与权限管理功能。
3. 业务流程与功能路径描述
用户从登录系统开始,经身份验证后进入主界面。主界面以地图为中心,左侧为项目筛选抽屉(按分类、状态筛选工程点),右侧为工程点/风险点列表,底部为辅助功能栏。用户可通过地图交互(点击、缩放)查看工程点详情,或通过列表定位地图位置。航拍全景模块按时间线组织图像,点击后可全景浏览;3D模块支持场景旋转与方量计算;视频模块实时播放监控画面。数据流向为:后端API提供数据→前端处理并渲染→用户交互操作→更新数据并同步至后端。整体业务流程覆盖从数据加载、可视化展示到交互操作的完整闭环,满足工程管理全场景需求。
1. 整体架构、设计思路与技术栈
该项目前端整体采用Vue2作为核心框架,架构设计上清晰遵循了前后端分离与模块化思想。
技术栈:
Vue 2 + Vuex(状态管理)+ Vue Router(路由管理)、Vue CLI、elementUI组件库、Axios,并进行了统一的请求拦截与响应处理封装。
地图引擎:这是项目的技术核心。采用了多引擎混合集成模式:OpenLayers、Cesium、Mars3D;
特色库:
Photo Sphere Viewer:用于实现精彩的 360° 航拍全景图沉浸式浏览。
Video.js:用于集成和播放现场的视频监控流(HLS)。
设计思路:
模块化:按功能拆分为地图、项目、工程点、全景、3D、视频等独立模块,通过路由和Vuex进行通信和数据管理,耦合度低,便于协同开发和维护。
抽象与封装:对地图操作(如点标注、图层切换)、数据请求等通用逻辑进行了高级封装,形成统一的服务(Service),供各业务组件调用,保证了代码的复用性和一致性。
响应式设计:充分利用Vue的数据驱动特性,实现地图状态、列表数据、筛选条件的联动更新,用户体验流畅。
2. 我的负责模块和量化结果
在该项目中,我主要负责地图服务核心模块和工程点数据可视化模块的开发与优化。
1.负责模块:
多源地图集成与统一管理:独立完成了 OpenLayers 集成天地图、高德地图等多套底图服务,并实现了无缝切换功能。
工程点/风险点标注系统:开发了基于地图的标注组件,支持不同图标、颜色的动态渲染和聚合展示,并实现了与右侧列表的联动交互(点击列表项定位地图,点击地图弹窗高亮
列表)。
地图工具封装:封装了距离测量、面积测量、坐标定位等常用地图工具函数。
量化结果:
通过优化矢量图层的渲染策略和数据请求时机,将大规模工程点数据在地图上的加载渲染速度提升了约40%,极大改善了用户体验。
负责的地图标注与列表联动功能覆盖了全部5类工程点(机组、风险点等)和超过 2000+ 个地图要素,交互准确率达到100%。
所封装的地图工具库和通用服务被项目其他5个以上模块调用,减少了约60%的重复代码,提高了团队开发效率。
难点与解决方案:
多坐标系统一难题:OpenLayers、Cesium及国内底图(高德、百度)使用的坐标系不一致,导致数据展示错位。解决方案:确立WGS84为内部标准,在数据入口处利用proj4等库进行强制转换,确保所有数据在各引擎中位置准确。
大规模数据渲染卡顿:一次性加载成千上万个工程点导致地图操作卡顿。解决方案:实施数据分页与按视野范围请求,并集成点聚合(Cluster)功能,在缩放时动态聚合分散的点,大幅减少渲染压力,提升流畅度。
复杂状态同步问题:地图状态、筛选条件、列表数据间依赖复杂,易出现状态更新不同步。解决方案:规范化Vuex数据流设