梁志強,叢喜東
(1.黑龍江省自然資源權益調查監(jiān)測院,黑龍江 哈爾濱 150080;2.黑龍江省生態(tài)研究所,黑龍江 哈爾濱 150080)
1)2021年5月國家林業(yè)和草原局發(fā)布《林草濕數據與第三次全國國土調查數據對接融合技術指南》(以下簡稱“指南”)中指出,充分發(fā)揮第三次全國國土調查(以下簡稱“三調”)成果在國土空間管理中的“統(tǒng)一底版”作用,依據“三調”成果,理清林地、草地、濕地的現狀范圍界線,解決地類交叉重疊問題,融合林地、草地、濕地等資源信息,優(yōu)化國家級公益林范圍,將國家級公益林落到山頭地塊,形成與“三調”無縫銜接的林草資源圖(含濕地),支撐森林生態(tài)效益補償制度,為林草生態(tài)網絡感知系統(tǒng)建設,開展林草資源及生態(tài)狀況監(jiān)測,加強林草資源科學保護、系統(tǒng)修復和合理利用,推進林草治理體系和治理能力現代化提供支撐[1]。
2)指南中明確了目的、任務、原則要求、技術流程、工作成果、質量管理等內容,并對落界經營界線和小班細化做了具體說明。指南中指出經營界線存在誤差性質偏移,無實質改變的情況下,應保持與三調界線重合;小班進行分割及碎班合并,對于區(qū)劃尺度不同或區(qū)劃誤差,引起小班界線相互間里出外進等情況,可根據影像特征和現地情況,對小班邊界進行修正或合并小班,原則上應以較高區(qū)劃精度結果為準。
3)在具體的對接融合過程中由于林草濕數據與三調數據在區(qū)劃精度上存在一定的差異,常規(guī)GIS軟件,對容差范圍內的現象不視為錯誤,故存在邊線或折點無法重疊情況,現將具體問題進行分析,并針對問題提出解決思路與方法,最終形成滿足對接融合要求的修正數據。
1)采用GIS軟件,將林草濕圖層分別以縣為單位,進行關鍵字賦值,用于圖斑融合后掛接屬性數據[2],為加快圖形融合數據處理速度,可保留適量相應圖層的影響圖斑邊界處理的重要屬性因子,其他屬性因子則在對接融合后進行掛接,如三調圖斑保留標識碼、地類、權屬單位名稱、坐落單位名稱、圖斑面積等,林地保留單位名稱、林班、小班、地類等,濕地保留斑塊號、斑塊名稱、濕地類型等,草地保留斑塊編號、草地類型等;
2)將統(tǒng)一空間參考的三調數據圖斑與林地、濕地、草地圖斑分別進行聯合操作,形成相應的對接融合圖層;對不滿足最小區(qū)劃面積條件的細碎圖斑進行合并,合并后圖斑不可跨三調圖斑,這部分可通過技術手段自動合并;對大于最小區(qū)劃面積的圖斑,需要采用人工方式根據實際情況進行合并、切割、保留等處理;圖斑融合完畢后進行空間拓撲、質檢、修正,掛接重要屬性因子,進行數據統(tǒng)計分析,形成空間數據、專題圖、統(tǒng)計分析表、分析報告等驗收成果。
在空間數據對接融合過程中,由于第三次全國國土調查數據矢量圖在GIS軟件中XY容差為0.0001m,通過分析三調數據圖斑折點坐標發(fā)現,所有折點坐標均進行了處理,采用了4舍6入的方式,保留5位小數。而以往林草濕數據圖斑的生產過程中采用GIS軟件默認XY容差為0.001m,折點坐標采用默認保留小數位,二者在容差及坐標精度方面存在一定差異。在圖斑對接融合過程中,在容差范圍內二者邊界雖然是一致的,但在放大比例尺到一定范圍時,二者將出現不完全重合的現象,即邊線或折點存在位置偏移,且該偏移值在GIS軟件的容差范圍內,圖斑進行編輯操作時無法實現國土圖斑的折點捕捉,從而修改操作難度大,且修改量大。如圖1對接融合圖斑與三調數據圖斑邊界及折點不重合現象示例所示。
圖1 對接融合圖斑與三調圖斑邊界及折點不重合示例Fig.1 Example of the Mismatch between the Boundaries and Vertices of the Butt Fusion Patch and Tritone Patch
針對上述對接融合數據所產生的情況,可以通過遍歷對接融合數據圖斑折點獲取距離三調圖斑的最近折點或最近邊線的垂點的方式實現對接融合數據圖斑折點坐標的修改,使對接融合數據圖斑邊線及折點與國土數據圖斑邊線及折點保持完全一致。具體方法步驟如下:
1)獲取對接融合數據圖斑邊線的所有折點。將對接融合數據增加一個唯一值字段并賦值,用于圖斑修正后數據驗證及屬性數據掛接。
2)獲取該對接融合數據圖斑對應的國土圖斑邊線折點。對接融合數據圖斑的標識碼(BSM)與三調數據圖斑標識碼應一致,可通過BSM篩選三調數據圖斑。如標識碼不一致會導致修正折點坐標值計算有誤。
3)獲取對接融合數據圖斑折點與對應三調數據圖斑距離最近的折點。逐點遍歷對接融合數據圖斑折點,查找與該折點距離最近的對應的三調數據圖斑折點,且該距離小于0.0005m,即視為該對接融合數據圖斑折點應與三調數據圖斑折點為同一點,對接融合數據圖斑折點的坐標用該查找到的三調數據圖斑折點坐標進行替換。
4)獲取距離對接融合數據圖斑折點最近的國土數據圖斑邊線上的線段,取點到線段的垂點作為折點。當未找到滿足具體誤差范圍(<0.0005m)的最近折點,說明該對接融合數據圖斑折點誤差限范圍內無三調圖斑折點,此時需查找與該折點最近的三調圖斑邊線上的線段,且該點與線段兩個端點的距離與線段長度的誤差也在0.0005m范圍內,即該點位于線段的兩個端點之間。獲取該對接融合數據圖斑折點到三調圖斑線段的垂足點,且垂足點與折點距離在誤差限范圍內,將垂點坐標替換對接融合數據圖斑的折點坐標,也可以獲取對接融合數據折點處線段與三調圖斑最近線段的交點作為替換坐標值,通過分析垂點與交點誤差很小,故取垂點坐標即可。
5)創(chuàng)建新的矢量圖層,將對接融合數據的每個圖斑折點按照重新計算的折點坐標值重新生成圖斑要素。
通過圖斑的折點修正方法實現對接融合數據與三調圖斑邊界的重合操作,圖斑的折點遍歷、點間距、點線距、垂點等計算采用Visual Studio開發(fā)環(huán)境、C#語言、GDAL開源技術進行實現。
1)GDAL開源技術。GDAL(Geospatial Data Abstraction Library,地理空間數據抽象庫)是一個在X/MIT許可協議下的開源空間數據(柵格數據和矢量數據)轉換庫,包括讀取、寫入、轉換、處理各種柵格和矢量數據格式[3],可通過GDAL讀取矢量圖斑要素屬性及幾何圖形坐標節(jié)點等空間及屬性信息。在Visual Studio開發(fā)環(huán)境中,可加載GDAL的DLL類庫文件實現對矢量圖層及圖斑的具體操作。
2)通過C#編碼的方式實現軟件功能的開發(fā)。軟件工具的主要功能是加載對接融合和三調成果矢量數據,自動讀取對接融合數據圖斑的邊線折點及對應三調圖斑的邊線或折點,通過計算獲取對接融合數據圖斑的每個折點的修正值,并自動創(chuàng)建新的圖斑要素,要素包含對接融合數據圖斑的關鍵字及三調圖斑標識碼字段。對接融合數據修正后結果可通過關鍵字及BSM進行相應林草濕數據與三調數據的屬性連接。
軟件實現的部分關鍵代碼如下:
//計算點與點距離
private double GetMinDistanceP2P(double p1x, double p1y, double p2x, double p2y)
{
return Math.Pow((Math.Pow((p1x - p2x), 2) + Math.Pow((p1y - p2y), 2)), 0.5);
}
//計算點到線段的距離
private double GetMinDistanceP2L(double pX, double pY, double segAX, double segAY, double segBX, double segBY)
{
double product_ap_ab = (pX - segAX) * (segBX - segAX) + (pY - segAY) * (segBY - segAY);
double product_ab_ab = (segBX - segAX) * (segBX - segAX) + (segBY - segAY) * (segBY - segAY);
double r = product_ap_ab / product_ab_ab;
if (r >=1)
{
return Math.Sqrt((pX-segBX)*(pX-segBX) + (pY - segBY) * (pY - segBY));
}
else if (r <=0)
{
return Math.Sqrt((pX-segAX)*(pX-segAX) + (pY - segAY) * (pY - segAY));
}
else
{
double vector_ac_X = r * (segBX - segAX);
double vector_ac_Y = r * (segBY - segAY);
double vector_cp_X = pX - segAX - vector_ac_X;
double vector_cp_Y = pY - segAY - vector_ac_Y;
return Math.Sqrt(vector_cp_X * vector_cp_X + vector_cp_Y * vector_cp_Y);
}
}
//獲取點到線段的垂足坐標,x1、y1、x2、y2為線段的端點坐標
private double[] GetVerticalAixP2L (double x0, double y0, double x1, double y1, double x2, double y2)
{
double[] ret = new double[] { 0, 0 };
if (x2 - x1 == 0)
{
ret[0] = x2;
ret[1] = y0;
}
else
{
//計算斜率
double k1 = (y2 - y1) / (x2 - x1);
// 垂足x坐標
double x = (Math.Pow(k1, 2) * x1 + (k1 * (y0 - y1)) + (x0)) / (Math.Pow(k1, 2) + 1);
ouble y = (k1) * (x - (x1)) + (y1);
ret[0] = x;
ret[1] = y;
}
return ret;
}
(3)通過修正前后數據比對分析。如圖3對接融合圖斑邊界及折點修正前后對比圖所示,紅色邊線為對接融合數據的修正前圖斑邊線,紫色邊線為修正后邊線,黑色邊線為三調圖斑邊線,通過對比圖可以看出修正后邊線與三調數據圖斑邊線及折點完全一致,并通過對某鄉(xiāng)鎮(zhèn)16000多個圖斑進行驗證,修正前后對接融合數據的面積、周長等均與對接融合數據圖斑未修正前保持基本一致,其修正后結果滿足數據生產和成果質量要求。
圖3 對接融合圖斑邊界及折點修正前后對比Fig.3 Contrast before and after the Patch Boundary and Vertex Correction of the Butt Fusion Pattern