專利名稱:三維gis異步通信傳輸系統(tǒng)及其異步通信傳輸?shù)姆椒?br>
技術(shù)領(lǐng)域:
本發(fā)明涉及網(wǎng)絡(luò)技術(shù),尤其涉及一種三維GIS異步通信傳輸系統(tǒng)及其異步通信傳輸?shù)姆椒ā?br>
背景技術(shù):
隨著大規(guī)模三維GIS數(shù)據(jù)一體化管理、數(shù)據(jù)安全性、分布式環(huán)境下的多用戶共享應(yīng)用等方面的需求日益強(qiáng)烈,傳統(tǒng)的兩層客戶端/數(shù)據(jù)庫服務(wù)器的三維GIS網(wǎng)絡(luò)應(yīng)用模式,隨著數(shù)據(jù)規(guī)模的不斷增大,多用戶并發(fā)數(shù)的增加,數(shù)據(jù)庫服務(wù)器負(fù)載壓力過大,且在多用戶并發(fā)訪問時(shí)導(dǎo)致數(shù)據(jù)庫服務(wù)器嚴(yán)重的I/O瓶頸和性能瓶頸,使多用戶并發(fā)的三維GIS在滿足流暢可視化、高性能三維空間分析等實(shí)時(shí)應(yīng)用方面遇到了難以克服的障礙。為了減少數(shù)據(jù)庫服務(wù)器的I/O瓶頸和多用戶并發(fā)所帶來負(fù)載壓力,一般采用客戶端、應(yīng)用服務(wù)器和數(shù)據(jù)庫服務(wù)器多層架構(gòu)應(yīng)用服務(wù)器和數(shù)據(jù)庫服務(wù)器分別部署在不同的主機(jī)上。用戶界面和部分應(yīng)用處理邏輯在客戶端部署,應(yīng)用服務(wù)器承擔(dān)部分處理邏輯,數(shù)據(jù)在數(shù)據(jù)庫服務(wù)器中部署。這種多層架構(gòu)方式在客戶端與應(yīng)用服務(wù)器、應(yīng)用服務(wù)器與數(shù)據(jù)庫服務(wù)器之間的交互都需要高效的網(wǎng)絡(luò)通信。網(wǎng)絡(luò)傳輸模式直接決定網(wǎng)絡(luò)應(yīng)用軟件的性能。網(wǎng)絡(luò)傳輸模式分為同步模式和異步模式兩種。同步網(wǎng)絡(luò)傳輸?shù)奶攸c(diǎn)是客戶端發(fā)送請(qǐng)求后,必須在服務(wù)器端響應(yīng)后才發(fā)送下一個(gè)請(qǐng)求。這種工作模式的特點(diǎn)是客戶端不能并發(fā)多個(gè)消息,導(dǎo)致客戶端數(shù)據(jù)調(diào)度效率低下。異步網(wǎng)絡(luò)傳輸,指客戶端在發(fā)送請(qǐng)求后,不必等待服務(wù)端的回應(yīng)就可以發(fā)送下一個(gè)請(qǐng)求。其優(yōu)勢(shì)在于避免了消息同步時(shí)間,提高了數(shù)據(jù)調(diào)度效率。異步傳輸策略有助于高效地利用網(wǎng)絡(luò),減少高延遲帶來的影響。然而,同步傳輸模式和異步傳統(tǒng)模式,都未針對(duì)三維GIS平臺(tái)的三維空間數(shù)據(jù)調(diào)度與三維可 視化的特點(diǎn)進(jìn)行三維空間對(duì)象進(jìn)行消息處理、調(diào)度任務(wù)處理、壓縮處理以及傳輸方法處理,因此都很難針對(duì)三維GIS平臺(tái)達(dá)到高效的網(wǎng)絡(luò)數(shù)據(jù)調(diào)度與網(wǎng)絡(luò)傳輸效果。
發(fā)明內(nèi)容
有鑒于此,有必要提供一種三維GIS異步通信傳輸系統(tǒng)及其傳輸方法,來有效地將三維空間數(shù)據(jù)調(diào)度與數(shù)據(jù)網(wǎng)絡(luò)傳輸有效的結(jié)合起來,達(dá)到最佳的網(wǎng)絡(luò)數(shù)據(jù)調(diào)度與傳輸效率。本發(fā)明提供的一種三維GIS異步通信傳輸系統(tǒng),包括客戶端與服務(wù)器,所述服務(wù)器中包括三維空間數(shù)據(jù)庫,用于管理地形數(shù)據(jù)、影像數(shù)據(jù)、城市三維模型數(shù)據(jù)及其屬性數(shù)據(jù)等三維GIS數(shù)據(jù)以及用戶連接權(quán)限數(shù)據(jù),其中所述客戶端包括第一通信模塊,用于將連接請(qǐng)求封裝成連接消息,將連接消息發(fā)送至所述服務(wù)器;所述服務(wù)器包括監(jiān)聽模塊,用于監(jiān)聽所述客戶端的所述連接消息,解析連接消息中的連接請(qǐng)求參數(shù);判斷模塊,用于從三維空間數(shù)據(jù)庫獲取用戶連接權(quán)限數(shù)據(jù),判斷所述連接請(qǐng)求的參數(shù)是否正確,其中,所述監(jiān)聽模塊還用于在所述連接請(qǐng)求的參數(shù)正確時(shí)建立與所述客戶端的連接,所述第一通信模塊還用于將三維空間數(shù)據(jù)查詢請(qǐng)求封裝成三維空間數(shù)據(jù)查詢消息發(fā)送到所述服務(wù)器,所述監(jiān)聽模塊還用于接收所述三維空間數(shù)據(jù)查詢消息,并依次放到三維空間數(shù)據(jù)查詢消息隊(duì)列中;第二通信模塊,用于從三維空間數(shù)據(jù)查詢消息隊(duì)列中依次取出三維空間數(shù)據(jù)查詢消息,交由通信線程池中的空閑線程進(jìn)行解析處理,并將三維空間數(shù)據(jù)查詢消息轉(zhuǎn)換為三維空間數(shù)據(jù)庫查詢?nèi)蝿?wù),放入到數(shù)據(jù)庫查詢?nèi)蝿?wù)隊(duì)列中;三維空間數(shù)據(jù)調(diào)度模塊,用于從調(diào)度線程池和數(shù)據(jù)庫連接池中分別取出空閑的調(diào)度線程和數(shù)據(jù)庫連接執(zhí)行三維空間數(shù)據(jù)庫查詢?nèi)蝿?wù),并返回查詢結(jié)果,其中,所述第二通信模塊還用于接收所述查詢結(jié)果,將所述查詢結(jié)果中的數(shù)據(jù)序列化為字節(jié)流的形式,并進(jìn)行壓縮得到壓縮數(shù)據(jù)包,獲取所述客戶端的通信句柄,并根據(jù)所述通信句柄將所述壓縮數(shù)據(jù)包發(fā)送至所述客戶端,所述第一通信模塊還用于接收所述壓縮數(shù)據(jù)包;所述客戶端還包括數(shù)據(jù)處理模塊,用于對(duì)所述壓縮數(shù)據(jù)包進(jìn)行數(shù)據(jù)重組、解壓縮與解序列化操作,得到待查詢的三維空間對(duì)象。本發(fā)明還提供一種三維GIS異步通信傳輸方法,用于客戶端與服務(wù)器之間通信,其中,所述服務(wù)器中包括三維空間數(shù)據(jù)庫,用于管理地形數(shù)據(jù)、影像數(shù)據(jù)、城市三維模型數(shù)據(jù)及其屬性數(shù)據(jù)等三維GIS數(shù)據(jù)以及用戶連接權(quán)限數(shù)據(jù),所述方法包括以下步驟所述服務(wù)器開啟通信監(jiān)聽,監(jiān)聽所述客戶端的連接請(qǐng)求;所述客戶端將連接請(qǐng)求封裝成連接消息,將連接消息發(fā)送至所述服務(wù)器;所述服務(wù)器監(jiān)聽所述客戶端的所述連接消息,解析連接消息中的連接請(qǐng)求參數(shù);服務(wù)器從所述三維空間數(shù)據(jù)庫獲取用戶連接權(quán)限數(shù)據(jù),判斷所述連接請(qǐng)求的參數(shù)是否正確;若所述連接請(qǐng)求的參數(shù)正確,則所述服務(wù)器建立與所述客戶端的連接;所述客戶端將三維空間數(shù)據(jù)查詢請(qǐng)求封裝成三維空間數(shù)據(jù)查詢消息發(fā)送到所述服務(wù)器;所述服務(wù)器接收所述三維空間數(shù)據(jù)查詢消息,并依次放到三維空間數(shù)據(jù)查詢消息隊(duì)列中;所述服務(wù)器從三維空間數(shù)據(jù)查詢消息隊(duì)列中依次取出三維空間數(shù)據(jù)查詢消息,交由通信線程池中的空閑線程進(jìn)行解析處理,并將三維空間數(shù)據(jù)查詢消息轉(zhuǎn)換為三維空間數(shù)據(jù)庫查詢?nèi)蝿?wù),放入到數(shù)據(jù)庫查詢?nèi)蝿?wù)隊(duì)列中;所述服務(wù)器從調(diào)度線程池和數(shù)據(jù)庫連接池中分別取出空閑的調(diào)度線程和數(shù)據(jù)庫連接執(zhí)行三維空間數(shù)據(jù)庫查詢?nèi)蝿?wù),并返回查詢結(jié)果;所述服務(wù)器接收所述查詢結(jié)果,將所述查詢結(jié)果中的數(shù)據(jù)序列化為字節(jié)流的形式,并進(jìn)行壓縮得到壓縮數(shù)據(jù)包;所述服務(wù)器獲取所述客戶端的通信句柄,并根據(jù)所述通信句柄將所述壓縮數(shù)據(jù)包發(fā)送至所述客戶端;所述客戶端接收所述壓縮數(shù)據(jù)包;所述客戶端對(duì)所述壓縮數(shù)據(jù)包進(jìn)行數(shù)據(jù)重組、解壓縮與解序列化操作,得到待查詢的三維空間對(duì)象。
`
本發(fā)明中的三維GIS異步通信傳輸系統(tǒng)及其通信傳輸?shù)姆椒?,通過客戶端連接請(qǐng)求與服務(wù)器建立連接,然后發(fā)送三維空間數(shù)據(jù)查詢消息至服務(wù)器,利用空閑的線程處理三維空間數(shù)據(jù)查詢消息,提高了網(wǎng)絡(luò)數(shù)據(jù)調(diào)度與傳輸效率,避免了同步的延時(shí)。
圖1為本發(fā)明一實(shí)施方式中三維GIS異步通信傳輸系統(tǒng)的模塊圖;圖2為本發(fā)明一實(shí)施方式中利用圖1所示的三維GIS異步通信傳輸系統(tǒng)進(jìn)行異步通信傳輸?shù)姆椒ǖ牧鞒虉D。
具體實(shí)施例方式下面詳細(xì)描述本發(fā)明的實(shí)施例,所述實(shí)施例的示例在附圖中示出,其中自始至終相同或類似的標(biāo)號(hào)表示相同或類似的元件或具有相同或類似功能的元件。下面通過參考附圖描述的實(shí)施例是示例性的,僅用于解釋本發(fā)明,而不能理解為對(duì)本發(fā)明的限制。在本發(fā)明的描述中,術(shù)語“內(nèi)”、“外”、“縱向”、“橫向”、“上”、“下”、“頂”、“底”等指示的方位或位置關(guān)系為基于附圖所示的方位或位置關(guān)系,僅是為了便于描述本發(fā)明而不是要求本發(fā)明必須以特定的方位構(gòu)造和操作,因此不能理解為對(duì)本發(fā)明的限制。請(qǐng)參閱圖1,圖1所示為本發(fā)明一實(shí)施方式中三維GIS異步通信傳輸系統(tǒng)的模塊圖。在本實(shí)施方式中,三維GIS異步通信傳輸系統(tǒng)包括服務(wù)器10以及客戶端20,其中,服務(wù)器10包括監(jiān)聽模塊102、第二通信模塊104、判斷模塊106、三維空間數(shù)據(jù)庫110以及三維空間數(shù)據(jù)調(diào)度模塊112。客戶端20包括第一通信模塊202以及數(shù)據(jù)處理模塊204。在本實(shí)施方式中,三維空間數(shù)據(jù)庫110中包括矢量模型數(shù)據(jù)、地形數(shù)據(jù)以及地下數(shù)據(jù),其中所述矢量模型數(shù)據(jù)包括幾何數(shù)據(jù)、材質(zhì)數(shù)據(jù)、紋理數(shù)據(jù)和共享模型數(shù)據(jù),所述地形數(shù)據(jù)包括DEM數(shù)據(jù)和DOM數(shù)據(jù)。在本實(shí)施方式中,第一通信模塊202用于將連接請(qǐng)求封裝成連接消息,將連接消息發(fā)送至所述服務(wù)器10。監(jiān)聽模塊102用于監(jiān)聽所述客戶端的所述連接消息,解析連接消息中的連接請(qǐng)求參數(shù)。判斷模塊106用于從三維空間數(shù)據(jù)庫110中獲取用戶連接權(quán)限數(shù)據(jù),判斷所述連接請(qǐng)求的參數(shù)是否正確。在本實(shí)施方式中,所述監(jiān)聽模塊102還用于在所述連接請(qǐng)求的參數(shù)正確時(shí)建立與所述客戶端20的連接,所述第一通信模塊202還用于將三維空間數(shù)據(jù)查詢請(qǐng)求封裝成三維空間數(shù)據(jù)查詢消息發(fā)送到所述服務(wù)器10,所述監(jiān)聽模塊102還用于接收所述三維空間數(shù)據(jù)查詢消息,并依次放到三維空間數(shù)據(jù)查詢消息隊(duì)列中。在本實(shí)施方式中,第一通信模塊202通過從消息發(fā)送線程池取出一條空閑線程從消息隊(duì)列中的頭部依次取出一條消息,將消息發(fā)送到服務(wù)器10,該線程加鎖等待服務(wù)器10返回消息。第二通信模塊104用于從三維空間數(shù)據(jù)查詢消息隊(duì)列中依次取出三維空間數(shù)據(jù)查詢消息,交由通信線程池中的空閑線程進(jìn)行解析處理,并將三維空間數(shù)據(jù)查詢消息轉(zhuǎn)換為三維空間數(shù)據(jù)庫查詢?nèi)蝿?wù),放入到數(shù)據(jù)庫查詢?nèi)蝿?wù)隊(duì)列。在本實(shí)施方式中,所述第二通信模塊104對(duì)所述DEM數(shù)據(jù)和DOM數(shù)據(jù)采用小波變換壓縮編碼的方法進(jìn)行壓縮,城市三維模型數(shù)據(jù)通過對(duì)其三維幾何數(shù)據(jù)編碼形成的數(shù)據(jù)流進(jìn)行無損的數(shù)據(jù)壓縮,對(duì)其紋理數(shù)據(jù)也采用小波變換壓縮編碼方法進(jìn)行壓縮。三維空間數(shù)據(jù)調(diào)度模塊112用于從調(diào)度線程池和數(shù)據(jù)庫連接池中分別取出空閑的調(diào)度線程和數(shù)據(jù)庫連接執(zhí)行三維空間數(shù)據(jù)庫查詢?nèi)蝿?wù),并返回查詢結(jié)果。在本實(shí)施方式中,所述第二通信模塊104還用于接收所述查詢結(jié)果,將所述查詢結(jié)果中的數(shù)據(jù)序列化為字節(jié)流的形式,并進(jìn)行壓縮得到壓縮數(shù)據(jù)包,獲取所述客戶端20的通信句柄,并根據(jù)所述通信句柄將所述壓縮數(shù)據(jù)包發(fā)送至所述客戶端20,所述第一通信模塊202還用于接收所述壓縮數(shù)據(jù)包。在本實(shí)施方式中 ,三維空間數(shù)據(jù)庫110中保存了客戶端20的IP地址、端口號(hào),第二通信模塊104通過客戶端20的IP地址以及端口號(hào)獲取所述通信句柄。在本實(shí)施方式中,第一通信模塊202收到服務(wù)器10數(shù)據(jù)返回的消息后,將該通知發(fā)給數(shù)據(jù)接收線程,該消息發(fā)送線程設(shè)為空閑狀態(tài)并解鎖,并回收到消息發(fā)送線程池中的空閑線程隊(duì)列中,在這個(gè)過程中客戶端20從消息發(fā)送線程池不斷取出空閑線程依次從消息隊(duì)列中取出待處理消息進(jìn)行同樣的消息發(fā)送、加鎖、等待返回通知、通知數(shù)據(jù)接收線程,解鎖等操作,數(shù)據(jù)接收線程接到數(shù)據(jù)接收通知后,開始進(jìn)行數(shù)據(jù)接收。數(shù)據(jù)處理模塊204用于對(duì)所述壓縮數(shù)據(jù)包進(jìn)行數(shù)據(jù)重組、解壓縮與解序列化操作,得到待查詢的三維空間對(duì)象。在本實(shí)施方式中,數(shù)據(jù)處理模塊204根據(jù)壓縮數(shù)據(jù)包的報(bào)頭信息來進(jìn)行數(shù)據(jù)重組、解壓縮與解序列化操作。其中報(bào)頭信息包括消息的類型以及數(shù)據(jù)包的總長度,所述客戶端20中的數(shù)據(jù)處理模塊204通過消息類型確定數(shù)據(jù)的類型,通過數(shù)據(jù)包的總長度確保數(shù)據(jù)的完整準(zhǔn)確的接收。在本實(shí)施方式中,所述第二通信模塊104還用于接收所述查詢結(jié)果,將所述查詢結(jié)果中的數(shù)據(jù)序列化為字節(jié)流的形式,并進(jìn)行壓縮得到壓縮數(shù)據(jù)包。在本實(shí)施方式中,判斷模塊106還用于判斷所述壓縮數(shù)據(jù)包的大小是否大于固定值,且所述第二通信模塊104在所述壓縮數(shù)據(jù)包大于固定值時(shí)對(duì)所述壓縮數(shù)據(jù)包進(jìn)行分包。在本實(shí)施方式中,固定值為64KB。在本實(shí)施方式中,第二通信模塊104對(duì)所述壓縮數(shù)據(jù)包分包時(shí)按照數(shù)據(jù)包大小為固定值進(jìn)行分包,當(dāng)分包后剩下的壓縮數(shù)據(jù)包部分小于固定值時(shí),則不進(jìn)行分包。在本實(shí)施方式中,第二通信模塊104在所述壓縮數(shù)據(jù)包小于等于固定值時(shí)不對(duì)所述壓縮數(shù)據(jù)包進(jìn)行分包 。在本實(shí)施方式中,第二通信模塊104對(duì)所述壓縮數(shù)據(jù)包實(shí)行分包是為了避免大量的丟包和重傳現(xiàn)象。請(qǐng)參閱圖2,圖2所示為本發(fā)明一實(shí)施方式中利用圖1所示的三維GIS異步通信傳輸系統(tǒng)進(jìn)行異步通信傳輸?shù)姆椒ǖ牧鞒虉D。在本實(shí)施方式中,所述三維空間數(shù)據(jù)庫110中包括矢量模型數(shù)據(jù)、地形數(shù)據(jù)以及地下數(shù)據(jù),其中所述矢量模型數(shù)據(jù)包括幾何數(shù)據(jù)、材質(zhì)數(shù)據(jù)、紋理數(shù)據(jù)和共享模型數(shù)據(jù),所述地形數(shù)據(jù)包括DEM數(shù)據(jù)和DOM數(shù)據(jù)。在步驟S200,所述服務(wù)器10中的監(jiān)聽模塊102開啟通信監(jiān)聽,監(jiān)聽所述客戶端20的連接請(qǐng)求。在步驟S202,所述客戶端20中的第一通信模塊202將連接請(qǐng)求封裝成連接消息,將連接消息發(fā)送至所述服務(wù)器10。在步驟S204,所述服務(wù)10中的監(jiān)聽模塊102監(jiān)聽所述客戶端20的所述連接消息,解析連接消息中的連接請(qǐng)求參數(shù)。在步驟S206,所述服務(wù)器10中的判斷模塊106從所述三維空間數(shù)據(jù)庫110獲取用戶連接權(quán)限數(shù)據(jù),判斷所述連接請(qǐng)求的參數(shù)是否正確。若所述連接請(qǐng)求的參數(shù)正確,則在步驟S208,所述服務(wù)器10建立與所述客戶端20的連接。在步驟S210,所述客戶端20中的第一通信模塊202將三維空間數(shù)據(jù)查詢請(qǐng)求封裝成三維空間數(shù)據(jù)查詢消息發(fā)送到所述服務(wù)器10。在本實(shí)施方式中,第一通信模塊202通過從消息發(fā)送線程池取出一條空閑線程從消息隊(duì)列中的頭部依次取出一條消息,將消息發(fā)送到服務(wù)器10,該線程加鎖等待服務(wù)器10返回消息。在步驟S212,所述服務(wù)器10中的監(jiān)聽模塊102接收所述三維空間數(shù)據(jù)查詢消息,并依次放到三維空間數(shù)據(jù)查詢消息隊(duì)列中。在步驟S214,所述服務(wù)器10中的第二通信模塊104從三維空間數(shù)據(jù)查詢消息隊(duì)列中依次取出三維空間數(shù)據(jù)查詢消息,交由通信線程池中的空閑線程進(jìn)行解析處理,并將三維空間數(shù)據(jù)查詢消息轉(zhuǎn)換為三維空間數(shù)據(jù)庫查詢?nèi)蝿?wù),放入到數(shù)據(jù)庫查詢?nèi)蝿?wù)隊(duì)列中。在本實(shí)施方式中,所述第二通信模塊104對(duì)所述DEM數(shù)據(jù)和DOM數(shù)據(jù)采用小波變換壓縮編碼的方法進(jìn)行壓縮,城市三維模型數(shù)據(jù)通過對(duì)其三維幾何數(shù)據(jù)編碼形成的數(shù)據(jù)流進(jìn)行無損的數(shù)據(jù)壓縮,對(duì)其紋理數(shù)據(jù)也采用小波變換壓縮編碼方法進(jìn)行壓縮。在步驟S216,所述服務(wù)器10中的三維空間數(shù)據(jù)調(diào)度模塊112從調(diào)度線程池和數(shù)據(jù)庫連接池中分別取出空閑的調(diào)度線程和數(shù)據(jù)庫連接執(zhí)行三維空間數(shù)據(jù)庫查詢?nèi)蝿?wù),并返回查詢結(jié)果。在步驟S218,所述服務(wù) 器10中的第二通信模塊104接收所述查詢結(jié)果,將所述查詢結(jié)果中的數(shù)據(jù)序列化為字節(jié)流的形式,并進(jìn)行壓縮得到壓縮數(shù)據(jù)包。在本發(fā)明其他實(shí)施方式中,所述三維GIS異步通信傳輸方法還包括步驟S220,所述服務(wù)器10中的判斷模塊106判斷所述壓縮數(shù)據(jù)包的大小是否大于固定值。在本實(shí)施方式中,固定值為64KB。若所述壓縮數(shù)據(jù)包的大小大于固定值,則在步驟S222,所述服務(wù)器10中的第二通信模塊104對(duì)所述壓縮數(shù)據(jù)包進(jìn)行分包。在本實(shí)施方式中,第二通信模塊104對(duì)所述壓縮數(shù)據(jù)包分包時(shí)按照數(shù)據(jù)包大小為固定值進(jìn)行分包,當(dāng)分包后剩下的壓縮數(shù)據(jù)包部分小于固定值時(shí),則不進(jìn)行分包。在本實(shí)施方式中,第二通信模塊104對(duì)所述壓縮數(shù)據(jù)包實(shí)行分包是為了避免大量的丟包和重傳現(xiàn)象。在步驟S224,所述服務(wù)器10中的第二通信模塊104獲取所述客戶端20的通信句柄,并根據(jù)所述通信句柄將壓縮數(shù)據(jù)包發(fā)送至所述客戶端20。在本實(shí)施方式中,三維空間數(shù)據(jù)庫110中保存了客戶端20的IP地址、端口號(hào),第二通信模塊104通過客戶端20的IP地址以及端口號(hào)獲取所述通信句柄。若所述壓縮數(shù)據(jù)包的大小小于等于固定值,則不需要對(duì)所述壓縮數(shù)據(jù)包進(jìn)行分包,直接進(jìn)入步驟S224。在步驟S226,所述客戶端20的第一通信模塊202接收所述壓縮數(shù)據(jù)包。在本實(shí)施方式中,第一通信模塊202收到服務(wù)器10數(shù)據(jù)返回的消息后,將該通知發(fā)給數(shù)據(jù)接收線程,該消息發(fā)送線程解鎖,并回收到消息發(fā)送線程池中的空閑線程隊(duì)列中,在這個(gè)過程中客戶端20從消息發(fā)送線程池不斷取出空閑線程依次從消息隊(duì)列中取出待處理消息進(jìn)行同樣的消息發(fā)送、加鎖、等待返回通知、通知數(shù)據(jù)接收線程,解鎖等操作,數(shù)據(jù)接收線程接到數(shù)據(jù)接收通知后,開始進(jìn)行數(shù)據(jù)接收。在步驟S228,所述客戶端20的數(shù)據(jù)處理模塊204對(duì)壓縮數(shù)據(jù)包進(jìn)行數(shù)據(jù)重組、解壓縮與解序列化操作,得到待查詢的數(shù)據(jù)對(duì)象,并對(duì)所述客戶端20解鎖。在本實(shí)施方式中,所述客戶端20中的處理模塊204通過解析所述壓縮數(shù)據(jù)包的報(bào)頭信息進(jìn)行數(shù)據(jù)重組,以獲取完整的壓縮數(shù)據(jù)包。在本實(shí)施方式中,壓縮數(shù)據(jù)包的報(bào)頭信息包括消息的類型以及數(shù)據(jù)包的總長度,所述客戶端20中的處理模塊204通過消息類型確定數(shù)據(jù)的類型,通過數(shù)據(jù)包的總長度確保數(shù)據(jù)的完整準(zhǔn)確的接收。本發(fā)明中的三維GIS異步通信傳輸系統(tǒng)10及其通信傳輸?shù)姆椒?,通過客戶端20連接請(qǐng)求與服務(wù)器10建立連接,然后發(fā)送三維空間數(shù)據(jù)查詢消息至服務(wù)器10,利用空閑的線程處理三維空間數(shù)據(jù)查詢消息,提高了網(wǎng)絡(luò)數(shù)據(jù)調(diào)度與傳輸效率,避免了同步的延時(shí)。
·
雖然本發(fā)明參照當(dāng)前的較佳實(shí)施方式進(jìn)行了描述,但本領(lǐng)域的技術(shù)人員應(yīng)能理解,上述較佳實(shí)施方式僅用來說明本發(fā)明,并非用來限定本發(fā)明的保護(hù)范圍,任何在本發(fā)明的精神和原則范圍之內(nèi),所做的任何修飾、等效替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的權(quán)利保護(hù)范圍之內(nèi)。
權(quán)利要求
1.一種三維GIS異步通信傳輸系統(tǒng),包括客戶端與服務(wù)器,所述服務(wù)器中包括三維空間數(shù)據(jù)庫,用于管理地形數(shù)據(jù)、影像數(shù)據(jù)、城市三維模型數(shù)據(jù)及其屬性數(shù)據(jù)等三維GIS數(shù)據(jù)以及用戶連接權(quán)限數(shù)據(jù),其特征在于,所述三維GIS異步通信傳輸系統(tǒng)包括 所述客戶端包括 第一通信模塊,用于將連接請(qǐng)求封裝成連接消息,將連接消息發(fā)送至所述服務(wù)器; 所述服務(wù)器包括 監(jiān)聽模塊,用于監(jiān)聽所述客戶端的所述連接消息,解析連接消息中的連接請(qǐng)求參數(shù); 判斷模塊,用于從三維空間數(shù)據(jù)庫獲取用戶連接權(quán)限數(shù)據(jù),判斷所述連接請(qǐng)求的參數(shù)是否正確,其中,所述監(jiān)聽模塊還用于在所述連接請(qǐng)求的參數(shù)正確時(shí)建立與所述客戶端的連接,所述第一通信模塊還用于將三維空間數(shù)據(jù)查詢請(qǐng)求封裝成三維空間數(shù)據(jù)查詢消息發(fā)送到所述服務(wù)器,所述監(jiān)聽模塊還用于接收所述三維空間數(shù)據(jù)查詢消息,并依次放到三維空間數(shù)據(jù)查詢消息隊(duì)列中; 第二通信模塊,用于從三維空間數(shù)據(jù)查詢消息隊(duì)列中依次取出三維空間數(shù)據(jù)查詢消息,交由通信線程池中的空閑線程進(jìn)行解析處理,并將三維空間數(shù)據(jù)查詢消息轉(zhuǎn)換為三維空間數(shù)據(jù)庫查詢?nèi)蝿?wù),放入到數(shù)據(jù)庫查詢?nèi)蝿?wù)隊(duì)列中; 三維空間數(shù)據(jù)調(diào)度模塊,用于從調(diào)度線程池和數(shù)據(jù)庫連接池中分別取出空閑的調(diào)度線程和數(shù)據(jù)庫連接執(zhí)行三維空間數(shù)據(jù)庫查詢?nèi)蝿?wù),并返回查詢結(jié)果,其中,所述第二通信模塊還用于接收所述查詢結(jié)果,將所述查詢結(jié)果中的數(shù)據(jù)序列化為字節(jié)流的形式,并進(jìn)行壓縮得到壓縮數(shù)據(jù)包,獲取所述客戶端的通信句柄,并根據(jù)所述通信句柄將所述壓縮數(shù)據(jù)包發(fā)送至所述客戶端,所述第一通信模塊還用于接收所述壓縮數(shù)據(jù)包; 所述客戶端還包括數(shù)據(jù)處理模塊,用于對(duì)所述壓縮數(shù)據(jù)包進(jìn)行數(shù)據(jù)重組、解壓縮與解序列化操作,得到待查詢的三維空間對(duì)象。
2.如權(quán)利要求1所述的三維GIS異步通信傳輸系統(tǒng),其特征在于,所述第一通信模塊通過從消息發(fā)送線程池取出一條空閑線程從消息隊(duì)列中的頭部依次取出一條消息,將消息發(fā)送到所述服務(wù)器,該線程設(shè)為忙碌狀態(tài)并加鎖等待所述服務(wù)器返回消息。
3.如權(quán)利要求1所述的三維GIS異步通信傳輸系統(tǒng),其特征在于,所述第一通信模塊收到所述服務(wù)器數(shù)據(jù)返回的消息后,將該通知發(fā)給數(shù)據(jù)接收線程,該消息發(fā)送線程設(shè)為空閑狀態(tài)并解鎖,并回收到消息發(fā)送線程池中的空閑線程隊(duì)列中。
4.如權(quán)利要求1所述的三維GIS異步通信傳輸系統(tǒng),其特征在于,所述判斷模塊還用于判斷所述壓縮數(shù)據(jù)包的大小是否大于固定值,且所述第二通信模塊在所述壓縮數(shù)據(jù)包大于固定值時(shí)對(duì)所述壓縮數(shù)據(jù)包進(jìn)行分包。
5.如權(quán)利要求4所述的三維GIS異步通信傳輸系統(tǒng),其特征在于,所述第二通信模塊還用于在所述壓縮數(shù)據(jù)包小于等于固定值時(shí)直接將所述壓縮數(shù)據(jù)包發(fā)送給所述客戶端。
6.如權(quán)利要求4或5所述的三維GIS異步通信傳輸系統(tǒng),其特征在于,所述數(shù)據(jù)處理模塊通過解析所述壓縮數(shù)據(jù)包的報(bào)頭信息進(jìn)行數(shù)據(jù)重組,以獲取完整的壓縮數(shù)據(jù)包。
7.—種三維GIS異步通信傳輸方法,用于客戶端與服務(wù)器之間通信,其中,所述服務(wù)器中包括三維空間數(shù)據(jù)庫,用于管理地形數(shù)據(jù)、影像數(shù)據(jù)、城市三維模型數(shù)據(jù)及其屬性數(shù)據(jù)等三維GIS數(shù)據(jù)以及用戶連接權(quán)限數(shù)據(jù),其特征在于,所述方法包括以下步驟 所述服務(wù)器開啟通信監(jiān)聽,監(jiān)聽所述客戶端的連接請(qǐng)求;所述客戶端將連接請(qǐng)求封裝成連接消息,將連接消息發(fā)送至所述服務(wù)器; 所述服務(wù)器監(jiān)聽所述客戶端的所述連接消息,解析連接消息中的連接請(qǐng)求參數(shù); 服務(wù)器從所述三維空間數(shù)據(jù)庫獲取用戶連接權(quán)限數(shù)據(jù),判斷所述連接請(qǐng)求的參數(shù)是否正確; 若所述連接請(qǐng)求的參數(shù)正確,則所述服務(wù)器建立與所述客戶端的連接; 所述客戶端將三維空間數(shù)據(jù)查詢請(qǐng)求封裝成三維空間數(shù)據(jù)查詢消息發(fā)送到所述服務(wù)器; 所述服務(wù)器接收所述三維空間數(shù)據(jù)查詢消息,并依次放到三維空間數(shù)據(jù)查詢消息隊(duì)列中; 所述服務(wù)器從三維空間數(shù)據(jù)查詢消息隊(duì)列中依次取出三維空間數(shù)據(jù)查詢消息,交由通信線程池中的空閑線程進(jìn)行解析處理,并將三維空間數(shù)據(jù)查詢消息轉(zhuǎn)換為三維空間數(shù)據(jù)庫查詢?nèi)蝿?wù),放入到數(shù)據(jù)庫查詢?nèi)蝿?wù)隊(duì)列中; 所述服務(wù)器從調(diào)度線程池和數(shù)據(jù)庫連接池中分別取出空閑的調(diào)度線程和數(shù)據(jù)庫連接執(zhí)行三維空間數(shù)據(jù)庫查詢?nèi)蝿?wù),并返回查詢結(jié)果; 所述服務(wù)器接收所述查詢結(jié)果,將所述查詢結(jié)果中的數(shù)據(jù)序列化為字節(jié)流的形式,并進(jìn)行壓縮得到壓縮數(shù)據(jù)包; 所述服務(wù)器獲取所述客戶端的通信句柄,并根據(jù)所述通信句柄將所述壓縮數(shù)據(jù)包發(fā)送至所述客戶端; 所述客戶端接收所述壓縮數(shù)據(jù)包; 所述客戶端對(duì)所述壓縮數(shù)據(jù)包進(jìn)行數(shù)據(jù)重組、解壓縮與解序列化操作,得到待查詢的三維空間對(duì)象。
8.如權(quán)利要求7所述的三維GIS異步通信傳輸方法,其特征在于,所述客戶端通過從消息發(fā)送線程池取出一條空閑線程從消息隊(duì)列中的頭部依次取出一條消息,將消息發(fā)送到所述服務(wù)器,該線程設(shè)為忙碌狀態(tài)并加鎖等待所述服務(wù)器返回消息。
9.如權(quán)利要求1所述的三維GIS異步通信傳輸方法,其特征在于,所述客戶端收到所述服務(wù)器數(shù)據(jù)返回的消息后,將該通知發(fā)給數(shù)據(jù)接收線程,該消息發(fā)送線程設(shè)為空閑狀態(tài)并解鎖,并回收到消息發(fā)送線程池中的空閑線程隊(duì)列中。
10.如權(quán)利要求7所述的三維GIS異步通信傳輸方法,其特征在于,還包括以下步驟 所述服務(wù)器判斷所述壓縮數(shù)據(jù)包的大小是否大于固定值; 所述服務(wù)器在所述壓縮數(shù)據(jù)包的大小大于固定值時(shí),對(duì)所述壓縮數(shù)據(jù)包進(jìn)行分包; 將分包后的壓縮數(shù)據(jù)包根據(jù)所述通信句柄發(fā)送至所述客戶端。
11.如權(quán)利要求10所述的三維GIS異步通信傳輸方法,其特征在于,還包括以下步驟 所述服務(wù)器在所述壓縮數(shù)據(jù)包的大小小于等于固定值時(shí)將所述壓縮數(shù)據(jù)包根據(jù)所述通信句柄直接發(fā)送至所述客戶端。
12.如權(quán)利要求10或11所述的三維GIS異步通信傳輸方法,其特征在于,所述客戶端通過解析所述壓縮數(shù)據(jù)包的報(bào)頭信息進(jìn)行數(shù)據(jù)重組,以獲取完整的壓縮數(shù)據(jù)包。
全文摘要
一種三維GIS異步通信傳輸系統(tǒng),包括客戶端和服務(wù)器,其中客戶端與服務(wù)器建立連接后發(fā)送三維空間數(shù)據(jù)查詢消息至服務(wù)器,服務(wù)器接收三維空間數(shù)據(jù)查詢消息并解析,轉(zhuǎn)換為三維空間數(shù)據(jù)庫查詢?nèi)蝿?wù),執(zhí)行數(shù)據(jù)庫查詢?nèi)蝿?wù)并返回查詢結(jié)果,將查詢結(jié)果中的數(shù)據(jù)序列化為字節(jié)流的形式,并進(jìn)行壓縮得到壓縮數(shù)據(jù)包,獲取客戶端的通信句柄,并根據(jù)所述通信句柄將壓縮數(shù)據(jù)包發(fā)送至客戶端,客戶端接收壓縮數(shù)據(jù)包,對(duì)壓縮數(shù)據(jù)包進(jìn)行數(shù)據(jù)重組、解壓縮與解序列化操作,得到待查詢的三維空間數(shù)據(jù)對(duì)象,進(jìn)行三維可視化與三維空間分析等操作。
文檔編號(hào)G06F17/30GK103067396SQ20121059206
公開日2013年4月24日 申請(qǐng)日期2012年12月29日 優(yōu)先權(quán)日2012年12月29日
發(fā)明者李曉明, 朱慶, 吳木生, 張葉廷, 修文群, 張寶運(yùn) 申請(qǐng)人:深圳先進(jìn)技術(shù)研究院