本發(fā)明涉及林地專題圖瓦片快速生成技術(shù)。尤其涉及一種云環(huán)境下林地專題圖瓦片快速生成技術(shù)。
背景技術(shù):
林地?cái)?shù)據(jù)反映了森林資源現(xiàn)狀和變化情況,是制定我國生態(tài)建設(shè)管理決策的重要依據(jù)。自上世紀(jì)70年代我國建立了三級(jí)森林資源監(jiān)測管理調(diào)查體系以來,獲得了大量森林資源的可靠數(shù)據(jù),為我國林地資源監(jiān)管做出了重要貢獻(xiàn)。而隨著國家林業(yè)局全國林地“一張圖”系統(tǒng)的推進(jìn),林地落界數(shù)據(jù)匯總工作的完成,其中僅林地落界專題圖數(shù)據(jù)就達(dá)6738.88萬條。
而為了顯示這些林地專題圖數(shù)據(jù),對(duì)其進(jìn)行瓦片生成必不可少,但傳統(tǒng)的林地專題圖瓦片生成技術(shù),大多是基于單機(jī)生成或基于手工拆分的多機(jī)瓦片生成,然而這樣的工作效率并不高效,且面對(duì)如今海量、多源投影的林地專題圖數(shù)據(jù)時(shí)往往不能勝任。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的目的是克服現(xiàn)有技術(shù)的不足,提供一種分布式云環(huán)境下林地專題圖瓦片快速生成方法。
為實(shí)現(xiàn)本發(fā)明目的,提供的技術(shù)方案如下:
1)用戶通過文件傳輸協(xié)議ftp方式將待處理的專題圖數(shù)據(jù)上傳至服務(wù)器數(shù)據(jù)節(jié)點(diǎn),通過系統(tǒng)終端將專題圖的數(shù)據(jù)路徑上傳至分布式文件系統(tǒng)HDFS集群中;
2)用戶從系統(tǒng)終端啟動(dòng)服務(wù)器數(shù)據(jù)節(jié)點(diǎn)上的林地專題圖投影與格式轉(zhuǎn)換處理功能,并輸入目標(biāo)投影的眾所周知的ID(WKID);
3)服務(wù)器數(shù)據(jù)節(jié)點(diǎn)上的林地專題圖投影與格式轉(zhuǎn)換處理功能啟動(dòng)后,在映射規(guī)約MapReduce并行處理框架下,將服務(wù)器數(shù)據(jù)節(jié)點(diǎn)上的林地專題圖數(shù)據(jù)轉(zhuǎn)換到統(tǒng)一的投影坐標(biāo)之下,并以眾所周知的文字形式WKT格式輸出;
4)用戶從系統(tǒng)終端啟動(dòng)服務(wù)器數(shù)據(jù)節(jié)點(diǎn)上的林地專題圖切割與柵格化功能,并輸入分層級(jí)數(shù);
5)服務(wù)器數(shù)據(jù)節(jié)點(diǎn)上的林地專題圖切割與柵格化功能啟動(dòng)后,在MapReduce并行處理框架下,通過讀取用戶輸入的分層級(jí)數(shù),將林地專題圖數(shù)據(jù)分割并柵格化為瓦片。
所述的步驟3)具體為:
3.1)、在MapReduce框架下,將林地專題圖數(shù)據(jù)數(shù)據(jù)源作為林地專題圖投影與格式轉(zhuǎn)換處理功能的輸入值;
3.2)、使用矢量文件讀寫工具OGR接口,注冊矢量格式驅(qū)動(dòng);
3.3)、打開林地專題圖數(shù)據(jù)源:
3.4)、解析源投影與目標(biāo)投影;
3.5)、建立OGR坐標(biāo)轉(zhuǎn)換對(duì)應(yīng)關(guān)系;
3.6)、幾何圖形數(shù)據(jù)投影坐標(biāo)轉(zhuǎn)換;
3.7)、以WKT格式輸出數(shù)據(jù)。
所述的步驟5)具體為:
5.1)、在MapReduce框架下,將經(jīng)過投影和格式轉(zhuǎn)換的林地專題圖數(shù)據(jù)作為林地專題圖切割與柵格化功能的輸入值;
5.2)、在Map階段,對(duì)于輸入的鍵值對(duì),獲取值中的林地專題圖多邊形geo,獲取該多邊形最小外包矩形env;設(shè)置瓦片最大級(jí)數(shù)zmax與瓦片最小級(jí)數(shù)zmin,對(duì)于每一個(gè)瓦片級(jí)數(shù)z,如果zmin<z<zmax,則執(zhí)行步驟5.3;
5.3)、對(duì)于瓦片級(jí)數(shù)z,計(jì)算該級(jí)數(shù)下瓦片邊長對(duì)應(yīng)實(shí)際地面長度a,并計(jì)算出env對(duì)應(yīng)的地圖行列號(hào)范圍:最小行號(hào)rmin,最大行號(hào)rmax,最小列號(hào)cmin,最大列號(hào)cmax,對(duì)于每一對(duì)行列號(hào)(r,c),如果rmin<r<rmax且cmin<c<cmax,則執(zhí)行步驟5.4與步驟5.5;
5.4)、對(duì)于行列號(hào)(r,c)所確定的網(wǎng)格,建立該網(wǎng)格所對(duì)應(yīng)正方形grid,并以該grid與geo求相交,獲取相交多邊形intersect;
5.5)、對(duì)于多邊形intersect,遍歷其WKT格式下的每一個(gè)點(diǎn)(pointx,pointy),并將其轉(zhuǎn)換為像素坐標(biāo)(pixelx,pixely),從而獲取多邊形intersect的像素邊界;將z、r、c作為鍵,將intersect作為值,輸出為Map階段的鍵值對(duì),其中,所述(pointx,pointy)表示點(diǎn)的x軸與y軸坐標(biāo),所述(pixelx,pixely)表示像素的x軸與y軸坐標(biāo);
5.6)、在Combine階段,MapReduce框架自動(dòng)對(duì)具有相同z、r、c鍵的像素邊界進(jìn)行合并,作為Reduce階段的輸入;
5.7)、在Reduce階段,對(duì)于輸入的鍵值對(duì),獲取值中像素邊界集合,根據(jù)像素邊界集合,采用非零纏繞規(guī)則填充,從而得到該鍵下的林地專題圖瓦片。
本發(fā)明與現(xiàn)有技術(shù)相比具有的有益效果:
1)實(shí)現(xiàn)了在MapReduce并行計(jì)算框架之下對(duì)多源投影的林地專題圖數(shù)據(jù)進(jìn)行目標(biāo)投影轉(zhuǎn)換;
2)實(shí)現(xiàn)了在MapReduce并行計(jì)算框架之下對(duì)林地專題圖數(shù)據(jù)進(jìn)行瓦片生成,其在Map階段進(jìn)行矢量多邊形分割,在Combine階段進(jìn)行相同瓦片的多邊形合并,在Reduce階段進(jìn)行矢量多邊形柵格化,其相比于現(xiàn)有的基于單機(jī)生成或基于手工拆分的多機(jī)瓦片生成具有處理速度快、執(zhí)行效率高的優(yōu)勢。隨著需要處理的林地專題圖數(shù)據(jù)的數(shù)量增多,瓦片級(jí)數(shù)的增大,該方法的優(yōu)勢將更加明顯,對(duì)于傳統(tǒng)方法無法處理的海量林地專題圖數(shù)據(jù),本方法可快速解決。
附圖說明
圖1是本發(fā)明中分布式云環(huán)境下林地專題圖瓦片快速生成方法的流程圖。
圖2是本發(fā)明中服務(wù)器數(shù)據(jù)節(jié)點(diǎn)執(zhí)行林地專題圖投影與格式轉(zhuǎn)換處理功能的流程圖。
圖3是本發(fā)明中服務(wù)器數(shù)據(jù)節(jié)點(diǎn)執(zhí)行林地專題圖切割與柵格化功能的流程圖。
圖4是本發(fā)明中以尤溪縣的林地專題圖數(shù)據(jù)生成瓦片的示例。
圖5本發(fā)明中(z=9,c=423,r=294)以及(z=10,c=847,r=589)處瓦片的實(shí)例。
具體實(shí)施方式
以下通過具體實(shí)施方式,并結(jié)合附圖對(duì)本發(fā)明作進(jìn)一步說明。
圖1示例性示出了本發(fā)明中分布式云環(huán)境下林地專題圖瓦片快速生成方法的流程圖。具體包括如下步驟:
1)用戶通過文件傳輸協(xié)議ftp方式將待處理的專題圖數(shù)據(jù)上傳至服務(wù)器數(shù)據(jù)節(jié)點(diǎn),通過系統(tǒng)終端將專題圖的數(shù)據(jù)路徑上傳至分布式文件系統(tǒng)HDFS集群中;
2)用戶從系統(tǒng)終端啟動(dòng)服務(wù)器數(shù)據(jù)節(jié)點(diǎn)上的林地專題圖投影與格式轉(zhuǎn)換處理功能,并輸入目標(biāo)投影的眾所周知的ID(WKID);
3)服務(wù)器數(shù)據(jù)節(jié)點(diǎn)上的林地專題圖投影與格式轉(zhuǎn)換處理功能啟動(dòng)后,在映射規(guī)約MapReduce并行處理框架下,將服務(wù)器數(shù)據(jù)節(jié)點(diǎn)上的林地專題圖數(shù)據(jù)轉(zhuǎn)換到統(tǒng)一的投影坐標(biāo)之下,并以眾所周知的文字形式WKT格式輸出;
4)用戶從系統(tǒng)終端啟動(dòng)服務(wù)器數(shù)據(jù)節(jié)點(diǎn)上的林地專題圖切割與柵格化功能,并輸入分層級(jí)數(shù);
5)服務(wù)器數(shù)據(jù)節(jié)點(diǎn)上的林地專題圖切割與柵格化功能啟動(dòng)后,在MapReduce并行處理框架下,通過讀取用戶輸入的分層級(jí)數(shù),將林地專題圖數(shù)據(jù)分割并柵格化為瓦片。
圖2示例性示出了本發(fā)明中服務(wù)器數(shù)據(jù)節(jié)點(diǎn)執(zhí)行林地專題圖投影與格式轉(zhuǎn)換處理功能的流程圖。具體為:
在MapReduce框架下,將林地專題圖數(shù)據(jù)數(shù)據(jù)源作為林地專題圖投影與格式轉(zhuǎn)換
處理功能的輸入值;
使用矢量文件讀寫工具OGR接口,注冊矢量格式驅(qū)動(dòng);
打開林地專題圖數(shù)據(jù)源;
解析源投影與目標(biāo)投影;
建立OGR坐標(biāo)轉(zhuǎn)換對(duì)應(yīng)關(guān)系;
幾何圖形數(shù)據(jù)投影坐標(biāo)轉(zhuǎn)換;
以WKT格式輸出數(shù)據(jù)。
圖3示例性示出了本發(fā)明中服務(wù)器數(shù)據(jù)節(jié)點(diǎn)執(zhí)行林地專題圖切割與柵格化功能的流程圖。具體為:
在MapReduce框架下,將經(jīng)過投影和格式轉(zhuǎn)換的林地專題圖數(shù)據(jù)作為林地專題圖切割與柵格化功能的輸入值;
在Map階段,對(duì)于輸入的鍵值對(duì),獲取值中的林地專題圖多邊形geo,獲取該多邊形最小外包矩形env;設(shè)置瓦片最大級(jí)數(shù)zmax與瓦片最小級(jí)數(shù)zmin,對(duì)于每一個(gè)瓦片級(jí)數(shù)z,如果zmin<z<zmax,則執(zhí)行步驟5.3;
對(duì)于瓦片級(jí)數(shù)z,計(jì)算該級(jí)數(shù)下瓦片邊長對(duì)應(yīng)實(shí)際地面長度a,并計(jì)算出env對(duì)應(yīng)的地圖行列號(hào)范圍:最小行號(hào)rmin,最大行號(hào)rmax,最小列號(hào)cmin,最大列號(hào)cmax,對(duì)于每一對(duì)行列號(hào)(r,c),如果rmin<r<rmax且cmin<c<cmax,則執(zhí)行步驟5.4與步驟5.5;
對(duì)于行列號(hào)(r,c)所確定的網(wǎng)格,建立該網(wǎng)格所對(duì)應(yīng)正方形grid,并以該grid與geo求相交,獲取相交多邊形intersect;
對(duì)于多邊形intersect,遍歷其WKT格式下的每一個(gè)點(diǎn)(pointx,pointy),并將其轉(zhuǎn)換為像素坐標(biāo)(pixelx,pixely),從而獲取多邊形intersect的像素邊界;將z、r、c作為鍵,將intersect作為值,輸出為Map階段的鍵值對(duì),其中,所述(pointx,pointy)表示點(diǎn)的x軸與y軸坐標(biāo),所述(pixelx,pixely)表示像素的x軸與y軸坐標(biāo);
在Combine階段,MapReduce框架自動(dòng)對(duì)具有相同z、r、c鍵的像素邊界進(jìn)行合并,作為Reduce階段的輸入;
在Reduce階段,對(duì)于輸入的鍵值對(duì),獲取值中像素邊界集合,根據(jù)像素邊界集合,采用非零纏繞規(guī)則填充,從而得到該鍵下的林地專題圖瓦片。
圖4示出了本發(fā)明中以尤溪縣的林地專題圖數(shù)據(jù)生成瓦片的示例,具體為:
1)、通過文件傳輸協(xié)議ftp方式將尤溪縣林地專題圖數(shù)據(jù)上傳至服務(wù)器數(shù)據(jù)節(jié)點(diǎn)datanode1、datanode2、datanode3的/opt/shp目錄下,通過系統(tǒng)終端將林地專題圖路徑文件上傳至分布式文件系統(tǒng)HDFS集群的/shpInput目錄中;
2)、從系統(tǒng)終端啟動(dòng)服務(wù)器數(shù)據(jù)節(jié)點(diǎn)上的林地專題圖投影與格式轉(zhuǎn)換處理功能SHPTransform.jar,并輸入目標(biāo)投影的眾所周知的ID WKID:3857;
3)、服務(wù)器數(shù)據(jù)節(jié)點(diǎn)上的林地專題圖投影與格式轉(zhuǎn)換處理功能啟動(dòng)后,在映射規(guī)約MapReduce并行處理框架下,將服務(wù)器數(shù)據(jù)節(jié)點(diǎn)上的尤溪縣林地專題圖數(shù)據(jù)轉(zhuǎn)換到統(tǒng)一的投影坐標(biāo)(EPSG:3857)之下,并以眾所周知的文字形式WKT格式輸出到HDFS的/shpOutput目錄中;
4)、從系統(tǒng)終端啟動(dòng)服務(wù)器數(shù)據(jù)節(jié)點(diǎn)上的林地專題圖切割與柵格化功能TileMR.jar,并輸入分層級(jí)數(shù)8-11:
5)、服務(wù)器數(shù)據(jù)節(jié)點(diǎn)上的林地專題圖切割與柵格化功能啟動(dòng)后,在映射規(guī)約MapReduce并行處理框架下,通過讀取用戶輸入的分層級(jí)數(shù),將矢量數(shù)據(jù)分割并柵格化為瓦片,并將其以放大級(jí)數(shù)z、列號(hào)c、行號(hào)r存儲(chǔ)為鍵值存儲(chǔ)(如(z=9,c=423,r=294)位置瓦片,以及(z=10,c=847,r=589)位置瓦片)。
圖5示例性示出了本發(fā)明中(z=9,c=423,r=294)以及(z=10,c=847,r=589)處瓦片的實(shí)例。
以上列舉的僅是本發(fā)明的最佳具體實(shí)施例。顯然,本發(fā)明不限于以上實(shí)施例,還可以有許多變形。本領(lǐng)域的普通技術(shù)人員能從本發(fā)明公開的內(nèi)容直接導(dǎo)出或聯(lián)想到的所有變形,均應(yīng)認(rèn)為是本發(fā)明的保護(hù)范圍。