任安晶 方慧 王建 崔維帥 謝濟陽



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