欢迎进入内蒙古社会科学网! 今天是2022年 月 日
编者按:
为深入贯彻落实党的二十届三中全会精神和自治区党委的重要会议精神,内蒙古自治区社会科学界联合会在微信公众号开设“北疆社科研究”专栏。本专栏旨在围绕习近平总书记赋予内蒙古的五大任务和全方位建设“模范自治区”两件大事,聚焦内蒙古经济、政治、社会、文化、生态五个方面的发展动态,深入“北疆文化”的学理阐释,积极推进北疆文化品牌建设,持续刊发内蒙古自治区社会科学基金项目系列应用对策性研究成果,进一步团结引领社科界专家学者,围绕中心,服务大局,勇挑重担、潜心钻研,为奋力谱写中国式现代化内蒙古新篇章尽智献责。
内蒙古古迹遗址数字化保护平台的设计研究与实现
王媛媛、侯智国
内蒙古自治区历史文化资源丰富厚重,古迹遗址众多,这些文物古迹遗址是中华民族传统文化的活化石,中华民族团结和谐、繁荣发展的见证者。自治区现有近2.1万处不可移动的文物古迹遗址,其中国家重点文物保护单位149处,自治区重点文物保护单位511处,这些海量的古迹遗址亟需科学的勘查测绘和数字化保护。但传统的保护例如手工绘图和人工测绘等技术,其收集到的资料数据不易留存且容易丢失,纸质资料共享的局限性也造成数据的传播不便。现阶段内蒙古古迹遗址数字化保护方式也存在缺乏全面和系统研究,无法为古迹遗址修缮施工提供精准数据等问题。因而,探索构建对零散的古迹遗址数据资料采集、存储、保护平台,并以数字化的方式展示显得迫切且重要。研究所构建的平台依托“内蒙古古迹遗址保护与利用协同创新中心”(教育部技术应用协同创新中心)已采集的点云数据及其他数据资料,对相关资料进行全面梳理、分类展示,为推动内蒙古自治区古迹遗址信息数字化建设奠定基础。
一、内蒙古古迹遗址数字化保护平台需求分析
(一)总体需求
内蒙古自治区为中华文明多元一体的富集地,形成了多种文化交融的建筑文化,留下了大量具有很高历史、文化、艺术价值的多元古迹遗址遗产。内蒙古地域由东北向西南斜伸,呈狭长形,东西跨度约2400公里。文化的多样化及地域的特殊性造就了内蒙古地区古迹遗址多元呈现、广泛分布等特点。设计一个能科学、清晰展示内蒙古古迹遗址相关信息的界面是平台的基点需求,如何从数字化角度为古迹遗址保护兴趣者、研究者、从业者提供精准数据是平台的关键需求。平台同时对接第三方陕西时光软件公司,从管理者及用户角度出发,分析后端系统及数据库应满足便于管理且具有良好的交互性等需求。
(二)功能需求
平台基SpringBoot框架开发,并将其划分为两个部分,前端页面和后端管理。前端页面采用Bootstrap+freemarker+js+jquery 等技术实现功能需求,面对的用户群体分为两大类一是古迹遗址兴趣者二是有古迹遗址修缮需求的从业者,古迹遗址兴趣者可以通过平台检索古迹遗址相关资料,并能以简洁明了的方式为其呈现。有修缮需求的从业者除可以通过平台检索古迹遗址相关资料外,还可以对资料及数据进行上传下载。后端管理采用SpringBoot+MySQL+Mybatis等技术实现,使用者为平台管理人员。平台管理人员可以根据古迹遗址的分类结构对繁杂的古迹遗址资料数据进行维护操作,同时实现对平台访问的用户管理。具体实现功能如下:
1.用户注册。用户提交注册数据如用户名、密码,服务器端对用户名进行验证,确保用户不存在重名的现象且确保密码填写规范性。
2.用户登录。按照注册密码进行登录,首次登录需进行个人信息维护,确保用户信息的安全性。设置不同用户不同登录等级,共设置三级登录,根据等级不同,控制访问或操作权限。
3.古迹遗址展示。为了可以合理、清晰展示内蒙古古迹遗址相关信息,平台设计以内蒙古地图为展示载体,按城市一级分类,区、县二级分类展示古迹遗址的相关文献、历史渊源、学术研究等信息。
4.古迹遗址检索。分为精确检索及模糊检索,精确检索适用于用户明确知道古迹遗址的信息如详细名称等,精确检索用户可直接通过古迹遗址名称等关键词进行检索,而模糊检索在用户无法确定古迹遗址准确信息时,可以通过古迹遗址所处区域、管理单位等单一条件或者多条件组合检索。
5.点云数据行可视化。存取点云数据、点云颜色模型,对点云数据及颜色模型进行转角处理,提高数据的精准性及逼真性,并在页面上实现点云数据可视化和交互功能。
6.资料数据共享。根据用户登录权限不同,三级用户可以对古迹遗址相关资料上传下载。
7.古迹遗址资料分类管理。管理员按古迹遗址展示中一二级分类开展资料管理,包括资料的增加、修改和查看,也可增加一二级分类,并对一二级分类下古迹遗址详细信息进行维护。
8.用户管理。实现平台管理员对用户信息的管理,包括用户查询、保存、更新、禁用启用等操作。
(三)性能需求
为了达到良好的性能,内蒙古古迹遗址数字化保护平台应做好以下几个方面:
1.对前端页面录入的合法性进行充分的核实,防止与后端审核不相符。对于不能通过前端校验的网页,应该保留在原页面,并提示错误信息,以缓解对服务器的访问压力。在前端校验方面,采用了AJAX和 Javascript技术,而后端验证则采用 Servlet技术。
2.控制后端数据读入时间,每个请求都要控制在指定的时间内。本平台底层采WebSocket技术,连接允许前端页面和服务器之间进行全双工通信,只需要建立一次连接,就可以一直保持连接状态。这样即减少了系统占用的资源,也提高了系统的响应速度。
3.保证数据库及后端管理平台安全性非常重要,一定要杜绝未进行登录验证就可访问的现象。因而本平台采用了springmvc技术,主要用于拦截用户的请求并做相应的处理,验证用户权限、记录请求信息的日志、判断用户是否登录等。平台采用了拦截器技术,提高了后端管理平台的安全性,杜绝资料数据非法访问等情况。
4.为了减少资料数据超量访问带来的负荷,需要平台管理员定时地将数据记录从数据库中输出,以减少数据库的工作量。
二、内蒙古古迹遗址数字化保护平台系统设计
根据需求分析,系统设计应提出一套合理可行的技术解决方案,实现内蒙古古迹遗址数字化保护平台对古迹遗址相关资料数字化管理。具体是将古迹遗址相关的展示、检索、共享等全部流程通过前端页面和服务器交互完成。将功能模块分解细化到功能点上,实现内蒙古古迹遗址数字化保护平台的全部功能。
(一)总体框架设计
在内蒙古古迹遗址数字化保护平台中,前端页面主要实现页面呈现及前端校验逻辑,而服务端则是对业务的处理与访问。当对用户的访问等请求进行处理时,前端页面会对服务器发送业务请求,服务器端根据请求的不同执行不同的处理事务,例如,服务器端从数据库中获得对应的古迹遗址文献,将查询结果返回给前端页面并以内蒙古地图为载体向用户展示。同时与陕西时光软件公司对接,建立中心数据库,将古迹遗址资料数据全部存放到数据库中,对数据库系统管理与维护,确保资料数据的安全性。内蒙古古迹遗址数字化保护平台总体框架如图1所示。
图1:内蒙古古迹遗址数字化保护平台总体框架图
图2:内蒙古古迹遗址数字化保护平台首页
(二)主要功能模块设计
内蒙古古迹遗址数字化保护平台由八个功能模块构成,它们分别是用户注册、用户登录、古迹遗址展示、古迹遗址检索、点云数据可视化、资料数据共享、古迹遗址资料分类管理、用户管理。该平台的各个模块均为统一的数据库平台,既能实现古迹遗址数据的共享,又具有各自独立的逻辑结构。
(三)数据库设计
内蒙古古迹遗址数字化保护平台数据库设计需要经过需求分析、概念设计、逻辑设计和物理设计等多个阶段,每个阶段都需要认真思考和设计,确保数据管理系统的高效性、可扩展性、易用性和安全性。概念设计是以上文提到的需求分析为基础进行,该阶段是设计和分析出能够满足用户需求的各种实体,并整理出各实体之间的关系。内蒙古古迹遗址数字化保护平台主要有以下实体:用户、管理员、古迹遗址、资料、资料类别、点云数据实体等,实体间关系有一对多,多对多等。逻辑设计阶段是通过概念设计中的实体和实体间的关系实现数据库中表的结构,数据库表主要包括用户信息表T_User 、管理员信息表T_Adm、古迹遗址列表T_BuildingUnit、资料列表T_Information、资料类别列表 T_Category、点云数据表T_CloudData等,上述列表分别存储对应信息,包括编号、主键、外键等。以古迹遗址列表为主表,其他表为古迹遗址列表各个属性的子表。在逻辑设计完成后,将逻辑设计转换成数据库管理系统所需的物理结构,内蒙古古迹遗址数字化保护平台物理设计主要包括合理数据库分区优化存储、提高存储空间利用率、设计合理的存储安排、备份和恢复等。
三、内蒙古古迹遗址数字化保护平台系统实现
内蒙古古迹遗址数字化保护平台实现环节是本文的核心部分,根据详细的需求分析和系统设计,依照严格的编码实现规范,对内蒙古古迹遗址数字化保护平台进行代码编写实现。对八大功能模块进行代码编写实现时,随时与平台管理员、用户沟通并测试,保证平台能够满足管理员及用户的使用要求。界面首页如图2所示。
(一)用户注册功能模块功能实现
用户注册是平台行为的开始模块,用户通过表单提交注册数据如账号、用户名、密码、邮箱,基本字段定义为id、username、password、email,服务器端校验用户名,以避免出现重名。密码填写时,密码设置遵循填写规范,设定合理安全的密码规则,采用两次密码校验方式确保密码设置的一致性。服务器通过SystemController、UserController与前端页面进行交互,负责注册数据的提交和响应。同时服务器端在Impl中进行EmailServiceImpl方法,发送激活邮件,用户点击邮件中的激活链接,访问服务器的账号激活服务。
(二)用户登录模块功能实现
用户登录模块的主要功能是校验该用户登录的合法性,为了保障古迹遗址资料数据的安全,平台某些功能模块只针对合法用户开放,比如古迹遗址资料的上传下载功能。用户在登录时,前端采用AJAX 技术在用户表 T_User进行异步校验,校验用户填写的用户名及密码的正确性,进而判断登录的合法性。若输入的用户名和密码错误,则返回登录界面并给出提示信息,若正确,则通过 js 的window.location 方法将页面跳转至平台主页。此外,平台使用拦截技术在用户未登录情况下页面自动跳转回登录页,具体为通过创建filter包,在包下创建LoginCheckFliter,判断session值从而确定用户是否完成登录,若值不为null则用户已登录,若未登录通过输出流方式向用户页面响应数据。[7]同时平台将页面路由名称映射到invisibleMap数组上,拦截判断该等级用户是否可以登录访问对应页面。
(三)古迹遗址展示模块功能实现
古迹遗址展示是内蒙古古迹遗址数字化保护平台的重要模块,是用户了解和学习古迹遗址的重要途径。古迹遗址展示形式以内蒙古地图样式为基础,根据古迹遗址资料分类列表中一级分类城市名及二级分类区、县名的体系结构展示古迹遗址相关资料,如概要信息、相关文献、历史渊源、学术研究等。当用户想要进一步了解内蒙古古迹遗址点云数据时,可以点击展示页面下方的超链接进行查看。点击后会根据访问用户等级,弹出登录界面或无权限访问。资料展示模块的前端主要文件有 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等。
(四)古迹遗址检索模块功能实现
由于数据库中古迹遗址相关资料数据较多,且不同资料包含不同的参数,需要精确定位。为了使用户可以精准、高效找到想要了解的古迹遗址相关信息,平台设计古迹遗址资料检索模块,具体分为精确检索及模糊检索,精确检索适用于用户明确知道古迹遗址的信息如详细名称等,精确检索用户可直接通过古迹遗址名称等关键词进行检索,而模糊检索在用户无法确定古迹遗址准确信息时,可以通过古迹遗址所处区域、管理单位等单一条件或者多条件组合对其进行检索。古迹遗址信息检索功能的前端主要文件有 AccurateSearch.jsp、VagueSearch.jsp 和BuildList.jsp等。后端调用的主要方法有 findByName()和 findByCombination()findByName 对应的精确检索功能,findByCombination 对应模糊检索功能。古迹遗址资料检索查询的数据库中的表为T_BuildingUnit、T_CloudData。
(五)古迹遗址点云数据行可视化功能模块实现
古迹遗址点云数据行可视化功能模块是内蒙古古迹遗址数字化保护平台以“内蒙古古迹遗址保护与利用协同创新中心”中点云数据为基础,利用古迹遗址结构体存储需要显示点云数据的各个子数据,通过数据库把数据解译出来,将数据里的值赋值给结构体,结构里的数据再赋值给OpenGL 的显示函数接口,从而完成了点云的显示功能。选择点云数据可以查看点云彩色模型数据,旋转角度使彩色点云数据更具有真实感,同时在一定程度上提高了数据的精准性。主要实现代码为fread()函数读取点云存储的文件头,写入抓取文件中,fseek()函数更改抓取的头文件中的高度和宽度,glPixelStorei()函数读取窗口像素并存储,fseek()函数写入点云像素数据。后端调用的主要方法有 findCloud()。古迹遗址点云数据行可视化查询的数据库中的表为T_BuildingUnit、T_CloudData。
(六)资料数据共享模块功能实现
资料数据共享模块是内蒙古古迹遗址数字化保护平台进行古迹遗址资料数据交流的重要一环。资料数据共享模块分为上传下载两个功能,用户能够对平台中自己想要的古迹遗址资料数据下载,也可以上传古迹遗址资料数据,进行分享。只有对应权限用户才具有古迹遗址资料数据的上传下载权限。古迹遗址资料数据上传前端主要文件有 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 类得到要下载的文件,判断下载的文件是否存在,如果不存在,则给出提示信息,返回古迹遗址信息页面,如果文件存在,则控制浏览器对文件进行下载。最后关闭文件输入流和输出流,并给出下载成功的提示信息。
(七)古迹遗址资料分类管理模块实现
古迹遗址资料分类管理模块是内蒙古古迹遗址数字化保护平台的管理人员对大量古迹遗址资料按分类结构有条理性进行管理的功能实现。具体是管理员对已有的古迹遗址信息一二级分类信息进行修改和查看,也可增加古迹遗址信息一二级分类。同时对一二级分类资料下具体资料数据进行维护。古迹遗址资料分类管理的前端主要文件有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。
(八)用户管理
用户管理模块是内蒙古古迹遗址数字化保护平台后端管理系统实现的对用户的管理。用户管理模块的主要功能是管理员对已有的用户信息进行增加、修改和查看。用户管理的前端主要文件有 UserList.jsp 、Adduser.jsp 和Edituser.jsp。后端调用的主要方法有 findCetegoryAll()、AddUser()、EditUser()、DeleteUser()等。用户管理功能用到的表有T_User。
四、结语
内蒙古古迹遗址数字化保护平台基于SpringBoot框架开发,mysql 作为底层数据库,采用 Bootstrap技术、WebSocket 技术提升平台的实用性。数字化存储和管理方式更好的解决了古迹遗址资料不易存储、数据不便传播等缺点,平台提供的点云数据共享为古迹遗址修缮施工提供精准数据。在后续的开发中,将持续优化平台功能,从而为内蒙古自治区古迹遗址信息数字化建设提供系统的研究体系。
本文是内蒙古自治区社会科学基金项目成果。
作者王媛媛,内蒙古建筑职业技术学院高级工程师;侯智国,内蒙古建筑职业技术学院教授。
本文转载自《文物鉴定与鉴赏》。