本發(fā)明涉及遙感影像瓦片式加載方法,具體涉及一種基于五層十五級的遙感影像瓦片式加載方法。用于實現(xiàn)多時相、多來源的五層十五級瓦片數(shù)據(jù)的快速加載。
背景技術(shù):
遙感影像瓦片式加載是GIS領(lǐng)域中的重要研究內(nèi)容,傳統(tǒng)的瓦片金字塔模型不能將多源異構(gòu)的遙感影像數(shù)據(jù)進行統(tǒng)一的存儲和管理,不能良好的支持的多時相、來源的遙感影像的同時加載,五層十五級瓦片數(shù)據(jù)組織模型可以很好的解決多源異構(gòu)遙感影像統(tǒng)一存儲和管理的難題,同時瓦片緩存置換策略通常被用于提高瓦片的加載效率,常用的瓦片緩存置換策略包括FIFO(先進先出),LFU(最近最少使用),LRU(近期最少使用)等。
本發(fā)明中涉及到的名詞解釋。
GIS(Geographic Information System)有時又稱為“地學信息系統(tǒng)”。它是一種特定的十分重要的空間信息系統(tǒng)。它是在計算機硬、軟件系統(tǒng)支持下,對整個或部分地球表層(包括大氣層)空間中的有關(guān)地理分布數(shù)據(jù)進行采集、儲存、管理、運算、分析、顯示和描述的技術(shù)系統(tǒng)。
瓦片金字塔模型是一種多分辨率層次模型,每層細分為大小相等的矩陣瓦片,瓦片包含固定數(shù)據(jù)的采樣點。目前絕大多數(shù)金字塔模型采用倍率的方法進行構(gòu)建,使用此種構(gòu)建方法可以形成多個分辨率或者多個比例尺。金字塔模型中,在一定的地理范圍內(nèi),隨著層級的不斷降低,其所代表的分辨率也越來越高,各層分辨率與層級的關(guān)系可以用一個公式來表示。
五層十五級數(shù)據(jù)組織模型是傳統(tǒng)的瓦片金字塔模型的一種改進,該數(shù)據(jù)組織方式摒棄了傳統(tǒng)金字塔模型中四叉樹的切分標準,制定了五層十五級的分級標準,該分級標準從大的范圍劃分為五層,每一層又從小的范圍劃分為三個層級,總共十五級。
瓦片緩存置換策略是指示系統(tǒng)緩存中哪些緩存應該被刪除的策略。
技術(shù)實現(xiàn)要素:
本發(fā)明的目的是為克服現(xiàn)有技術(shù)存在的問題,提供一種基于五層十五級的遙感影像瓦片式加載方法。
本發(fā)明所采用的技術(shù)方案如下:
基于五層十五級的多時相遙感影像瓦片式加載方法,包括如下步驟:
步驟1:客戶端發(fā)送包含顯示范圍及層級的瓦片元數(shù)據(jù)請求;
步驟2:客戶端接收返回的瓦片元數(shù)據(jù)信息并生成瓦片選擇控件;
步驟3:客戶端依據(jù)用戶選擇的瓦片確定瓦片數(shù)據(jù)來源;
步驟4:客戶端加載瓦片數(shù)據(jù)并更新緩存索引。
上述技術(shù)方案中,各步驟可采用如下優(yōu)選方式:
所述的步驟1)包括:
1.1)獲取地圖容器當前地圖顯示范圍以及顯示層級:地圖左上角坐標為(LeftLat,LeftLon),右下角坐標為(RightLat,RightLon),顯示層級為Z;
1.2)計算地圖顯示范圍的起訖行列號:根據(jù)步驟(1)中的左上角和右下角坐標得到當前屏幕范圍的起訖行列號startx、starty、endx和endy,計算公式為:
row=(x+90°)/d
col=(y+180°)/d
其中row代表行號,col代表列號,x、y分別代表坐標點的經(jīng)度、緯度,d代表分割間度;
1.3)客戶端向服務器發(fā)送包含層級、行列號信息的元數(shù)據(jù)請求。
所述的步驟2)包括:
2.1)客戶端接收服務器返回的瓦片元數(shù)據(jù)信息;
2.2)客戶端依據(jù)瓦片元數(shù)據(jù)信息中每個瓦片的產(chǎn)品名稱和生產(chǎn)時間生成瓦片選擇控件。
所述的步驟3)包括:
3.1)客戶端根據(jù)瓦片名稱檢索本地緩存索引,判斷是否存在客戶端緩存;
3.2)若客戶端存在瓦片緩存,讀取緩存瓦片文件;若不存在,向服務器端請求該瓦片。
所述的步驟4)包括:。
4.1)客戶端加載顯示上一步驟返回的瓦片數(shù)據(jù);
4.2)若上一步驟加載的瓦片來自本地緩存,更新本地緩存索引;更新last_access_time為客戶端系統(tǒng)當前時間,access_times自增1;
4.3)若上一步加載的瓦片數(shù)據(jù)來自服務器,判斷緩存空間是否已滿,若未滿,將瓦片數(shù)據(jù)本地化緩存,并插入緩存索引,其中row_num為瓦片的行號,column為列號,level_num為瓦片層級,product為瓦片產(chǎn)品類型,tile_size為瓦片文件大小,data_time為瓦片生產(chǎn)時間,create_time為瓦片首次存儲時間,last_access_time為瓦片最后一次讀取時間,access_times為瓦片讀取次數(shù),geometry為瓦片顯示范圍;
4.4)繼續(xù)上一步,若緩存空間已滿,則執(zhí)行瓦片緩存置換,刪除部分瓦片數(shù)據(jù),具體為根據(jù)瓦片價值公式,計算每個瓦片的緩存價值,對所有緩存瓦片進行排序,刪除瓦片緩存價值較低瓦片,然后插入服務器返回瓦片索引,瓦片價值公式為:V(i)=0.03×Vspatial(i)+0.03×Vtime(i)+0.7×Vsize(i)+0.12×Vproduct(i)+0.12×Vdata_time(i)
上式中,V(i)代表瓦片的空間數(shù)據(jù)價值,Vspatial(i)、Vtime(i)、Vsize(i)分別代表瓦片的空間價值、時間價值、文件大小價值,Vproduct(i)代表瓦片的產(chǎn)品類型價值,Vdata_time(i)代表瓦片的生產(chǎn)時間價值;各變量值計算方法如下:
Vspatial(i)=Area(i)/D(i)
其中:Area(i)為瓦片數(shù)據(jù)有效范圍的面積,D(i)為瓦片的數(shù)據(jù)距離,并且0≤Area(i)<1時,設定Area(i)為1,當0≤D(i)<1時,設定D(i)=1;
Vtime(i)=1/(current_time-store_time(i))/(access_count(i))
其中:current_time為系統(tǒng)當前時間,store_time(i)為瓦片首次存儲時間,access_count(i)為瓦片被訪問次數(shù);
Vsize(i)=1/(size(i))/(benchmark_size)+1
其中:size(i)為瓦片數(shù)據(jù)大小,benchmark_size為基準數(shù)據(jù),基準數(shù)據(jù)為緩存瓦片數(shù)據(jù)的平均值;
Vproduct(i)=(count(p))/count
其中:count代表瓦片緩存總個數(shù),count(p)代表該產(chǎn)品類型在緩存中的總個數(shù);
Vdata_time(i)=(count(d))/count
其中:count(d)代表同一生產(chǎn)時間的瓦片在緩存中的總個數(shù)。
本發(fā)明與現(xiàn)有技術(shù)相比具有有益效果:
第一,實現(xiàn)了多時相、多來源的遙感影像瓦片式加載,使得用戶同時瀏覽、獲取不同來源、時期的遙感影像成為可能;
第二,提高了五層十五級瓦片在客戶端的加載效率,降低了客戶端內(nèi)存和流量的消耗;
附圖說明
圖1為本發(fā)明基于五層十五級的遙感影像瓦片式加載流程示意圖;
圖2為本發(fā)明客戶端五層十五級瓦片緩存索引示意圖;
具體實施方式
下面結(jié)合附圖和實施例,對本發(fā)明的具體實施方式作進一步詳細描述。
圖1是本發(fā)明的基于五層十五級的遙感影像瓦片式加載流程圖。如圖1所示,本發(fā)明的方法包括以下步驟:
而本實施例中,各步驟的具體實現(xiàn)如下:
步驟1:客戶端發(fā)送包含顯示范圍及層級的瓦片元數(shù)據(jù)請求;具體包括:
1.1)獲取地圖容器當前地圖顯示范圍以及顯示層級。假定地圖左上角坐標為(LeftLat,LeftLon)右下角坐標為(RightLat,RightLon),顯示層級為Z;
1.2)計算地圖顯示范圍的起訖行列號。將步驟(1)中的左上角和右下角坐標代入下面公式,得到當前屏幕范圍的起訖行列號startx,starty,endx,endy
row=(x+90°)/d
col=(y+180°)/d
其中row代表行號,col代表列號,x、y代表坐標點的經(jīng)緯度,d代表分割間度,d可由五層十五級標準層級模式表(如表1)根據(jù)層級Z獲得;
表1 五層十五級標準層級模式
1.3)客戶端向服務器發(fā)送包含層級、行列號信息的元數(shù)據(jù)請求;
步驟2:客戶端接收返回的瓦片元數(shù)據(jù)信息并生成瓦片選擇控件;具體包括:
2.1)客戶端接收服務器返回的瓦片元數(shù)據(jù)信息。服務器端返回的數(shù)據(jù)示例:["GF1_WFV3_20141220_1_8_478_1199.png","GF1_WFV3_20141220_1_8_477_1199.png","GF1_WFV3_20141220_1_8_478_1200.png","GF1_WFV3_20141225_1_8_477_1199.png"];
2.2)客戶端依據(jù)瓦片元數(shù)據(jù)信息中每個瓦片的產(chǎn)品名稱和生產(chǎn)時間生成瓦片選擇控件。如GF1_WFV3_20141220_1_8_478_1199.png,其產(chǎn)品類型為GF-1,生產(chǎn)時間為2014年12月20日。
步驟3:客戶端依據(jù)用戶選擇的瓦片確定瓦片數(shù)據(jù)來源;具體包括:
3.1)客戶端根據(jù)瓦片名稱檢索本地緩存索引,緩存索引如附圖2所示,判斷是否存在客戶端緩存;
3.2)若客戶端存在瓦片緩存,讀取緩存瓦片文件;若不存在,向服務器端請求該瓦片。
步驟4:客戶端加載瓦片數(shù)據(jù)并更新緩存索引;具體包括:
4.1)客戶端加載顯示上一步驟返回的瓦片數(shù)據(jù);
4.2)若上一步驟加載的瓦片來自本地緩存,更新本地緩存索引;更新last_access_time為客戶端系統(tǒng)當前時間,access_times自增1;
4.3)若上一步加載的瓦片數(shù)據(jù)來自服務器,判斷緩存空間是否已滿,若未滿,將瓦片數(shù)據(jù)本地化緩存,并插入緩存索引,其中row_num為瓦片的行號,column為列號,level_num為瓦片層級,product為瓦片產(chǎn)品類型,tile_size為瓦片文件大小,data_time為瓦片生產(chǎn)時間,create_time為瓦片首次存儲時間,last_access_time為瓦片最后一次讀取時間,access_times為瓦片讀取次數(shù),geometry為瓦片顯示范圍;
4.4)繼續(xù)上一步,若緩存空間已滿,則執(zhí)行瓦片緩存置換,刪除部分瓦片數(shù)據(jù),具體方法為:根據(jù)瓦片價值計算公式,計算每個瓦片的緩存價值,對所有緩存瓦片進行排序,刪除瓦片緩存價值較低瓦片,然后插入服務器返回瓦片索引。瓦片價值公式:V(i)=0.03×Vspatial(i)+0.03×Vtime(i)+0.7×Vsize(i)+0.12×Vproduct(i)+0.12×Vdata_time(i)
上式中,V(i)代表瓦片的空間數(shù)據(jù)價值,Vspatial(i)、Vtime(i)、Vsize(i)分別代表瓦片的空間價值、時間價值、文件大小價值,Vproduct(i)代表瓦片的產(chǎn)品類型價值。Vdata_time(i)代表瓦片的生產(chǎn)時間價值。各變量值計算方法如下:
Vspatial(i)=Area(i)/D(i)
Area(i)為瓦片數(shù)據(jù)有效范圍的面積,D(i)為瓦片的數(shù)據(jù)距離,并且規(guī)定0≤Area(i)<1時,設定Area(i)為1,當0≤D(i)<1時,設定D(i)=1。Vtime(i)=1/(curr
ent_time-store_time(i))/(access_count(i))
current_time為系統(tǒng)當前時間,store_time(i)為瓦片首次存儲時間,access_count(i)為瓦片被訪問次數(shù)。
Vsize(i)=1/(size(i))/(benchmark_size)+1
size(i)為瓦片數(shù)據(jù)大小,benchmark_size為基準數(shù)據(jù),基準數(shù)據(jù)為緩存瓦片數(shù)據(jù)的平均值。
Vproduct(i)=(count(p))/count
count代表瓦片緩存總個數(shù),count(p)代表該產(chǎn)品類型在緩存中的總個數(shù)。
Vdata_time(i)=(count(d))/count
count代表瓦片緩存總個數(shù),count(d)代表同一生產(chǎn)時間的瓦片在緩存中的總個數(shù)。
本發(fā)明提出的方法利用五層十五級瓦片數(shù)據(jù)組織模型,實現(xiàn)了多時相、來源的遙感影像瓦片式加載,并且針對五層十五級瓦片的數(shù)據(jù)特點,設計了一套瓦片緩存置換策略,其提高了瓦片加載的效率。