專利名稱:一種基于中值濾波的中分辨率遙感影像離散點(diǎn)dem構(gòu)建方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種中分辨率遙感影像離散點(diǎn)DEM構(gòu)建方法,更具體地說,涉及一種基于中值濾波的中分辨率遙感影像離散點(diǎn)DEM構(gòu)建方法。
背景技術(shù):
地表高程信息是地學(xué)研究的基礎(chǔ)數(shù)據(jù)之一,快速獲取、反演區(qū)域的高程信息一直是遙感信息反演的熱點(diǎn)。一方面,對(duì)地表形態(tài)變化快速的區(qū)域而言,分析不同時(shí)間段內(nèi)的地貌高程信息,可得出區(qū)域地貌的演化特征與規(guī)律,可為經(jīng)濟(jì)社會(huì)和自然環(huán)境的協(xié)調(diào)發(fā)展提供科學(xué)的決策依據(jù);另一方面,由于灘面泥濘、潮溝密布、潮灘沖淤多變、海況復(fù)雜,使得海岸帶潮灘高程測(cè)量成為地形測(cè)量中公認(rèn)的困難區(qū)域。目前通過航空、航天遙感可獲取大范圍地面高程信息,已形成較多的地表高程反演方法①Wehr A, Axelsson P,杜國慶等人分另U在《Airborne laser scanning :An introduction and overview. ISPRS Journal of Photogrammetry and Remote Sensing》, 《Airborne laser scanning :An introduction and overview. ISPRS Journal of Photogrammetry and Remote knsing》以及《LIDAR技術(shù)在江蘇沿海灘涂測(cè)繪中的應(yīng)用》 文章中利用LiDAR (Light Detection And Ranging,機(jī)載激光探測(cè)和測(cè)距系統(tǒng))進(jìn)行不同地區(qū)的高程信息反演,但由于LiDAR數(shù)據(jù)在淺水地區(qū)的測(cè)量精度不高,因此需要后期糾正;② Akira H, Stemphen G, Rabus B,金亞秋等人分別在《Mapping from ASTER stereo image data: DEM validation and accuracy assessments ((Extraction of topography from side-looking satellite systems: A case study with SPOT simulation data》、 ((The shuttle radar topography mission—a new class of digital elevation models acquired by spaceborne radar》以及《用合成孔徑雷達(dá)(SAR)單次飛行全極化圖像數(shù)據(jù)進(jìn)行地面數(shù)字高程(DEM)反演》等文章中,利用立體像對(duì)的航天遙感影像高程信息反演,但是數(shù)據(jù)源獲取難度大,成本高;③張鷹等人在《海岸帶潮灘土壤含水量遙感測(cè)量》一文中提出了一種基于潮灘含水量的高程信息反演的思想,建立潮灘高程與灘面沉積物含水量的相關(guān)關(guān)系,反演灘面沉積物含水量,近似得出潮灘高程,由于該方法需要實(shí)測(cè)衛(wèi)星同步的地面潮灘土壤信息,不易實(shí)現(xiàn)業(yè)務(wù)化操作;④黨福星在《利用多波段衛(wèi)星數(shù)據(jù)進(jìn)行淺海水深反演方法研究》,田慶久在《江蘇近海岸水深遙感研究》中從輻射傳輸理論方程、半理論半經(jīng)驗(yàn)的水深遙感模型、實(shí)測(cè)水深與像元輻射值相關(guān)模型等角度出發(fā)反演水底地形,由于衛(wèi)星成像機(jī)理復(fù)雜,反演精度不高。由于易變海岸帶的潮汐過程提供了衛(wèi)星成像時(shí)刻海岸帶潮灘高度的相關(guān)“隱性信息”即每日潮漲潮落揭示了遙感影像成像時(shí)刻潮灘水邊線的高度信息,如能在易變海岸帶潮灘高程信息反演過程中,挖掘衛(wèi)星成像時(shí)刻的隱性潮灘高度信息,將極大改善潮灘高程的反演精度,增強(qiáng)潮灘高程反演結(jié)果的細(xì)節(jié)信息。
發(fā)明內(nèi)容
發(fā)明要解決的技術(shù)問題
針對(duì)現(xiàn)有技術(shù)的不足,本發(fā)明提供了一種基于中值濾波的中分辨率遙感影像離散點(diǎn) DEM提取方法,它通過中值濾波的方法有效地利用了落在格網(wǎng)內(nèi)所有離散點(diǎn)的高程信息,提高了離散點(diǎn)高程精度。本發(fā)明的技術(shù)方案如下
原理根據(jù)遙感影像成像時(shí)刻潮位高程信息可知這一特點(diǎn),結(jié)合多期遙感影像水邊線數(shù)據(jù),通過等間隔離散得到多期水邊線離散點(diǎn),根據(jù)遙感影像分辨率對(duì)離散點(diǎn)進(jìn)行格網(wǎng)劃分,并以該格網(wǎng)對(duì)其進(jìn)行分區(qū)、標(biāo)記、提取中值,最后通過內(nèi)插得到DEM構(gòu)建結(jié)果?!N基于中值濾波的中分辨率遙感影像離散點(diǎn)DEM構(gòu)建方法,包括以下步驟 步驟1 計(jì)算衛(wèi)星成像時(shí)刻潮高信息,可以根據(jù)如下公式進(jìn)行遙感影像成像時(shí)刻潮位
信息的計(jì)算
(1)H=Hl0W+AX (l-C0S(t/TX180°)/2
(2)H=Hhi-AX (1-C0S(t/TX 180。)/2
式中,H為待插值衛(wèi)星成像時(shí)刻潮位,Hhi為對(duì)應(yīng)潮周期最高潮潮高,Hlow為對(duì)應(yīng)潮周期最低潮潮高,T為該潮周期漲潮歷時(shí),A為該潮周期潮差,t為待插值時(shí)刻與低潮時(shí)或高潮時(shí)的時(shí)間間隔。所述步驟1具體實(shí)現(xiàn)方法如下建立一個(gè)Access數(shù)據(jù)庫用以存儲(chǔ)各驗(yàn)潮站潮位信息,其存儲(chǔ)字段為ID、年、月、日、時(shí)、分、潮高、緯度以及經(jīng)度,提取遙感影像矢量水邊線,并以_YYYYMMDDHHMM. shp的方式命名,其中YYYY為年,匪為月,DD為天,HH為時(shí),匪為分,進(jìn)行遙感影像成像時(shí)刻潮位高度計(jì)算時(shí),先提取矢量水邊線名稱中的成像時(shí)間,并將GMT時(shí)間換算到東八區(qū)時(shí)間,按照步驟1中的公式進(jìn)行計(jì)算。步驟2 離散衛(wèi)星成像時(shí)刻提取的矢量水邊線,將衛(wèi)星成像時(shí)刻的水邊線根據(jù)其遙感影像分辨率進(jìn)行等間隔離散,得到一系列等間隔的離散點(diǎn),對(duì)該離散點(diǎn)shapefile文件新建一個(gè)字段,并將上述步驟計(jì)算所得的衛(wèi)星成像時(shí)刻潮位信息寫入離散點(diǎn)該文件字段,重復(fù)以上步驟直到所有水邊線被離散為帶有潮位信息的等距離散點(diǎn),即等距潮位點(diǎn)。所述步驟2中水邊線離散點(diǎn)生成實(shí)現(xiàn)步驟如下遍歷所有水邊線shp文件,每遍歷到一個(gè)新的水邊線Shp文件則生成一個(gè)投影信息與原Shp文件一致的點(diǎn)文件,再遍歷該水邊線Shp文件所有線性矢量記錄,針對(duì)每條矢量記錄,找到該矢量的起始節(jié)點(diǎn)Atl作為線段一個(gè)端點(diǎn),接著尋找矢量的下一個(gè)節(jié)點(diǎn)A1作為線段另一個(gè)端點(diǎn),計(jì)算該線段長度,如果大于給定的間隔L,則生成一個(gè)距離A0點(diǎn)長度為L的離散點(diǎn)Ntl,并將Ntl作為起始端點(diǎn),重復(fù)上述步驟直至線段長度小于或等于給定間隔時(shí)將Atl,及所有生成的Ntl,N1,……Nn點(diǎn)寫入遍歷開始時(shí)的點(diǎn)shp文件,判斷該矢量是否有下一個(gè)節(jié)點(diǎn),如果存在,則將A1置為線段起點(diǎn),A2置為線段終點(diǎn),重復(fù)上述步驟,直至矢量文件遍歷完成。步驟3 合并上述步驟離散的等間隔潮位點(diǎn),根據(jù)遙感影像分辨率構(gòu)建中值濾波的參考格網(wǎng),并對(duì)所有離散的等距潮位點(diǎn)進(jìn)行標(biāo)號(hào),標(biāo)明其所屬格網(wǎng)ID。所述步驟3中中值濾波格網(wǎng)構(gòu)建及離散點(diǎn)標(biāo)號(hào),具體實(shí)現(xiàn)步驟如下利用ArcGIS 軟件中的Merge命令將所有離散點(diǎn)shp文件合并成一個(gè)shp文件,并求取該點(diǎn)shp文件所有離散點(diǎn)的極值X、Y坐標(biāo),將其作為網(wǎng)格的邊界值,分析原始遙感影像空間分辨率S,并以其作為格網(wǎng)邊長,遍歷每一個(gè)格網(wǎng),將落入其中的離散點(diǎn)標(biāo)記出該格網(wǎng)的ID號(hào)。步驟4 遍歷所有格網(wǎng),針對(duì)各種不同情況采取下列操作
(1)如果該格網(wǎng)內(nèi)沒有被標(biāo)記的離散點(diǎn),則不采取任何操作,
(2)如果該格網(wǎng)內(nèi)被標(biāo)記的離散點(diǎn)個(gè)數(shù)為奇數(shù),設(shè)為2n+l,則將該格網(wǎng)內(nèi)所有離散點(diǎn)潮位信息從小到大排序,保留潮位信息中數(shù),即n+1點(diǎn),所對(duì)應(yīng)的離散點(diǎn),刪除其他離散點(diǎn),
(3)如果該格網(wǎng)內(nèi)被標(biāo)記的離散點(diǎn)個(gè)數(shù)為偶數(shù),設(shè)為2η,則將該格網(wǎng)內(nèi)所有離散點(diǎn)潮位信息從小到大排序,選取潮位信息最中間兩個(gè)離散點(diǎn),即η和n+1點(diǎn),對(duì)其地理方位,潮位信息進(jìn)行平均,生成一個(gè)新離散點(diǎn),刪除其他離散點(diǎn);
所述步驟4中處理過的離散點(diǎn)需要寫入一個(gè)新建的點(diǎn)shp文件中; 步驟5 在中值濾波結(jié)果的基礎(chǔ)上利用Erdas軟件的線性內(nèi)插命令構(gòu)建最終的DEM結(jié)果,所述步驟5中空間內(nèi)插是在Erdas軟件中利用反距離加權(quán)方法實(shí)現(xiàn)。有益效果
相比現(xiàn)有技術(shù),本發(fā)明實(shí)現(xiàn)了基于中值濾波的中分辨率遙感影像離散點(diǎn)DEM構(gòu)建的流程,引入了中值濾波的方法,提高了 DEM的構(gòu)建精度。具體有益效果如下
第一,本發(fā)明提高了 DEM構(gòu)建的精度。由于多數(shù)基于離散點(diǎn)的DEM構(gòu)建算法利用所有離散點(diǎn)信息,進(jìn)行DEM構(gòu)建時(shí)存在一定的隨機(jī)取舍;而本方法通過中值濾波的方法有效地利用了落在格網(wǎng)內(nèi)所有離散點(diǎn)的高程信息,提高了離散點(diǎn)高程精度;
第二,本發(fā)明降低了 DEM構(gòu)建的時(shí)間復(fù)雜度。由于多數(shù)基于離散點(diǎn)的DEM構(gòu)建算法利用所有離散點(diǎn)信息,數(shù)據(jù)量巨大,在進(jìn)行DEM構(gòu)建時(shí)需要進(jìn)行頻繁的數(shù)據(jù)空間查詢,并在構(gòu)建DEM時(shí)存在一定程度的隨機(jī)取舍,因此時(shí)間效率地下;而本方法通過中值濾波的方法有效地利用了落在格網(wǎng)內(nèi)所有離散點(diǎn)的高程信息,大大降低了離散點(diǎn)的數(shù)據(jù)量,提高了 DEM 構(gòu)建的時(shí)間效率;
綜上,本發(fā)明提高了現(xiàn)有中分辨率遙感影像離散點(diǎn)DEM構(gòu)建的正確率,降低了 DEM構(gòu)建的時(shí)間復(fù)雜度。實(shí)際應(yīng)用表明,通過本發(fā)明能夠快速、準(zhǔn)確地從多期水邊線數(shù)據(jù)中構(gòu)建精確的DEM,能夠?yàn)閲腋骷?jí)基礎(chǔ)地理信息數(shù)據(jù)庫DEM信息提供技術(shù)支撐,降低基礎(chǔ)地理信息數(shù)據(jù)庫的更新成本,提高數(shù)據(jù)更新的效率。
圖1為待反演DEM的水邊線矢量數(shù)據(jù)圖2為通過等距離散后的水邊線離散點(diǎn)提取結(jié)果圖; 圖3為通過中值濾波后的水邊線離散點(diǎn)提取結(jié)果圖; 圖4為DEM構(gòu)建結(jié)果圖。
具體實(shí)施例方式下面結(jié)合附圖對(duì)本發(fā)明做進(jìn)一步描述。實(shí)施例1
本實(shí)施例以江蘇省中部輻射沙洲為例,由于江蘇中部沿海大多屬于正規(guī)性半日潮,即在一個(gè)太陰日( 小時(shí)25分)中有兩次低潮和兩次高潮,相鄰的低潮或相鄰的高潮的潮高大體相等的潮汐現(xiàn)象,因此可收集陳家塢驗(yàn)潮站每日的高低潮潮時(shí)、潮高觀測(cè)數(shù)據(jù)。
采用附圖1所示遙感影像水邊線數(shù)據(jù)作為所有構(gòu)建DEM的參考數(shù)據(jù),共有34個(gè)水邊線矢量文件,獲取時(shí)間為2006年全年,所有水邊線數(shù)據(jù)均從Landsat TM、SPOT HRV, CBERS-2 CCDJRS-P6、AWiFS/LISS、Beijing-I CCD 以及 ERS-2 SAR 傳感器所得的遙感影像中獲取。采用C#編程語言在Visual Studio 2008平臺(tái)下實(shí)現(xiàn)本方法的5個(gè)步驟,矢量數(shù)據(jù)的讀寫操作通過開源地理數(shù)據(jù)格式轉(zhuǎn)換類庫GDAL 1. 60以及ArcEngine實(shí)現(xiàn)。步驟1 利用sql語句查詢得到與衛(wèi)星成像時(shí)刻最相鄰的兩個(gè)高低潮時(shí)刻,并計(jì)算高低潮時(shí)間差以及衛(wèi)星成像時(shí)刻與衛(wèi)星成像時(shí)刻最相近的后一時(shí)刻的時(shí)間差,根據(jù)步驟1 中的公式進(jìn)行計(jì)算,如果沒有計(jì)算結(jié)果,則賦值為-9999
//計(jì)算潮汐表中與衛(wèi)星成像時(shí)刻最相近的后一時(shí)刻
DateTime pTideStationTimeNow = DateTime. Parse (pDataTable[ii]. Rows[Now_ Index][〃 年 〃]·ToStringO + 〃-〃 + pDataTable[ii]·Rows[Now_Index][〃 月 〃]· ToStringO + 〃_〃 + pDataTable [ii]· Rows [Now—Index][〃日 〃]· ToStringO + 〃 〃 + pDataTable [ii] · Rows [Now—Index][〃時(shí) 〃]+ 〃〃 + pDataTable [ii] · Rows [Now—Index][〃 分〃]+ 〃 00〃);
//計(jì)算潮汐表中與衛(wèi)星成像時(shí)刻最相近的前一時(shí)刻
DateTime pTideStationTimeLast = DateTime. Parse(pDataTable[ii]. Rows[Now_ Index - 1]["年“]· ToString () + 〃-〃 + pDataTable [ii]. Rows [Now_Index - 1]["月 〃]· ToStringO + 〃_〃 + pDataTable [ii] · Rows [Now—Index - 1][〃日 〃]· ToString () + 〃 〃 + pDataTable [ii] · Rows [Now—Index - 1][〃時(shí)〃]+ 〃〃 + pDataTable [ii] · Rows [Now— Index - 1]["分“]+ ":00"); //計(jì)算衛(wèi)星成像時(shí)刻
DateTime pSatelliteTime = DateTime. Parse(year + 〃-〃 + month + 〃-〃 + day + ” ” + hour + "" + minute + ":00");
pSatelliteTime = pSatelliteTime. AddHours(8); Il計(jì)算高低潮時(shí)間差
System. TimeSpan NM = pTideStationTimeNow - pTideStationTimeLast;
double T = Math. Abs(NM. Minutes) + Math. Abs(NM. Hours) * 60;
//計(jì)算衛(wèi)星成像時(shí)刻與衛(wèi)星成像時(shí)刻最相近的后一時(shí)刻的時(shí)間差
NM = pTideStationTimeNow - pSatelliteTime;
double t = Math. Abs (NM. Minutes) + Math. Abs (NM. Hours) * 60;
double TempTide;
//根據(jù)公式計(jì)算衛(wèi)星成像時(shí)刻的潮高 if (t == 0) TempTide = Now—Tide;
else {
if (Last_Tide > Now_Tide)
TempTide = Last_Tide - (Last_Tide - Now_Tide) * (1 - Math. Cos((T - t) / T * 3. 1416)) / 2;else
TempTide = Now一Tide - (Now一Tide - Last_Tide) * (1 - Math. Cos(t / T *
3.1416)) / 2;
}
Tide. Add (TempTide);
ι
else
Tide. Add(-9999);
}
步驟2 :首先,利用IFeatureCursor進(jìn)行各矢量線段的遍歷,針對(duì)每個(gè)矢量線段新建長度為節(jié)點(diǎn)數(shù)的IPoint型數(shù)組用以存放每條矢量線段的節(jié)點(diǎn),再新建一個(gè)長度為節(jié)點(diǎn)數(shù)-1 的ILine型數(shù)組用于存放該矢量線段的各條直線段,根據(jù)最小劃分閾值遍歷直線段,劃分線元,并將得到的離散點(diǎn)插入新的shapefile文件中,所得結(jié)果如圖2所示,其實(shí)現(xiàn)的核心代碼為
/氺氺氺氺氺氺氺氺氺氺氺iliiJ/Jcii^iP^^S-^h氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺/
//利用as實(shí)現(xiàn)多態(tài)IGeometry即shape向Ipolyline的轉(zhuǎn)換 IPolyline pffaterline = pFeature. Shape as IPolyline; //在Ipolyline工廠里利用IPolyline對(duì)象去訪問IPointCollection4對(duì)象 IPointCollection4 pffaterline_points = pffaterline as IPointCollection4; Il建立一個(gè)存放點(diǎn)的數(shù)組
IPoint [] points = new IPoint[pWaterline—points. PointCount]; IGeometryBridge geometryBridge = new GeometryEnvironmentClassO ;
for (int i = 0; i < points. Length; i++)
{
points [i] = new PointClass (); }
Il將pointcollection中的點(diǎn)讀到points數(shù)組中去 geometryBridge. QueryPoints(pffaterline_points, O, ref points);
/氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺氺/
//為每一條水邊線段建立一個(gè)存放直線段的數(shù)組,并記錄相鄰兩點(diǎn)的直線段 ILine [] Waterline_line_array = new ILine[pWaterline—points. PointCount -
1];
for (int i = 0; i < (pWaterline—points· PointCount - 1); i++)
{
Waterline_line_array[i] = new LineClass(); Il用水邊線的相鄰兩點(diǎn)構(gòu)建直線段
Waterline_line_array[i]. PutCoords (points[i], points [i + 1]);
ιIl此處才是真正將第一個(gè)點(diǎn)寫入Shp中
if(Waterline—line—array
. Length〈2000)
{
OBJ = point_featureCursor. InsertFeature(point_featurebuffer); point—featureCursor· Flush ();
ι
//用水邊線的各個(gè)點(diǎn)來構(gòu)建直線段
for (int j = 0; j < points.Length - 1; j++)
{
if (Waterline_line_array[j]. Length < 2000)
{
//記錄已經(jīng)被劃分的直線段的長度 double Water1ine_line_length = 0; Il記錄劃分直線段線元的編號(hào) int t = 0;
Il遍歷直線段,劃分線元
while (Water1ine_line_length < Waterline_line_array[j]. Length)
{
//如果剩下的直線段已經(jīng)不夠再劃分這個(gè)線元,那就用剩下的直線段來作為這個(gè)線元
if ((Waterline_line_array[j]. Length - Water1ine_line_length) < EL)
{
ILine pline = new LineClass (); IPoint from—point = new PointClass (); IPoint to—point = new PointClass (); //注意每個(gè)線元的始末點(diǎn)劃分方法,即用上一個(gè)線元?jiǎng)澐值慕K點(diǎn)作為起點(diǎn),再加上該線元的長度EL
Waterline_line_array[j]. QueryPoint(esriSegmentExtension.esriNoExtension, Water1ine_line_length, false, from—point);
to—point = Waterline_line_array[j]. ToPoint;
TideDataset[index]. MapToPixel(to_point. X,to_point. Y,out pcolunm, out prow);
obj = TideDataset[index]. GetPixelValue (O, pcolunm, prow); point_featurebuffer. set—Value(point_featurebuffer. Fields. FindFieldByAlias Name (TideFieldName),obj);
point_featurebuffer. Shape = to—point;
OBJ = point_featureCursor. InsertFeature(point_featurebuffer); point—featureCursor· Flush ();
ι
Il否則,用計(jì)算出的該線元的長度劃分線段else
{
ILine pline = new LineClass (); IPoint from—point = new PointClass (); IPoint to—point = new PointClass (); Waterline_line_array[j]. QueryPoint(esriSegmentExtension. esriNoExtension, Water1ine_line_length, false, from—point);
Waterline_line_array[j]. QueryPoint(esriSegmentExtension. esriNoExtension, Water1ine_line_length + ELj false, to—point);
TideDataset[index]. MapToPixel(to_point. X,to_point. Y,out pcolunm, out prow);
obj = TideDataset[index]. GetPixelValue (O, pcolunm, prow); point_featurebuffer. set—Value(point_featurebuffer. Fields. FindFie IdByAliasName(TideFieldName),obj);
point_featurebuffer. Shape = to—point;
OBJ = point_featureCursor. InsertFeature(point_featurebuffer); point—featureCursor· Flush (); Il用這兩個(gè)點(diǎn)來構(gòu)建線元 pline.PutCoords (from—point,to—point);
ι
//遞進(jìn),得到下一個(gè)直線段
t++;
Water1ine_line_length += EL;
步驟3 :
將步驟2生成的所有離散點(diǎn)文件利用ArcGIS軟件中Merge命令進(jìn)行合并得到匯總離散點(diǎn)的shapefile文件,再利用ArcGIS軟件中Create Fishnet功能進(jìn)行格網(wǎng)構(gòu)建,該功能 Φ Template Extent 選擇匯總離散點(diǎn)的 shapefile 文件,Cell Size Width 與 Cell Size Height均為提取水邊線遙感影像分辨率,再利用!Mature to Polygon命令將上一步生成的Fishnet轉(zhuǎn)換成polygon的格網(wǎng),最后利用Spatial Join命令對(duì)匯總離散點(diǎn)進(jìn)行標(biāo)記, 該功能中Target !Matures選擇匯總離散點(diǎn)文件,Join !Matures選擇由Fishnet轉(zhuǎn)換成 polygon的格網(wǎng);
步驟4,結(jié)果如圖3所示 III中值濾波
private void MedianFilter()
{
for (int i = 0; i < gridNumber; i++)
{
if (grids[i]. Index. Count > 0)
{List〈PData> tempData = new List〈PData> (); for (int j = 0; j < grids[i]. Index. Count; j++)
tempData. Add(points[grids[i]. Index[j]]); for (int m = 0; m < tempData. Count; m++)
for (int η = m + 1; η < tempData. Count; η++)
{
//遍歷每一個(gè)格網(wǎng)內(nèi)的數(shù)據(jù)
if (tempData[m]. TideValue > tempData[η]. TideValue)
{
int tempOID = tempData[m]· OID;
double tempX = tempData[m]. X;
double tempY = tempData[m]. Y;
double tempTideValue = tempData[m] · TideValue;
tempData[m]. OID = tempData[n]. OID;
tempData[m]. X = tempData[n]. X;
tempData[m]. Y = tempData[n]. Y;
tempData[m] · TideValue = tempData[n] · TideValue;
tempData[n]. OID = tempOID;
tempData[n]. X = tempX;
tempData[n]. Y = tempY;
tempData[n] · TideValue = tempTideValue;
ι
ι
PData pData = new PData ();
pData. OID = outPoints. Count;
if (tempData. Count % 2 == 0)
{
//格網(wǎng)內(nèi)潮位點(diǎn)為偶數(shù)
pData. X = (tempData[tempData.Count / 2 - 1]. X + tempData [tempData. Count / 2]. X) / 2. 0 ;
pData. Y = (tempData[tempData.Count / 2 - 1]. Y + tempData [tempData. Count / 2]. Y) / 2. 0 ;
pData.TideValue = (tempData[tempData. Count / 2 -1]. TideValue + tempData[tempData. Count/ 2].TideValue) / 2. 0;
ι
else
{
//格網(wǎng)內(nèi)潮位點(diǎn)為奇數(shù) pData. X = tempData[tempData. Count / 2]. Χ;pData. Y = tempData[tempData. Count / 2]. Y;
pData.TideValue = tempData[tempData. Count /
2].TideValue;
ι
outPoints. Add (pData);
ι
ι
ι
步驟5 將步驟4中得到的離散點(diǎn)融合圖利用Erdas軟件中Data ft·印ration中的 Create Surface功能利用反距離加權(quán)方法實(shí)現(xiàn)。首先在對(duì)話框中點(diǎn)擊file下的read功能,讀取步驟4的離散點(diǎn)融合結(jié)果,點(diǎn)擊Surface下的Surfacing,設(shè)置輸出路徑、輸出文件名、輸出結(jié)果分辨率等參數(shù),在Surfacing Methods下選擇Linear Rubber Slipping功能, 點(diǎn)擊運(yùn)行,得到DEM結(jié)果。結(jié)果如圖4所示。
權(quán)利要求
1.一種基于中值濾波的中分辨率遙感影像離散點(diǎn)DEM構(gòu)建方法,其特征在于,它包括以下步驟步驟1 計(jì)算衛(wèi)星成像時(shí)刻潮高信息,可以根據(jù)如下公式進(jìn)行遙感影像成像時(shí)刻潮位信息的計(jì)算(1)H=Hl0W+AX (l-C0S(t/TX180°)/2 ;(2)H=Hhi-AX (1-C0S(t/TX 180。)/2 ;式中,H為待插值衛(wèi)星成像時(shí)刻潮位,Hhi為對(duì)應(yīng)潮周期最高潮潮高,Hlow為對(duì)應(yīng)潮周期最低潮潮高,T為該潮周期漲潮歷時(shí),A為該潮周期潮差,t為待插值時(shí)刻與低潮時(shí)或高潮時(shí)的時(shí)間間隔;步驟2 離散衛(wèi)星成像時(shí)刻提取的矢量水邊線,將衛(wèi)星成像時(shí)刻的水邊線根據(jù)其遙感影像分辨率進(jìn)行等間隔離散,得到一系列等間隔的離散點(diǎn),對(duì)該離散點(diǎn)shapefile文件新建一個(gè)字段,并將上述步驟計(jì)算所得的衛(wèi)星成像時(shí)刻潮位信息寫入離散點(diǎn)該文件字段,重復(fù)以上步驟直到所有水邊線被離散為帶有潮位信息的等距離散點(diǎn),即等距潮位點(diǎn);步驟3 合并上述步驟離散的等距潮位點(diǎn),根據(jù)遙感影像分辨率構(gòu)建中值濾波的參考格網(wǎng),并對(duì)所有離散的等距潮位點(diǎn)進(jìn)行標(biāo)號(hào),標(biāo)明其所屬格網(wǎng)ID ;步驟4 遍歷所有格網(wǎng),針對(duì)各種不同情況采取下列操作(1)如果該格網(wǎng)內(nèi)沒有被標(biāo)記的離散點(diǎn),則不采取任何操作,(2)如果該格網(wǎng)內(nèi)被標(biāo)記的離散點(diǎn)個(gè)數(shù)為奇數(shù),設(shè)為2n+l,則將該格網(wǎng)內(nèi)所有離散點(diǎn)潮位信息從小到大排序,保留潮位信息中數(shù),即n+1點(diǎn),所對(duì)應(yīng)的離散點(diǎn),刪除其他離散點(diǎn),(3)如果該格網(wǎng)內(nèi)被標(biāo)記的離散點(diǎn)個(gè)數(shù)為偶數(shù),設(shè)為2η,則將該格網(wǎng)內(nèi)所有離散點(diǎn)潮位信息從小到大排序,選取潮位信息最中間兩個(gè)離散點(diǎn),即η和n+1點(diǎn),對(duì)其地理方位,潮位信息進(jìn)行平均,生成一個(gè)新離散點(diǎn),刪除其他離散點(diǎn);步驟5 在中值濾波結(jié)果的基礎(chǔ)上利用線性內(nèi)插構(gòu)建最終的DEM結(jié)果。
2.根據(jù)權(quán)利要求1所述的一種基于中值濾波的中分辨率遙感影像離散點(diǎn)DEM構(gòu)建方法,其特征在于,所述步驟1具體實(shí)現(xiàn)方法如下建立一個(gè)Access數(shù)據(jù)庫用以存儲(chǔ)各驗(yàn)潮站潮位信息,其存儲(chǔ)字段為ID、年、月、日、時(shí)、分、潮高、緯度以及經(jīng)度,提取遙感影像矢量水邊線,并以_YYYYMMDDHHMM. shp的方式命名,其中YYYY為年,匪為月,DD為天,HH為時(shí),匪為分,進(jìn)行遙感影像成像時(shí)刻潮位高度計(jì)算時(shí),先提取矢量水邊線名稱中的成像時(shí)間,并將 GMT時(shí)間換算到東八區(qū)時(shí)間,按照步驟1中的公式進(jìn)行計(jì)算。
3.根據(jù)權(quán)利要求1或2所述的一種基于中值濾波的中分辨率遙感影像離散點(diǎn)DEM構(gòu)建方法,其特征在于步驟2中水邊線離散點(diǎn)生成實(shí)現(xiàn)步驟如下遍歷所有水邊線shp文件,每遍歷到一個(gè)新的水邊線shp文件則生成一個(gè)投影信息與原shp文件一致的點(diǎn)文件,再遍歷該水邊線shp文件所有線性矢量記錄,針對(duì)每條矢量記錄,找到該矢量的起始節(jié)點(diǎn)A0作為線段一個(gè)端點(diǎn),接著尋找矢量的下一個(gè)節(jié)點(diǎn)A1作為線段另一個(gè)端點(diǎn),計(jì)算該線段長度,如果大于給定的間隔L,則生成一個(gè)距離A0點(diǎn)長度為L的離散點(diǎn)Ntl,并將Ntl作為起始端點(diǎn),重復(fù)上述步驟直至線段長度小于或等于給定間隔時(shí)將Atl,及所有生成的Ntl,N1,……Nn點(diǎn)寫入遍歷開始時(shí)的點(diǎn)shp文件,判斷該矢量是否有下一個(gè)節(jié)點(diǎn),如果存在,則將A1置為線段起點(diǎn),A2 置為線段終點(diǎn),重復(fù)上述步驟,直至矢量文件遍歷完成。
4.根據(jù)權(quán)利要求1或2所述的一種基于中值濾波的中分辨率遙感影像離散點(diǎn)DEM構(gòu)建方法,其特征在于步驟3中中值濾波格網(wǎng)構(gòu)建及離散點(diǎn)標(biāo)號(hào),具體實(shí)現(xiàn)步驟如下利用 ArcGIS軟件中的Merge命令將所有離散點(diǎn)shp文件合并成一個(gè)shp文件,并求取該點(diǎn)shp 文件所有離散點(diǎn)的極值X、Y坐標(biāo),將其作為網(wǎng)格的邊界值,分析原始遙感影像空間分辨率 S,并以其作為格網(wǎng)邊長,遍歷每一個(gè)格網(wǎng),將落入其中的離散點(diǎn)標(biāo)記出該格網(wǎng)的ID號(hào)。
5.根據(jù)權(quán)利要求1所述的一種基于中值濾波的中分辨率遙感影像離散點(diǎn)DEM構(gòu)建方法,其特征在于步驟4中處理過的離散點(diǎn)需要寫入一個(gè)新建的點(diǎn)shp文件中。
6.根據(jù)權(quán)利要求1所述的一種基于中值濾波的中分辨率遙感影像離散點(diǎn)DEM構(gòu)建方法,其特征在于步驟5中空間內(nèi)插是在Erdas軟件中利用反距離加權(quán)方法實(shí)現(xiàn)。
全文摘要
本發(fā)明屬于中分辨率遙感影像離散點(diǎn)DEM構(gòu)建方法領(lǐng)域,公開了一種基于中值濾波的中分辨率遙感影像離散點(diǎn)DEM構(gòu)建方法。它包括以下步驟步驟1計(jì)算衛(wèi)星成像時(shí)刻潮高信息;步驟2離散衛(wèi)星成像時(shí)刻提取的矢量水邊線,步驟3合并上述步驟離散的等距潮位點(diǎn),根據(jù)遙感影像分辨率構(gòu)建中值濾波的參考格網(wǎng),并對(duì)所有離散的等距潮位點(diǎn)進(jìn)行標(biāo)號(hào),標(biāo)明其所屬格網(wǎng)ID;步驟4遍歷所有格網(wǎng);步驟5在中值濾波結(jié)果的基礎(chǔ)上利用線性內(nèi)插構(gòu)建最終的DEM結(jié)果。本發(fā)明的方法通過中值濾波的方法有效地利用了落在格網(wǎng)內(nèi)所有離散點(diǎn)的高程信息,提高了離散點(diǎn)高程精度。
文檔編號(hào)G06T17/05GK102436679SQ20111042356
公開日2012年5月2日 申請(qǐng)日期2011年12月16日 優(yōu)先權(quán)日2011年12月16日
發(fā)明者劉永學(xué), 張?chǎng)? 李滿春, 李 真, 楊康, 程亮, 童禮華, 胡煒, 蔡文婷, 陳焱明 申請(qǐng)人:南京大學(xué)