王媛媛 侯智国
摘 要:文章首先从总体需求、功能需求、性能需求三个方面对内蒙古古迹遗址数字化保护平台进行需求分析,在需求分析的基础上开展充分、完整的系统设计,通过与平台用户、管理人员等沟通从用户注册、用户登录、古迹遗址展示、古迹遗址检索、点云数据可视化、资料数据共享、古迹遗址资料分类管理、用户管理八大功能模块提出内蒙古古迹遗址数字化保护平台的实现策略。
关键词:古迹遗址;数字化保护平台;内蒙古
DOI:10.20005/j.cnki.issn.1674-8697.2024.07.004
0 引言
内蒙古自治区历史文化资源丰富厚重,古迹遗址众多,这些文物古迹遗址是中华民族传统文化的活化石,中华民族团结和谐、繁荣发展的见证者。内蒙古自治区现有近2.1万处不可移动的文物古迹遗址,其中国家重点文物保护单位149处,自治区重点文物保护单位511处,这些海量的古迹遗址亟需科学的勘查测绘和数字化保护①。但传统的保护如手工绘图和人工测绘等技术,收集到的资料数据不易留存且容易丢失,纸质资料共享的局限性也造成数据的传播不便。现阶段内蒙古古迹遗址数字化保护方式也存在缺乏全面和系统研究,无法为古迹遗址修缮施工提供精准数据等问题②。因而,探索构建对零散的古迹遗址数据资料采集、存储、保护平台,并以数字化的方式展示显得迫切且重要。
研究所构建的内蒙古古迹遗址数字化保护平台(下文简称“平台”)依托内蒙古古迹遗址保护与利用协同创新中心(教育部技术应用协同创新中心)已采集的点云数据及其他数据资料,对相关资料进行全面梳理、分类展示,为推动内蒙古自治区古迹遗址信息数字化建设奠定基础。
1 平台需求分析
1.1 总体需求
内蒙古自治区是中华文明多元一体的富集地,形成了多种文化交融的建筑文化,留下了大量具有很高历史、文化、艺术价值的多元古迹遗址。内蒙古地域由东北向西南斜伸,呈狭长形,东西跨度约2400千米。文化的多样化及地域的特殊性造就了内蒙古地区古迹遗址多元呈现、广泛分布等特点。设计一个能科学、清晰展示内蒙古古迹遗址相关信息的界面是平台的基点需求,如何从数字化角度为古迹遗址保护感兴趣者、研究者、从业者提供精准数据是平台的关键需求。平台同时对接第三方陕西时光软件有限公司,从管理者及用户角度出发,分析后端系统及数据库应满足便于管理且具有良好的交互性等需求。
1.2 功能需求
平台基于SpringBoot框架开发,并将其划分为两个部分:前端页面和后端管理,前端页面采用Bootstrap+Freemarker+JavaScript+jQuery等技术实现功能需求。面向的用户群体分为两大类:一是古迹遗址感兴趣者,二是有古迹遗址修缮需求的从业者。古迹遗址感兴趣者可以通过简洁明了的方式在平台检索古迹遗址的相关资料。有修缮需求的从业者除了可以通过平台检索古迹遗址相关资料外,还可以上传、下载资料及数据。后端管理采用SpringBoot+MySQL+Mybatis等技术实现,使用者为平台管理人员。平台管理人员可以根据古迹遗址的分类结构对繁杂的古迹遗址资料数据进行维护操作,同时实现对平台访问的用户管理。具体功能如下:
①用户注册。用户提交注册数据如用户名、密码,服务器端对用户名进行验证,确保用户不存在重名的现象且确保密码填写规范。
②用户登录。按照注册密码进行登录,首次登录需进行个人信息维护,确保用户信息的安全性。针对不同用户设置不同登录等级,共设置三级登录,根据等级不同,控制访问或操作权限。
③古迹遗址展示。为了可以合理、清晰地展示内蒙古古迹遗址相关信息,平台设计以内蒙古地图为展示载体,按城市一级分类,区、县二级分类展示古迹遗址的相关文献、历史渊源、学术研究等信息。
④古跡遗址检索。检索分为精确检索及模糊检索,精确检索适用于用户明确知道古迹遗址的信息如详细名称等,精确检索用户可直接通过古迹遗址名称等关键词进行检索,而模糊检索在用户无法确定古迹遗址准确信息时,可以通过古迹遗址所处区域、管理单位等单一条件或者多条件组合检索。
⑤点云数据行可视化。存取点云数据、点云颜色模型,对点云数据及颜色模型进行转角处理,提高数据的精准性及逼真性,并在页面上实现点云数据可视化和交互功能。
⑥资料数据共享。根据用户登录权限不同,三级用户可以上传、下载古迹遗址相关资料。
⑦古迹遗址资料分类管理。管理员按古迹遗址展示中一二级分类开展资料管理,包括资料的增加、修改和查看,也可增加一二级分类,并对一二级分类下古迹遗址详细信息进行维护。
⑧用户管理。实现平台管理员对用户信息的管理,包括用户查询、保存、更新、禁用启用等操作。
1.3 性能需求
为了达到良好的性能,平台应做好以下几个方面的需求:
①对前端页面录入的合法性进行充分核实,防止与后端审核不相符。对于不能通过前端校验的网页,应该保留在原页面并提示错误信息,以缓解对服务器的访问压力。在前端校验方面,采用了Ajax和JavaScript技术,而后端验证则采用Servlet技术③。
②控制后端数据读入时间,每个请求都要控制在指定的时间内。平台底层采WebSocket技术,连接允许前端页面和服务器之间进行全双工通信,只需要建立一次连接,就可以一直保持连接状态。这样既减少了系统占用的资源,也提高了系统的响应速度④。
③保证数据库及后端管理平台安全性非常重要,一定要杜绝未进行登录验证就可访问的现象。因而平台采用了Spring MVC技术,主要用于拦截用户的请求并做相应的处理,验证用户权限、记录请求信息的日志、判断用户是否登录等。平台采用了拦截器技术,提高了后端管理平台的安全性,杜绝资料数据非法访问等情况⑤。
④为了减少资料数据超量访问带来的负荷,需要平台管理员定时将数据记录从数据库中导出,以减少数据库的工作量。
2 平台系统设计
根据需求分析,系统设计应提出一套合理可行的技术解决方案,实现平台对古迹遗址相关资料的数字化管理。具体是将古迹遗址相关的展示、检索、共享等全部流程通过前端页面和服务器交互完成。将功能模块分解细化到功能点上,实现平台的全部功能。
2.1 总体框架设计
在平台中,前端页面主要实现页面呈现及前端校验逻辑,而服务端则是对业务的处理与访问。当对用户的访问等请求进行处理时,前端页面会对服务器发送业务请求,服务器端根据请求的不同执行不同的处理事务,如服务器端从数据库中获得对应的古迹遗址文献,将查询结果返回给前端页面并以内蒙古地图为载体向用户展示。同时与陕西时光软件有限公司对接,建立中心数据库,将古迹遗址资料数据全部存放到数据库中,对数据库统一进行管理与维护,确保资料数据的安全性。平台总体框架如图1所示。
2.2 主要功能模块设计
平台由八个功能模块构成,它们分别是用户注册、用户登录、古迹遗址展示、古迹遗址检索、点云数据可视化、资料数据共享、古迹遗址资料分类管理、用户管理。平台的各个模块均为统一的数据库平台,既能实现古迹遗址数据的共享,又具有各自独立的逻辑结构(图2)。
2.3 数据库设计
平台数据库设计需要经过需求分析、概念设计、逻辑设计和物理设计等多个阶段,每个阶段都需要认真思考和设计,确保数据管理系统的高效性、可扩展性、易用性和安全性。概念设计是以上文提到的需求分析为基础进行,该阶段是设计和分析出能够满足用户需求的各种实体,并整理出各实体之间的关系。平台主要有以下实体:用户、管理员、古迹遗址、资料、资料类别、点云数据等,实体间关系有一对多、多对多等。逻辑设计阶段是通过概念设计中的实体和实体间的关系实现数据库中表的结构,数据库表主要包括用户信息表T_User、管理员信息表T_Adm、古迹遗址列表T_BuildingUnit、资料列表T_Information、资料类别列表T_Category、点云数据表T_CloudData等,上述列表分别存储对应信息,包括编号、主键、外键等。以古迹遗址列表为主表,其他表为古迹遗址列表各个属性的子表。在逻辑设计完成后,将逻辑设计转换成数据库管理系统所需的物理结构,平台物理设计主要包括合理数据库分区优化存储、提高存储空间利用率以及设计合理的存储安排、备份和恢复等。
3 平台系统实现
平台实现环节是本文的核心部分,根据详细的需求分析和系统设计,依照严格的编码实现规范,对平台进行代码编写实现。对八大功能模块进行代码编写实现时,随时与平台管理员、用户沟通并测试,保证平台能够满足管理员及用户的使用要求。
3.1 用户注册功能模块功能实现
用户注册是平台行为的开始模块,用户通过表单提交注册数据如账号、用户名、密码、邮箱,基本字段定义为id、username、password、email,服务器端校验用户名,以避免出现重名。密码填写时,密码设置遵循填写规范,设定合理安全的密码规则,采用两次密码校验方式确保密码设置的一致性。服务器通过SystemController、UserController与前端页面进行交互,负责注册数据的提交和响应。同时服务器端在Impl中采用EmailServiceImpl方法,发送激活邮件,用户点击邮件中的激活链接,访问服务器的账号激活服务⑥。
3.2 用户登录模块功能实现
用户登录模块的主要功能是校验该用户登录的合法性,为了保障古迹遗址资料数据的安全,平台某些功能模块只针对合法用户开放,如古迹遗址资料的上传下载功能。用户在登录时,前端采用Ajax技术在用戶表T_User进行异步校验,校验用户填写的用户名及密码的正确性,进而判断登录的合法性。若输入的用户名和密码错误,则返回登录界面并给出提示信息,若正确,则通过JS的window.location方法将页面跳转至平台主页。此外,平台使用拦截技术在用户未登录情况下页面自动跳转回登录页,具体为通过创建Filter包,在包下创建LoginCheckFliter,判断session值从而确定用户是否完成登录,若值不为null则用户已登录,若未登录通过输出流方式向用户页面响应数据⑦。同时平台将页面路由名称映射到invisibleMap数组上,拦截判断该等级用户是否可以登录访问对应页面。
3.3 古迹遗址展示模块功能实现
古迹遗址展示是平台的重要模块,是用户了解和学习古迹遗址的重要途径。古迹遗址展示形式以内蒙古地图样式为基础,根据古迹遗址资料分类列表中一级分类城市名及二级分类区、县名的体系结构展示古迹遗址相关资料,如概要信息、相关文献、历史渊源、学术研究等。当用户想要进一步了解内蒙古古迹遗址点云数据时,可以点击展示页面下方的超链接进行查看。点击后会根据访问用户等级,弹出登录界面或无权限访问。资料展示模块的前端主要文件有BuildDetail.jsp、DescLiterature.jsp、DescHistory.jsp、AcademicResearch.jsp等。后端调用的主要方法有findByBid()、findLiterature()、findHistory()、findAcademicResear()等。findByBid()方法能够得到概要信息,findLiterature()方法能够得到古迹遗址的文献信息,findHistory()方法能够得到古迹遗址的历史渊源信息,findAcademicResear()方法能够得到古迹遗址学术研究信息。古迹遗址展示模块用到的表有T_BuildingUnit、T_Literature、T_History、T_AcademicResear、T_CloudData等。
3.4 古迹遗址检索模块功能实现
由于数据库中古迹遗址相关资料数据较多,且不同资料包含不同的参数,需要精确定位。为了让用户可以精准、高效找到想要了解的古迹遗址相关信息,平台设计古迹遗址资料检索模块,具体分为精确检索及模糊检索,精确检索适用于用户明确知道古迹遗址的信息如详细名称等,精确检索用户可直接通过古迹遗址名称等关键词进行检索,而模糊检索在用户无法确定古迹遗址准确信息时,可以通过古迹遗址所处区域、管理单位等单一条件或者多条件组合对其进行检索。古迹遗址信息检索功能的前端主要文件有AccurateSearch.jsp、VagueSearch.jsp和BuildList.jsp等。后端调用的主要方法有findByName()和findByCombination()findByName对应的精确检索功能,findByCombination对应模糊检索功能。古迹遗址资料检索查询的数据库中的表为T_BuildingUnit、T_CloudData。
3.5 古迹遗址点云数据行可视化功能模块实现
古迹遗址点云数据行可视化功能模块是平台以“内蒙古古迹遗址保护与利用协同创新中心”中点云数据为基础,利用古迹遗址结构体存储需要显示点云数据的各个子数据,通过数据库把数据解译出来,将数据里的值赋值给结构体,结构里的数据再赋值给OpenGL的显示函数接口,从而完成了点云的显示功能⑧。选择点云数据可以查看点云彩色模型数据,旋转角度使彩色点云数据更具有真实感,同时在一定程度上提高了数据的精准性⑨。要实现代码为fread()函数读取点云存储的文件头,写入抓取文件中,fseek()函数更改抓取的头文件中的高度和宽度,glPixelStorei()函数读取窗口像素并存储,fseek()函数写入点云像素数据。后端调用的主要方法有findCloud()。古迹遗址点云数据行可视化查询的数据库中的表为T_BuildingUnit、T_CloudData。
3.6 资料数据共享模块功能实现
资料数据共享模块是平台进行古迹遗址资料数据交流的重要一环。资料数据共享模块分为上传、下载两个功能,用户能够下载平台中自己想要的古迹遗址资料数据,也可以上传古迹遗址资料数据进行分享。只有对应权限用户才具有古迹遗址资料数据的上传、下载权限。古迹遗址资料数据上传前端主要文件有UploadBuild.jsp,后端调用的主要方法有AddBuild()。上传功能用到的表有T_BuildUnit、T_Information、T_CloudData。古迹遗址资料数据上传功能的实现借助fileupload组件来实现。古迹遗址资料数据上传后端实现步骤如下:采用common-fileupload上传组件进行资料数据上传,先对古迹遗址资料数据上传页面的表单数据进行校验,然后调用文件上传函数完成古迹遗址资料数据实体上传,调用古迹遗址资料数据插入数据库中的古迹遗址资料数据表中,完成上传,随后跳转到资料数据上传成功页面的提示。另外为保证服务器安全,上传文件应该放在外界无法直接访问的目录下,如放于WEB-INF目录下。为防止一个目录下面出现太多文件,使用hash算法对资料数据打散存储。古迹遗址资料数据下载的前端主要页面为BuildtDetail.jsp。后端调用的主要方法有Downloadbuildt()。古迹遗址资料数据下载功能用到的表为T_BuildingUnit、T_Information、T_CloudDat。古迹遗址资料数据下载功能的实现借助于I/O类的文件输入流和输出流来实现。古迹遗址资料数据下载后端实现步骤如下:先得到从页面传来的下载地址,通过File类得到要下载的文件,判断下载的文件是否存在,如果不存在則给出提示信息,返回古迹遗址信息页面,如果文件存在则控制浏览器对文件进行下载。最后关闭文件输入流和输出流,并给出下载成功的提示信息。
3.7 古迹遗址资料分类管理模块实现
古迹遗址资料分类管理模块是平台的管理人员对大量古迹遗址资料按分类结构有条理性进行管理的功能实现。具体是管理员对已有的古迹遗址信息一二级分类信息进行修改和查看,也可增加古迹遗址信息一二级分类。同时对一二级分类资料下具体资料数据进行维护。古迹遗址资料分类管理的前端主要文件有CategoryList.jsp、AddCategory.jsp和EditCategory.jsp,后端调用的主要方法有findAll()、addCategory()、addChild()、addParent()等。当需要添加一二级分类时,通过点击古迹遗址资料分类管理主页面的“添加一二级分类”超链接,平台就会跳转到添加一级分类页面。古迹遗址资料分类管理的前端主要文件有BuildList.jsp、AddBuild.jsp、EditBuild.jsp。后端调用的主要方法有findCetegoryAll()、AddBuild()、EditBuild()、DeleteBuild()等。古迹遗址资料分类管理功能用到的表有T_BuildingUnit、T_Information、T_CloudData。
3.8 用户管理
用户管理模块是平台后端管理系统实现的对用户的管理。用户管理模块的主要功能是管理员对已有的用户信息进行增加、修改和查看。用户管理的前端主要文件有UserList.jsp、Adduser.jsp和Edituser.jsp。后端调用的主要方法有findCetegoryAll()、AddUser()、EditUser()、DeleteUser()等。用户管理功能用到的表有T_User。
4 结语
内蒙古古迹遗址数字化保护平台基于SpringBoot框架开发,mysql作为底层数据库,采用Bootstrap技术、WebSocket技术提升平台的实用性。数字化存储和管理方式更好地解决了古迹遗址资料不易存储、数据不便传播等缺点,平台提供的点云数据共享为古迹遗址修缮施工提供精准数据。在后续的开发中,将持续优化平台功能,从而推动内蒙古自治区古迹遗址信息数字化建设的系统研究体系的建立与完善。
注释
①张鹏.内蒙古地域建筑史学研究浅析[C]//中国建筑学会建筑史学分会,北京工业大学.2019年中国建筑学会建筑史学分会年会暨学术研讨会论文集(上)北京:中国建筑工业出版社,2019:173-179.
②杨哲.中国古建筑保护的发展与对策浅析[J].文化产业,2021(29):115-118.
③郑苏宁.Web跨站请求编造的防护系统设计与实现[D].南京:南京邮电大学,2021.
④赵辉,彭建友,秦玉林,等.基于Websocket协议的车联网隐蔽信道构建[J].计算机科学,2023(9):11.
⑤王欢,李民,邓秀辉,等.基于Redis缓存数据库和Nginx负载均衡技术的购物网站性能优化[J].软件导刊,2022(8):114-119.
⑥李桂琼.基于大数据的物联网接入身份安全认证系统设计[J].自动化技术与应用,2023(4):118-121.
⑦徐世英,黄骁.解决负载测试第三方平台的用户登录问题[J].网络安全与信息化,2023(4):149-153.
⑧刘科.基于古建筑保护修缮需求的三维激光几何信息采集应用研究[D].北京:北京工业大学,2017.
⑨许良梅,王友光,田朋飞,等.三维激光扫描技术在施工精准控制中的应用与研究:以装配式钢结构建筑为例[J].安徽建筑,2019(10):118-119.