任安晶 方慧 王建 崔維帥 謝濟陽
摘要:地理信息科學已經(jīng)發(fā)展成為一門有著堅實理論基礎(chǔ)的學科,為專業(yè)相關(guān)學習者提供學習與交流的平臺具有現(xiàn)實意義。GIS專業(yè)信息查詢系統(tǒng)基于微信小程序進行設(shè)計與開發(fā),同時選用流行的小程序框架ColorUl輔助開發(fā)。該系統(tǒng)在微信提供的強大原生APl等基礎(chǔ)功能的支持下,能夠較好地滿足用戶需求。該系統(tǒng)選擇了35位用戶進行內(nèi)測,受到90qo的用戶肯定,用戶評價系統(tǒng)功能較完整,且有使用價值。
關(guān)鍵詞:微信小程序;GIS學習;查詢系統(tǒng)設(shè)計;研究生考試
中圖分類號:TP311 文獻標識碼:A
文章編號:1009-3044(2020)05-0078-03
開放科學(資源服務(wù))標識碼cOSID):
1 背景
伴隨著地理信息科學(簡稱GIS)產(chǎn)業(yè)的蓬勃發(fā)展,挖掘與培養(yǎng)更多的地理信息系統(tǒng)開發(fā)人才(簡稱GISer)成為社會各界的共識,得到了國家的高度重視,目前我國開設(shè)GIS相關(guān)專業(yè)的高等院校達200多所[1]。本系統(tǒng)旨在方便GIS專業(yè)學生,尤其是本科生,進一步了解相關(guān)院校的基本信息與專業(yè)動態(tài),對自己的學術(shù)發(fā)展有更好了解與規(guī)劃。另外,采用微信小程序作為開發(fā)平臺簡化了開發(fā)過程,同時借助微信平臺能夠擴大系統(tǒng)的受眾范圍,對于用戶來說,微信小程序無須下載安裝,不占用手機內(nèi)存,使用更加靈活輕便,故基于微信小程序平臺開發(fā)了GIS專業(yè)高校信息查詢系統(tǒng)。
2 項目需求分析
2.1 系統(tǒng)功能介紹
本系統(tǒng)主要由針對信息查詢方面的學習貼士、院校位置、院校推薦、院校歷史、專業(yè)評估以及針對GIS專業(yè)交流學習的GIS專區(qū)等多個功能組成。旨在從GIS學生信息獲取、高校招生兩方面著手,為GIS專業(yè)相關(guān)知識的學習交流提供平臺。
2.2 系統(tǒng)結(jié)構(gòu)分析
依據(jù)上述功能需求,設(shè)計如下系統(tǒng)功能結(jié)構(gòu)圖,如圖1所示。
學習貼士、院校位置、院校推薦與院校歷史功能頁面可由首頁中央部分菜單欄點擊進入,專業(yè)評估、GIS專區(qū)與聯(lián)系我們功能頁面可由微信小程序內(nèi)置的底部導航欄點擊切換。
2.3 開發(fā)技術(shù)需求
基于微信小程序的GIS專業(yè)信息查詢系統(tǒng)的應(yīng)用環(huán)境是移動端操作系統(tǒng),更確切地說是兩大操作系統(tǒng)iOS和Android的微信客戶端,小程序開發(fā)需要在前期準備申請小程序賬戶、安裝小程序開發(fā)者工具、配置項目等過程。
本系統(tǒng)前端采用微信原生框架,同時選用熱門微信小程序框架ColorUI,其中封裝了較官方更為精美的組件,使用更便捷,并且極大美化了前端用戶界面。此外開發(fā)過程中還選用了微信小程序線路規(guī)劃插件,加強了本系統(tǒng)地理信息服務(wù)能力。
信息搜集時使用Python的Beautiful Soup 4.4.0(簡稱bs4)庫解析html標簽,re庫用于字符串匹配,Scrapy爬蟲框架進行數(shù)據(jù)獲取。數(shù)據(jù)庫方面選擇MySQL數(shù)據(jù)庫。本系統(tǒng)旨在無償為GIS專業(yè)學生提供學習交流平臺,故采用了流行的關(guān)系型開源數(shù)據(jù)庫MySQL。后端采用PHP對用戶請求進行響應(yīng),PHP語法上借鑒了C語言,對于有一定C語言學習基礎(chǔ)的開發(fā)人員比較友好,易于上手。在服務(wù)器環(huán)境配置上本系統(tǒng)選擇phpStudy集成環(huán)境,提高了開發(fā)效率。
3 系統(tǒng)總體結(jié)構(gòu)
3.1 數(shù)據(jù)庫設(shè)計
3.1.1 數(shù)據(jù)庫設(shè)計過程
在數(shù)據(jù)庫設(shè)計過程中可分為以下六個階段:第一,系統(tǒng)需求分析階段,是整個數(shù)據(jù)庫設(shè)計過程的基礎(chǔ);第二,概念結(jié)構(gòu)設(shè)計階段。根據(jù)系統(tǒng)需求可知需建院校、院校歷史、專業(yè)評估、用戶與分數(shù)線等多個實體,且前四個實體間均存在聯(lián)系。分析所得E-R圖如圖2所示;第三,邏輯結(jié)構(gòu)設(shè)計階段,將上一步所得概念模型轉(zhuǎn)換為某個DBMS所支持的數(shù)據(jù)模型,并對其進行優(yōu)化;第四,物理結(jié)構(gòu)設(shè)計階段。在該階段,實現(xiàn)了系統(tǒng)需要的數(shù)據(jù)庫與數(shù)據(jù)表的創(chuàng)建;第五,數(shù)據(jù)庫實施階段,該階段實現(xiàn)了數(shù)據(jù)的少量加載與系統(tǒng)內(nèi)測,修改了一些明顯的錯誤,如編寫PHP代碼調(diào)用數(shù)據(jù)庫時連庫或有關(guān)表的查詢語句錯誤,數(shù)據(jù)表的邏輯錯誤等;第六,數(shù)據(jù)庫運行和維護階段。
3.1.2數(shù)據(jù)獲取方式
本系統(tǒng)的數(shù)據(jù)獲取方式主要有人工查找與網(wǎng)絡(luò)爬蟲兩種方法。以下著重介紹爬蟲方法。
網(wǎng)絡(luò)爬蟲要遵守目標網(wǎng)站的Robots協(xié)議,在盡量不影響網(wǎng)站性能的情況下使用。本系統(tǒng)數(shù)據(jù)爬取時嚴格遵循目標網(wǎng)站的Robots協(xié)議,對于沒有定義協(xié)議的網(wǎng)站選擇夜間用戶瀏覽量較少的時段爬取信息,減少對目標網(wǎng)站服務(wù)器的影響。
應(yīng)用Scrapy爬蟲框架主要工作是編寫配置型代碼。具體步驟有,第一步,建立工程和Spider模板;第二步,編寫Spider處理鏈接爬取和頁面解析,定義parse0方法解析網(wǎng)頁結(jié)構(gòu)時,建議采用關(guān)鍵詞yield定義生成器。生成器每次產(chǎn)生一個值(yield語句),函數(shù)被凍結(jié),被喚醒后再產(chǎn)生一個值,它是一個不斷產(chǎn)生值的函數(shù),相比循環(huán)語句更節(jié)省存儲空間,使響應(yīng)更迅速。另外,為方便使用,添加from bs4 import BeautifuISoup代碼引入BeautifuISoup類導人到當前命名空間,此后不需要再帶包名可直接調(diào)用方法名。導入bs4后,主要使用find_all0與select0方法解析HTML頁面的內(nèi)容[2];第三步,編寫Pipeline處理信息存儲,配置settings. py文件ITEM_PIPELINES選項。添加importpymysql代碼導入PyMySQL驅(qū)動,便于將爬取的信息直接插入MySQL數(shù)據(jù)庫中,加快信息錄入的效率;第四步,配置優(yōu)化,在settings.py文件中可以配置并發(fā)連接選項以提高爬取速度,如配置。由于命令行(不是圖形界面)更容易自動化,適合腳本控制。一般使用命令行創(chuàng)建與執(zhí)行Scrapy。常用爬蟲命令有scrapy startproject [dir]創(chuàng)建工程,scrapy genspider [op-tions] 創(chuàng)建爬蟲,scrapy crawl執(zhí)行爬蟲。
3.2 系統(tǒng)功能結(jié)構(gòu)分析
3.2.1 首頁介紹與用戶登錄
首頁主要有輪播圖,功能區(qū)菜單欄,本科生院校生活倒計時,用戶個人信息展示四部分,如圖3所示。在用戶第一次訪問本系統(tǒng)時,系統(tǒng)會在調(diào)用wx.login0獲取臨時登錄憑證code,并回傳到自身的服務(wù)器;然后調(diào)用auth.code2Session接口,向微信接口服務(wù)換取用戶唯一標識OpenID和會話密鑰session_key,并存入自身服務(wù)器;用戶再次訪問本系統(tǒng)時,系統(tǒng)得到用戶狀態(tài),只需要在自身服務(wù)器數(shù)據(jù)庫中根據(jù)用戶信息進行相關(guān)操作即可。需要注意,官方提示會話密鑰session_key是對用戶數(shù)據(jù)進行加密簽名的密鑰。為了應(yīng)用自身的數(shù)據(jù)安全,防止數(shù)據(jù)被篡改,系統(tǒng)自身服務(wù)器不應(yīng)該把會話密鑰下發(fā)到小程序,也不應(yīng)該對外提供這個密鑰。另外,session_key失效時,可以通過重新執(zhí)行登錄流程獲取有效的session_key。使用接口wx.checkSession可以校驗session_key是否有效,從而避免小程序反復(fù)執(zhí)行登錄流程。
3.2.2 多種類型信息查詢服務(wù)
涉及信息查詢功能的頁面有學習貼士、院校推薦、院校歷史與專業(yè)評估。學習貼士包含了GIS專業(yè)導學內(nèi)容、基礎(chǔ)專業(yè)詞匯辨析、GIS專業(yè)考研分階段建議等針對不同學習層次的GISer的小建議;院校推薦主要服務(wù)GIS專業(yè)本科生,通過省份,是否省會城市,是否985/211高校過濾院校信息,幫助學生初步判斷考研目標院校,并查看目標院校相關(guān)考研信息;院校歷史提供用戶主動查詢的功能,可以根據(jù)考研一區(qū)二區(qū)縮小查詢院校所在省份范圍,然后再輸入框輸入院校信息時會觸發(fā)后端PHP接口,自動根據(jù)用戶輸入關(guān)鍵詞做字符串匹配,給出用戶可能搜索的目標院校,進一步縮小查詢范圍,為用戶提供更優(yōu)質(zhì)服務(wù),同時保證查詢結(jié)果的準確性;專業(yè)評估基于第四次學科評估官方公布數(shù)據(jù),提供了測繪科學與技術(shù)、計算機技術(shù)、軟件工程、地理學與地質(zhì)資源共五大類與GIS從業(yè)相關(guān)的一級學科的院校排名;GIS專區(qū)旨在提供貼吧形式的GISer學習與交流平臺,系統(tǒng)定時發(fā)布較為熱門的行業(yè)資訊,供用戶參考與討論,此外提供文件上傳下載功能,方便信息共享。關(guān)于資源文件下載,微信官方提供多種API,如wx. saveImageToPhotosAlbum0、wx.saveVideoToPhotosAlbum0,wx. saveFile0方法。資源按GIS行業(yè)會議專家講座PPT圖片與視頻、高校GIS專業(yè)課公開試題文稿、GIS行業(yè)權(quán)威企業(yè)與機構(gòu)的網(wǎng)址等信息供用戶選擇性下載,系統(tǒng)默認資源文件的展示按專題發(fā)布時間倒序排列。
3.2.3 院校位置查詢服務(wù)
在騰訊官方完成key的設(shè)定,得以引用線路規(guī)劃相關(guān)功能,包括路線規(guī)劃,地點查詢等。在微信小程序中,通過對json頁面的改寫,配飾相應(yīng)的環(huán)境,調(diào)用相關(guān)API,可視化通過小程序自帶的map組件得到現(xiàn)實。在實現(xiàn)地圖的顯示之后需要實現(xiàn)用戶的操作。使用選擇器組件實現(xiàn)用戶自定義操作。分別選擇院校所在的省,市以確定目標位置,通過讀取本地數(shù)據(jù)庫中存儲的X、Y坐標來高亮顯示目標點。頁面中有顯示路線按鈕,點擊可激活該按鈕綁定的事件,即顯示在城市內(nèi)部到達目標院校的公交或地鐵線路,系統(tǒng)默認初始位置為該市火車站,之后通formSubmitO函數(shù)遠程調(diào)用計算接口,得以進行坐標的解壓(返回的點串坐標,通過前向差分進行壓縮),最后,設(shè)置polyline屬性,將路線顯示出來,將解壓坐標第一個數(shù)據(jù)作為起點,在地圖上顯示。
3.3 系統(tǒng)與數(shù)據(jù)庫的連接
PHP即“超文本預(yù)處理器”,是一種通用開源腳本語言。PHP是在服務(wù)器端執(zhí)行的腳本語言,與C語言類似,是常用的網(wǎng)站編程語言。PHP獨特的語法混合了C、Java、Perl以及PHP自創(chuàng)的語法。利于學習,使用廣泛,主要適用于Web開發(fā)領(lǐng)域,滿足本系統(tǒng)開發(fā)需求。
系統(tǒng)與數(shù)據(jù)庫的連接部分使用了PHP的數(shù)據(jù)訪問抽象對象PDO來連接后臺數(shù)據(jù)庫。PHP連接數(shù)據(jù)庫主要有兩種方式:MYsoLI與PDO,MYsoLI擴展模塊僅支持連接MySQL數(shù)據(jù)庫,而PDO可支持十二種數(shù)據(jù)庫的連接,有利于后期小程序的擴展與完善。通過使用PHP連接數(shù)據(jù)庫實現(xiàn)對數(shù)據(jù)庫中不同數(shù)據(jù)表的增、刪、查、改等數(shù)據(jù)操縱功能,為前端頁面的各種響應(yīng)提供支持。PHP與MYsoL都是較成熟的應(yīng)用程序,因此.在安全性、可靠性和便捷性等方面都是毋庸置疑的。
4 結(jié)束語
微信小程序主要用于開發(fā)界面簡潔,功能較單一,易操作的系統(tǒng),滿足本系統(tǒng)中各類信息查詢服務(wù)的要求?;谖⑿牌脚_小程序的開發(fā)加快了系統(tǒng)開發(fā)的效率和效果,開發(fā)者無須顧慮操作系統(tǒng)差異帶來的限制。同時在用戶體驗上,用戶可以掃碼即用,方便快捷地分享小程序,從而快速擴大本系統(tǒng)的使用人群范圍。由于系統(tǒng)定位受眾范圍集中于GISer群體,尤其是GIS專業(yè)本科生群體,故而系統(tǒng)展示的主要是涉及GIS專業(yè)相關(guān)內(nèi)容的信息,特別為GIS專業(yè)志愿考研的學生提供的快捷的查詢功能。針對現(xiàn)階段各高校考研信息不對等,部分信息不公開,考研成績分析等信息不完善的現(xiàn)象[3],本系統(tǒng)側(cè)重了考研信息的公開與共享,致力于服務(wù)更廣大的優(yōu)質(zhì)GISer人才。此外,系統(tǒng)內(nèi)的GIS專區(qū)是另一大特色,采用貼吧形式留給用戶學習交流的空間,使GIS學習者們可以更好地學以致用、用以促學、學用相長,培養(yǎng)自己的學習樂趣,了解行業(yè)前沿動態(tài)。
本系統(tǒng)選擇了35位用戶進行內(nèi)部測試,系統(tǒng)尚無功能性問題,90%的用戶對使用效果表示滿意,肯定了系統(tǒng)的價值,并表示有意愿參與后期系統(tǒng)擴展功能的設(shè)計,其他用戶表示系統(tǒng)功能較單一,還有很大升級空間。
參考文獻:
[1] Chen J,Li J,He J,et al.DEVELOPMENT OF GEOGRAPH-IC INFORMATlON SYSTEMS (GIS) IN CHINA: AN OVER- VIEW[J]. Photogrammetric Engineering and Remote Sensing,2002,68(4):325-332.
[2]沈承放,莫達隆.beautifulsoup庫在網(wǎng)絡(luò)爬蟲中的使用技巧及應(yīng)用[J].電腦知識與技術(shù),2019,15(28):13-16.
[3]劉利利,互聯(lián)網(wǎng)環(huán)境下考研策略的選擇[J].才智,2015(32):141.
【通聯(lián)編輯:謝媛媛】
收稿日期:2019 -12 -15
基金項目:長江大學大學生創(chuàng)新創(chuàng)業(yè)訓練計劃項目(項目編號:2018263)
作者簡介:任安晶(1999-),女,河南安陽人,長江大學地球科學學院本科;方慧,女,長江大學地理信息科學專業(yè),本科在讀;王建,男,長江大學地理信息科學專業(yè),本科在讀;崔偉帥,男,長江大學地理信息科學專業(yè),本科在讀;謝濟陽.男,長江大學地理信息科學專業(yè),本科在讀。