• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      基于Unity的館藏書目導航系統(tǒng)設計研究

      2021-12-29 03:55:34曾妮麗
      現(xiàn)代計算機 2021年31期
      關鍵詞:書架書目圖書

      曾妮麗

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

      0 引言

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

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

      1 系統(tǒng)需求分析與設計

      目前,大部分圖書館服務系統(tǒng)主要是提供常規(guī)的借閱和查詢服務,用戶查詢到圖書后雖然能很方便的獲取圖書的索書號等信息,但是對于不熟悉圖書館館藏結構的用戶而言,想要快速的找到目標圖書,還需要再費一番周折。

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

      1.1 客戶端模塊

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

      表1 客戶端主要功能設計說明

      1.2 后臺管理模塊

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

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

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

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

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

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

      2 數(shù)據(jù)庫設計

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

      (1)用戶信息表。存儲注冊用戶姓名、學號、手機號碼、和密碼等信息。

      (2)圖書書目信息表。該表主要存儲圖書館館藏書目的基本信息,具體包含圖書ID、圖書書目名稱、圖書索書號信息、圖書所在書架信息等。

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

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

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

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

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

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

      3.2.1 書目信息查詢功能

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

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

      public IEnumerableGetBooksNamed(){

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

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

      3.2.2 2D導航路徑生成功能

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

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

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

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

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

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

      圖3 圖書館館藏平面地圖

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

      圖4 地圖坐標系及書架碰撞區(qū)設置

      由于每個書架又分為正反兩面,均可擺放圖書,同時每個書架左右分為5欄,因此每一大類的書目我們又會分為子類,擺放在對應的豎格中。以下將以A類書目在第一個書架中的擺放以及對應的映射情況為例進行介紹,如圖5所示。

      圖5 書目A大類書架信息

      圖書館館藏圖書中A大類圖書數(shù)量不是很多,我們將其集中在一個書架上,書架的兩面按照豎格依次存放子類A10,A20,A30,A40,A50,A60,A70,A80,A90等子類的書目,根據(jù)網(wǎng)格像素數(shù)及坐標原點的位置,系統(tǒng)中地圖映射的坐標依次為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)。其他類別下,如果書目較少,采取同樣的方式進行書架的劃分以及書目的擺放,如果書目較多,則分多個書架進行擺放,每個書架每豎格書目的安排劃分更加細致。

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

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

      4 A*尋路及導航路徑的生成

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

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

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

      (2)利用A*尋路插件提供的功能進行當前位置和查詢圖書兩個對象在場景中的基本設置。

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

      public InputField inputEnd;

      //找尋的圖書索書號輸入文本框

      public Transform searchBook;

      //定義要找尋的圖書的對象

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

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

      private float End_x,End_y;

      //找尋圖書映射在地圖上的坐標信息

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

      public void GetEndPosition(){

      ds.inputkeyword=input End.text;

      //獲取找尋圖書的索書號

      var bookshelfSearch=ds.Get BooksNamenum();

      //獲取找尋圖書的書架信息

      IEnumerablemaptile=ds.GetMapBookshelf();

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

      private void ToConsole(IEnumerablebookshelf?Search){

      //將索書號轉化為書架信息

      forearch(var books in bookshelfSearch){

      ds.inputkeyword=books.bookshelf;}}

      private void ToConsole(IEnumerablemaptile){

      //將書架信息轉化為映射地圖坐標信息

      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)通過地圖上的坐標起始位置和結束位置,利用A*尋路算法生成路徑并進行繪制。圖7表示從起始位置書架A50,查詢索書號為D100的圖書的較優(yōu)路徑。

      圖7 書目查詢導航路徑生成界面

      4 結語

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

      猜你喜歡
      書架書目圖書
      推薦書目《初春之城》
      都市人(2022年3期)2022-04-27 00:44:57
      圖書推薦
      南風(2020年22期)2020-09-15 07:47:08
      歡迎來到圖書借閱角
      班里有個圖書角
      新書架
      中國火炬(2015年7期)2015-07-31 17:40:10
      新書架
      中國火炬(2015年11期)2015-07-31 17:28:57
      新書架
      中國火炬(2015年6期)2015-07-31 17:25:56
      本刊郵購書目
      桌上書架
      中學科技(2009年10期)2009-12-10 08:53:14
      《全國新書目》2009年1月薦書榜
      全國新書目(2009年1期)2009-04-13 06:58:24
      牡丹江市| 阳西县| 龙口市| 宝坻区| 长丰县| 紫阳县| 石嘴山市| 全州县| 台北市| 葵青区| 清原| 望奎县| 牙克石市| 永川市| 昂仁县| 柘城县| 三都| 塔城市| 寻乌县| 江川县| 商洛市| 密云县| 洪江市| 双牌县| 崇仁县| 牡丹江市| 潞西市| 靖江市| 济南市| 伊金霍洛旗| 井冈山市| 天镇县| 大同市| 巴中市| 延津县| 沂水县| 宁陕县| 南开区| 襄城县| 石楼县| 宜城市|