亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于Unity的館藏書(shū)目導(dǎo)航系統(tǒng)設(shè)計(jì)研究

        2021-12-29 03:55:34曾妮麗
        現(xiàn)代計(jì)算機(jī) 2021年31期
        關(guān)鍵詞:數(shù)據(jù)庫(kù)圖書(shū)館信息

        曾妮麗

        (南京科技職業(yè)學(xué)院信息工程學(xué)院,南京 210048)

        0 引言

        明晰的標(biāo)識(shí)或?qū)Ш较到y(tǒng)總是能夠讓我們相對(duì)快速的找到目標(biāo),從而節(jié)省時(shí)間。早前一些生活場(chǎng)景中我們更多的是通過(guò)圖文標(biāo)識(shí)來(lái)指引我們的用戶,幫助他們快速找尋目標(biāo)。隨著信息技術(shù)的發(fā)展,尤其是智能終端設(shè)備的普遍應(yīng)用,利用便攜式終端設(shè)備來(lái)創(chuàng)建導(dǎo)航系統(tǒng),已有較多的研究并有了一些應(yīng)用。

        信息知識(shí)、文獻(xiàn)數(shù)量急劇增加,使得各地方館藏圖書(shū)數(shù)量激增,一些新建成的圖書(shū)館體量也變得越來(lái)越大,通過(guò)移動(dòng)終端設(shè)備導(dǎo)航系統(tǒng)來(lái)尋找圖書(shū),可以讓用戶查詢目標(biāo)書(shū)目,并根據(jù)路線圖快速查找到圖書(shū)的位置。

        1 系統(tǒng)需求分析與設(shè)計(jì)

        目前,大部分圖書(shū)館服務(wù)系統(tǒng)主要是提供常規(guī)的借閱和查詢服務(wù),用戶查詢到圖書(shū)后雖然能很方便的獲取圖書(shū)的索書(shū)號(hào)等信息,但是對(duì)于不熟悉圖書(shū)館館藏結(jié)構(gòu)的用戶而言,想要快速的找到目標(biāo)圖書(shū),還需要再費(fèi)一番周折。

        圖書(shū)導(dǎo)航系統(tǒng)的主要功能是,在傳統(tǒng)檢索的基礎(chǔ)上,讓讀者快速地找到圖書(shū)。具體包含用戶的登錄功能,該功能又包含管理員登錄和普通用戶登錄。普通用戶登錄后,提供查詢功能;同時(shí)可以為用戶在館內(nèi)找到書(shū)目提供導(dǎo)航路徑支持。管理員登錄后,可以對(duì)數(shù)據(jù)庫(kù)書(shū)目信息表進(jìn)行操作管理,操作主要包含書(shū)目的增加、刪除、查詢等。

        1.1 客戶端模塊

        根據(jù)需求分析得到客戶端需要的模塊和所需的模塊的簡(jiǎn)要說(shuō)明(表1)。

        表1 客戶端主要功能設(shè)計(jì)說(shuō)明

        1.2 后臺(tái)管理模塊

        主要包含管理員登錄及管理模塊。管理員登錄后,進(jìn)入管理界面,可以選擇數(shù)據(jù)庫(kù)表,針對(duì)表中記錄進(jìn)行查詢、刪除、增加記錄等操作。

        1.3 系統(tǒng)功能模塊交互方式

        根據(jù)需求分析得到的客戶端的模塊和各個(gè)模塊之間執(zhí)行的順序得到如圖1所示的流程圖。

        圖1 系統(tǒng)功能交互

        其中書(shū)目導(dǎo)航服務(wù)作為系統(tǒng)設(shè)計(jì)的主要功能部分,我們首先需要進(jìn)行圖書(shū)館館內(nèi)書(shū)架陳設(shè)平面圖的繪制,同時(shí)將現(xiàn)實(shí)書(shū)架及圖書(shū)的位置與平面地圖建立映射,該映射關(guān)系以數(shù)據(jù)庫(kù)表的形式存儲(chǔ)。系統(tǒng)通過(guò)書(shū)架的信息可以轉(zhuǎn)化為地圖上的位置信息。

        主要業(yè)務(wù)流程是用戶通過(guò)掃描或手動(dòng)輸入起始書(shū)架位置,其中書(shū)架信息在各書(shū)架處已經(jīng)事先進(jìn)行標(biāo)注,有對(duì)應(yīng)的提示信息;然后輸入目標(biāo)書(shū)目的索書(shū)號(hào)信息。起始位置可以通過(guò)地圖數(shù)據(jù)庫(kù)表直接轉(zhuǎn)化為地圖上的起始位置信息,目標(biāo)書(shū)目索書(shū)號(hào)獲取后先從書(shū)目數(shù)據(jù)庫(kù)表獲取書(shū)架信息,然后在地圖數(shù)據(jù)庫(kù)表里匹配映射的地圖目標(biāo)位置信息,最終通過(guò)A*尋路算法計(jì)算出行走的最優(yōu)路徑,并以路徑圖的方式疊加進(jìn)行顯示。

        2 數(shù)據(jù)庫(kù)設(shè)計(jì)

        根據(jù)該圖書(shū)書(shū)目信息查詢及導(dǎo)航功能,三個(gè)主要數(shù)據(jù)庫(kù)表設(shè)計(jì)如下:

        (1)用戶信息表。存儲(chǔ)注冊(cè)用戶姓名、學(xué)號(hào)、手機(jī)號(hào)碼、和密碼等信息。

        (2)圖書(shū)書(shū)目信息表。該表主要存儲(chǔ)圖書(shū)館館藏書(shū)目的基本信息,具體包含圖書(shū)ID、圖書(shū)書(shū)目名稱(chēng)、圖書(shū)索書(shū)號(hào)信息、圖書(shū)所在書(shū)架信息等。

        (3)導(dǎo)航地圖數(shù)據(jù)映射信息表。該表存儲(chǔ)地圖與館內(nèi)書(shū)架布局映射數(shù)據(jù)信息,主要包含ID、書(shū)架、映射地圖橫向坐標(biāo)、映射地圖縱向坐標(biāo)等字段。

        3 系統(tǒng)主要功能實(shí)現(xiàn)過(guò)程及關(guān)鍵技術(shù)

        3.1 開(kāi)發(fā)環(huán)境的配置

        項(xiàng)目使用SQLite數(shù)據(jù)庫(kù)存儲(chǔ)數(shù)據(jù)信息,因此首先需要在項(xiàng)目創(chuàng)建初期進(jìn)行SQLite相應(yīng)文件的配置。同時(shí)使用SQLite Studio數(shù)據(jù)庫(kù)可視化工具,幫助我們快速方便進(jìn)行數(shù)據(jù)庫(kù)表的創(chuàng)建以及管理。同時(shí)安裝SQLite4Unity3d插件,可以快速對(duì)數(shù)據(jù)庫(kù)表中的信息進(jìn)行操作。

        3.2 客戶端主要功能的實(shí)現(xiàn)

        客戶端主要功能是用戶進(jìn)行傳統(tǒng)檢索和2D導(dǎo)航。常用的查詢方式包含書(shū)名、關(guān)鍵詞、索書(shū)號(hào)等,以下主要介紹通過(guò)書(shū)名、索書(shū)號(hào)關(guān)鍵詞進(jìn)行查詢的實(shí)現(xiàn)過(guò)程。在進(jìn)行導(dǎo)航功能的實(shí)現(xiàn)過(guò)程中,用戶需要獲取到起始位置的書(shū)架信息以及目標(biāo)圖書(shū)的索書(shū)號(hào)信息,將這些信息輸入界面方可實(shí)現(xiàn)導(dǎo)航路徑的生成。

        3.2.1 書(shū)目信息查詢功能

        書(shū)目查詢功能主要實(shí)現(xiàn)了讀者可通過(guò)圖書(shū)書(shū)名等信息查找整條記錄信息。讀者登錄查詢界面后,在關(guān)鍵詞后文本框輸入需要查找的圖書(shū)的書(shū)名信息,單擊確定后會(huì)在下面的顯示區(qū)域輸出涉及圖書(shū)書(shū)名的相關(guān)記錄的詳細(xì)信息。

        查詢功能代碼實(shí)現(xiàn)的過(guò)程,首先是需要在創(chuàng)建的數(shù)據(jù)庫(kù)操作管理腳本文件中創(chuàng)建讀取方法,此方法接收輸入的關(guān)鍵詞,通過(guò)where方法在數(shù)據(jù)庫(kù)的表中找到相應(yīng)的圖書(shū)。語(yǔ)句如下:

        public IEnumerableGetBooksNamed(){

        return_connection.Table().where(x=>x.name==inputkeyword);}

        接著創(chuàng)建查詢腳本,需要先連接數(shù)據(jù)庫(kù),之后獲取界面中讀者輸入的書(shū)名信息,利用Get?BooksNamed()函數(shù)查找信息。此時(shí)顯示的所有記錄,可以利用forech(){}循環(huán)語(yǔ)句遍歷所有的記錄,并且將記錄依次顯示出來(lái)。之后再利用To?Control()函數(shù)將記錄以一定的方式顯示。

        3.2.2 2D導(dǎo)航路徑生成功能

        2D導(dǎo)航路徑生成功能主要方便讀者能夠快速的在圖書(shū)館內(nèi)找到所需要的書(shū)目,這一功能首先需要進(jìn)行平面地圖的繪制,建立與現(xiàn)實(shí)環(huán)境的映射關(guān)系,然后再使用A*尋路算法生成導(dǎo)航路徑。

        (1)地圖的制作。平面地圖的制作主要有兩種方式,一種是直接繪制一張地圖,直接在這張地圖上進(jìn)行映射。該方法直接顯示地圖,不能對(duì)地圖進(jìn)行縮放。另一種是采用瓦片系統(tǒng)來(lái)制作,這種方式可以實(shí)現(xiàn)對(duì)地圖的縮放,分級(jí)顯示地圖效果,能夠方便讀者查詢細(xì)節(jié)效果。本項(xiàng)目采用了第一種方式進(jìn)行地圖的設(shè)計(jì)。

        在A*尋路算法中,會(huì)將地圖劃分為若干個(gè)小圖塊,并以網(wǎng)格的形式表示整個(gè)地圖,最終在代碼中會(huì)以2D數(shù)組來(lái)表示我們的地圖。簡(jiǎn)單來(lái)說(shuō),繪制的地圖將會(huì)由若干個(gè)圖塊組成,算法需要解決的就是如何從起始圖塊以較優(yōu)路徑找到目標(biāo)圖塊,如圖2所示。

        圖2 2D網(wǎng)格表示的地圖

        因此在進(jìn)行圖書(shū)館館藏環(huán)境平面地圖的繪制時(shí),需要思考系統(tǒng)地圖中網(wǎng)格是如何劃分的,也就是網(wǎng)格的基本像素單位。通過(guò)研究系統(tǒng)中A*尋路算法的網(wǎng)格,同時(shí)考慮系統(tǒng)中圖片單位像素的設(shè)置。在實(shí)際的繪制中,將書(shū)架的長(zhǎng)度繪制為160像素,寬度設(shè)置為32像素,書(shū)架的橫向主要間距設(shè)置為64像素,主要間距寬度設(shè)置為32像素。這樣的操作一方面為了保證和系統(tǒng)中A*算法的網(wǎng)格進(jìn)行匹配,另一方面也要考慮書(shū)架的實(shí)際長(zhǎng)寬比。

        除了考慮書(shū)架具體的形狀和大小外,還需要考慮圖書(shū)館實(shí)際的情況。需要了解我校圖書(shū)館書(shū)目類(lèi)別以及各個(gè)類(lèi)別的數(shù)量等,還需要了解書(shū)架擺放的規(guī)律等。通過(guò)走訪和實(shí)地考察,學(xué)校圖書(shū)館館藏書(shū)目基本涉及所有圖書(shū)學(xué)科類(lèi)別,根據(jù)我們學(xué)校的專(zhuān)業(yè)特點(diǎn),如我們學(xué)校早前是化工專(zhuān)業(yè)為主,這類(lèi)圖書(shū)較多;另外同其他圖書(shū)館一樣文學(xué)類(lèi)、計(jì)算機(jī)類(lèi)等類(lèi)別圖書(shū)數(shù)量也會(huì)比較多。在圖書(shū)館館內(nèi)實(shí)地觀察得知,圖書(shū)館書(shū)架正反兩面均可放置圖書(shū),每個(gè)書(shū)架分成左右5格,每格又分為上下5層;書(shū)架的放置分為左右兩大組,左邊是按從右到左的順序,右邊按從左往右的順序排放。具體的繪制效果如圖3所示。

        圖3 圖書(shū)館館藏平面地圖

        (2)地圖映射數(shù)據(jù)庫(kù)建立。地圖繪制完成后,需要建立現(xiàn)實(shí)中書(shū)架與系統(tǒng)中地圖坐標(biāo)的映射關(guān)系。首先確定地圖中系統(tǒng)坐標(biāo)原點(diǎn)的位置,將坐標(biāo)原點(diǎn)設(shè)置在地圖的中心位置(具體如圖4),根據(jù)系統(tǒng)的設(shè)置,每個(gè)單位是32像素這樣第一個(gè)書(shū)架右上角的坐標(biāo)為(-10,8),其他可以依次類(lèi)推。

        圖4 地圖坐標(biāo)系及書(shū)架碰撞區(qū)設(shè)置

        由于每個(gè)書(shū)架又分為正反兩面,均可擺放圖書(shū),同時(shí)每個(gè)書(shū)架左右分為5欄,因此每一大類(lèi)的書(shū)目我們又會(huì)分為子類(lèi),擺放在對(duì)應(yīng)的豎格中。以下將以A類(lèi)書(shū)目在第一個(gè)書(shū)架中的擺放以及對(duì)應(yīng)的映射情況為例進(jìn)行介紹,如圖5所示。

        圖5 書(shū)目A大類(lèi)書(shū)架信息

        圖書(shū)館館藏圖書(shū)中A大類(lèi)圖書(shū)數(shù)量不是很多,我們將其集中在一個(gè)書(shū)架上,書(shū)架的兩面按照豎格依次存放子類(lèi)A10,A20,A30,A40,A50,A60,A70,A80,A90等子類(lèi)的書(shū)目,根據(jù)網(wǎng)格像素?cái)?shù)及坐標(biāo)原點(diǎn)的位置,系統(tǒng)中地圖映射的坐標(biāo)依次為A10(-10,8),A20(-11,8),A30(-12,8),A40(-13,8),A50(-14,8),A60(-10,7),A70(-11,7),A80(-12,7),A90(-13,7)。其他類(lèi)別下,如果書(shū)目較少,采取同樣的方式進(jìn)行書(shū)架的劃分以及書(shū)目的擺放,如果書(shū)目較多,則分多個(gè)書(shū)架進(jìn)行擺放,每個(gè)書(shū)架每豎格書(shū)目的安排劃分更加細(xì)致。

        采取這樣的方法,我們最終將得到整個(gè)地圖的數(shù)據(jù)庫(kù)映射信息表,該地圖映射數(shù)據(jù)庫(kù)表主要包含書(shū)架bookshelf字段(如A10),映射系統(tǒng)中的橫向坐標(biāo)位置信息bookshelf_x字段(-10),映射系統(tǒng)中的縱向坐標(biāo)位置信息bookshelf_y。其中地圖映射數(shù)據(jù)庫(kù)表具體結(jié)構(gòu)如下圖,地圖映射數(shù)據(jù)庫(kù)表具體數(shù)據(jù)信息表如圖6所示。

        圖6 圖書(shū)館地圖映射數(shù)據(jù)庫(kù)表中數(shù)據(jù)信息

        4 A*尋路及導(dǎo)航路徑的生成

        圖書(shū)書(shū)目導(dǎo)航路徑的生成,主要采用A*尋路算法。要求讀者在系統(tǒng)的當(dāng)前位置文本框中輸入自身所在的圖書(shū)館中書(shū)架的信息,然后在系統(tǒng)界面的查找書(shū)目后面的文本框中輸入需要查找的圖書(shū)的完整索書(shū)號(hào)信息,之后系統(tǒng)會(huì)利用A*尋路算法生成最優(yōu)路徑并將路徑繪制在地圖上。

        此項(xiàng)功能的實(shí)現(xiàn)我們主要使用了AstarPath?finding插件。利用該插件實(shí)現(xiàn)這一功能的主要方法和步驟如下:

        (1)場(chǎng)景界面的搭建。主要是將地圖放置在界面中間,然后利用UI文本字段等創(chuàng)建搜索區(qū)域。

        (2)利用A*尋路插件提供的功能進(jìn)行當(dāng)前位置和查詢圖書(shū)兩個(gè)對(duì)象在場(chǎng)景中的基本設(shè)置。

        (3)將文本框中的書(shū)架和書(shū)目信息轉(zhuǎn)化為系統(tǒng)地圖中的坐標(biāo)數(shù)據(jù)。其中書(shū)目索書(shū)號(hào)轉(zhuǎn)書(shū)架以及系統(tǒng)地圖坐標(biāo)信息轉(zhuǎn)化的代碼如下:

        public InputField inputEnd;

        //找尋的圖書(shū)索書(shū)號(hào)輸入文本框

        public Transform searchBook;

        //定義要找尋的圖書(shū)的對(duì)象

        DataService ds=new DataService("existing.db");

        //創(chuàng)建連接數(shù)據(jù)庫(kù)實(shí)例

        private float End_x,End_y;

        //找尋圖書(shū)映射在地圖上的坐標(biāo)信息

        void Start(){searchBook=GameObject.Find("search?Book").transform; //賦值查找找尋圖書(shū)}

        public void GetEndPosition(){

        ds.inputkeyword=input End.text;

        //獲取找尋圖書(shū)的索書(shū)號(hào)

        var bookshelfSearch=ds.Get BooksNamenum();

        //獲取找尋圖書(shū)的書(shū)架信息

        IEnumerablemaptile=ds.GetMapBookshelf();

        //通過(guò)書(shū)架從數(shù)據(jù)庫(kù)地圖map表中獲取記錄信息}

        private void ToConsole(IEnumerablebookshelf?Search){

        //將索書(shū)號(hào)轉(zhuǎn)化為書(shū)架信息

        forearch(var books in bookshelfSearch){

        ds.inputkeyword=books.bookshelf;}}

        private void ToConsole(IEnumerablemaptile){

        //將書(shū)架信息轉(zhuǎn)化為映射地圖坐標(biāo)信息

        foreach(var booktile in maptile){

        End_x=booktile.bookshelf_x;

        End_y=booktile.bookshelf_y;

        searchBook.position=new Vector3(End_x,End_y,0);}}

        (4)通過(guò)地圖上的坐標(biāo)起始位置和結(jié)束位置,利用A*尋路算法生成路徑并進(jìn)行繪制。圖7表示從起始位置書(shū)架A50,查詢索書(shū)號(hào)為D100的圖書(shū)的較優(yōu)路徑。

        圖7 書(shū)目查詢導(dǎo)航路徑生成界面

        4 結(jié)語(yǔ)

        利用館藏圖書(shū)查詢導(dǎo)航系統(tǒng),能夠方便學(xué)生進(jìn)行圖書(shū)傳統(tǒng)檢索的同時(shí),可以在館藏平面地圖的基礎(chǔ)上讓學(xué)生按照路徑圖快速地找到圖書(shū),極大地方便了學(xué)生,提升了圖書(shū)館數(shù)字化水平。文中采用的導(dǎo)航方式,盡管是一種低成本的方式,同時(shí)也具備較高的精度,但是2D的形式對(duì)用戶的空間想象力仍然有較高的要求。

        猜你喜歡
        數(shù)據(jù)庫(kù)圖書(shū)館信息
        圖書(shū)館
        訂閱信息
        中華手工(2017年2期)2017-06-06 23:00:31
        數(shù)據(jù)庫(kù)
        飛躍圖書(shū)館
        數(shù)據(jù)庫(kù)
        數(shù)據(jù)庫(kù)
        數(shù)據(jù)庫(kù)
        展會(huì)信息
        去圖書(shū)館
        健康信息
        祝您健康(1987年3期)1987-12-30 09:52:32
        中文字幕av在线一二三区| 丰满人妻一区二区三区视频53| 色综合久久久久综合99| 精品少妇一区二区三区免费观| 推油少妇久久99久久99久久 | 在线观看日本一区二区三区| 国产亚洲精选美女久久久久| 日韩极品视频在线观看| 日韩精品自拍一区二区| 亚洲综合极品美女av| 久久久中日ab精品综合| 中文字幕乱码免费视频| 国产成人综合久久精品推| AV教师一区高清| 日韩少妇无码一区二区免费视频| 日韩一二三四区在线观看| 国产精品无套一区二区久久 | av综合网男人的天堂| 啪啪无码人妻丰满熟妇| 中文字幕喷水一区二区| 人妻少妇一区二区三区| 蜜桃视频一区二区三区在线| 日本精品人妻一区二区| 免费人成视网站在线剧情| 久久精品国产清自在天天线| 老妇女性较大毛片| 亚洲精品久久久久中文字幕二区| 无码人妻视频一区二区三区99久久| 色婷婷精品综合久久狠狠| 综合图区亚洲偷自拍熟女| 日本黄色影院一区二区免费看| 天天综合天天爱天天做| 欧妇女乱妇女乱视频| 亚洲国产成人精品女人久久久| 激情内射亚洲一区二区| 亚洲中文字幕在线一区| 欧美日韩一区二区综合| 亚洲国产精品线路久久| 亚洲啪啪AⅤ一区二区三区| 手机在线国产福利av| 国产自拍精品视频免费|