亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

以GeoJSON格式半結(jié)構(gòu)化方式存儲(chǔ)地理數(shù)據(jù)的MongoDB集群的地理數(shù)據(jù)讀寫方法

文檔序號:6550189閱讀:618來源:國知局
以GeoJSON格式半結(jié)構(gòu)化方式存儲(chǔ)地理數(shù)據(jù)的MongoDB集群的地理數(shù)據(jù)讀寫方法
【專利摘要】本發(fā)明針對MongoDB集群設(shè)計(jì)了大規(guī)模地理數(shù)據(jù)存儲(chǔ)方案,在MongoDB集群中以GeoJSON格式半結(jié)構(gòu)化方式組織地理數(shù)據(jù),使分布式高速M(fèi)ongoDB集群高效存儲(chǔ)大規(guī)模地理數(shù)據(jù)成為可能。針對該地理數(shù)據(jù)存儲(chǔ)方案,本發(fā)明提出了地理數(shù)據(jù)的讀寫方法以及可實(shí)現(xiàn)該地理數(shù)據(jù)讀寫方法的驅(qū)動(dòng)程序,以O(shè)GR類庫為地理數(shù)據(jù)讀寫驅(qū)動(dòng)的設(shè)計(jì)架構(gòu),以GeoJSON格式半結(jié)構(gòu)化的讀寫MongoDB集群地理數(shù)據(jù)源。本發(fā)明采用OGR函數(shù)庫,在地理數(shù)據(jù)與MongoDB集群之間通過內(nèi)存中構(gòu)建的OGR對象建立橋梁,使針對MongoDB集群的地理數(shù)據(jù)高效讀寫成為可能,使得高性能地理分析算法可以運(yùn)行在MongoDB數(shù)據(jù)庫集群之上。
【專利說明】以GeoJSON格式半結(jié)構(gòu)化方式存儲(chǔ)地理數(shù)據(jù)的MongoDB集群的地理數(shù)據(jù)讀寫方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及MongoDB集群中地理數(shù)據(jù)的存儲(chǔ)方式,特別涉及以GeoJSON格式半結(jié)構(gòu)化方式存儲(chǔ)地理數(shù)據(jù)的MongoDB集群的地理數(shù)據(jù)讀寫方法。
【背景技術(shù)】
[0002]隨著地理信息技術(shù)的不斷發(fā)展,如高分辨率空間傳感器、移動(dòng)定位技術(shù)以及雷達(dá)激光遙測等技術(shù)的大范圍普及與應(yīng)用,尤其是全球?qū)Φ赜^測系統(tǒng)(GlobalEarth Observation System of Systems, GEOSS)、國家信息高速公路(NationalInformation Infrastructure, Nil)、國家地理數(shù)據(jù)基礎(chǔ)設(shè)施(National Spatial DataInfrastructure, NSDI)等重大計(jì)劃的實(shí)施,人類對地球不同層面、不同現(xiàn)象的綜合觀測能力達(dá)到了前所未有的水平。這些進(jìn)步一方面使得海量地理信息得以在更廣闊的領(lǐng)域不斷獲取和更新,帶來了極其豐富翔實(shí)的地物信息,但同時(shí)也衍生了海量地理數(shù)據(jù)存儲(chǔ)與管理問題。
[0003]地理數(shù)據(jù)庫的存儲(chǔ)需求已經(jīng)從目前的GB級和TB級達(dá)到了 PB級,海量地理數(shù)據(jù)已無法沿用傳統(tǒng)集中存儲(chǔ)管理方式(蔡磊等,2009 ;朱慶等,2006)。如何對海量地理數(shù)據(jù)進(jìn)行高效的存儲(chǔ)、組織、管理與處理,使得海量空間信息能高效的為各行各業(yè)所用,成為一個(gè)迫切需要解決的問題。與此同時(shí),另一方面,信息技術(shù)特別是信息通訊技術(shù)的迅速發(fā)展,使得互聯(lián)網(wǎng)、WEB2.0、社交網(wǎng)絡(luò)、物聯(lián)網(wǎng)、移動(dòng)互聯(lián)網(wǎng)、云計(jì)算等相繼進(jìn)入人們的日常工作和生活中,尤其是近年來移動(dòng)互聯(lián)網(wǎng)、移動(dòng)定位技術(shù)、地圖服務(wù)以及基于位置的服務(wù)(LocationBased Services, LBS)等新興業(yè)務(wù)的迅猛崛起,為互聯(lián)網(wǎng)產(chǎn)業(yè)注入了新的維度——位置信肩、O
[0004]全球數(shù)據(jù)無論在信息量還是在多樣性方面都呈現(xiàn)出指數(shù)式爆炸增長。根據(jù)國際數(shù)據(jù)公司IDC發(fā)布的研究報(bào)告,2011年全球創(chuàng)建和復(fù)制的數(shù)據(jù)總量為1.8ZB (約1.8萬億GB),預(yù)計(jì)全球數(shù)據(jù)量大約每兩年翻一番,到2020年全球?qū)⑦_(dá)到35ZB的數(shù)據(jù)信息量(IDC,2011)。如今,人在每分每秒產(chǎn)生的數(shù)據(jù)(包括位置、狀態(tài),見聞、言論等等)都能夠被數(shù)字化并進(jìn)入互聯(lián)網(wǎng),各類傳感器可以應(yīng)用到各個(gè)領(lǐng)域收集我們所需的數(shù)據(jù),甚至能植入人體。新的互聯(lián)網(wǎng)址協(xié)議IPv6可以標(biāo)識如家用電器、遠(yuǎn)程照相機(jī)、汽車、傳感器等,甚至可以細(xì)微到大海里的一顆沙子。數(shù)據(jù)庫巨人Jim Gray預(yù)測,到2047年現(xiàn)實(shí)世界人、事、物的所有信息都將上網(wǎng)(Gordon Bell, Jim Gray, 1999)。前所未有的巨量數(shù)據(jù)信息正在朝著數(shù)字地球-智慧地球的方向迅速聚集,人類步入大數(shù)據(jù)時(shí)代。
[0005]當(dāng)前地理數(shù)據(jù)主要依賴關(guān)系型數(shù)據(jù)庫進(jìn)行存儲(chǔ)與管理,但是關(guān)系型數(shù)據(jù)庫在大數(shù)據(jù)時(shí)代背景下面臨以下三個(gè)方面的突出問題:
[0006](I)性能問題關(guān)系型數(shù)據(jù)庫建立在關(guān)系模型的基礎(chǔ)上,多表的連接查詢及關(guān)系型數(shù)據(jù)庫嚴(yán)格的事務(wù)要求限制了數(shù)據(jù)讀寫的速度,特別是在高并發(fā)的條件下,事務(wù)的ACID屬性-原子性(Atomicity)、一致性(Consistency)、隔離性(Isolation)和持久性(Durability),成為影響讀寫性能的瓶頸。
[0007](2)易擴(kuò)展性問題在云計(jì)算架構(gòu)下,關(guān)系型數(shù)據(jù)庫很難進(jìn)行橫向擴(kuò)展。當(dāng)一個(gè)應(yīng)用系統(tǒng)的數(shù)據(jù)量和訪問量與日俱增時(shí),關(guān)系型數(shù)據(jù)庫系統(tǒng)很難通過簡單的添加更多硬件和服務(wù)節(jié)點(diǎn)來擴(kuò)展性能,并同時(shí)實(shí)現(xiàn)系統(tǒng)負(fù)載均衡。
[0008](3)數(shù)據(jù)庫模式的問題關(guān)系型數(shù)據(jù)庫的關(guān)系模式有嚴(yán)格的定義,如果業(yè)務(wù)發(fā)生變化,需要增加或減少某個(gè)屬性會(huì)給系統(tǒng)帶來較大的改動(dòng)。對于一些半結(jié)構(gòu)化的數(shù)據(jù)而言,如果使用關(guān)系模式進(jìn)行數(shù)據(jù)建模,表中會(huì)有很多元組的屬性列是空值。這不僅造成存儲(chǔ)空間的浪費(fèi),而且影響系統(tǒng)性能。
[0009]針對上述問題,近年來出現(xiàn)了一些新的數(shù)據(jù)管理系統(tǒng),它們只提供簡單的讀寫操作,具有很好的水平擴(kuò)展能力,可以分布式的部署在多個(gè)服務(wù)器上。這些系統(tǒng)的出現(xiàn),很好地解決了現(xiàn)階段大數(shù)據(jù)管理中出現(xiàn)的問題,打破了關(guān)系型數(shù)據(jù)庫在云計(jì)算環(huán)境下的性能瓶頸。由于它們不是用關(guān)系模型作為其主要的數(shù)據(jù)模型,并且不提供SQL接口,而被統(tǒng)稱為“NoSQL”。NoSQL(Not Only SQL)也被稱為非關(guān)系型數(shù)據(jù)庫,是一系列與關(guān)系型數(shù)據(jù)庫典型模型有較大差異的數(shù)據(jù)管理系統(tǒng)的統(tǒng)稱,其中最顯著的差異在于它不使用SQL作為基本的查詢語言。NoSQL數(shù)據(jù)庫沒有特定的表結(jié)構(gòu),通常不支持連接操作,不支持完整的ACID屬性,并且通常具有強(qiáng)大的水平擴(kuò)展性。
[0010]其中,MongoDB是最受歡迎的開源NoSQL數(shù)據(jù)庫之一,由IOgen公司在2009年2月推出第一版,因其高效的性能和豐富的使用功能在生產(chǎn)中有非常廣泛的應(yīng)用。MongoDB的設(shè)計(jì)定位是在具有key/value存儲(chǔ)方式的高性能和高度擴(kuò)展性的同時(shí),具備傳統(tǒng)的關(guān)系數(shù)據(jù)庫管理系統(tǒng)的豐富功能,集兩者的優(yōu)勢于一身。MongoDB使用數(shù)據(jù)結(jié)構(gòu)松散的JSON格式面向文檔存儲(chǔ)數(shù)據(jù),使用自動(dòng)分片(Auto-Sharding)實(shí)現(xiàn)海量數(shù)據(jù)存儲(chǔ),支持全類型索引,使用的查詢語言語法類似面向?qū)ο蟛樵冋Z言,可以實(shí)現(xiàn)類似關(guān)系數(shù)據(jù)庫單表查詢的絕大部分功能(豐富的查詢功能是其相較其他NoSQL數(shù)據(jù)庫的突出優(yōu)點(diǎn)),支持主/從(Master/Slave)和復(fù)制集(Replica Set)兩種數(shù)據(jù)復(fù)制機(jī)制。
[0011]但是將NoSQL數(shù)據(jù)應(yīng)用于地理數(shù)據(jù)存儲(chǔ)的研究與技術(shù)很少見,地理數(shù)據(jù)缺少向NoSQL數(shù)據(jù)庫輸入和輸出的讀寫技術(shù),從而嚴(yán)重限制了地理數(shù)據(jù)在大數(shù)據(jù)背景下應(yīng)用和實(shí)施。

【發(fā)明內(nèi)容】

[0012]本發(fā)明要解決的技術(shù)問題是:克服現(xiàn)有技術(shù)缺點(diǎn),提出一種以GeoJSON格式半結(jié)構(gòu)化方式存儲(chǔ)地理數(shù)據(jù)的MongoDB集群的地理數(shù)據(jù)讀寫方法。
[0013]本發(fā)明以GeoJSON格式半結(jié)構(gòu)化方式存儲(chǔ)地理數(shù)據(jù)的MongoDB集群,其特征在于:MongoDB集群中包含有若干與地理數(shù)據(jù)源(DataSource)對應(yīng)的空間數(shù)據(jù)庫(Database),每個(gè)空間數(shù)據(jù)庫包含有若干個(gè)與地理圖層(Layer) —一對應(yīng)的地理要素集合(Collection),每個(gè)地理要素集合中包含有一個(gè)空間元數(shù)據(jù)文檔、若干與地理要素(Feature) —一對應(yīng)的GeoJSON文檔,所述地理要素以GeoJSON文檔的形式進(jìn)行存儲(chǔ),所述空間元數(shù)據(jù)文檔存儲(chǔ)有與相應(yīng)地理圖層相關(guān)的空間元數(shù)據(jù)信息。
[0014]進(jìn)一步的,本發(fā)明MongoDB集群還具有如下改進(jìn):
[0015]1、所述空間元數(shù)據(jù)文檔以JSON文檔的形式存儲(chǔ)。[0016]2、所述空間元數(shù)據(jù)信息至少包括圖層空間參考、圖層外邊界、圖層內(nèi)地理要素個(gè)數(shù)、圖層名稱。
[0017]此外,本發(fā)明提供的以GeoJSON格式半結(jié)構(gòu)化方式存儲(chǔ)地理數(shù)據(jù)的MongoDB集群中地理數(shù)據(jù)的讀取方法,其特征在于步驟如下:
[0018]第I步、根據(jù)給定的連接參數(shù)建立與MongoDB集群的相應(yīng)空間數(shù)據(jù)庫(Database)對應(yīng)地理要素集合(Collection)的數(shù)據(jù)連接;
[0019]第2步、查找所述MongoDB集群對應(yīng)地理要素集合中的空間元數(shù)據(jù)文檔,獲取相應(yīng)的空間元數(shù)據(jù)信息;
[0020]第3步、在計(jì)算機(jī)內(nèi)存中構(gòu)建以下OGR地理對象:地理數(shù)據(jù)源對象、地理圖層對象、地理要素對象、空間參考對象,所述OGR地理對象是OGR類庫中對應(yīng)類的實(shí)例,所述地理數(shù)據(jù)源對象包含有與對應(yīng)地理要素集合數(shù)目相等的地理圖層對象,每個(gè)地理圖層對象包含有若干地理要素對象;從所述第2步中獲取的空間元數(shù)據(jù)信息中抽取空間參考信息賦值給空間參考對象,完成對空間參考對象的實(shí)例化;
[0021]第4步、根據(jù)查詢條件利用JSON解析函數(shù)庫對相應(yīng)空間數(shù)據(jù)庫(Database)對應(yīng)地理要素集合(Collection)中的GeoJSON文檔進(jìn)行結(jié)構(gòu)解析,逐個(gè)提取GeoJSON文檔中存儲(chǔ)的地理要素信息,賦值給地理要素對象,完成地理要素對象的實(shí)例化;
[0022]第5步、將所有實(shí)例化的地理要素對象更新至相應(yīng)的地理圖層對象中,再將地理圖層對象更新至地理數(shù)據(jù)源對象中,至此,完成將MongoDB集群中地理數(shù)據(jù)讀取至內(nèi)存。
[0023]本發(fā)明地理數(shù)據(jù)讀取方法,進(jìn)一步改進(jìn)在于:
[0024]1、第5步完成之后,MongoDB集群中的地理數(shù)據(jù)以O(shè)GR地理對象的形式存在,用于進(jìn)一步空間分析和數(shù)據(jù)處理;
[0025]2、所述OGR地理對象可用其他地理要素類庫中相應(yīng)類的實(shí)例進(jìn)行替換。
[0026]另外,本發(fā)明還提供了以GeoJSON格式半結(jié)構(gòu)化方式存儲(chǔ)地理數(shù)據(jù)的MongoDB集群的地理數(shù)據(jù)寫入方法,其特征在于,步驟如下:
[0027]第I步、使用OGR類庫讀取地理數(shù)據(jù)矢量文件,在內(nèi)存中實(shí)例化獲得以下地理對象:地理數(shù)據(jù)源對象、地理圖層對象、地理要素對象、空間參考對象,所述地理數(shù)據(jù)源對象包含有若干地理圖層對象,地理圖層對象包含若干地理要素對象,所述地理對象是OGR類庫中對應(yīng)類的實(shí)例;
[0028]第2步、在MongoDB集群中創(chuàng)建與地理數(shù)據(jù)源對象對應(yīng)的空間數(shù)據(jù)庫(Database),在所述空間數(shù)據(jù)庫內(nèi)創(chuàng)建與地理圖層對象對應(yīng)的地理要素集合(Collection),并將每個(gè)地理圖層對象的空間元數(shù)據(jù)信息分別以單獨(dú)JSON文檔的形式存入相應(yīng)的地理要素集合(Collection);
[0029]第3步、將地理要素對象逐一以單獨(dú)GeoJSON文檔的形式寫入空間數(shù)據(jù)庫的相應(yīng)地理要素集合中,至此,完成將地理數(shù)據(jù)寫入MongoDB集群。
[0030]為了實(shí)現(xiàn)上述讀寫方法,本發(fā)明在OGR類庫框架下研發(fā)了以GeoJSON格式半結(jié)構(gòu)化方式存儲(chǔ)地理數(shù)據(jù)的MongoDB集群的讀寫實(shí)現(xiàn)方法。其借助讀寫驅(qū)動(dòng)完成,首先需構(gòu)建讀寫驅(qū)動(dòng)的類庫。
[0031]構(gòu)建OGRDriver類的子類MongoDriver類,負(fù)責(zé)與MongoDB數(shù)據(jù)源的連接信息管理以及MongoDatasource類的創(chuàng)建與管理;構(gòu)建OGRDatasource子類MongoDatasource類,負(fù)責(zé)空間元數(shù)據(jù)的讀取以及MongoLayer對象管理;構(gòu)建MongoLayer類,繼承自O(shè)GRLayer類,負(fù)責(zé)地理要素對象的讀寫與管理;構(gòu)建MongoReader類處理GeoJSON文檔的解析工作。
[0032]從MongoDB集群中讀取地理數(shù)據(jù)時(shí),在內(nèi)存中構(gòu)建MongoDriver對象,根據(jù)給定的連接參數(shù)建立與MongoDB集群中空間數(shù)據(jù)庫對應(yīng)地理要素集合的數(shù)據(jù)連接,同時(shí)實(shí)例化MongoDatasource對象,并在對應(yīng)地理要素集合中查找空間元數(shù)據(jù)文檔,并從該空間元數(shù)據(jù)文檔中提取空間參考信息、圖層外邊界信息,實(shí)例化待讀取圖層的空間參考對象,以屬性的形式存儲(chǔ)在MongoDataSource對象中;創(chuàng)建MongoLayer對象和MongoReader對象,通過MongoReader對象利用JSON解析函數(shù)庫對待讀取的地理要素集合中的GeoJSON文檔進(jìn)行結(jié)構(gòu)解析,將每個(gè)GeoJSON文檔解析形成OGRFeature對象(OGR地理要素對象),將OGRFeature 對象加載至 MongoLayer 對象中,MongoLayer 對象加載至 MongoDatasource 對象中,完成將MongoDB集群中的地理數(shù)據(jù)讀取至內(nèi)存;
[0033]向MongoDB集群存儲(chǔ)地理數(shù)據(jù)時(shí),首先實(shí)例化MongoDriver對象,由MongoDriver對象建立與MongoDB集群的連接,在MongoDB中創(chuàng)建空間數(shù)據(jù)庫,以及空間數(shù)據(jù)庫內(nèi)的地理要素集合,并將每個(gè)圖層的空間元數(shù)據(jù)信息以獨(dú)立JSON文檔的形式存儲(chǔ)在對應(yīng)地理要素集合中;內(nèi)存中所有的MongoLayer對象將各自圖層中每個(gè)OGRFeature對象逐一以GeoJSON文檔的形式寫入對應(yīng)的地理要素集合中,完成將內(nèi)存中的地理數(shù)據(jù)寫入MongoDB集群。
[0034]所述MongoDriver 對象為 MongoDriver 類的實(shí)例,所述 MongoDatasource 對象為MongoDatasource 類的實(shí)例,MongoLayer 對象為 MongoLayer 類的實(shí)例,所述 MongoReader對象為MongoReader類的實(shí)例,所述OGRFeature實(shí)例為OGR類庫中Feature類的實(shí)例。
[0035]本發(fā)明針對MongoDB集群提出了一種大規(guī)模地理數(shù)據(jù)存儲(chǔ)方案,在MongoDB分布式數(shù)據(jù)庫集群中以GeoJSON格式半結(jié)構(gòu)化的方式組織地理數(shù)據(jù)。具體來說,將地理要素以GeoJSON文檔的形式存儲(chǔ)在MongoDB集群的地理要素集合中,把描述圖層信息的元數(shù)據(jù)文檔也存儲(chǔ)在與相應(yīng)地理要素集合中,從而在MongoDB集群中構(gòu)建起與通用地理數(shù)據(jù)組織方式對應(yīng)的層次關(guān)系,使得采用分布式高速M(fèi)ongoDB集群高效存儲(chǔ)大規(guī)模地理數(shù)據(jù)成為可倉泛。
[0036]針對該地理數(shù)據(jù)存儲(chǔ)方案,本發(fā)明提出了地理數(shù)據(jù)的讀寫方法以及可實(shí)現(xiàn)該地理數(shù)據(jù)讀寫方法的驅(qū)動(dòng)程序,以GDAL/0GR類庫為地理數(shù)據(jù)讀寫驅(qū)動(dòng)的設(shè)計(jì)架構(gòu),以GeoJSON格式半結(jié)構(gòu)化的讀寫MongoDB集群地理數(shù)據(jù)源。本發(fā)明采用OGR函數(shù)庫,在地理數(shù)據(jù)與MongoDB集群之間通過內(nèi)存中構(gòu)建的OGR對象建立橋梁,使針對MongoDB集群的地理數(shù)據(jù)高效讀寫成為可能,突破了傳統(tǒng)分布式數(shù)據(jù)庫對大規(guī)模地理數(shù)據(jù)存儲(chǔ)的約束,同時(shí)也擴(kuò)展了GDAL/0GR對MongoDB分布式地理數(shù)據(jù)庫的支持,提供了讀寫MongoDB分布式地理數(shù)據(jù)庫的有效方法,使得高性能地理分析算法可以運(yùn)行在MongoDB數(shù)據(jù)庫集群之上。
【專利附圖】

【附圖說明】
[0037]下面結(jié)合附圖對本發(fā)明作進(jìn)一步的說明。
[0038]圖1是MongoDB集群中地理數(shù)據(jù)半結(jié)構(gòu)化組織方式示意圖。
[0039]圖2是MongoDB地理數(shù)據(jù)庫半結(jié)構(gòu)化讀寫驅(qū)動(dòng)類庫設(shè)計(jì)示意圖?!揪唧w實(shí)施方式】
[0040]下面根據(jù)附圖詳細(xì)闡述本發(fā)明,使本發(fā)明的技術(shù)路線和操作步驟更加清晰。
[0041]如圖1所示,為本發(fā)明實(shí)施例MongoDB集群中地理數(shù)據(jù)半結(jié)構(gòu)化組織方式示意圖。本例中,MongoDB集群中包含2個(gè)與地理數(shù)據(jù)源(DataSource)對應(yīng)的空間數(shù)據(jù)庫(Database),每個(gè)空間數(shù)據(jù)庫包含有若干個(gè)與地理圖層(Layer) —一對應(yīng)的地理要素集合(Collection),每個(gè)地理要素集合中包含有一個(gè)空間元數(shù)據(jù)文檔、若干與地理要素(Feature)——對應(yīng)的GeoJSON文檔,地理要素以GeoJSON文檔的形式進(jìn)行存儲(chǔ),空間元數(shù)據(jù)文檔存儲(chǔ)有與相應(yīng)地理圖層相關(guān)的空間元數(shù)據(jù)信息(空間元數(shù)據(jù)信息至少包括圖層空間參考、圖層外邊界、圖層內(nèi)地理要素個(gè)數(shù)、圖層名稱)。
[0042]以圖1中名稱為AlaskaDB的空間數(shù)據(jù)庫為例,該空間數(shù)據(jù)庫中包括有3個(gè)名稱依次為railroads、Climate、regions的地理要素集合(每個(gè)地理要素集合都對應(yīng)一個(gè)圖層),以地理要素集合Climate為例,該地理要素集合中含有一個(gè)名為G_sys_Metadata的空間元數(shù)據(jù)文檔,以及若干個(gè)記載地理要素信息的GeoJSON文檔,該空間元數(shù)據(jù)文檔以JSON文檔的形式存儲(chǔ),空間元數(shù)據(jù)文檔中一般記載有圖層名稱、圖層空間參考、圖層外邊界、圖層內(nèi)地理要素個(gè)數(shù)、圖層創(chuàng)建時(shí)間等信息。
[0043]本實(shí)施例中,以半結(jié)構(gòu)化方式存儲(chǔ)地理數(shù)據(jù)的MongoDB集群中地理數(shù)據(jù)的讀取方法,步驟如下:
[0044]第I步、根據(jù)給定的連接參數(shù)建立與MongoDB集群的相應(yīng)空間數(shù)據(jù)庫(Database)對應(yīng)地理要素集合(Collection)的數(shù)據(jù)連接;
[0045]第2步、查找所述MongoDB集群對應(yīng)地理要素集合中的空間元數(shù)據(jù)文檔,獲取相應(yīng)的空間元數(shù)據(jù)信息;
[0046]第3步、在計(jì)算機(jī)內(nèi)存中構(gòu)建以下OGR地理對象:地理數(shù)據(jù)源對象、地理圖層對象、地理要素對象、空間參考對象,所述OGR地理對象是OGR類庫中對應(yīng)類的實(shí)例,所述地理數(shù)據(jù)源對象包含有與對應(yīng)地理要素集合數(shù)目相等的地理圖層對象,每個(gè)地理圖層對象包含有若干地理要素對象;從所述第2步中獲取的空間元數(shù)據(jù)信息中抽取空間參考信息賦值給空間參考對象,完成對空間參考對象的實(shí)例化;
[0047]第4步、根據(jù)查詢條件利用JSON解析函數(shù)庫對相應(yīng)空間數(shù)據(jù)庫(Database)對應(yīng)地理要素集合(Collection)中的GeoJSON文檔進(jìn)行結(jié)構(gòu)解析,逐個(gè)提取GeoJSON文檔中存儲(chǔ)的地理要素信息,賦值給地理要素對象,完成地理要素對象的實(shí)例化;
[0048]第5步、將所有實(shí)例化的地理要素對象更新至相應(yīng)的地理圖層對象中,再將地理圖層對象更新至地理數(shù)據(jù)源對象中,至此,完成將MongoDB集群中地理數(shù)據(jù)讀取至內(nèi)存。
[0049]本實(shí)施例中,以半結(jié)構(gòu)化方式存儲(chǔ)地理數(shù)據(jù)的MongoDB集群的地理數(shù)據(jù)寫入方法,步驟如下:
[0050]第I步、使用OGR類庫讀取地理數(shù)據(jù)矢量文件,在內(nèi)存中實(shí)例化獲得以下地理對象:地理數(shù)據(jù)源對象、地理圖層對象、地理要素對象、空間參考對象,所述地理數(shù)據(jù)源對象包含有若干地理圖層對象,地理圖層對象包含若干地理要素對象,所述地理對象是OGR類庫中對應(yīng)類的實(shí)例;
[0051]第2步、在MongoDB集群中創(chuàng)建與地理數(shù)據(jù)源對象對應(yīng)的空間數(shù)據(jù)庫(Database),在所述空間數(shù)據(jù)庫內(nèi)創(chuàng)建與地理圖層對象對應(yīng)的地理要素集合(Collection),并將每個(gè)地理圖層對象的空間元數(shù)據(jù)信息分別以單獨(dú)JSON文檔的形式存入相應(yīng)的地理要素集合(Collection);
[0052]第3步、將地理要素對象逐一以單獨(dú)GeoJSON文檔的形式寫入空間數(shù)據(jù)庫的相應(yīng)地理要素集合中,至此,完成將地理數(shù)據(jù)寫入MongoDB集群。
[0053]為了實(shí)現(xiàn)對本發(fā)明MongoDB集群中地理數(shù)據(jù)的讀寫,本發(fā)明設(shè)計(jì)了讀寫驅(qū)動(dòng)ogr2ogr,讀寫驅(qū)動(dòng)ogr2ogr的類庫設(shè)計(jì)圖見圖2。
[0054]該讀寫驅(qū)動(dòng)包括:
[0055]MongoDriver類,為OGRDriver類的子類,負(fù)責(zé)與MongoDB數(shù)據(jù)源的連接信息管理以及MongoDatasource類的創(chuàng)建與管理;
[0056]MongoDatasource類,為OGRDatasource類的子類,負(fù)責(zé)空間元數(shù)據(jù)的讀取以及MongoLayer對象管理;
[0057]MongoLayer類,繼承自O(shè)GRLayer類,負(fù)責(zé)地理要素對象的讀寫與管理;
[0058]MongoReader類,負(fù)責(zé)處理GeoJSON文檔的解析工作。
[0059]下面通過讀寫驅(qū)動(dòng)ogrfogr的讀寫操作來對本發(fā)明做進(jìn)一步的說明。
[0060]本實(shí)施例先將ESRI Shapefile文件數(shù)據(jù)通過ogr2ogr以半結(jié)構(gòu)化的方式導(dǎo)入MongoDB中,用以說明MongoDB地理數(shù)據(jù)庫半結(jié)構(gòu)化讀寫驅(qū)動(dòng)的寫入能力;然后再以ogr2ogr程序?qū)ongoDB中的地理數(shù)據(jù)導(dǎo)出到ESRI Shapefile格式文件中,用以說明MongoDB地理數(shù)據(jù)庫半結(jié)構(gòu)化讀寫驅(qū)動(dòng)的讀取地理數(shù)據(jù)的能力。
[0061]本實(shí)施例測試數(shù)據(jù)采用QGIS開源項(xiàng)目提供的Alaska開放數(shù)據(jù)(下載地址:http://download, osge0.0rg/qgis/data/qgis_sample_data.zip)中的氣象站點(diǎn)數(shù)據(jù)(Climate, shp)。該數(shù)據(jù)一共包含了 14個(gè)氣象站點(diǎn),記錄了每個(gè)氣象站點(diǎn)名稱、I月平均氣溫、7月平均氣溫和年平均氣溫等信息,采用了阿爾伯斯等面積投影(AlberS_EqUal_Area),詳細(xì)信息參加表1。測試過程在Microsoft Windows7x86_64位操作系統(tǒng)下進(jìn)行,MongoDB服務(wù)器取默認(rèn)端口(27017),測試數(shù)據(jù)climate, shp處于GPATH目錄下。
[0062]表1美國阿拉斯加氣象站點(diǎn)數(shù)據(jù)(ESRI Shapefile格式)
[0063]
【權(quán)利要求】
1.以GeoJSON格式半結(jié)構(gòu)化方式存儲(chǔ)地理數(shù)據(jù)的MongoDB集群,其特征在于=MongoDB集群中包含有若干與地理數(shù)據(jù)源對應(yīng)的空間數(shù)據(jù)庫,每個(gè)空間數(shù)據(jù)庫包含有若干個(gè)與地理圖層一一對應(yīng)的地理要素集合,每個(gè)地理要素集合中包含有一個(gè)空間元數(shù)據(jù)文檔、若干與地理要素一一對應(yīng)的GeoJSON文檔,所述地理要素以GeoJSON文檔的形式進(jìn)行存儲(chǔ),所述空間元數(shù)據(jù)文檔存儲(chǔ)有與相應(yīng)地理圖層相關(guān)的空間元數(shù)據(jù)信息。
2.根據(jù)權(quán)利要求1所述的以GeoJSON格式半結(jié)構(gòu)化方式存儲(chǔ)地理數(shù)據(jù)的MongoDB集群,其特征在于:所述空間元數(shù)據(jù)文檔以JSON文檔的形式存儲(chǔ)。
3.根據(jù)權(quán)利要求1所述的以GeoJSON格式半結(jié)構(gòu)化方式存儲(chǔ)地理數(shù)據(jù)的MongoDB集群,其特征在于:所述空間元數(shù)據(jù)信息至少包括圖層空間參考、圖層外邊界、圖層內(nèi)地理要素個(gè)數(shù)、圖層名稱。
4.權(quán)利要求1所述以GeoJSON格式半結(jié)構(gòu)化方式存儲(chǔ)地理數(shù)據(jù)的MongoDB集群中地理數(shù)據(jù)的讀取方法,其特征在于步驟如下: 第I步、根據(jù)給定的連接參數(shù)建立與MongoDB集群的相應(yīng)空間數(shù)據(jù)庫對應(yīng)地理要素集合的數(shù)據(jù)連接; 第2步、查找所述MongoDB集群對應(yīng)地理要素集合中的空間元數(shù)據(jù)文檔,獲取相應(yīng)的空間元數(shù)據(jù)信息; 第3步、在計(jì)算機(jī)內(nèi)存中構(gòu)建以下OGR地理對象:地理數(shù)據(jù)源對象、地理圖層對象、地理要素對象、空間參考對象,所述OGR地理對象是OGR類庫中對應(yīng)類的實(shí)例,所述地理數(shù)據(jù)源對象包含有與對應(yīng)地理要素集合數(shù)目相等的地理圖層對象,每個(gè)地理圖層對象包含有若干地理要素對象;從所述第2步中獲取的空間元數(shù)據(jù)信息中抽取空間參考信息賦值給空間參考對象,完成對空間參考對象的實(shí)例化; 第4步、根據(jù)查詢條件利用JSON解析函數(shù)庫對相應(yīng)空間數(shù)據(jù)庫對應(yīng)地理要素集合中的GeoJSON文檔進(jìn)行結(jié)構(gòu)解析,逐個(gè)提取GeoJSON文檔中存儲(chǔ)的地理要素信息,賦值給地理要素對象,完成地理要素對象的實(shí)例化; 第5步、將所有實(shí)例化的地理要素對象更新至相應(yīng)的地理圖層對象中,再將地理圖層對象更新至地理數(shù)據(jù)源對象中,至此,完成將MongoDB集群中地理數(shù)據(jù)讀取至內(nèi)存。
5.根據(jù)權(quán)利要求4所述的地理數(shù)據(jù)的讀取方法,其特征在于:第5步完成之后,MongoDB集群中的地理數(shù)據(jù)以O(shè)GR地理對象的形式存在,用于進(jìn)一步空間分析和數(shù)據(jù)處理。
6.根據(jù)權(quán)利要求4或5所述的地理數(shù)據(jù)的讀取方法,其特征在于:所述OGR地理對象用其他地理要素類庫中相應(yīng)類的實(shí)例進(jìn)行替換。
7.權(quán)利要求1所述以半結(jié)構(gòu)化方式存儲(chǔ)地理數(shù)據(jù)的MongoDB集群的地理數(shù)據(jù)寫入方法,其特征在于,步驟如下: 第I步、使用OGR類庫讀取地理數(shù)據(jù)矢量文件,在內(nèi)存中實(shí)例化獲得以下地理對象:地理數(shù)據(jù)源對象、地理圖層對象、地理要素對象、空間參考對象,所述地理數(shù)據(jù)源對象包含有若干地理圖層對象,地理圖層對象包含若干地理要素對象,所述地理對象是OGR類庫中對應(yīng)類的實(shí)例; 第2步、在MongoDB集群中創(chuàng)建與地理數(shù)據(jù)源對象對應(yīng)的空間數(shù)據(jù)庫,在所述空間數(shù)據(jù)庫內(nèi)創(chuàng)建與地理圖層對象對應(yīng)的地理要素集合,并將每個(gè)地理圖層對象的空間元數(shù)據(jù)信息分別以單獨(dú)JSON文檔的形式存入相應(yīng)的地理要素集合;第3步、將地理要素對象逐一以單獨(dú)GeoJSON文檔的形式寫入空間數(shù)據(jù)庫的相應(yīng)地理要素集合中,至此,完成將地理數(shù)據(jù)寫入MongoDB集群。
8.權(quán)利要求7所述的地理數(shù)據(jù)寫入方法,其特征在于:所述OGR地理對象用其他地理要素類庫中相應(yīng)類的實(shí)例進(jìn)行替換。
9.以GeoJSON格式半結(jié)構(gòu)化方式存儲(chǔ)地理數(shù)據(jù)的MongoDB集群的讀寫實(shí)現(xiàn)方法,其特征在于借助讀寫工具完成,該讀寫工具包含有: MongoDriver類,為OGRDriver類的子類,負(fù)責(zé)與MongoDB數(shù)據(jù)源的連接信息管理以及MongoDatasource類的創(chuàng)建與管理; MongoDatasource類,為OGRDatasource類的子類,負(fù)責(zé)空間元數(shù)據(jù)的讀取以及MongoLayer對象管理; MongoLayer類,繼承自O(shè)GRLayer類,負(fù)責(zé)地理要素對象的讀寫與管理; MongoReader類,負(fù)責(zé)處理GeoJSON文檔的解析工作; 從MongoDB集群中讀取地理數(shù)據(jù)時(shí),在內(nèi)存中構(gòu)建MongoDriver對象,根據(jù)給定的連接參數(shù)建立與Mon goDB集群中空間數(shù)據(jù)庫對應(yīng)地理要素集合的數(shù)據(jù)連接,同時(shí)實(shí)例化MongoDatasource對象,并在對應(yīng)地理要素集合中查找空間元數(shù)據(jù)文檔,并從該空間元數(shù)據(jù)文檔中提取空間參考信息、圖層外邊界信息,實(shí)例化待讀取圖層的空間參考對象,以屬性的形式存儲(chǔ)在MongoDataSource對象中;創(chuàng)建MongoLayer對象和MongoReader對象,通過MongoReader對象利用JSON解析函數(shù)庫對待讀取的地理要素集合中的GeoJSON文檔進(jìn)行結(jié)構(gòu)解析,將每個(gè)GeoJSON文檔解析形成OGRFeature對象,將OGRFeature對象加載至MongoLayer對象中,MongoLayer對象加載至MongoDatasource對象中,完成將MongoDB集群中的地理數(shù)據(jù)讀取至內(nèi)存; 向MongoDB集群存儲(chǔ)地理數(shù)據(jù)時(shí),首先實(shí)例化MongoDriver對象,由MongoDriver對象建立與MongoDB集群的連接,在MongoDB中創(chuàng)建空間數(shù)據(jù)庫,以及空間數(shù)據(jù)庫內(nèi)的地理要素集合,并將每個(gè)圖層的空間元數(shù)據(jù)信息以獨(dú)立JSON文檔的形式存儲(chǔ)在對應(yīng)地理要素集合中;內(nèi)存中所有的MongoLayer對象將各自圖層中每個(gè)OGRFeature對象逐一以GeoJSON文檔的形式寫入對應(yīng)的地理要素集合中,完成將內(nèi)存中的地理數(shù)據(jù)寫入MongoDB集群。
10.根據(jù)權(quán)利要求1所述的讀寫實(shí)現(xiàn)方法,其特征在于:所述MongoDriver對象為 MongoDriver 類的實(shí)例,所述 MongoDatasource 對象為 MongoDatasource 類的實(shí)例,MongoLayer對象為MongoLayer類的實(shí)例,所述MongoReader對象為MongoReader類的實(shí)例,所述OGRFeature實(shí)例為OGR類庫中Feature類的實(shí)例。
【文檔編號】G06F17/30GK104021210SQ201410276517
【公開日】2014年9月3日 申請日期:2014年6月20日 優(yōu)先權(quán)日:2014年6月20日
【發(fā)明者】李滿春, 張帥, 陳振杰, 徐經(jīng)緯, 秦逸 申請人:南京大學(xué)
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會(huì)獲得點(diǎn)贊!
1