牛艷霞,馬秉斌
青海省基礎(chǔ)地理信息中心,青海西寧 810000
基于Node.js和MongoDB實(shí)現(xiàn)地理國(guó)情樣本庫(kù)系統(tǒng)
牛艷霞,馬秉斌
青海省基礎(chǔ)地理信息中心,青海西寧 810000
本文主要論述了如何基于Node.js與MongoDB數(shù)據(jù)庫(kù)建立地理國(guó)情樣本庫(kù)系統(tǒng),完成對(duì)地理國(guó)情普查成果中樣本點(diǎn)數(shù)據(jù)的統(tǒng)一存儲(chǔ)、查詢和管理,并介紹了系統(tǒng)功能架構(gòu)及實(shí)現(xiàn)。
地理國(guó)情樣本庫(kù)系統(tǒng);Node.js;MongoDB
地理國(guó)情普查是從地理空間位置分布的角度出發(fā)來描述和研究我國(guó)國(guó)情國(guó)力信息的重要手段,是掌握自然資源、生態(tài)環(huán)境以及人類活動(dòng)基本情況的綜合性、基礎(chǔ)性工作。其目的是全面獲取各類地理國(guó)情信息,并進(jìn)行綜合統(tǒng)計(jì)分析,揭示經(jīng)濟(jì)社會(huì)發(fā)展和自然資源環(huán)境的空間分布及內(nèi)在關(guān)系,實(shí)現(xiàn)地理國(guó)情信息對(duì)政府、企業(yè)和公眾的服務(wù)[1]。
地理國(guó)情樣本數(shù)據(jù)包括遙感影像解譯樣本數(shù)據(jù)、地面照片、遙感影像實(shí)例等幾類數(shù)據(jù),這些成果數(shù)據(jù)一般以獨(dú)立文件形式存在,由于其數(shù)量巨大,且相互之間存在依賴對(duì)照關(guān)系,通過人工加文件系統(tǒng)的方式很難對(duì)其進(jìn)行有效管理,選擇建立一個(gè)地理國(guó)情樣本庫(kù)管理系統(tǒng)可以更好的管理和存儲(chǔ)此類數(shù)據(jù),便于后期工作。
1.1 Node.js
Node.js是一個(gè)基于ChromeV8引擎建立的服務(wù)器端JavaScript運(yùn)行環(huán)境,可以用來快速搭建具有高響應(yīng)速度和易于擴(kuò)展的網(wǎng)絡(luò)應(yīng)用。
Node.js具有異步I/O,事件驅(qū)動(dòng)、單線程等特性[2],其基于事件輪詢的異步響應(yīng)方式,使得Node.js在響應(yīng)文件資源讀取、數(shù)據(jù)庫(kù)查詢等請(qǐng)求時(shí),無需等待硬盤I/ O完成,在數(shù)據(jù)準(zhǔn)備好后會(huì)通過事件機(jī)制通知Node.js進(jìn)行響應(yīng),這種編程模型在處理WMTS服務(wù)的海量圖片小文件并發(fā)請(qǐng)求時(shí)可同時(shí)滿足高并發(fā)和高響應(yīng)的要求,因此,基于Node.js構(gòu)建的WMTS服務(wù)相比傳統(tǒng)GIS服務(wù)器軟件提供的WMTS服務(wù)具有先天上的優(yōu)勢(shì)。
1.2 MongoDB
MongoDB是目前非常流行的一種非關(guān)系型數(shù)據(jù)庫(kù)(NoSql),它具有強(qiáng)大、靈活、可擴(kuò)展的數(shù)據(jù)存儲(chǔ)方式,其功能非常豐富,甚至包括對(duì)MapReduce式聚合的支持,以及對(duì)地理空間索引的支持。MongoDB是面向文檔的數(shù)據(jù)庫(kù),基本思路是將原來“行”(row)的概念換成更加靈活的“文檔”(document)模型[3],這種方式可以將文檔或數(shù)組進(jìn)行內(nèi)嵌,用一條記錄就可以表示非常復(fù)雜的層次關(guān)系,非常切合面向?qū)ο蟮木幊棠P汀?/p>
MongoDB的GridFS機(jī)制可以使得MogoDB可以脫離獨(dú)立文件存儲(chǔ)架構(gòu)進(jìn)行大二進(jìn)制文件的存儲(chǔ),其利用復(fù)制或分片機(jī)制可以避免用于存儲(chǔ)用戶上傳內(nèi)容的文件系統(tǒng)出現(xiàn)故障,而且由于GridFS在存儲(chǔ)大量文件時(shí)不產(chǎn)生磁盤碎片,非常適合本系統(tǒng)中照片和樣本影像等海量小文件數(shù)據(jù)的存儲(chǔ)和管理。
地理國(guó)情樣本庫(kù)系統(tǒng)需完成地理國(guó)情樣本數(shù)據(jù)的定義、存儲(chǔ)和管理,以及感影像解譯樣本數(shù)據(jù)、地面照片、遙感影像實(shí)例等二進(jìn)制圖片文件在MongoDB數(shù)據(jù)庫(kù)中的入庫(kù)、出庫(kù)操作和管理,并完成用戶驗(yàn)證和授權(quán)等安全管理機(jī)制的機(jī)那里,其具體可劃分為樣本定義、樣本查詢、樣本管理、用戶管理四個(gè)功能模塊,其系統(tǒng)架構(gòu)如圖1所示。
圖1 系統(tǒng)架構(gòu)圖
3.1 樣本管理
樣本管理模塊主要用于完成地理國(guó)情要素中12個(gè)一級(jí)類、58個(gè)二級(jí)類、135個(gè)三級(jí)類的管理,其功能包括新增樣本分類、修改樣本分類和刪除樣本分類。在具體實(shí)現(xiàn)時(shí),為了保證三個(gè)級(jí)別分類的歸屬關(guān)系一致,設(shè)計(jì)為三級(jí)聯(lián)動(dòng)更新的模式,通過調(diào)用Node.js實(shí)現(xiàn)的rest服務(wù)接口來實(shí)現(xiàn)json格式數(shù)據(jù)的異步傳輸。
3.2 樣本定義
樣本定義模塊主要用于完成所有地理國(guó)情要素分類的地類名稱、定義描述、采集要求等屬性要素的管理、修改和更新,以及完成地類實(shí)景照片、樣本照片、解譯樣本等圖片和影像的上傳、更新和屬性管理。其具體實(shí)現(xiàn)為界面UI采用Bootstrap框架進(jìn)行搭建,前端交互采用jQuery框架和相關(guān)插件實(shí)現(xiàn)文件的異步上傳,服務(wù)端利用“jquery-file-upload-middleware”中間件實(shí)現(xiàn)文件的上傳管理。
3.3 樣本查詢
樣本查詢模塊主要用于完成地理國(guó)情普查工作中所有采集到的樣本點(diǎn)數(shù)據(jù)的查詢和展示,其查詢方式分為分類編碼查詢、影像分類查詢、影像分辨率查詢、照片拍攝時(shí)間查詢、影像獲取時(shí)間查詢幾種,并可以綜合幾種查詢方式以進(jìn)行組合查詢,查詢到的結(jié)果展示包括樣本點(diǎn)詳細(xì)信息描述,樣本照片和樣本影像。在具體實(shí)現(xiàn)時(shí)考慮到入庫(kù)效率問題,對(duì)已經(jīng)采集到的樣本數(shù)據(jù)通過編寫批處理工具的方式實(shí)現(xiàn)了集中入庫(kù),其最終實(shí)現(xiàn)效果如圖2所示。
地理國(guó)情普查樣本庫(kù)系統(tǒng)存儲(chǔ)和管理的具有連續(xù)時(shí)間特征且具有對(duì)照關(guān)系的地面照片和遙感影像數(shù)據(jù)可作為遙感影像解譯工作的依據(jù),可以為遙感影像解譯者建立對(duì)相關(guān)地域的正確認(rèn)識(shí)提供重要支持,并可在解譯結(jié)果的質(zhì)量控制方面發(fā)揮重要作用。同時(shí),地理國(guó)情普查樣本庫(kù)系統(tǒng)的建立以一種高效的方式完成了地理國(guó)情查成果中樣本點(diǎn)及相關(guān)數(shù)據(jù)的統(tǒng)一管理,有利于后續(xù)地理國(guó)情普查工作的開展。
圖2 地理國(guó)情普查樣本庫(kù)系統(tǒng)
[1]國(guó)家測(cè)繪地理信息局.地理國(guó)情普查試點(diǎn)方案,2012.
[2]樸靈.深入淺出Node.js[M].北京:人民郵電出版社,2013.
[3]程顯峰.MongoDB權(quán)威指南[M].北京:人民郵電出版社,2011.
[4]謝小惠.福建省地理國(guó)情普查試點(diǎn)成果建庫(kù)實(shí)踐測(cè)繪與空間地理信息.2014-06-25.
TP3
A
1674-6708(2015)137-0131-01