一種地圖瓦片數(shù)據(jù)的發(fā)布方法
【專利摘要】本發(fā)明涉及一種地圖瓦片數(shù)據(jù)的發(fā)布方法,包括步驟有:(1)準(zhǔn)備瓦片地圖數(shù)據(jù);(2)定義請(qǐng)求瓦片的路徑格式;(3)按上述步驟中的路徑格式請(qǐng)求瓦片;(4)請(qǐng)求接收器接收請(qǐng)求,并添加新任務(wù);(5)資源調(diào)度訪問資源池;(6)使用緩存管理算法,采用哈希鏈?zhǔn)奖泶鎯?chǔ)方式進(jìn)行資源池管理;(7)瓦片資源輸出。采用本發(fā)明方法編制的程序?yàn)檩p量級(jí)服務(wù),安裝文件小,訪問路徑簡單明了,通過線程池管理,支持大并發(fā)的處理,響應(yīng)速度效果明顯提高。
【專利說明】一種地圖瓦片數(shù)據(jù)的發(fā)布方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明屬于地理信息處理【技術(shù)領(lǐng)域】,尤其是一種地圖瓦片數(shù)據(jù)的發(fā)布方法。
【背景技術(shù)】
[0002] 隨著互聯(lián)網(wǎng)時(shí)代的迅猛發(fā)展,地理信息系統(tǒng)也大大提高了人們的日常生活質(zhì)量, 比如交通工具的導(dǎo)航、酒店的定位搜索等,這些都離不開地圖的可視化,這些地理背景圖都 來自地理專業(yè)的瓦片服務(wù)。瓦片是通過一定規(guī)則將地圖切割成相同尺寸大小的小圖片,當(dāng) 用戶訪問地圖時(shí)會(huì)請(qǐng)求每個(gè)小瓦片圖并通過客戶端程序拼接成一張當(dāng)前范圍的地圖圖片, 因?yàn)樵诨ヂ?lián)網(wǎng)上的請(qǐng)求并發(fā)量非常之大,瓦片服務(wù)的響應(yīng)效率成為用戶體驗(yàn)好的關(guān)鍵所 在,本發(fā)明就是為了提高瓦片服務(wù)響應(yīng)效率,應(yīng)用面向資源的設(shè)計(jì)思想,研發(fā)的一種地圖瓦 片數(shù)據(jù)的發(fā)布方法。
[0003] 通過對(duì)國內(nèi)公開專利及其它文獻(xiàn)的檢索,沒有發(fā)現(xiàn)與本發(fā)明方法相近似的公開專 利及文獻(xiàn)。
【發(fā)明內(nèi)容】
[0004] 本發(fā)明的目的是為了克服現(xiàn)有技術(shù)的不足,提供一種地圖瓦片數(shù)據(jù)的發(fā)布方法。
[0005] 本發(fā)明解決其技術(shù)問題是采取以下技術(shù)方案實(shí)現(xiàn)的:
[0006] 一種地圖瓦片數(shù)據(jù)的發(fā)布方法,包括步驟如下:
[0007] (1)準(zhǔn)備瓦片地圖數(shù)據(jù);具體包括步驟有:
[0008] ①將地圖數(shù)據(jù)進(jìn)行切片,并將切片的地圖數(shù)據(jù)進(jìn)行存儲(chǔ),存儲(chǔ)路徑格式依次為: 瓦片業(yè)務(wù)命名,瓦片所在層級(jí)命名,瓦片所在的行號(hào)命名及瓦片所在的列號(hào)命名;
[0009] ②將瓦片數(shù)據(jù)文件夾保存到服務(wù)器硬盤的路徑下;
[0010] (2)定義請(qǐng)求瓦片的路徑格式,包括瓦片服務(wù)的工程名、瓦片服務(wù)統(tǒng)一訪問風(fēng)格標(biāo) 識(shí)、請(qǐng)求瓦片的層級(jí)、行號(hào)及列號(hào);
[0011] (3)按上述步驟中的路徑格式請(qǐng)求瓦片;
[0012] (4)請(qǐng)求接收器接收請(qǐng)求,并添加新任務(wù),具體方法為:
[0013] ①判斷線程池中的基本線程池是否已滿,如果沒滿,將立刻創(chuàng)建一個(gè)新的線程來 執(zhí)行瓦片請(qǐng)求任務(wù),如果已滿,則進(jìn)入下個(gè)流程;
[0014] ②判斷線程池中的瓦片請(qǐng)求任務(wù)隊(duì)列是否已滿,如果沒滿,則將新提交的瓦片請(qǐng) 求任務(wù)存儲(chǔ)在瓦片請(qǐng)求任務(wù)隊(duì)列里,如果已滿,則進(jìn)入下個(gè)流程;
[0015] ③判斷線程池中的所有線程是否已滿,如果沒滿,將創(chuàng)建一個(gè)新的線程來執(zhí)行瓦 片請(qǐng)求任務(wù),如果已滿,則拋出異常并記錄日志;
[0016] ④根據(jù)線程執(zhí)行任務(wù);
[0017] (5)資源調(diào)度訪問資源池,具體方法為:
[0018] ①訪問資源池內(nèi)存,資源池調(diào)用方法首先到資源池的內(nèi)存中查找瓦片對(duì)象,如果 內(nèi)存中有瓦片對(duì)象,將直接從該資源池內(nèi)存中取得瓦片對(duì)象并返回給資源調(diào)度對(duì)象;
[0019] ②如果沒有從資源池緩存中找到瓦片對(duì)象,將訪問資源池的物理路徑;
[0020] (6)使用緩存管理算法,采用哈希鏈?zhǔn)奖泶鎯?chǔ)方式進(jìn)行資源池管理;
[0021] (7)瓦片資源輸出,將資源調(diào)度返回的瓦片對(duì)象流輸出到步驟(3)中的請(qǐng)求路徑。
[0022] 而且,所述步驟(4)中④根據(jù)線程執(zhí)行任務(wù)的具體方法為:
[0023] A、格式化瓦片映射唯一標(biāo)識(shí)為:瓦片的服務(wù)器文件夾物理路徑\瓦片層級(jí)數(shù)\瓦 片所在的行數(shù)\瓦片所在的列數(shù);
[0024] B、通過資源調(diào)度對(duì)象,訪問資源池,執(zhí)行步驟(5)。
[0025] 而且,所述步驟(5)中②訪問資源池的物理路徑的方法為:如果沒有從資源池緩 存中找到瓦片對(duì)象,那么將通過步驟(4)中④的格式化請(qǐng)求路徑去物理存儲(chǔ)硬盤中讀取并 創(chuàng)建瓦片對(duì)象,最后返回給資源調(diào)度對(duì)象,同時(shí)將該瓦片對(duì)象添加到資源池內(nèi)存里。
[0026] 而且,所述步驟(6)使用緩存管理算法,采用哈希鏈?zhǔn)奖泶鎯?chǔ)方式進(jìn)行資源池管 理的具體方法為;
[0027] ①將最近請(qǐng)求的瓦片從物理存儲(chǔ)加載到資源池緩存鏈表頭部;
[0028] ②每當(dāng)緩存瓦片對(duì)象數(shù)據(jù)被訪問,則將瓦片對(duì)象數(shù)據(jù)移到鏈表頭部;
[0029] ③當(dāng)鏈表滿的時(shí)候,將鏈表尾部的瓦片對(duì)象數(shù)據(jù)丟棄。
[0030] 本發(fā)明的優(yōu)點(diǎn)和積極效果是:
[0031] 1、采用本發(fā)明方法編制的程序?yàn)檩p量級(jí)服務(wù),安裝文件小。
[0032] 2、本發(fā)明方法訪問路徑簡單明了。
[0033] 3、通過本發(fā)明的線程池管理,支持大并發(fā)的處理,響應(yīng)速度效果明顯提高。
【專利附圖】
【附圖說明】
[0034] 圖1是本發(fā)明所使用的部署瓦片服務(wù)的工作邏輯圖;
[0035] 圖2是本發(fā)明中請(qǐng)求接收器接收請(qǐng)求,并添加新任務(wù)的工作邏輯圖;
[0036] 圖3是本發(fā)明中資源池管理的方法示意圖。
【具體實(shí)施方式】
[0037] 以下結(jié)合附圖對(duì)本發(fā)明實(shí)施做進(jìn)一步詳述,以下實(shí)施例只是描述性的,不是限定 性的,不能以此限定本發(fā)明的保護(hù)范圍。
[0038] -種地圖瓦片數(shù)據(jù)的發(fā)布方法,如圖1所示,包括步驟如下:
[0039] (1)準(zhǔn)備瓦片地圖數(shù)據(jù);包括步驟有:
[0040] ①將地圖數(shù)據(jù)進(jìn)行切片,并將切片的地圖數(shù)據(jù)進(jìn)行存儲(chǔ),存儲(chǔ)路徑格式依次為: 瓦片業(yè)務(wù)命名,瓦片所在層級(jí)命名,瓦片所在的行號(hào)命名及瓦片所在的列號(hào)命名,如:
[0041] C:\vec\Ll\R2\C3. png ;其中,vec代表瓦片業(yè)務(wù)命名,L1表示瓦片所在層級(jí)為1, R2表不瓦片所在的行號(hào)為2, C3表不瓦片所在的列號(hào)為3 ;
[0042] ②將瓦片數(shù)據(jù)文件夾保存到服務(wù)器硬盤的某個(gè)路徑下,如C: \vec ;
[0043] (2)定義請(qǐng)求瓦片的路徑(URL)格式,包括瓦片服務(wù)的工程名、瓦片服務(wù)統(tǒng)一 訪問風(fēng)格標(biāo)識(shí)、請(qǐng)求瓦片的層級(jí)、行號(hào)及列號(hào),如:http://IP地址:端口 /web工程名/ rest/1/2/3,其中,vec為web工程名即瓦片服務(wù)的工程名,rest為瓦片服務(wù)統(tǒng)一訪問風(fēng)格 標(biāo)識(shí),1為請(qǐng)求瓦片的層級(jí),2為請(qǐng)求瓦片的行號(hào),3為請(qǐng)求瓦片的列號(hào);
[0044] (3)瓦片資源請(qǐng)求,按(2)步驟中的路徑格式請(qǐng)求瓦片;
[0045] (4)請(qǐng)求接收器接收請(qǐng)求,并添加新任務(wù),如圖2所示,具體步驟如下:
[0046] ①判斷線程池中的基本線程池是否已滿,如果沒滿,將立刻創(chuàng)建一個(gè)新的線程來 執(zhí)行瓦片請(qǐng)求任務(wù),如果已滿,則進(jìn)入下個(gè)流程;
[0047] ②判斷線程池中的瓦片請(qǐng)求任務(wù)隊(duì)列是否已滿,如果沒滿,則將新提交的瓦片請(qǐng) 求任務(wù)存儲(chǔ)在瓦片請(qǐng)求任務(wù)隊(duì)列里,如果已滿,則進(jìn)入下個(gè)流程;
[0048] ③判斷線程池中的所有線程是否已滿,如果沒滿,將創(chuàng)建一個(gè)新的線程來執(zhí)行瓦 片請(qǐng)求任務(wù),如果已滿,則拋出異常并記錄日志;
[0049] ④根據(jù)線程執(zhí)行任務(wù);
[0050] A、格式化瓦片映射唯一標(biāo)識(shí)為:瓦片的服務(wù)器文件夾物理路徑\瓦片層級(jí)數(shù)\瓦 片所在的行數(shù)\瓦片所在的列數(shù),如(C:\vec\Ll\R2\C3. png)
[0051] B、通過資源調(diào)度對(duì)象,訪問資源池,執(zhí)行步驟(5)
[0052] (5)資源調(diào)度訪問資源池,步驟為:
[0053] ①訪問資源池內(nèi)存,資源池調(diào)用方法首先到資源池的內(nèi)存中查找瓦片對(duì)象,如果 內(nèi)存中有瓦片對(duì)象,將直接從該資源池內(nèi)存中取得瓦片對(duì)象并返回給資源調(diào)度對(duì)象
[0054] ②訪問資源池的物理路徑,如果沒有從資源池緩存中找到瓦片對(duì)象,那么將通過 (4)中④的格式化請(qǐng)求路徑去物理存儲(chǔ)硬盤中讀取并創(chuàng)建瓦片對(duì)象,最后返回給資源調(diào)度 對(duì)象,同時(shí)將該瓦片對(duì)象添加到資源池內(nèi)存里;
[0055] (6)資源池管理,如圖3所示,應(yīng)用最近最少使用(LRU)緩存管理算法,采用哈希鏈 式表(LinkedHashMap)存儲(chǔ)方式進(jìn)行資源池管理;
[0056] ①將最近請(qǐng)求的瓦片從物理存儲(chǔ)加載到資源池緩存鏈表頭部;
[0057] ②每當(dāng)緩存瓦片對(duì)象數(shù)據(jù)被訪問,則將瓦片對(duì)象數(shù)據(jù)移到鏈表頭部;
[0058] ③當(dāng)鏈表滿的時(shí)候,將鏈表尾部的瓦片對(duì)象數(shù)據(jù)丟棄;
[0059] (7)瓦片資源輸出,將資源調(diào)度返回的瓦片對(duì)象流輸出到步驟(3)中的請(qǐng)求路徑。
[0060] 實(shí)例
[0061] (1)準(zhǔn)備瓦片地圖數(shù)據(jù)
[0062] ①將地圖數(shù)據(jù)進(jìn)行切片,存儲(chǔ)路徑格式為C: \vec\Ll\R2\C3. png ;
[0063] ②將瓦片數(shù)據(jù)文件夾保存到服務(wù)器硬盤的C: \vec路徑下;
[0064] (2)定義請(qǐng)求瓦片的路徑(URL)格式
[0065] 路徑:http://10. 120. 20. 244:7001/vec/rest/l/2/3
[0066] (3)瓦片資源請(qǐng)求,按⑵步驟中路徑格式請(qǐng)求瓦片,同時(shí)發(fā)送100個(gè)請(qǐng)求
[0067] (4)每個(gè)請(qǐng)求被接收后將分別執(zhí)行以下相同操作
[0068] ①判斷線程池中的基本線程是否已滿,如果沒滿,將立刻創(chuàng)建一個(gè)新的線程來執(zhí) 行瓦片請(qǐng)求任務(wù),如果已滿,則進(jìn)入下個(gè)流程。
[0069] ②判斷線程池中的瓦片請(qǐng)求任務(wù)隊(duì)列是否已滿,如果沒滿,則將新提交的瓦片請(qǐng) 求任務(wù)存儲(chǔ)在瓦片請(qǐng)求任務(wù)隊(duì)列里,如果已滿,則進(jìn)入下個(gè)流程。
[0070] ③判斷線程池中的所有線程是否已滿,如果沒滿,將創(chuàng)建一個(gè)新的線程來執(zhí)行瓦 片請(qǐng)求任務(wù),如果已滿,則拋出異常并記錄日志。
[0071] ④線程執(zhí)行任務(wù),
[0072] A,格式化瓦片映射唯一標(biāo)識(shí)為:瓦片的服務(wù)器文件夾物理路徑\瓦片層級(jí)\瓦片 所在的行數(shù)\瓦片所在的列數(shù),如(C:\vec\Ll\R2\C3. png)
[0073] B,通過資源調(diào)度對(duì)象,訪問資源池,執(zhí)行(5)
[0074] (5)資源調(diào)度訪問資源池,資源池調(diào)用方法到資源池的內(nèi)存中查找瓦片對(duì)象,如果 內(nèi)存中已經(jīng)存在上述(4)中請(qǐng)求的瓦片對(duì)象,將直接取出返回,如果有的請(qǐng)求瓦片對(duì)象在 內(nèi)存中沒有,將去物理地址獲取瓦片對(duì)象;
[0075] (6)資源池管理,如圖3所示,應(yīng)用最近最少使用(LRU)緩存管理算法,采用哈希鏈 式表(LinkedHashMap)存儲(chǔ)方式;
[0076] (7)瓦片資源輸出,將資源調(diào)度返回的瓦片對(duì)象流輸出到(3)中的請(qǐng)求路徑。
[0077] 效果
[0078] 使用一款并發(fā)測(cè)試工具(jmeter)測(cè)試,對(duì)平臺(tái)的并發(fā)能力進(jìn)行了測(cè)試,測(cè)試表 明,本瓦片服務(wù)在并發(fā)1000的時(shí)候平均返回時(shí)間14毫秒,ArcGISServer的平均返回時(shí)間 18毫秒。
【權(quán)利要求】
1. 一種地圖瓦片數(shù)據(jù)的發(fā)布方法,其特征在于包括步驟如下: (1) 準(zhǔn)備瓦片地圖數(shù)據(jù);具體包括步驟有: ① 將地圖數(shù)據(jù)進(jìn)行切片,并將切片的地圖數(shù)據(jù)進(jìn)行存儲(chǔ),存儲(chǔ)路徑格式依次為:瓦片 業(yè)務(wù)命名,瓦片所在層級(jí)命名,瓦片所在的行號(hào)命名及瓦片所在的列號(hào)命名; ② 將瓦片數(shù)據(jù)文件夾保存到服務(wù)器硬盤的路徑下; (2) 定義請(qǐng)求瓦片的路徑格式,包括瓦片服務(wù)的工程名、瓦片服務(wù)統(tǒng)一訪問風(fēng)格標(biāo)識(shí)、 請(qǐng)求瓦片的層級(jí)、行號(hào)及列號(hào); (3) 按上述步驟中的路徑格式請(qǐng)求瓦片; (4) 請(qǐng)求接收器接收請(qǐng)求,并添加新任務(wù),具體方法為: ① 判斷線程池中的基本線程池是否已滿,如果沒滿,將立刻創(chuàng)建一個(gè)新的線程來執(zhí)行 瓦片請(qǐng)求任務(wù),如果已滿,則進(jìn)入下個(gè)流程; ② 判斷線程池中的瓦片請(qǐng)求任務(wù)隊(duì)列是否已滿,如果沒滿,則將新提交的瓦片請(qǐng)求任 務(wù)存儲(chǔ)在瓦片請(qǐng)求任務(wù)隊(duì)列里,如果已滿,則進(jìn)入下個(gè)流程; ③ 判斷線程池中的所有線程是否已滿,如果沒滿,將創(chuàng)建一個(gè)新的線程來執(zhí)行瓦片請(qǐng) 求任務(wù),如果已滿,則拋出異常并記錄日志; ④ 根據(jù)線程執(zhí)行任務(wù); (5) 資源調(diào)度訪問資源池,具體方法為: ① 訪問資源池內(nèi)存,資源池調(diào)用方法首先到資源池的內(nèi)存中查找瓦片對(duì)象,如果內(nèi)存 中有瓦片對(duì)象,將直接從該資源池內(nèi)存中取得瓦片對(duì)象并返回給資源調(diào)度對(duì)象; ② 如果沒有從資源池緩存中找到瓦片對(duì)象,將訪問資源池的物理路徑; (6) 使用緩存管理算法,采用哈希鏈?zhǔn)奖泶鎯?chǔ)方式進(jìn)行資源池管理; (7) 瓦片資源輸出,將資源調(diào)度返回的瓦片對(duì)象流輸出到步驟(3)中的請(qǐng)求路徑。
2. 根據(jù)權(quán)利要求1所述的地圖瓦片數(shù)據(jù)的發(fā)布方法,其特征在于:所述步驟(4)中④ 根據(jù)線程執(zhí)行任務(wù)的具體方法為: A、 格式化瓦片映射唯一標(biāo)識(shí)為:瓦片的服務(wù)器文件夾物理路徑\瓦片層級(jí)數(shù)\瓦片所 在的行數(shù)\瓦片所在的列數(shù); B、 通過資源調(diào)度對(duì)象,訪問資源池,執(zhí)行步驟(5)。
3. 根據(jù)權(quán)利要求1或2所述的地圖瓦片數(shù)據(jù)的發(fā)布方法,其特征在于:所述步驟(5)中 ②訪問資源池的物理路徑的方法為:如果沒有從資源池緩存中找到瓦片對(duì)象,那么將通過 步驟(4)中④的格式化請(qǐng)求路徑去物理存儲(chǔ)硬盤中讀取并創(chuàng)建瓦片對(duì)象,最后返回給資源 調(diào)度對(duì)象,同時(shí)將該瓦片對(duì)象添加到資源池內(nèi)存里。
4. 根據(jù)權(quán)利要求1所述的地圖瓦片數(shù)據(jù)的發(fā)布方法,其特征在于:所述步驟(6)使用 緩存管理算法,采用哈希鏈?zhǔn)奖泶鎯?chǔ)方式進(jìn)行資源池管理的具體方法為; ① 將最近請(qǐng)求的瓦片從物理存儲(chǔ)加載到資源池緩存鏈表頭部; ② 每當(dāng)緩存瓦片對(duì)象數(shù)據(jù)被訪問,則將瓦片對(duì)象數(shù)據(jù)移到鏈表頭部; ③ 當(dāng)鏈表滿的時(shí)候,將鏈表尾部的瓦片對(duì)象數(shù)據(jù)丟棄。
【文檔編號(hào)】G06F17/30GK104156482SQ201410424596
【公開日】2014年11月19日 申請(qǐng)日期:2014年8月26日 優(yōu)先權(quán)日:2014年8月26日
【發(fā)明者】高勇, 趙光俊, 朱傳晶, 劉萬龍 申請(qǐng)人:天津市普迅電力信息技術(shù)有限公司