陳強+瞿巍+喬永鑫+李先林+陳龍高
摘 要:土地整理規劃設計的內容比較廣,不僅需要強大的矢量化和繪圖功能,還需要涉及土地利用的各種屬性數據的查詢與統計功能,傳統的方法主要通過AutoCAD和MapInfo或ArcGIS等軟件進行操作,這種方法需頻繁進行不同數據格式之間的轉換工作,從而大大降低了土地整理規劃的效率。為克服這一問題,該文應用VC++結合ObjectArx對AutoCAD進行二次開發,并最終在AutoCAD中實現對各種土地利用信息的查詢、統計等操作以及土地整理相關工程量的計算等功能。
關鍵詞:土地整理規劃;AutoCAD;系統設計;土石方量計算
中圖分類號 F321.1 文獻標識碼 A 文章編號 1007-7731(2014)05-08-03
土地整理是實現耕地總量動態平衡,推進土地節約、集約利用的重要途徑之一[1-2]。我國是一個人口多、耕地少、耕地總體質量差、耕地后備資源不足的發展中國家。近年來,我國人口不斷持續增長,耕地不斷減少,人地矛盾越發突出[3]。因此,進行土地整理,增加農用地面積,特別是耕地面積,提高農用地質量,對推動我國經濟發展、穩定社會秩序具有重要意義。
實施土地整理項目前必須做好項目規劃設計工作。土地整理的規劃設計涉及的內容比較廣,不僅需要強大的矢量化和繪圖功能,還需要涉及土地利用的各種屬性數據的統計功能[4],傳統的方法主要通過AutoCAD和MapInfo、MapGIS或ArcGIS等軟件進行操作,這種方法常常需頻繁進行不同數據格式之間的轉換工作,從而大大增加了土地整理規劃的工作量,降低了土地整理規劃的效率。為了克服這一不足,本文設計應用VC++結合ObjectArx對AutoCAD進行二次開發,并最終在AutoCAD中實現對各種土地利用信息的查詢、統計等操作以及土地整理相關工程量的計算等功能。ObjectArx編程是一種動態鏈接庫(dll)編程,其生成的動態鏈接庫文件在AutoCAD程序調用時被加載,與AutoCAD應用程序共享地址空間,可以直接訪問AutoCAD的圖形數據庫[5-7]。
1 土地利用信息查詢與統計算法設計
1.1 算法功能 本文設計的算法主要為實現根據不同的土地利用分類方法進行相應的查詢與統計操作,具體實現了以下3項功能:(1)根據權屬查詢指定區域內的土地利用信息;(2)根據地類查詢指定區域內的土地利用信息;(3)根據特殊條件查詢指定區域內的土地利用信息,如查詢某條溝渠沿線的土地利用信息等。
1.2 算法設計及實現 上述功能的實現方法大致相同,因此,筆者僅以功能(1),即根據權屬查詢指定區域內的土利用信息為例,此算法具體分為以下6個步驟:
第一步:確定需要查詢的區域。調用函數acedSSGet()創建選擇集,并將選擇結果存入變量ssName中;然后,調用函數acedSSLength()提取實體,選擇集中實體的數目,遍歷選擇集ssName,提取其中多段線實體ID并存入數組objIdArray中;最后調用函數acedSSFree()刪除選擇集ssName。
第二步:添加查詢條件(關鍵字)。調用函數acedGetString()提示用戶從命令行輸入查詢或統計條件,并將用戶輸入的字符串存入字符型數組strFactor中。
第三步:找出符合查詢條件的圖斑。遍歷實體ID數組objIdArray,調用函數acdbOpenObject()打開實體,并將指向實體的指針存入變量pPoly中;調用函數AcDbEntity::Layer()提取實體所在圖層,即圖斑的權屬;最后判斷該信息與指定的查詢或統計條件是否相符。若不相符則繼續下一個實體;若符合查詢條件則轉入第四步,進一步提取圖斑的信息。
第四步:提取符合條件的圖斑信息。包括:(1)提取圖斑地類信息。調用函數AcDbPolyline::elevation()提取多段線的高程字段的信息,存入變量tmpElevation中,由前述可知,該信息中含有兩部分內容:小數點之前的部分為圖斑編號,小數點之后的部分為地類代碼。因此,將tmpElevation轉換為字符型變量tmpData,然后以小數點為界將tmpData分割成2個字符串,即可得到該圖斑的圖斑編號和地類代碼,然后將其分別存入字符串變量numofMapSpot及numofLandCategory中。(2)提取圖斑幾何信息。圖斑的幾何信息包括圖斑的面積、圖斑邊界拐點坐標、圖斑邊界長度等。這些信息都可通過調用類AcDbPolyline的內部函數獲取,如提取圖斑面積,只需調用函數AcDbPolyline::getArea()即可。
第五步:顯示圖斑信息結果。自定義一個對話框類,然后,添加成員變量負責接收上述查詢或統計結果,并添加一個list控件負責顯示查詢信息。最后,調用CDialog::DoModal()函數顯示對話框,即可查看上述查詢或統計的結果。
第六步:輸出圖斑信息結果。在第五步自定義的對話框類中添加一個command控件作為保存按鈕,然后,為command控件添加實現函數,并在實現實數中調用函數CStdioFile::Open()創建文件,最后調用函數CStdioFile::WriteString()將前述查詢或統計結果按格式“權屬、圖斑號、地類代碼、地類名、面積……”寫入文件,并調用函數CStdilFile::Close()關閉文件。
2 實例分析
本文以山西某地區的土地利用現狀數據對上述系統的功能進行了測試。見圖1。
圖1 部分土地利用現狀
首先,在圖1中任意指定一塊區域,其次,由用戶輸入需要查詢的關鍵字權屬名稱(此處以“李家店”為例),然后,點擊回車鍵,程序開始查找及提取符合關鍵字“李家店“屬性的圖斑,查找結束后,程序把查詢結果自動彈出,最后點擊保存后即可使用。如圖2所示。
圖2 查詢結果顯示
點擊保存按鈕,即可把上訴查詢到的所有的信息(李家店這個村莊中每塊圖斑的類型以及面積,進而可以求出每類圖斑的總面積)以文本文檔的格式保存在電腦硬盤中。見圖3。
圖3 查詢結果保存效果
(下轉52頁)
(上接9頁)3 土地整理工程量計算算法設計
土地平整是土地開發整理項目中最重要、最復雜的工程,也是項目審查、資金審批的重要環節[8],而土石方量計算是土地平整工程量計算的重要組成部分[9],因此,快速完成土石方量計算,提高土地平整工程量計算效率對于做好土地開發整個項目有重要的意義。
常用于計算土石方量的方法有方格網法、等高線法、斷面法、DTM法(不規則三角網法)、區域土方量平衡法和平均高程法等[10]。由于不規則三角網法(DTM)具有以下優點:(1)三角網中的點和線的分布密度和結構完全可以與地表的特征相協調,直接利用原始資料作為網格結點;(2)不改變原始數據和精度;(3)能夠插入地性線以保存原有關鍵的地形特征,以及能很好地適應復雜、不規則地形,從而將地表的特征表現得淋漓盡致等[11]。因此,利用不規則三角網法計算土石方量可以大大提高計算精度,本文亦采用不規則三角網法進行土石方量計算。具體算法實現步驟如下:
第一步:導入參與計算的地形數據。地形數據可以是野外實測的高程點數據,也可以是已有的數字地形圖數據。以導入野外實測的高程點數據為例詳述導入地形數據的具體實現步驟如下:
首先,調用函數CStdioFile::Open()打開數據文件,并調用函數CStdioFile::ReadString()按行讀取點數據;然后,調用函數AcDbPoint::new()創建點實體,調用函數AcDbPoint::setPosition()設置點的坐標,調用函數AcDbBlockTableRecord::appendAcDbEntity()將點實體加入模型空間;最后,調用函數CStdioFile::Close()關閉文件。
第二步:根據地形數據生成不規則三角網。本文主要采用邊擴展方法生成不規則三角網。
第三步:輸入平場標高。
第四步:以平場標高為分界,計算第三個棱柱的體積,并最終計算出總的挖方量及填方量。若總的挖方量及填方量相差過大,則自動調整平場標高重新進行計算。計算結果見圖4所示。
圖4 根據已有地形數據計算的土方量結果顯示
4 結論
本文設計的方法可以降低傳統方法進行土地整理規劃過程中因需頻繁進行不同數據格式之間的轉換操作而附加的工作量,從而提高土地整理規劃的效率。通過應用VC++結合ObjectArx對AutoCAD進行二次開發,實現了基于AutoCAD的土地利用信息查詢、統計等操作,以及進行土地整理相關工程量的計算等土地整理規劃過程中需頻繁使用的功能。最后的實例驗證測試結果良好,與客觀事實情況相符合,證明了本文設計方案的可行性與準確性。
參考文獻
[1]衰勝平,趙靜,彭君.我國土地整理的意義及對策研究[J].知識經濟,2010,3:9.
[2]王軍,余莉,羅明,等.土地整理研究綜述[J].地域研究與開發,2003,22(2):8-11.
[3]徐小培.淺析我國土地整理[J].資源環境與發展,2009,4:19-21.
[4]張超,王秀茹,高楠.MapInfo和AutoCAD支持下的土地整理規劃設計方法[J].水土保持與研究,2006,13(1):189-203.
[5]于蕭榕,郭昌言,陳剛.結合Objectarx和C#進行AutoCAD二次開發框架的研究[J].科學技術與工程,2010,10(20):5 085-5 090.
[6]韋忠.基于ObjectARX.Net的Jig技術及其應用研究[J].現代測繪,2010,33(3):45-47.
[7]楊小兵.利用ObjectARX開發小型地下管線信息管理系統[J].城市勘測,2010,4:74-76.
[8]陳國強.淺談截面法在土地平整工程量計算中的應用[J].農技服務,2009,26(9):144-145.
[9]楊小艷,雍新琴,陳龍高.《土地利用規劃學》實踐教學環節建設的探討[J].安徽農學通報,2007,13(21):119-120.
[10]農兆云.土地整理中土方量計算方法比較研究[J].南方國土資源,2010,6:32-33.
[11]湯雪茜,陳天偉.土方量計算的方法探討[J/OL].[2008-06-06].
(責編:施婷婷)
圖2 查詢結果顯示
點擊保存按鈕,即可把上訴查詢到的所有的信息(李家店這個村莊中每塊圖斑的類型以及面積,進而可以求出每類圖斑的總面積)以文本文檔的格式保存在電腦硬盤中。見圖3。
圖3 查詢結果保存效果
(下轉52頁)
(上接9頁)3 土地整理工程量計算算法設計
土地平整是土地開發整理項目中最重要、最復雜的工程,也是項目審查、資金審批的重要環節[8],而土石方量計算是土地平整工程量計算的重要組成部分[9],因此,快速完成土石方量計算,提高土地平整工程量計算效率對于做好土地開發整個項目有重要的意義。
常用于計算土石方量的方法有方格網法、等高線法、斷面法、DTM法(不規則三角網法)、區域土方量平衡法和平均高程法等[10]。由于不規則三角網法(DTM)具有以下優點:(1)三角網中的點和線的分布密度和結構完全可以與地表的特征相協調,直接利用原始資料作為網格結點;(2)不改變原始數據和精度;(3)能夠插入地性線以保存原有關鍵的地形特征,以及能很好地適應復雜、不規則地形,從而將地表的特征表現得淋漓盡致等[11]。因此,利用不規則三角網法計算土石方量可以大大提高計算精度,本文亦采用不規則三角網法進行土石方量計算。具體算法實現步驟如下:
第一步:導入參與計算的地形數據。地形數據可以是野外實測的高程點數據,也可以是已有的數字地形圖數據。以導入野外實測的高程點數據為例詳述導入地形數據的具體實現步驟如下:
首先,調用函數CStdioFile::Open()打開數據文件,并調用函數CStdioFile::ReadString()按行讀取點數據;然后,調用函數AcDbPoint::new()創建點實體,調用函數AcDbPoint::setPosition()設置點的坐標,調用函數AcDbBlockTableRecord::appendAcDbEntity()將點實體加入模型空間;最后,調用函數CStdioFile::Close()關閉文件。
第二步:根據地形數據生成不規則三角網。本文主要采用邊擴展方法生成不規則三角網。
第三步:輸入平場標高。
第四步:以平場標高為分界,計算第三個棱柱的體積,并最終計算出總的挖方量及填方量。若總的挖方量及填方量相差過大,則自動調整平場標高重新進行計算。計算結果見圖4所示。
圖4 根據已有地形數據計算的土方量結果顯示
4 結論
本文設計的方法可以降低傳統方法進行土地整理規劃過程中因需頻繁進行不同數據格式之間的轉換操作而附加的工作量,從而提高土地整理規劃的效率。通過應用VC++結合ObjectArx對AutoCAD進行二次開發,實現了基于AutoCAD的土地利用信息查詢、統計等操作,以及進行土地整理相關工程量的計算等土地整理規劃過程中需頻繁使用的功能。最后的實例驗證測試結果良好,與客觀事實情況相符合,證明了本文設計方案的可行性與準確性。
參考文獻
[1]衰勝平,趙靜,彭君.我國土地整理的意義及對策研究[J].知識經濟,2010,3:9.
[2]王軍,余莉,羅明,等.土地整理研究綜述[J].地域研究與開發,2003,22(2):8-11.
[3]徐小培.淺析我國土地整理[J].資源環境與發展,2009,4:19-21.
[4]張超,王秀茹,高楠.MapInfo和AutoCAD支持下的土地整理規劃設計方法[J].水土保持與研究,2006,13(1):189-203.
[5]于蕭榕,郭昌言,陳剛.結合Objectarx和C#進行AutoCAD二次開發框架的研究[J].科學技術與工程,2010,10(20):5 085-5 090.
[6]韋忠.基于ObjectARX.Net的Jig技術及其應用研究[J].現代測繪,2010,33(3):45-47.
[7]楊小兵.利用ObjectARX開發小型地下管線信息管理系統[J].城市勘測,2010,4:74-76.
[8]陳國強.淺談截面法在土地平整工程量計算中的應用[J].農技服務,2009,26(9):144-145.
[9]楊小艷,雍新琴,陳龍高.《土地利用規劃學》實踐教學環節建設的探討[J].安徽農學通報,2007,13(21):119-120.
[10]農兆云.土地整理中土方量計算方法比較研究[J].南方國土資源,2010,6:32-33.
[11]湯雪茜,陳天偉.土方量計算的方法探討[J/OL].[2008-06-06].
(責編:施婷婷)
圖2 查詢結果顯示
點擊保存按鈕,即可把上訴查詢到的所有的信息(李家店這個村莊中每塊圖斑的類型以及面積,進而可以求出每類圖斑的總面積)以文本文檔的格式保存在電腦硬盤中。見圖3。
圖3 查詢結果保存效果
(下轉52頁)
(上接9頁)3 土地整理工程量計算算法設計
土地平整是土地開發整理項目中最重要、最復雜的工程,也是項目審查、資金審批的重要環節[8],而土石方量計算是土地平整工程量計算的重要組成部分[9],因此,快速完成土石方量計算,提高土地平整工程量計算效率對于做好土地開發整個項目有重要的意義。
常用于計算土石方量的方法有方格網法、等高線法、斷面法、DTM法(不規則三角網法)、區域土方量平衡法和平均高程法等[10]。由于不規則三角網法(DTM)具有以下優點:(1)三角網中的點和線的分布密度和結構完全可以與地表的特征相協調,直接利用原始資料作為網格結點;(2)不改變原始數據和精度;(3)能夠插入地性線以保存原有關鍵的地形特征,以及能很好地適應復雜、不規則地形,從而將地表的特征表現得淋漓盡致等[11]。因此,利用不規則三角網法計算土石方量可以大大提高計算精度,本文亦采用不規則三角網法進行土石方量計算。具體算法實現步驟如下:
第一步:導入參與計算的地形數據。地形數據可以是野外實測的高程點數據,也可以是已有的數字地形圖數據。以導入野外實測的高程點數據為例詳述導入地形數據的具體實現步驟如下:
首先,調用函數CStdioFile::Open()打開數據文件,并調用函數CStdioFile::ReadString()按行讀取點數據;然后,調用函數AcDbPoint::new()創建點實體,調用函數AcDbPoint::setPosition()設置點的坐標,調用函數AcDbBlockTableRecord::appendAcDbEntity()將點實體加入模型空間;最后,調用函數CStdioFile::Close()關閉文件。
第二步:根據地形數據生成不規則三角網。本文主要采用邊擴展方法生成不規則三角網。
第三步:輸入平場標高。
第四步:以平場標高為分界,計算第三個棱柱的體積,并最終計算出總的挖方量及填方量。若總的挖方量及填方量相差過大,則自動調整平場標高重新進行計算。計算結果見圖4所示。
圖4 根據已有地形數據計算的土方量結果顯示
4 結論
本文設計的方法可以降低傳統方法進行土地整理規劃過程中因需頻繁進行不同數據格式之間的轉換操作而附加的工作量,從而提高土地整理規劃的效率。通過應用VC++結合ObjectArx對AutoCAD進行二次開發,實現了基于AutoCAD的土地利用信息查詢、統計等操作,以及進行土地整理相關工程量的計算等土地整理規劃過程中需頻繁使用的功能。最后的實例驗證測試結果良好,與客觀事實情況相符合,證明了本文設計方案的可行性與準確性。
參考文獻
[1]衰勝平,趙靜,彭君.我國土地整理的意義及對策研究[J].知識經濟,2010,3:9.
[2]王軍,余莉,羅明,等.土地整理研究綜述[J].地域研究與開發,2003,22(2):8-11.
[3]徐小培.淺析我國土地整理[J].資源環境與發展,2009,4:19-21.
[4]張超,王秀茹,高楠.MapInfo和AutoCAD支持下的土地整理規劃設計方法[J].水土保持與研究,2006,13(1):189-203.
[5]于蕭榕,郭昌言,陳剛.結合Objectarx和C#進行AutoCAD二次開發框架的研究[J].科學技術與工程,2010,10(20):5 085-5 090.
[6]韋忠.基于ObjectARX.Net的Jig技術及其應用研究[J].現代測繪,2010,33(3):45-47.
[7]楊小兵.利用ObjectARX開發小型地下管線信息管理系統[J].城市勘測,2010,4:74-76.
[8]陳國強.淺談截面法在土地平整工程量計算中的應用[J].農技服務,2009,26(9):144-145.
[9]楊小艷,雍新琴,陳龍高.《土地利用規劃學》實踐教學環節建設的探討[J].安徽農學通報,2007,13(21):119-120.
[10]農兆云.土地整理中土方量計算方法比較研究[J].南方國土資源,2010,6:32-33.
[11]湯雪茜,陳天偉.土方量計算的方法探討[J/OL].[2008-06-06].
(責編:施婷婷)