随着高校办学规模的不断扩大, 大学纷纷建设新校区, 相应的图书馆多馆服务现象也日益增多。另外, 对于以图书馆、院系资料室构建文献保障体系的高校而言, 院系资料室大多位于各学院行政办公区域, 地理位置上远离图书馆建筑物。由于内置GPS功能的手持移动设备的广泛应用, 通过对校区及各建筑物进行标识, 各校区图书馆、院系资料室等室外的定位与导航需求在技术上已能得到很好的解决。然而, 现阶段室内定位与导航仍未出现成熟且广泛使用的方案, 读者, 尤其是刚入学新生或其他初次入馆的读者, 在图书馆建筑结构、功能分区趋于复杂的情况下, 进入图书馆大楼后, 如何快速找到需要的资源或服务仍是有待解决的问题。
随着与信号源间的距离的增大, 无线信号强度逐渐减弱, 因此可用来进行室内定位。相关研究者对常见的无线室内通信技术, 如蓝牙、UWB、RFID和WIFI等, 都进行了定位应用的理论与实践探讨。Feldmann等[ 1]在蓝牙终端与接入点之间距离小于8米的多个室内场景中, 使用三角算法得到实际位置的实验, 证明蓝牙定位的可行性。Fontana等[ 2]在空货舱及装有部分货物的货舱中对UWB定位进行研究, 发现其定位精度高, 且穿透性强。SpotON是有源RFID定位中的典型代表, 其终端既可独立运行, 也能以卡的形式插在笔记本上, 在提供达1立方米范围内的3D精度的同时, 还支持数据缓存、身份认证等工作[ 3]。通过在WIFI定位中使用聚类和概率分布, Youssef等[ 4]发现, 7英尺的范围内, WIFI定位精度能超过90%。
对图书馆读者定位与导航而言, 上述技术中, 无源RFID只能单向定位, 而有源RFID和UWB技术都需要读者持有相应设备, 不易实际实施。蓝牙具有短距离、 低速的特点, 因此大规模的蓝牙网络非常少见。 另外, 随着WIFI
局域网的广泛使用, 对于已建WIFI网络的建筑, WIFI定位硬件条件已具备, 因此WIFI成为室内定位技术的首选方案。但因噪声干扰和环境可适应性等问题, 该技术尚不完善[ 5], 且具体实施时, 涉及建筑物建模、WIFI信号数据采集、定位算法实现及优化等技术细节, 自行设计实现具有较大难度, 因此, 该方式还有待技术的成熟及可靠的商业实现。
读者通常不需要建筑物空间内持续不断的导向服务, 因此, 可以通过二维码技术, 在每一个重要的物理标识或其他关键位置点附上二维码, 读者在查看物理标识系统的同时, 通过手机扫描二维码, 便能访问虚拟图书馆导向标识系统。在设置目的地之后, 该系统绘制出具体的行走路线, 指导读者快速达到目标, 找到需要的资源或服务。此方式以离散的导向标签代替连续的WIFI等无线导向信号, 在标签分布合理、充分的情况下, 也能取得较好的导向效果。
根据读者对资源访问及相关服务的导向需要, 系统功能包含找寻图书、期刊报纸、读者服务等地图标识与导向, 以及地图数据管理、二维码生成等后台管理功能。系统功能结构如图1所示:
.寻找馆藏图书是最常见的需求, 读者在通过OPAC检索到图书后, 系统找到该书所在具体书架, 并在楼层图中标识出来, 结合读者当前位置, 提供行进路线指引。对于没有具体位置信息的期刊、报纸等纸本资源, 以及图书馆提供的复印打印、培训等服务, 目标地点则为资源所在库室或具体服务提供点。同时, 允许读者直接浏览建筑物地图, 设定任意点为目标位置, 系统也应提供行进路线参考。
后台管理包括导向地图数据维护、二维码生成、使用统计等。二维码导向标签编码内容应为虚拟导向标识系统首页面URL, 通过其中的参数传递地点位置, 这样二维码扫描软件在检测到编码为URL时将自动提示读者访问本系统。由于二维码标签直接粘贴于原实体标识系统的标识牌、吊牌指示牌表面或其他人员流动频繁区域, 容易出现污损、脱落等情况, 因此, 定期或不定期地巡视检查标签是本系统日常工作之一。
智能手机上的操作系统包括诺基亚Symbian、谷歌Android、苹果 iOS、微软Windows Phone等[ 6]。如果采用C/S架构, 则需要针对各种常见平台分别开发应用, 技术难度大, 周期长, 且难覆盖所有移动智能平台。HTML5的出现, 使B/S架构成为系统的首选。HTML5[ 7]是HTML的一个主要的修订版本, 它在HTML4的基础上增加了新的元素及功能, 同时为提高浏览器互操作性, 定义了明确的一致性标准。通过HTML5test[ 8]网站可知, 常见手机浏览器, 对HTML5标准都实现了比较好的支持。因此本系统采用B/S架构, 表示层使用HTML5技术实现。系统架构如图2所示:
.为正确处理导向地图, 必须统一地图正方向。对于楼层图, 均采用正对建筑物主入口的平面图, 对于校区内各建筑物地图, 同理采用正对该校区正门的正面地图。不同校区间的布局图采用通常地图使用的“上北下南, 左西右东”方式。
地图坐标系选取时, 为与系统实现时的屏幕坐标系保持一致, 采用屏幕坐标系, 以地图左上角为坐标原点, 向左向下分别为X轴、Y轴正方向。
地图中的单位长度可以采用毫米为单位, 这样通过给定的比例尺, 需要时可以将地点位置或者距离换算成以米为单位的实际距离。但由于物理尺寸因显示器点距等因素在实际显示时需要根据具体显示器换算, 因此为方便屏幕导向路径的绘制, 采用像素为地图单位。
系统数据库表可分为两类:对校区、建筑物、楼层、具体地点等建模而成的地图处理类数据表;用户、角色及权限、日志、统计等常规系统数据表。由于后者使用管理信息系统中典型的设计方式, 这里不再讨论。
地图类数据表中, 如何存储建筑物、楼层、以及两者之间的联系是需要重点考虑的问题, 为此需要对校区、建筑物、楼层等进行有序的编码, 编码规则如表1所示:
![]() | 表1 地点编码规则 |
校区与建筑物表设计比较简单, 除了两者的地点编码外, 还含有文本类型的名称、具体坐标值 (校区表中指该校区在包含现在学校所有校区的地图中的坐标, 建筑物表中是该建筑物在校区内地图中的坐标) 。校区表还包含一个字段, 保存校区地图图片所在文件路径。
楼层表是系统中重要的数据表之一, 具体设计如表2所示。为处理楼层中的不能通过区域, 如封闭的房间等, 设计障碍区域表, 现系统支持表3所示的4种常见障碍类型。
![]() | 表2 楼层数据表设计 |
![]() | 表3 障碍区域表 |
其他地图类表还包括具体地点表、地点类型表, 因表结构比较简单, 这里不再讨论。
由于QR码在我国使用非常广泛, 因此按照QR码标准生成二维码。生成QR码的方法很多, 既可以依据其国际标准ISO/IEC18004设计实现生成算法, 也可以利用各种工具程序, 如快拍二维码[ 9]、QR精灵[ 10]等, 或者采用在线生成的方式, 如利用Google Chart API[ 11], 或者采用开源的第三方类库实现。为保证QR码生成模块与系统的有机整合, 同时满足提高系统开发效率和批量生成QR码的目标, 本系统采用开源类库ZXing生成QR码。
ZXing[ 12]全名“Zebra Crossing”, 可译作斑马线, 是一个应用非常广泛的开源一、二维码图像处理类库。需要注意的是, 现阶段的正式版本ZXing2.1在处理中文字符时会出现乱码, 这是因为其源码 (具体为源文件com.google.zxing.qrcode.encoder.encoder) 中默认编码格式为“ISO-8859-1”, 通过下载ZXing2.1源码, 将该文件代码:“internal const System.String DEFAULT_BYTE_MODE_ENCODING = "ISO-8859-1";”中的“ISO-8859-1”修改为“UTF-8”, 然后重新编译ZXing类库即可。
.系统生成的导视二维码标签如图3所示, 该标签编码的内容为“http://222.196.199.233/position.aspx?pid=201110101”, 标签地点编码为“201110101”, 表示本校成龙校区图书馆一楼大厅入口处。
虽然直接在地图上标识出起止点及电梯口等位置也能起到导向作用, 但如果能为读者提供起止点之间最短路径参考, 则能进一步提高服务水平, 因此路径导向算法成为本系统实现的技术重点。
如果起点和终点属于不同校区, 则通过文字或地图提示读者到目标校区, 同理可以处理同校区、但不同建筑物的情况。起点与终点在同一建筑内, 但分别位于不同的楼层, 这是最常见的路径导向情境。这里以某读者在本校成龙校区图书馆一楼大厅门口, 而所需图书在四楼左前侧为例进行说明。图4和图5分别为一楼和四楼楼层结构图, 图中S1、S2、S3、S4分别为四个楼梯口位置, Z1、Z2、Z3为中庭走廊通道口位置点, E1为电梯口位置。Ps指读者当前所在位置, Pe为目标书架所在位置。为区分位于不同楼层的电梯口等位置, 以E11表示一楼电梯口, E14表示四楼电梯口, 其他楼梯口、通道口同理。
.(1) 上下楼路径算法.
首先需要确定是通过电梯还是某楼梯上楼。为此遍历S1至S4楼梯口, 取得与Ps、Pe1 (Pe在一楼的水平投影间点) 距离之和最小的楼梯口为候选路径点Sr, 如果通过该点的行进路径长度小于通过电梯路径, 那么确定路径为<Ps, Sr1, Sr4, Pe>, 否则路径为<Ps, E11, E14, Pe>。实际计算时, 为绕开障碍区域, 例如图4中的“流通台”部分, 可能需要对各点间路线距离进行修正。算法伪代码如下:
//将S1作为候选通道点, 并求得其与Ps、Pe1间距离dis.
Sr=S1;
dis=d (Ps, S1) +d (S1, Pe1) ;
//遍历余下3个候选点.
foreach St in <S2, S3, S4>{.
//如果某点与Ps间距离小于dis, 则将其作为候选点Sr, 同时设置dis为该距离值.
If (d (Ps, St) +d (St, Pe1) <dis) {.
Sr=St;
dis=d (Ps, St) +d (St, Pe1) ;
}.
}.
//如果楼梯Sr路径距离小于电梯路径, 则其为最优路径, 否则乘坐电梯最优.
if (d (Ps, Sr1) +d (Sr1, Sr4) +d (Sr4, Pe) <d (Ps, E11) +d (E11, E14) +d (E14, Pe) .
BestPath=<Ps, Sr1, Sr4, Pe>;
else.
BestPath=<Ps, E11, E14, Pe>;
(2) 同楼层两点间路径计算.
同一楼层中, 两点间的路径选择算法采用如下方式:首先以两点直接连接为候选路径, 然后遍历该楼层所有障碍区域, 如果候选路径穿过该区域, 则对路径进行修正。代码如下:
public static List<Point> getBestPath (Point p1, Point p2, string floor) {.
//设置p1, p2直接连接为候选路径.
List<Point> best_path=new List<Point> () {p1, p2};
//取得当前楼层所有障碍区域.
List<FBDArea> listfbdArea=LocDAL.getfbdArea (floor) ;
//遍历所有障碍区域, 根据区域类别分别调用相应方法修正候选路径.
foreach (FBDArea fbar in listfbdArea) {.
//障碍区域为矩形.
if (fbar.area_type == (int) fbdAreaType.Rectangle) .
getPathRectangle (ref best_path, fbar) ;
//障碍区域为圆形.
if (fbar.area_type== (int) fbdAreaType.Circle) .
getPathCircle (ref best_path, fbar) ;
….
}.
return best_path;
}.
(3) 矩形障碍区域路径修正.
矩形障碍区域路径处理算法流程如图6所示:
.其中, L (Pi, Pi+1) 表示Pi与Pi+1两点之间直线连接。遍历当前已取得的最优路径各点, 如果某点Pi与下一点Pi+1的连线与障碍矩形区域相交, 则根据路径算法在Pi后增加数个新增点, 使得路径中Pi至原Pi+1段不再与矩形相交。这里线段是否与矩形相交可进一步转化为线段是否与矩形任意条边相交, 如果都不相交, 则与矩形不相交, 两条线段是否相交算法参考Philip 等的相关伪码实现[ 9]。三角形障碍区域采用相同算法, 圆形障碍区域处理同样参照Philip等的研究实现C#编码[ 13]。
对图4中的中庭结构的处理方式有两种:将矩形障碍区域视为一个梯形、一个三角形与一个五边形处理;或者仍然作为矩形处理得到候选路径, 然后从该路径与中庭通道路径中选择最短路径作为最终路径。由于前者数据计算量较大, 因此采用第二种处理方式, 在处理障碍矩形区域后, 如果发现其为中庭结构, 则根据检测情况确定是否修正该路径。
通过上述算法, 最终得到读者行进的最佳路线<Ps, E11, E14, Z34, Z14, Pe>, 如图4和图5中折线所示。
使用二维码标签导向之前, 需要在手机上安装具有二维码扫描功能的应用。
以某读者在本校成龙校区图书馆一楼大厅入口处扫描导向标签找寻图书《国富论》为例, 说明系统的使用过程, 其他找寻服务、期刊报纸与此类似, 不再论述。读者用快拍二维码对图3所示的导向标签拍摄, 程序解析出该标签为URL, 将调用默认浏览器, 通过访问该URL, 提交读者当前位置编码到系统“position.aspx”文件, 文件解析出读者当前位置, 保存在系统中, 同时返回页面如图7所示:
.读者点击“借图书”, 输入“国富论”, 提交检索请求。系统在接受请求后, 查询后台数据库, 获取图书列表并返回到浏览器中, 在选择其中第一本书后, 系统将读者当前位置与图书所在库室及书架在地图上标示出来, 返回地图到读者浏览器中, 读者即可根据地图快速找到该图书, 如图8所示:
.本系统现已在本馆试用一段时间, 表现出较好的实际应用效果。系统具有以下优点:
(1) 易于推广使用。随着二维码的广泛应用, 安装有二维码工具的移动智能设备也越来越多。即使全新安装一个二维码工具也比较简单, 易于完成。系统充分利用移动设备自身具有的摄像、二维码识别、网页浏览等功能实现导向功能, 对设备没有任何其他要求。
(2) 简单易用。系统针对手机进行移动Web页面设计, 界面直观简洁, 操作简单。
(3) 建设投入少。不需要购置专用软硬件环境及设备, 二维码标签采用普通的打印纸即可。
(4) 灵活性强。在实际使用过程中, 可根据使用反馈情况增减导向标签。根据系统使用统计, 对于很少或者没有被读者扫描的标签, 可将其从系统中删除;通过与读者沟通, 在适当的场所位置增加导视标签。
在系统的使用过程中, 也有一些需要注意的问题, 例如, 路径算法还可以继续完善和优化, 以提高导向的精确性;导向标签作用不直观, 读者看到此标签时不知其作用, 可借鉴微信二维码图片, 在不影响识别编码的情况下, 在生成的导向标签中加入“导向服务”或其他含义明确的文字或图片, 使读者一目了然;部分使用者担心图片耗费网络数据流量, 为此可在不影响导向的情况下, 适当压缩图片, 并在首页显著位置提示读者连接无线校园网络访问;由于本馆部分图书没有所在书架及书架位置信息, 需要逐步补充完整。总体来看, 本系统可弥补物理导向标识系统的不足, 为读者提供清晰、直观、明确、高效的导向服务, 帮助读者快速获取所需资源或服务, 提高服务质量和效率。
[1] |
|
[2] |
|
[3] |
|
[4] |
|
[5] |
|
[6] |
|
[7] |
|
[8] |
|
[9] |
|
[10] |
|
[11] |
|
[12] |
|
[13] |
|