李旺民,陳 勝,黎 彬,丁建勛
(1.珠海市測繪院,廣東 珠海 519000;2.湖南省第三測繪院,湖南 長沙 410007)
一種高集成度土地勘測定界數據處理方法
李旺民1,陳 勝2,黎 彬1,丁建勛1
(1.珠海市測繪院,廣東 珠海 519000;2.湖南省第三測繪院,湖南 長沙 410007)

結合生產實踐經驗,基于GDAL/OGR矢量數據處理庫、NPOI技術等,提出了一種自動化、高集成度的勘測定界數據處理方法。該方法與傳統數據生產處理方式相比,在生產效率、數據質量等方面均有很大程度的提升。通過測繪作業部門生產實踐,驗證了該方法的實用性和可靠性。
土地勘測定界;高集成度;GDAL/OGR;dxf;NPOI
合理利用每寸土地,切實保護耕地是我國的基本國策。及時、準確地掌握各類土地數據特別是建設用地批準數據也是土地資源規劃管理的基本手段[1]。對建設用地的許可審批,我國采用建設用地審查報批的方式。其核心內容包括:建設用地是否符合土地利用總體規劃,選址是否符合合理用地和集約用地原則,土地權屬、位置、范圍、地類、面積是否清楚、準確,是否涉及占用非規劃建設用地,申請用地涉及突破土地利用規劃的,其相關理由是否充分、土地利用規劃變更及耕地占補平衡等工作是否完成等,這些內容主要由勘測定界測繪完成[2]。通過先進的地理信息技術,改造測繪作業流程,形成科學、規范、高效的測繪數據生產解決方案,對提高測繪作業生產自動化程度,提升測繪在土地勘測定界方面的保障能力具有重要意義[3]。
土地勘測定界的內業數據處理工作主要包括土地利用分類和面積匯總、土地勘測定界圖編繪、土地勘測定界報告書撰寫、電子報盤數據制作、土地利用現狀圖及規劃圖編制等內容,如圖1所示。土地利用分類和面積匯總是土地勘測定界內業數據處理中一項重要工作,其地類統計結果是土地勘測定界報告書和電子報盤數據的基礎數據;提取的地類圖斑線是土地勘測定界圖的專題底圖,涉及地類圖斑線的提取、編繪與格式轉換。傳統作業方式主要依靠人工來計算和統計,需對圖形文件進行多次格式轉換,不僅費時費力,容易出錯,而且對土地的報批進度和質量有一定影響。可見傳統的土地勘測定界內業數據處理方式需要依托多種軟件,存在數據匯總、報告編制、電子報盤制作方面集成度不高等缺點。針對傳統作業方式的局限性,本文從分析土地勘測定界數據處理流程入手,發現和提取內部規律,以Visual Studio 2005為開發平臺,運用C++、C#等多種開發語言,充分利用GDAL/OGR矢量數據處理庫、NPOI技術等,設計和研發了一種自動化、高集成度的勘測定界數據處理方法,以提升土地勘測定界數據處理效率,優化作業流程,提高成果質量。

圖1 土地勘測定界內業數據處理現狀分析
2.1 設計思路
實現勘測定界內業數據處理的自動化和集成化,確保計算正確性,提高生產效率,需從數據錄入、數據處理、數據輸出3方面進行設計與實現,流程見圖2。實現步驟如下:
1)將用地坐標按照“點號+地塊圈號+X坐標+ Y坐標”的格式(同電子報盤txt數據中“地塊坐標”格式)編輯為txt文本,作為原始數據,將其導入、轉化并輸出為shp和dxf圖形數據;
2)將生成的用地范圍圖形數據與作業員選擇的土地利用現狀、規劃數據庫進行疊加處理,獲取用地的土地利用現狀和規劃地類信息,提取并輸出用地的土地利用現狀和規劃地類圖斑線,自動標注對應的圖斑信息,同時按土地利用類型分別統計地類面積并輸出地類面積統計表;
3) 結合作業員錄入的項目用地信息,輸出電子報盤數據(建設項目用地坐標文件)。

圖2 土地勘測定界內業數據處理流程圖
2.2 關鍵技術與程序實現
2.2.1 文本數據讀取并轉化為shp格式
原始用地坐標數據為文本數據,需轉換為shp格式數據,以其坐標形成幾何圖形,并修正其中的拓撲錯誤,將項目信息存入shp屬性表。該部分核心代碼如下:
pFeature = OGRFeature::CreateFeature(destLayer->GetLayerDefn());
pFeature->SetField("界址點數", lbs[i].DianShu);
pFeature->SetField("地 塊 面 積", lbs[i].MianJi.c_ str());
pFeature->SetField("地塊編號", lbs[i].BianHao.c_ str());
pFeature->SetField("地塊名稱", lbs[i].MingChen.c_ str());
pFeature->SetField("圖形類型", lbs[i].TuXingLei Bie.c_str());
pFeature->SetField("圖幅 號", lbs[i].TuFuHao.c_ str());
pFeature->SetField("地塊用途", lbs[i].YongTu.c_ str());
pFeature->SetField("地類編碼", lbs[i].DiLeiBianMa. c_str());
pFeature->SetField("描述", lbs[i].MiaoShu.c_str());
2.2.2 矢量圖形的讀寫與拓撲計算
GDAL是一個專門對柵格空間數據進行讀取、轉換、編輯等操作的開源庫,OGR是GDAL項目的一個分支,功能與GDAL類似,提供對矢量數據的支持與操作。GDAL/OGR作為一個優秀的開源庫,提供了標準的二次開發接口,包括讀取、寫入、轉換、處理多種柵格/矢量數據格式,同時它提供完全公開的源代碼,為用戶進行二次開發和底層功能擴展提供了很高的起點[4]。該方法采用GDAL/OGR矢量數據處理庫對矢量圖形進行讀寫與拓撲計算。
其實現步驟為:打開mdb格式的土地利用數據庫,按行政區劃識別圖層,并把該圖層數據讀入內存,以用地范圍與現狀、規劃圖層進行拓撲運算,將用地范圍內的現狀、規劃圖斑提取并保存為一個shp文件。該部分核心代碼如下:
//打開紅線圖層
shpDriver = OGRSFDriverRegistrar::GetRegistrar()->GetDriverByName(shpDriverName);
crdDS = OGRSFDriverRegistrar::Open(CString2strin g(crdShpPath + _T(".shp")).c_str(), FALSE, &shpDriver);
OGRLayer* crdLayer = crdDS->GetLayerByName(C String2string(crdShpLayer).c_str());
//創建裁切后的圖
destDS = shpDriver->CreateDataSource(CString2strin g(tempDir).c_str());
OGRLayer* destLayer = destDS->CreateLayer(CStrin g2string(curShpLayer).c_str(), srcLayer->GetSpatialRef(), srcLayer->GetGeomType());
//進行裁切
srcLayer->Clip(crdLayer, destLayer, papszOptions);
2.2.3 輸出用地范圍、地類圖斑線為dxf文件
dxf繪圖交換文件是Autodesk公司開發的用于AutoCAD與其他軟件進行數據交換的CAD數據文件格式,是AutoCAD圖形文件中包含所有信息的一種帶標記數據的表示方式。dxf是一種開放的矢量數據格式,可分為ASCII格式和二進制格式2類,ASCII格式具有可讀性好的特點。筆者根據AutoCAD軟件的幫助中dxf描述文檔,編寫代碼對ASCII格式dxf進行解析和讀寫操作,不依賴AutoCAD軟件或其他第三方庫,使得軟件的運行、分發都極為簡單、方便。
輸出用地范圍、地類圖斑線為dxf文件的實現步驟為:首先在CAD中生成dxf文件模板,包含必要的圖層定義、字體定義和塊參照定義,再把文件模板另存拆分為dxf頭文件和dxf結束文件。在輸出用地范圍、地類圖斑線時先輸出dxf頭文件,再根據數據內容輸出圖元,最后輸出dxf結束文件,并保存。輸出地類圖斑線核心代碼如下:

2.2.4 地類面積分類統計與報表輸出
POI是一個開源的基于.NET平臺的讀寫Excel、Word等微軟OLE2組件文檔的項目,可在沒有安裝Office或相應環境的機器上對 Word/Excel文檔進行讀寫。NPOI是基于.NET用C#開發,主程序是用C++開發,然而用C++進行.NET軟件開發并不便捷,所以用C#將報表輸出功能封裝成DLL,以在主程序中進行調用的方式實現報表輸出。該部分核心代碼如下:

2.3 應用示例
以珠海市某道路的勘測定界測量為例,該道路長度為10余km,分為若干地塊,用地情況較復雜。數據處理主界面如圖3所示。通過成果輸出模塊,可輸出地類面積分類統計表(Excel格式,如圖4)、用地范圍圖形文件(shp、dxf格式)、地類圖斑線文件(dxf格式,如圖5),電子報盤文件(txt格式)等數據成果,經生產驗證,成果數據正確無誤。

圖3 數據處理主界面

圖4 地類面積分類統計表示意圖
P208
B
1672-4623(2016)05-0109-03
10.3969/j.issn.1672-4623.2016.05.034
2015-12-07。
項目來源:國家自然科學基金資助項目(91224008)。