徐人杰,朱 骏*,叶泓昕,涂乾光
(1.浙江水利水电学院,浙江 杭州 310018)
随着“互联网+”实践成果的不断推动,经济形态不断发生演变,旅游产业的发展无法离开信息技术的支撑。2016 年12 月26 日国务院发布的《“十三五”旅游业发展规划》提出,要以现代信息技术为支撑,建设一批智慧旅游景区。在该背景下,越来越多的旅游景点推出了“数字旅游”的概念,并加以实践。数字旅游的模式使管理工作更加方便准确,大大降低了人力成本,也是旅游业实现管理科技化、现代化的一个最佳途径,满足了现阶段仍处于迅速发展状态下旅游业的需求,因此建立高效、高规格、功能完善的旅游信息可视化平台,对于旅游业的发展具有重要意义。近年来,越来越多的学者加入到研究数字旅游概念、实现数字旅游应用的队伍中,分别针对八大关[1]、青岛市[2]、泉州西湖公园[3]、连云港花果山景区[4]、全国红色旅游资源[5]、南昌梅岭森林公园[6]和成都市[7]进行了有意义的尝试,实现了具有一定价值的旅游GIS。
目前,传统旅游GIS 主要以二维地图为背景,体验性欠佳;而部分三维旅游GIS 存在三维漫游实景渲染程度不佳、模型精细程度不够等问题。针对这些问题,本文利用3dsMax 软件进行精细化建模,并基于SuperMap 二次开发组件,在VS 平台上利用C#语言实现了杭州余杭塘栖古镇三维旅游可视化系统。系统界面简洁易懂、功能实用、稳定性较好、三维模型逼真、属性数据详实,为用户提供了较好的使用体验。
塘栖古镇位于杭州市北部,距离杭州市中心约20 km,京杭大运河从古镇中心穿过,已有1 300 多a的历史。构建塘栖古镇的三维场景需要获取场景的空间数据和属性数据[8],本文首先进行实地拍照和实地测量,再根据照片信息、记录的建筑物长宽高信息以及建筑物之间的间隔信息,在3dsMax 软件中进行建模。
在建立关键建筑物三维模型时,首先需搭建建筑地基,通常以标准基本体中的长方体为地基基础;再利用线段的样条线设置线宽、基础功能构造房屋模型、布尔功能构造建筑模型;最后利用线条基础功能建造房屋的屋檐和屋前房梁。
塘栖古镇中包括大量的树木、灌木丛和花坛。本次建模采用简化处理的方法,利用3dsMax 软件自带的植被文件完成建模。本文拍摄了塘栖古镇数百张贴图用的照片,通过筛选、调整后,利用符合贴图要求的照片进行塘栖古镇整个场景的贴图工作。部分贴图效果如图1 所示。
图1 贴图效果展示
在3dsMax 软件中完成建模的场景,再通过SuperMap的Max 插件,将3ds 文件(.3ds 格式)转化为模型数据集(.udb 格式)。利用SuperMap 的Max 插件时,需设置该场景的坐标值,即在“生成模型数据集”窗口中选择“球面坐标”,设置经纬度值和高度值。纹理路径选择为场景使用的贴图数据所在的文件夹。数据源文件路径为新建的“塘栖古镇”文件型数据集。然后,在SuperMap iDesktop 10i 中进行模型合并和模型切分。最后,将这些对象加载到同一个球面场景中。模型切分的目的是将一个拥有大量模型的场景等量分解成若干个小场景,以解决开发系统一次性载入过多数据卡死的问题。
塘栖古镇三维旅游可视化系统设计与开发的目的是将塘栖古镇的全貌以三维场景的方式呈现给用户,用户通过系统可浏览整个三维场景,身临其境地看到塘栖古镇中的景点、餐馆、宾馆、商铺和公共设施。系统在设计和开发时兼顾了多个方面,遵循规范性、可靠性、经济性和管理可接受等原则,以保证系统搭建工作的顺利进行。
系统整体框架分为数据层、业务层和用户层3 层。数据层以模型数据和属性数据为基础数据,是模型构建和模型属性查询搭建的基础。业务层负责根据模型数据,在3dsMax 软件中构建三维模型,生成.3ds 文件,并将文件经过转换后导入SuperMap iDesktop 10i中,在工作空间文件(.smwu)中添加该数据源,生成场景;在Visual Studio 平台中,基于C#语言进行系统的二次开发,实现了在三维旅游可视化系统中加载工作空间文件。用户层则是三维旅游可视化系统中可实现的各种功能。系统总体框架结构如图2 所示。
图2 系统总体架构图
1)三维场景加载与图层管理。通过点击“打开工作空间”按钮来实现工作空间文件(.smwu)的载入,在工作空间管理界面进行三维场景的加载,然后在图层管理界面进行该场景包含图层的管理。
2)场景属性管理。在系统界面上制定工具栏,实现对状态栏、大气、太阳、经纬网、导航罗盘的可视或隐藏管理。
3)三维漫游。在三维场景显示界面中,通过鼠标按键操作,对场景进行放大、缩小、旋转、平移等基本操作,可充分显示场景中各建筑物的空间位置、分布关系,也可提供整体的三维场景展示。
4)信息查询。该功能涉及三维查询和属性查询两个菜单按钮。在三维查询按钮下,包含两个子按钮,一个是点击三维模型,即通过气泡形式显示该模型的基本信息;另一个是弹出对话框,即手动输入SQL 语句进行查询。点击属性查询按钮后,将弹出交互式对话框,通过3 个下拉列表的选择,引导用户按照属性查询相应的三维模型。
5)快捷选择。通过点选菜单栏上的“快捷选择”按钮,弹出包含11 个按钮的子菜单。用户可在小吃、名宿、特产食品店和景点等11 类建筑类别中一键选取其中一类建筑,在窗口高亮显示。
6)距离量算。在三维场景显示界面中,点击鼠标左键选择两点,并计算两点之间水平净距、垂直净距和空间距离,同时获得信息反馈。
系统数据库包括三维模型数据和属性信息,其中三维模型数据通过3dsMax 软件构建,再利用SuperMap 公司研发的插件导出,放入开发的系统中使用;属性信息则通过实地调查获得,包含景点介绍、商铺售卖的商品与价格信息、建筑名称、建筑物类别(如手工艺品店、服装店、景点、公共设施等)、营业时间等,整个系统的属性信息由一张属性表进行管理。属性表的字段名称和类型如表1 所示,其中Path 字段用于存放点击三维模型进行查询时,气泡框中显示的景点照片的路径。
表1 系统属性表字段信息
1)系统软件平台。操作系统为Windows 10,三维GIS 平台为SuperMap iDesktop 10i,二次开发语言为C#,二次开发平台为Visual Studio 2017,二次开发组件为SuperMap iObjects.NET 10i SP1 for Windows。
2)系统硬件平台。处理器为Intel(R)Core(TM)i7-8700K CPU @ 3.70GHz,内存(RAM)为16 GB,显卡为Intel(R)UHD Graphics 630 和NVIDIA GeForce GTX 1080Ti。
用户界面是系统呈现给用户的整体形象,需将其设计得简洁、美观,方便用户快速掌握系统的各种功能和使用方法。塘栖古镇三维旅游可视化系统界面分为菜单栏、工具栏、距离量算信息反馈窗口、工作空间管理器、图层管理器、三维场景窗口6 个部分(图3)。
系统数据加载包括工作空间文件加载和场景加载显示。加载工作空间后,工作空间管理器需与图层管理器关联。图层管理器中显示了当前场景包含的图层名称,可对各图层进行显示或隐藏状态选择、图层位置调节等工作。在对模型进行属性查询前,需在图层管理器中选中该建筑所在的图层。三维场景窗口用于场景的显示与浏览,也可在该场景中进行漫游和距离量算等操作。在窗体中加入SceneControl 控件,关联工作空间管理器、图层管理器和三维场景窗口。系统加载场景后的效果如图3 所示。
图3 场景加载效果
场景属性管理的实现方法为:首先在ToolPanel 控件上添加了一个GroupBox 控件,将它的Text 命名为“场景属性”;然后在该控件中继续添加CheckBox 子控件,如状态栏、比例尺、导航罗盘等。这些CheckBox对应了SceneControl 中的各个场景属性,场景打开时,默认各场景属性为可见状态,点击一个CheckBox 的勾选项,则该CheckBox 对应的场景属性将被隐藏。
系统针对游客群体的需求,从易用角度出发,设计了“属性查询”按钮,通过将ComboBox 与属性表中的字段内容进行关联,引导用户进行信息查询。系统为游客提供了“建筑分类”、“店铺名称”、“商品与价格”等查询信息,点击“确定”按钮后,场景中将高亮显示符合条件的建筑。属性查询弹框界面如图4所示。
图4 属性查询界面
实现属性查询的部分关键代码为:
系统还设计了另一种查询方式,即首先在图层管理器中用鼠标左键单击建筑所在的图层,再点击界面顶层菜单栏中的“三维查询”→“模型查询”,然后在场景窗口中选择需要查询的建筑物,便会弹出一个气泡窗口,显示该建筑物的具体属性信息(真实照片、营业时间等)。若该建筑物的分类为官方景点,则还将显示该景点的简介;若该建筑物中售卖商品,则会显示店铺中所售的商品和价格。模型查询的效果如图5 所示。
图5 模型查询示意图
系统中距离量算的方法为:点击界面顶层菜单栏中的“距离量算”按钮,在场景窗口中利用鼠标左键选择两个点(被选中的点为红色),再点击鼠标右键,即可在“场景属性”控件的右侧TextBox 中获得信息反馈,如两点间水平净距为“+S_Distance.ToString()+”米,垂直净距为“+H.ToString()+”米,空间距离为“+ K_Distance.ToString() +” 米。距离量算的依据为基于参考椭球体的曲率,利用测地线(又称大地线,空间中两点之间的局域最长或最短路径)的接口来计算两个三维点的空间距离。
本文通过实地拍照收集数据的方式采集了建模所需的模型数据、贴图数据和属性数据;再利用3dsMax软件进行三维场景建模,并将建模完成后的3ds 格式文件通过SuperMap 公司研发的转换插件转换为模型数据集,导入SuperMap iDesktop 10i 中进行场景的生成和属性表的填写;最后基于SuperMap 二次开发组件和Visual Studio 平台,完成了三维旅游可视化系统的设计与开发工作。系统具有开发周期短、成本低、应用层面广等优点。在2020 年全球疫情的影响下,该系统可作为一个展现塘栖古镇风貌的平台,吸引潜在游客,对全国智慧景区的建设具有重要意义。
在今后的研究中,系统的三维数据可通过倾斜摄影的方式获得,这将大大提高数据获取的效率,为将来大规模应用做准备;系统的实现可尝试采用移动端SDK 进行二次开发或采用WebGIS 的形式,这样更符合游客的使用习惯。