• 
    

    
    

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

      ?

      基于多層索引及緩存的空間數(shù)據(jù)管理系統(tǒng)

      2024-01-27 16:44:03彭成
      電腦知識(shí)與技術(shù) 2023年36期
      關(guān)鍵詞:空間數(shù)據(jù)格子隊(duì)列

      彭成

      摘要:為充分利用空間數(shù)據(jù)對(duì)象的位置信息,提升存儲(chǔ)結(jié)構(gòu)化程度及查詢效率,基于多層索引及緩存建立空間數(shù)據(jù)管理系統(tǒng)。首先基于不同粒度建立用于渲染和查詢的兩層索引框架,同時(shí)為索引及空間數(shù)據(jù)建立內(nèi)存緩沖隊(duì)列。在查詢過(guò)程中通過(guò)區(qū)域范圍及索引多級(jí)篩選空間數(shù)據(jù)對(duì)象,在空間數(shù)據(jù)變更時(shí)增量修改索引及數(shù)據(jù)記錄,在渲染時(shí)通過(guò)內(nèi)存緩沖隊(duì)列及渲染區(qū)域?qū)?yīng)索引讀取數(shù)據(jù)。結(jié)合實(shí)例,驗(yàn)證了索引及內(nèi)存緩沖的效果,為高效空間數(shù)據(jù)存儲(chǔ)及查詢提供了技術(shù)支持。

      關(guān)鍵詞:數(shù)據(jù)庫(kù);空間數(shù)據(jù);多層索引;內(nèi)存緩沖隊(duì)列;地理信息系統(tǒng)

      中圖分類號(hào): TP311 ? 文獻(xiàn)標(biāo)識(shí)碼:A

      文章編號(hào):1009-3044(2023)36-0059-03

      開放科學(xué)(資源服務(wù))標(biāo)識(shí)碼(OSID)

      0 引言

      地理信息系統(tǒng)的發(fā)展與應(yīng)用,導(dǎo)致空間數(shù)據(jù)不斷增長(zhǎng),海量空間數(shù)據(jù)的存儲(chǔ)和查詢模式變得十分重要,也是地理信息系統(tǒng)發(fā)展的瓶頸所在[1-2]。如何設(shè)計(jì)高效的空間數(shù)據(jù)存儲(chǔ)和查詢模式,提高數(shù)據(jù)導(dǎo)入、加載、渲染、查詢的速度,成為地理信息系統(tǒng)中首要解決的問題[3]。

      空間數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu)的發(fā)展經(jīng)歷了五個(gè)時(shí)代:文件系統(tǒng)存儲(chǔ)、混合數(shù)據(jù)存儲(chǔ)、關(guān)系數(shù)據(jù)庫(kù)存儲(chǔ)、面向?qū)ο髷?shù)據(jù)庫(kù)存儲(chǔ)、對(duì)象關(guān)系型存儲(chǔ)[4-5]。目前,在成熟的二維地理信息系統(tǒng)商業(yè)軟件方面,主要采用對(duì)象關(guān)系型,其擁有完善成熟的數(shù)據(jù)管理功能。現(xiàn)存在兩種方法,一是數(shù)據(jù)庫(kù)企業(yè)在其各自的數(shù)據(jù)庫(kù)產(chǎn)品中增加了支持空間數(shù)據(jù)類型的專用軟件(如Oracle的Spatial Cartridge)[6],二是地理信息系統(tǒng)軟件企業(yè)在傳統(tǒng)的關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)之上進(jìn)行功能和數(shù)據(jù)類型的擴(kuò)張,外加一個(gè)空間數(shù)據(jù)管理引擎,如ESRI的ArcSDE,MapInfo與Oracle公司共同開發(fā)的Oracle Spatial等[7]。而在這一時(shí)期成熟的系統(tǒng)有加州大學(xué)Berkeley分校研制的PostGIS[8]。

      對(duì)于現(xiàn)有的空間數(shù)據(jù)存儲(chǔ)及查詢,對(duì)空間數(shù)據(jù)對(duì)象的位置信息利用得不夠充分,存儲(chǔ)的結(jié)構(gòu)化程度不夠高,查詢的效率也有提升空間?,F(xiàn)有的空間數(shù)據(jù)存儲(chǔ)根據(jù)空間數(shù)據(jù)對(duì)象的位置建立索引,查詢時(shí)根據(jù)指定的查詢范圍對(duì)應(yīng)的區(qū)域進(jìn)行查詢,當(dāng)查詢范圍與區(qū)域范圍大小不在同級(jí)別時(shí)效率較低。對(duì)于經(jīng)常需要使用到的空間數(shù)據(jù)對(duì)象,也應(yīng)該進(jìn)行緩存以提升效率。同時(shí),在空間數(shù)據(jù)導(dǎo)入、加載等過(guò)程中,應(yīng)該充分利用計(jì)算機(jī)的性能進(jìn)行多線程、生產(chǎn)者-消費(fèi)者等模式來(lái)提升速度。

      因此,針對(duì)上述問題,需要一種功能更為完善,更好地利用空間數(shù)據(jù)對(duì)象位置信息,建立更加靈活索引的空間數(shù)據(jù)存儲(chǔ)及查詢方法。

      1 創(chuàng)建多層索引框架及內(nèi)存緩沖隊(duì)列

      1.1創(chuàng)建表及索引

      如圖1所示,首先選擇要導(dǎo)入的空間數(shù)據(jù)文件,可以選擇多種格式的文件,如shp、cgm、mapgis、雙狐文本文件等,本文選擇shp文件類型,文件為countries.shp,是多邊形類型的數(shù)據(jù)。選擇完文件后,系統(tǒng)會(huì)創(chuàng)建相應(yīng)的空間數(shù)據(jù)對(duì)象表、索引表、屬性表、參數(shù)配置表。屬性表默認(rèn)只有對(duì)象編號(hào)字段,若導(dǎo)入的文件配有相應(yīng)的屬性文件,則會(huì)根據(jù)屬性文件中的屬性信息增加相應(yīng)的字段;空間數(shù)據(jù)對(duì)象表包含對(duì)象編號(hào),類型,范圍及具體數(shù)據(jù);索引表包含格子編號(hào),格子類型,對(duì)象編號(hào),格子與對(duì)象的關(guān)系,對(duì)象的范圍;參數(shù)配置表包含渲染索引框架x和y兩個(gè)方向的切分?jǐn)?shù)量,查詢索引框架對(duì)渲染索引框架中一個(gè)格子在x和y方向進(jìn)一步切分的數(shù)量,內(nèi)存緩沖隊(duì)列中空間數(shù)據(jù)對(duì)象的數(shù)量限制及索引的數(shù)量限制,所有空間數(shù)據(jù)對(duì)象的總范圍。

      建表之后系統(tǒng)會(huì)給空間數(shù)據(jù)對(duì)象表的對(duì)象編號(hào)字段,索引表的格子編號(hào)、對(duì)象編號(hào)字段建立索引,以加快數(shù)據(jù)庫(kù)訪問速度。

      1.2 配置參數(shù)設(shè)置

      配置參數(shù)基本屬性包括導(dǎo)入的空間數(shù)據(jù)對(duì)象渲染時(shí)顯示的圖層名稱,是否可見,以及備注信息,配置參數(shù)的SDE屬性即加載過(guò)程中的屬性包括是否存入數(shù)據(jù)庫(kù),渲染索引框架x和y兩個(gè)方向的切分?jǐn)?shù)量,查詢索引框架對(duì)渲染索引框架中一個(gè)格子在x和y方向進(jìn)一步切分的數(shù)量,內(nèi)存緩沖隊(duì)列中空間數(shù)據(jù)對(duì)象的數(shù)量限制及索引的數(shù)量限制,是否使用多線程,是否在每導(dǎo)入一個(gè)空間數(shù)據(jù)對(duì)象時(shí)將其插入緩沖隊(duì)列,空間數(shù)據(jù)對(duì)象和屬性數(shù)據(jù)的提交間隔。

      如圖2所示,本文例子設(shè)置渲染索引框架劃分方式為10×10,查詢索引框架在渲染索引框架格子基礎(chǔ)上每個(gè)格子在x和y上進(jìn)一步切分2塊,內(nèi)存緩沖隊(duì)列中空間數(shù)據(jù)對(duì)象的數(shù)量限制為100,內(nèi)存緩沖隊(duì)列中索引數(shù)量的限制為1 000,每導(dǎo)入5 000個(gè)空間數(shù)據(jù)對(duì)象和屬性時(shí)進(jìn)行一次提交。

      1.3 創(chuàng)建索引框架

      索引框架共分為兩層,分別用于渲染和查詢。查詢索引框架是在渲染索引框架的每個(gè)格子基礎(chǔ)上,進(jìn)一步對(duì)格子進(jìn)行劃分。通常情況下,渲染涉及的區(qū)域較大,對(duì)精度要求低,采用粗粒度劃分,查詢涉及的區(qū)域較小,對(duì)精度要求高,采用細(xì)粒度劃分。本文例子渲染索引框架劃分粒度為10×10,查詢索引框架的劃分粒度為20×20。

      建立索引框架時(shí),先計(jì)算空間數(shù)據(jù)對(duì)象總體范圍外包矩形,將其按照x和y兩個(gè)方向進(jìn)行分塊,切分為多個(gè)格子。本文例子可以從導(dǎo)入的文件中直接獲取到其總體范圍的外包矩形,x的最小值和最大值分別為-190.0,190.0,y的最小值和最大值分別為-99.9, 93.6。將這片區(qū)域分別劃分為10×10份和20×20份,建立渲染索引框架和查詢索引框架。

      1.4 創(chuàng)建緩沖隊(duì)列

      內(nèi)存緩沖隊(duì)列包括索引及空間數(shù)據(jù)對(duì)象,通過(guò)將部分索引及空間數(shù)據(jù)對(duì)象存放在內(nèi)存中,減少渲染和查詢過(guò)程中的數(shù)據(jù)庫(kù)訪問操作。其中索引在內(nèi)存緩沖中以格子為單位進(jìn)行存儲(chǔ)。當(dāng)隊(duì)列已滿時(shí)將最早添加進(jìn)隊(duì)列的元素剔除。本文例子索引隊(duì)列的大小限制為1 000,空間數(shù)據(jù)對(duì)象隊(duì)列的大小限制為100。

      2 空間數(shù)據(jù)的導(dǎo)入與索引生成

      2.1 導(dǎo)入空間數(shù)據(jù)

      在建立完索引框架和內(nèi)存緩沖隊(duì)列后,導(dǎo)入空間數(shù)據(jù),具體的形狀和位置信息通過(guò)坐標(biāo)存儲(chǔ)和表示。本文例子空間數(shù)據(jù)對(duì)象的文件類型為多多邊形,通過(guò)頂點(diǎn)坐標(biāo)得到空間數(shù)據(jù)對(duì)象的形狀和范圍,用來(lái)判斷與給定的查詢和渲染范圍是否有相交的部分。

      2.2 生成索引

      對(duì)于每個(gè)導(dǎo)入的空間數(shù)據(jù)對(duì)象生成索引,根據(jù)空間數(shù)據(jù)對(duì)象的范圍,得到此范圍包含的渲染索引格子和查詢索引格子,再根據(jù)空間數(shù)據(jù)對(duì)象的形狀,判斷是否與格子范圍有交集,對(duì)有交集的生成索引。導(dǎo)入完畢后,每個(gè)格子對(duì)應(yīng)若干條索引,每條索引表示與此格子有相交部分的空間數(shù)據(jù)對(duì)象。

      2.3 存儲(chǔ)索引及空間數(shù)據(jù)

      在到達(dá)提交間隔時(shí),將生成的索引作為記錄存儲(chǔ)到數(shù)據(jù)庫(kù)的索引表中,存儲(chǔ)的信息包含索引類型、格子編號(hào)、對(duì)象編號(hào)、對(duì)象所占范圍、與索引格子的關(guān)系。這些索引用來(lái)快速獲取所給區(qū)域中包含的空間數(shù)據(jù)對(duì)象,提升顯示查詢速度。空間數(shù)據(jù)對(duì)象及其對(duì)應(yīng)的渲染索引和查詢索引會(huì)添加到內(nèi)存緩沖隊(duì)列中。同時(shí),將每個(gè)空間數(shù)據(jù)對(duì)象作為一條記錄存儲(chǔ)到數(shù)據(jù)庫(kù)的空間數(shù)據(jù)對(duì)象表中,存儲(chǔ)的信息包含對(duì)象編號(hào)、類型、范圍以及具體形狀數(shù)據(jù)。本文例子每導(dǎo)入5000個(gè)空間數(shù)據(jù)對(duì)象進(jìn)行一次提交。

      導(dǎo)入空間數(shù)據(jù)采用多線程來(lái)讀取和提交空間數(shù)據(jù)對(duì)象和索引,并采用生產(chǎn)者-消費(fèi)者模式,生成渲染索引和查詢索引作為生產(chǎn)者,提交作為消費(fèi)者同時(shí)進(jìn)行。

      對(duì)于存在關(guān)聯(lián)屬性文件的情況,如本文例子,存在countries.dbf文件,其存儲(chǔ)了每個(gè)空間數(shù)據(jù)對(duì)象的相關(guān)屬性,如人口密度、名稱,會(huì)讀取這個(gè)屬性文件并將信息添加到屬性表中。

      3 空間數(shù)據(jù)的渲染與查詢

      3.1空間數(shù)據(jù)渲染

      根據(jù)給定的渲染范圍,得到對(duì)應(yīng)的渲染格子,然后逐一渲染這些格子所含的空間數(shù)據(jù)對(duì)象。對(duì)于一個(gè)渲染格子,如果對(duì)應(yīng)的渲染索引記錄存在于內(nèi)存緩沖隊(duì)列中,則直接獲取索引對(duì)應(yīng)的空間數(shù)據(jù)對(duì)象編號(hào),否則從數(shù)據(jù)庫(kù)索引表中獲取編號(hào),然后根據(jù)編號(hào)獲取空間數(shù)據(jù)對(duì)象并渲染。對(duì)于存在于內(nèi)存緩沖隊(duì)列中的空間數(shù)據(jù)對(duì)象,直接進(jìn)行渲染,否則從空間數(shù)據(jù)對(duì)象表獲取數(shù)據(jù)然后渲染。本文例子效果如圖3所示,是由多個(gè)多邊形組成的世界地圖形狀。

      3.2 空間數(shù)據(jù)查詢

      空間數(shù)據(jù)查詢的分為初始過(guò)濾、中間過(guò)濾以及最終過(guò)濾。初始過(guò)濾是根據(jù)查詢所指定的區(qū)域,得到其對(duì)應(yīng)哪些查詢格子,將這些格子作為初步結(jié)果;中間過(guò)濾是在初步結(jié)果基礎(chǔ)上,進(jìn)一步進(jìn)行過(guò)濾,先計(jì)算出查詢所指定區(qū)域?qū)?yīng)的內(nèi)切矩形,得到初步結(jié)果中存在于內(nèi)切矩形中的格子,并獲取這些格子所對(duì)應(yīng)的空間數(shù)據(jù)對(duì)象,將其添加到最終查詢結(jié)果中,對(duì)于初步結(jié)果中其他格子,在下一階段進(jìn)行判斷;最終過(guò)濾是對(duì)上一階段剩余的查詢格子,獲取他們所含的空間數(shù)據(jù)對(duì)象,并逐一與查詢指定區(qū)域進(jìn)行比較判斷,把與查詢區(qū)域有相交部分的空間數(shù)據(jù)對(duì)象添加到最終結(jié)果中。本文例子給出查詢請(qǐng)求結(jié)果如圖4所示,結(jié)果集中的空間數(shù)據(jù)對(duì)象以不同顏色顯示;在對(duì)話框中選中結(jié)果集中的某個(gè)空間數(shù)據(jù)對(duì)象顯示對(duì)應(yīng)屬性信息,并以不同顏色顯示,圖中選中的空間數(shù)據(jù)對(duì)象的名稱為“Niger”,人口密度值為7.0。

      4 空間數(shù)據(jù)的變更與加載

      新增空間數(shù)據(jù)對(duì)象時(shí),根據(jù)范圍計(jì)算對(duì)應(yīng)渲染和查詢格子,生成索引添加到內(nèi)存緩沖隊(duì)列,添加到新增集合;修改時(shí),根據(jù)對(duì)象編號(hào)得到對(duì)應(yīng)渲染和索引格子,將其刪除,然后根據(jù)修改后的空間數(shù)據(jù)對(duì)象范圍計(jì)算對(duì)應(yīng)渲染和索引格子,生成索引添加到內(nèi)存緩沖隊(duì)列,并添加到修改集合;刪除時(shí),根據(jù)對(duì)象編號(hào)得到對(duì)應(yīng)的渲染和索引格子,將其刪除,并添加到刪除集合。

      提交變更時(shí),對(duì)新增集合,將對(duì)應(yīng)的渲染、查詢索引和對(duì)象數(shù)據(jù)提交到數(shù)據(jù)庫(kù);對(duì)修改集合,在索引表中刪除對(duì)象編號(hào)相同記錄,并將對(duì)應(yīng)的新渲染、查詢索引提交到數(shù)據(jù)庫(kù),在空間數(shù)據(jù)對(duì)象表中更新對(duì)象編號(hào)相同記錄;對(duì)刪除集合,在索引表和空間數(shù)據(jù)對(duì)象表中刪除對(duì)象編號(hào)相同記錄。

      空間數(shù)據(jù)加載時(shí),根據(jù)配置參數(shù)建立渲染和查詢索引框架,然后讀取渲染格子索引,從空間數(shù)據(jù)對(duì)象表讀取空間數(shù)據(jù)對(duì)象加載到內(nèi)存緩沖隊(duì)列。

      5 結(jié)論

      本文設(shè)計(jì)實(shí)現(xiàn)了高效的基于多層索引及緩存的空間數(shù)據(jù)管理系統(tǒng),建立了多層索引,針對(duì)不同的渲染和查詢要求,都有較高的處理效率;建立了內(nèi)存緩沖策略,對(duì)經(jīng)常使用的空間數(shù)據(jù)對(duì)象直接從內(nèi)存中給出,提升了效率;使用多線程及生產(chǎn)者-消費(fèi)者模式進(jìn)行空間數(shù)據(jù)對(duì)象的導(dǎo)入和加載,提升了數(shù)據(jù)存取的速度。

      參考文獻(xiàn):

      [1] 王峰,安曉亞,朱璇.地理空間數(shù)據(jù)增量更新版本化管理方法研究[J].地理空間信息,2021,19(2):26-29,6.

      [2] 宋軒,高云君,李勇,等.空間數(shù)據(jù)智能:概念、技術(shù)與挑戰(zhàn)[J].計(jì)算機(jī)研究與發(fā)展,2022,59(2):255-263.

      [3] 郭名靜,景琳.空間數(shù)據(jù)挖掘驅(qū)動(dòng)城市疫情監(jiān)測(cè)常態(tài)化的作用研究[J].商業(yè)經(jīng)濟(jì),2022(2):11-13,16.

      [4] 蘇瑤.基于GIS+BIM的空間數(shù)據(jù)可視化研究[J].自動(dòng)化與儀器儀表,2021(12):28-31,35.

      [5] 周群.基于GIS的綜合交通空間數(shù)據(jù)管理系統(tǒng)研究[J].地理空間信息,2021,19(11):75-78,8.

      [6] 陳新.論空間數(shù)據(jù)挖掘和知識(shí)發(fā)現(xiàn)的理論與方法[J].電腦知識(shí)與技術(shù),2021,17(33):20-21,31.

      [7] 崔夢(mèng)真,賀晗,王虎,等.便攜式采集裝置及鐵路基礎(chǔ)設(shè)施三維空間數(shù)據(jù)管理系統(tǒng)設(shè)計(jì)[J].鐵路計(jì)算機(jī)應(yīng)用,2021,30(10):24-29.

      [8] 石偉偉,劉皓宇,程麗麗,等.超大規(guī)模空間數(shù)據(jù)管理及計(jì)算框架關(guān)鍵技術(shù)研究[J].國(guó)土資源信息化,2021(5):15-21.

      【通聯(lián)編輯:梁書】

      猜你喜歡
      空間數(shù)據(jù)格子隊(duì)列
      隊(duì)列里的小秘密
      基于多隊(duì)列切換的SDN擁塞控制*
      軟件(2020年3期)2020-04-20 00:58:44
      在隊(duì)列里
      數(shù)格子
      填出格子里的數(shù)
      豐田加速駛?cè)胱詣?dòng)駕駛隊(duì)列
      格子間
      女友(2017年6期)2017-07-13 11:17:10
      格子龍
      元數(shù)據(jù)驅(qū)動(dòng)的多中心空間數(shù)據(jù)同步方法研究
      基于文件系統(tǒng)的分布式海量空間數(shù)據(jù)高效存儲(chǔ)與組織研究
      田林县| 专栏| 咸阳市| 伽师县| 易门县| 观塘区| 漳州市| 洛宁县| 清新县| 乐山市| 枣强县| 东阿县| 上思县| 泸溪县| 昌邑市| 昭平县| 海阳市| 德保县| 阳城县| 哈巴河县| 宣化县| 巍山| 皋兰县| 浦北县| 奉贤区| 新民市| 元朗区| 平乐县| 清镇市| 莱阳市| 临潭县| 社旗县| 化隆| 云梦县| 内丘县| 天柱县| 新宾| 临高县| 克拉玛依市| 穆棱市| 古丈县|