案例分享丨如何设计校园导航系统?
在此背景下,西安交通大学积极响应国家创新驱动的号召,建设了中国西部科技创新港——智慧学镇(简称“创新港”)。
西安交通大学 图源官博
随着创新港的投入使用,如何更好地提升校园服务水平也成了学校越来越关心的问题。现有的虚拟校园应用主要针对兴庆校区、曲江校区和雁塔校区,有2.5维和3维场景,对各个校区的主要建筑和景观进行了全局性的展示。
该虚拟校园应用存在以下不足:
第一,三维场景存在浏览器壁垒,部分浏览器不支持此项业务,增加了广大师生的使用困难;
第二,功能较为单一,缺少校园导航功能和VR全景功能,缺乏浸入式体验感;
第三,缺少微信端应用,用户获取方式单一、没有实现随时随地可触及使用;
第四,目前没有对创新港进行全覆盖,无法满足师生对创新港所有建筑和景观了解的需求。
鉴于创新港校区占地面积大、巨构建筑多,学校针对性地开发了一款基于微信小程序且具有时代性的校园导航系统。
该系统实现了创新港校区全方位导航、室内室外无感切换、提供VR全景校园体验、提升了浸入式体验感,满足了在校师生对创新港的了解,更方便地为全校师生提供了路线规划及路线导航服务。
微信和微信小程序
微信小程序(简称“小程序”)是无需下载安装就能使用的应用程序,是用户只需扫一扫或者通过搜索就可以打开并且使用的工具。
西交大网络信息中心旨在打造全校微信应用服务生态,依托微信生态为全校师生提供丰富的信息咨询、查询、互动和应用交互等业务。
尤其是在抗击新冠肺炎疫情期间,针对广大师生出行不便的问题,利用小程序承载信息应用服务是高校信息部门的主要方法,同时也是广大师生乐于接受的应用服务途径。
系统设计
1.校园导航系统功能设计
校园导航系统由“创新港导览”小程序和后台管理系统两部分组成。
其中,在开发实施方面,利用小程序提供GPS位置坐标信息接口,用户登录和用户信息校验接口,小程序还支持对蓝牙设备、Wi-Fi设备、相机等硬件设备的兼容和对接。
在推广使用方面,小程序即扫即用,速度快,支持慢速网络和离线应用,扩展性好,不同应用场景可快捷挂载,还能依托微信好友关系链进行开发和传播,方便在同学之间推广。
因此,我们选用小程序作为用户服务端,后台管理系统则采用常用的B/S架构,进行数据分析管理。
用户服务端包括创新港校区建筑道路地图展示、创新港校区室外地图导航服务、创新港校区室内建筑各个楼层平面图展示、创新港校区室内陆图导航服务、创新港校区VR全景导览。
后台管理端包括室外楼宇命名、室外停车场管理、室内房间分类命名、室内学院命名等功能。具体描述见表1。
表1 校园导航系统主要功能及其描述
2.校园导航系统总体架构设计
“创新港导览”小程序和后台管理系统选择采用基于MVC三层架构的微服务形式进行开发(图1)。
图1 校园导航系统体系结构
MVC三层架构分离模式实现展示层、服务层、数据层三层分离,前后端分离、数据层和逻辑层进行分离,采用微服务形式进行业务开发实现各个服务相互解耦、各自独立,方便维护升级,也方便后续的系统扩展。
“创新港导览”小程序系统各层之间通过接口形式传递数据。
展示层主要是用户使用服务和服务交互的前端入口,包含小程序前端和后台管理系统,小程序前端所有微信用户都可以访问,后台管理系统只能由分配了系统账户的管理运营人员才能访问。
服务层主要是对外提供基础功能服务,包含小程序业务子系统、室外地图子系统、室内陆图子系统、VR全景子系统、后台管理子系统五个子系统模块。
数据存储层负责平台的数据存储,平台的数据存储形式包含数据库存储、图片文件存储和统计数据存储,数据库存储的是和兴趣点相关的业务数据,包含导航线路、导航点等,图片文件存储的是VR全景图,统计数据存储的是用户访问日报和服务器访问日志数据。
3.校园导航系统总体功能流程设计
校园导航系统总体功能流程主要分为以下五种:室外导航流程、室内导航流程、室外室内混合导航流程、扫码定位流程、VR导览流程。具体功能描述见表2。
表2 校园导航系统总体功能流程及其描述
4.校园导航系统数据库设计
校园导航系统的数据采用双层数据库设计的方法(图2)。
图2 校园导航系统数据库设计
底层采用MySQL关系型数据库和MongoDB非关系型数据库合作构建永久存储层,MySQL存储楼宇、道路、楼层、标记物等地图元素主体,以及他们之间的拓扑标注,MongoDB存储各种图层的矢量图片。
上层在内存中构建内存临时数据库,实现持久层数据在内存中的缓存映射,同时在内存数据库中结合不同的元素主题和拓扑关系生成所有的路线路网,数据请求时会在内存中进行节点映射,找到对应线路,然后进行渲染输出。
双层的数据库在设计的同时融合结构化数据和非结构化数据的存储和管理,实现了具有强关系关联的丰富的非结构化数据的存储和搜索,同时很好地满足了地图数据的高频读低频写的存储特点,可以有效保证数据库的相应时间。
系统实现
校园导航系统采用C++语言和MySQL数据库、MongoDB数据库,结合MVVM模式,采用了独特的四层架构设计,将前端界面、业务逻辑、内存数据库、永久存储数据库进行分离。
1.前端界面
前端界面采用了MVVM框架进行开发,采用ModelView概念实现了视图和视图数据模型的分离,同时引入观察者模式实现有效的数据监听和数据订阅,开发了基于小程序端和PC的前端界面。
2.业务逻辑层
业务逻辑层处理核心的业务逻辑和数据计算任务,包含路径选择、位置坐标转换等,其封装了对数据库的所有操作。
3.内存数据库缓存层
内存数据库采用具有自定义的内存模型数据库,将地图拓扑数据在内存中进行全量重建,实现对数据库数据的缓存,保证系统的快速响应。
4.用户数据库存储层
采用MySQL和MongoDB结合的方式,存储结构化数据和非结构化数据。
在系统的安全和性能指标上,做了如下处理:
第一,前端服务器对外只开放80端口,并且采用防火墙和反向代理技术,隔离前端请求和业务服务器,同时业务服务器和数据库服务器实现分离,数据库服务器部署在内网,采用master-slave备份机制;
第二,应用部署在本校的云平台上,采用防火墙技术,只对管理员开发22和443端口,且对云平台虚拟机进行管理的用户均进行实名登记,所有断离活动的网络接入和网络活动情况日志留存,防止了非法用户登录服务器的可能性;
第三,小程序端支持1000个以上的并发用户,平均信息交换时间为300毫秒,最长不超过1000毫秒,数据平均吞吐量大于100条/秒;
第四,系统提供7x24小时的连续运行,平均年故障时间小于24小时,平均故障修复时间小于30分钟。
校园导航系统(图3)根据创新港校区的实际环境实现了室内、室外自定义地图展示,对创新港校区所有路网、建筑物室内、外地图的全覆盖,通过系统可以了解创新港校区内所有建筑物以及景观。
图3 校园导航系统室内外导航界面
系统还具有室外路径实时导航、室内路径导览、校园VR全景地图(图4)以及会议导航等功能,极大地丰富了校园地图系统功能的多样性,能够满足不同用户的不同需求。
图4 VR全景校园界面
通过小程序的承载克服了系统在浏览器上不兼容的问题,用户只需通过小程序端或者“西安交通大学App”就可进入校园导航系统,随时随地使用。
截至目前,该系统已经稳定运行一年多,能够承受停电、校园网大规模故障时的高并发访问量。该系统让学校广大师生加强了对创新港校区的认识,为日常工作生活提供了极大便利,尤其对学校微信生态的丰富和移动端应用的多样化起到了巨大的作用。
作者:张佳庚、王齐、刘俊、锁志海(西安交通大学网络信息中心)