劉 洪,黃軍勝
(1. 廣西有色勘察設(shè)計(jì)研究院,廣西 南寧 530031; 2. 廣西壯族自治區(qū)水利電力設(shè)計(jì)研究院,廣西 南寧 530023)
利用AutoCAD二次開發(fā)實(shí)現(xiàn)地形圖高程點(diǎn)與等高線錯(cuò)誤自動(dòng)查找
劉 洪1,黃軍勝2
(1. 廣西有色勘察設(shè)計(jì)研究院,廣西 南寧 530031; 2. 廣西壯族自治區(qū)水利電力設(shè)計(jì)研究院,廣西 南寧 530023)
論述了數(shù)字地形圖中產(chǎn)生高程點(diǎn)與等高線錯(cuò)誤的可能原因,分析了高程點(diǎn)和等高線在地形圖中的空間位置關(guān)系及作為判斷條件的數(shù)學(xué)關(guān)系,論述了解決問題的辦法和判斷規(guī)則,展示了通過編制計(jì)算機(jī)程序?qū)崿F(xiàn)找出其錯(cuò)誤的核心代碼,此研究對(duì)于減輕質(zhì)檢人員在檢查數(shù)字地形圖的高程點(diǎn)與等高線錯(cuò)誤時(shí)的勞動(dòng)強(qiáng)度和提高工作效率很有意義。
數(shù)字地形圖;等高線;高程點(diǎn);點(diǎn)線不符;C#
因?yàn)榭茖W(xué)技術(shù)的進(jìn)步,在現(xiàn)階段地形圖的生產(chǎn)能力有了很大的提高,但由于人工智能仍不夠發(fā)達(dá)且很多環(huán)節(jié)仍需要人工干預(yù),導(dǎo)致生產(chǎn)出的地形圖仍存在著高程點(diǎn)與等高線的錯(cuò)誤。對(duì)于質(zhì)檢人員而言,如果僅憑借著眼睛,要找出這些錯(cuò)誤以提高地形圖的質(zhì)量水平是非常困難的,勞動(dòng)強(qiáng)度大不說,而且效率低下、極易出現(xiàn)遺漏。因此,找到一種高效率的辦法解決這個(gè)問題就顯得很有必要,本文正是據(jù)此分析產(chǎn)生錯(cuò)誤的原因,找到解決的辦法,再利用C#+ObjectARX對(duì)AutoCAD二次開發(fā)編程實(shí)現(xiàn)查找數(shù)字地形圖中高程點(diǎn)與等高線的錯(cuò)誤。
1.1 高程點(diǎn)錯(cuò)誤
目前大比例尺數(shù)字地形圖主要有3種生產(chǎn)方式:一是老圖矢量數(shù)字化,在識(shí)別老圖中的高程注記點(diǎn)時(shí),有些不能正確識(shí)別,需要人工修改,容易輸入錯(cuò)誤;二是利用航片經(jīng)畸變糾正等工序生成正射影像得到數(shù)字線劃圖并在立體模型中取得高程屬性值,取得高程值時(shí)讀取錯(cuò)誤,與實(shí)際繪制的等高線形成矛盾;三是全野外數(shù)據(jù)采集內(nèi)業(yè)編輯形成數(shù)字地形圖,其注記點(diǎn)的高程直接由數(shù)據(jù)文件讀取生成,這種直接注記高程點(diǎn)的方式不易出現(xiàn)錯(cuò)誤,但作業(yè)員在調(diào)整自動(dòng)繪制的等高線時(shí),可能為了圓滑美觀而人為調(diào)整等高線上的節(jié)點(diǎn)位置,從而導(dǎo)致高程注記點(diǎn)的高程數(shù)值與等高線形成矛盾。
由以上方式生產(chǎn)得到的數(shù)字地形圖,都有可能因圖面高程注記點(diǎn)的數(shù)量達(dá)不到規(guī)范要求而人工加注高程點(diǎn),而人工加點(diǎn)由于作業(yè)人員的疏忽,判斷等高線錯(cuò)誤導(dǎo)致加注高程點(diǎn)錯(cuò)誤,這是最易產(chǎn)生錯(cuò)誤的原因。
有時(shí),作業(yè)員在發(fā)現(xiàn)高程注記點(diǎn)的高程數(shù)值與等高線相互矛盾時(shí),為圖方便,僅將其注記數(shù)值修改成正確數(shù)值而沒有對(duì)高程點(diǎn)特性的坐標(biāo)Z值進(jìn)行相應(yīng)修改,從而導(dǎo)致錯(cuò)誤。
1.2 等高線錯(cuò)誤
在調(diào)整不合理等高線時(shí),作業(yè)員需刪除計(jì)算機(jī)繪制的部分不合理等高線,另行繪制補(bǔ)充。由于粗心,忘記修改等高線的高程屬性值,使其值為零或其他錯(cuò)誤值,導(dǎo)致新繪制的等高線與已繪制好的等高線及高程點(diǎn)相互矛盾;或者又由于圖面元素太密集而在瀏覽時(shí)誤刪了某一條正確的等高線。
2.1 錯(cuò)誤歸類
根據(jù)以上原因分析,可以看出數(shù)字地形圖中高程點(diǎn)與等高線產(chǎn)生錯(cuò)誤的原因可以歸為如下4類。即點(diǎn)的高程特性坐標(biāo)Z值與點(diǎn)的高程注記數(shù)值不符;等高線正確,但高程點(diǎn)不正確;高程點(diǎn)正確,但等高線不正確;等高線與高程點(diǎn)皆不正確。
2.2 解決辦法
2.2.1 點(diǎn)的高程特性坐標(biāo)Z值與點(diǎn)的高程注記值不符
對(duì)數(shù)字地形圖的*.dwg格式文件進(jìn)行遍歷,在高程點(diǎn)圖層中找到全部高程點(diǎn),讀取其高程特性坐標(biāo)Z值和高程注記數(shù)值(即高程點(diǎn)特性中的height屬性值),并將兩者比較,若兩不相等,即為作業(yè)員修改過高程點(diǎn)的高程注記數(shù)值,用圓圈將其標(biāo)示出來。
如圖1所示,高程點(diǎn)的高程特性坐標(biāo)Z值原為“61.355 0”,點(diǎn)的高程注記數(shù)值原為“61.36”,被作業(yè)員人為修改為“59.36”,導(dǎo)致兩者不符,這在入庫時(shí)或許會(huì)引起新的錯(cuò)誤。
圖1 高程點(diǎn)自身屬性數(shù)據(jù)矛盾
2.2.2 等高線正確,但高程點(diǎn)不正確
如果等高線與高程點(diǎn)都是正確的,則高程點(diǎn)的
高程注記值與其最近的一根等高線的高程值之差應(yīng)該在一個(gè)等高距之內(nèi)。
在AutoCAD中,每一個(gè)圖元都對(duì)應(yīng)著一個(gè)唯一的ID,可以從高程點(diǎn)開始,人為構(gòu)造一條射線,與等高線相交,提取這些交點(diǎn)和與之對(duì)應(yīng)的等高線ID,然后按高程點(diǎn)與這些交點(diǎn)的遠(yuǎn)近距離進(jìn)行排序,由此可按順序逐條找到高程點(diǎn)周邊的不同等高線。
圖2所示為構(gòu)造線與等高線相交的可能順序。
圖2 排序前等高線的順序
相交后,即可獲得各交點(diǎn)的坐標(biāo),據(jù)此可計(jì)算出各相交點(diǎn)與此高程點(diǎn)的距離,根據(jù)其距離值的大小,再次按近遠(yuǎn)順序排列。
圖3所示,為構(gòu)造線與各等高線相交點(diǎn)距離的近遠(yuǎn)順序。
圖3 排序后等高線的順序
經(jīng)過這樣排序之后,便可按順序找到相應(yīng)的等高線,讀取其高程值。
圖4 高程點(diǎn)錯(cuò)誤示例圖1
圖5 高程點(diǎn)錯(cuò)誤示例圖2
如果H2
如果H2>H3,即H1>H3,則HA必小于H1,否則此高程點(diǎn)錯(cuò)誤。
圖6 高程點(diǎn)錯(cuò)誤示例圖3
2.2.3 高程點(diǎn)正確,但等高線不正確
(1) 等高線高程值為零這種情況存在于沿海一帶及海拔位于零左右的地方,在其他地方出現(xiàn)便是錯(cuò)誤無疑。作業(yè)員在調(diào)整修改等高線時(shí),對(duì)部分不合理的等高線進(jìn)行了刪除操作,然后由手工繪制補(bǔ)充,而未對(duì)其賦予正確的高程值可能會(huì)出現(xiàn)零或輸入了其他錯(cuò)誤值。這樣的等高線,在圖面上并不能看出不妥之處,但在建立立體模型生成DEM等產(chǎn)品的過程中,必定會(huì)出現(xiàn)與實(shí)地不符的形狀,從而導(dǎo)致錯(cuò)誤,嚴(yán)重影響產(chǎn)品質(zhì)量。
0米高程線在其線頭位置以圓圈標(biāo)記,并注明此線高程為0。
(2) 假設(shè)A點(diǎn)沿構(gòu)造線方向相交有3條以上多條等高線且等高線的高程值均不相等。
以此類推,可以判斷出第4條、第5條甚至更多的等高線。不過,此地形圖如果是按規(guī)范展繪高程點(diǎn),其數(shù)量及位置涵蓋到了每個(gè)小區(qū)域,則不必每個(gè)點(diǎn)都判斷多條等高線,根據(jù)經(jīng)驗(yàn),一般判斷3條就夠了。
圖7 等高線錯(cuò)誤示例圖1
圖8 等高線錯(cuò)誤示例圖2
2.2.4 等高線與高程點(diǎn)皆不正確
這種情況比較少,但如果采用以上規(guī)則進(jìn)行判斷,則可以直接得出結(jié)論,無論是高程點(diǎn)還是等高線都將被圓圈標(biāo)記,以示錯(cuò)誤,需要人工干預(yù),理清緣由。
2.2.5 特殊情況
(1) 若高程點(diǎn)A已在圖邊,則向圖邊構(gòu)造線是無法判斷此高程點(diǎn)是否正確的,這種情況下,需要向另一方向構(gòu)造線來與等高線相交,再用上述規(guī)則進(jìn)行判斷。
如圖9所示,若右側(cè)為圖框,A點(diǎn)位于圖邊,向右的構(gòu)造線已沒有等高線與其相交,這時(shí),則需要向另一方向構(gòu)造線段或射線來與等高線相交,如圖10所示。
圖9 構(gòu)造線與等高線相交示例圖1
圖10 構(gòu)造線與等高線相交示例圖2
(3) 若高程點(diǎn)A一側(cè)只有兩根等高線,如果兩根等高線高程不同,則可用上述規(guī)則判斷點(diǎn)是否錯(cuò)誤或等高線是否錯(cuò)誤,但如果兩根等高線高程相同,則不能確定高程點(diǎn)或等高線是否正確,這時(shí),也需要向另一方向構(gòu)造線來與等高線相交,再進(jìn)行判斷。
(4) 若高程點(diǎn)A一側(cè)相交的第一條線為田埂線或陡坎(坡、崖)線,由于田的另一側(cè)地形與此高程點(diǎn)無太大聯(lián)系且同一條坎(坡、崖)的各點(diǎn)高度絕大部分都不相同,因此無法判斷,需要向另一方向構(gòu)造線來與等高線相交,再進(jìn)行判斷。因本程序的主要功能是查找高程點(diǎn)與相臨等高線的錯(cuò)誤,如若點(diǎn)的各個(gè)方向的第一條交線都為田埂線或陡坎(坡、崖)線(如高程點(diǎn)在梯田中間),則不再對(duì)此點(diǎn)判斷。
3.1 編程環(huán)境配置
操作系統(tǒng):MicrosoftWindows10中文旗艦版64位操作系統(tǒng)。
硬件開發(fā)環(huán)境:聯(lián)想筆記本昭陽E49A。
軟件開發(fā)環(huán)境:MicrosoftVisualStudio.NET2008+ObjectARX2010。
軟件運(yùn)行環(huán)境:AutoCAD2010。
3.2 編程核心算法
選擇出數(shù)字地形圖中的田埂線和陡坎(坡、崖)線及等高線,構(gòu)建選擇集;遍歷數(shù)字地形圖中的所有高程點(diǎn),將高程點(diǎn)逐個(gè)向一側(cè)構(gòu)造線與臨近的田埂線或陡坎(坡、崖)線或等高線相交,剔除田埂線和陡坎(坡、崖)線,比較高程點(diǎn)注記與Z值,高程點(diǎn)注記與鄰近等高線的高程值,以及臨近幾條等高線間的高程值,然后把錯(cuò)誤的高程點(diǎn)在高程點(diǎn)位置用圓圈標(biāo)記出來,把錯(cuò)誤的等高線在等高線的交點(diǎn)處用另一半徑圓圈標(biāo)記出來。部分核心代碼如下:
if(JdStruct.Length> 2)∥3條以上情況
{if(Math.Abs(JdStruct[2].Gc-JdStruct[1].Gc) ==DengGaoJu&&Math.Abs(JdStruct[1].Gc-JdStruct[0].Gc)!=DengGaoJu)
{ ∥第1條等高線有問題
CreateJianChaYuan(JdStruct[0].JD, 190,GScale,0.25);∥繪制標(biāo)錯(cuò)圓
CreateText(String.Format("線"),JdStruct[0].JD,GScale, 0.8, "檢查");
}
{ ∥第2條等高線有問題
CreateJianChaYuan(JdStruct[1].JD, 190, GScale, 0.25);∥繪制標(biāo)錯(cuò)圓
CreateText(String.Format("線"), JdStruct[1].JD, GScale, 0.8, "檢查");
}
if (Math.Abs(JdStruct[1].Gc - JdStruct[0].Gc) == DengGaoJu && Math.Abs(JdStruct[2].Gc - JdStruct[1].Gc)!= DengGaoJu)
{∥第3條等高線有問題
CreateJianChaYuan(JdStruct[2].JD, 190, GScale, 0.25);∥繪制標(biāo)錯(cuò)圓
CreateText(String.Format("線"), JdStruct[2].JD, GScale, 0.8, "檢查");
}
}
圖11所示為查找程序運(yùn)行的開始界面,此時(shí)可在對(duì)話框中輸入當(dāng)前數(shù)字地形圖的等高距,其默認(rèn)值為1 m,使用時(shí)可根據(jù)實(shí)際情況填寫。
圖11 程序運(yùn)行開始界面
圖12所示為查找程序運(yùn)行的結(jié)束界面,點(diǎn)擊確定后即顯示檢查結(jié)果。
圖12 程序運(yùn)行結(jié)束確認(rèn)界面
圖13所示為程序運(yùn)行后結(jié)果顯示。
圖13 錯(cuò)誤查找結(jié)果
經(jīng)過以上論述過程可以看出,本文的研究結(jié)果是正確的,可以利用前述判斷規(guī)則編制的程序來完成數(shù)字地形圖中高程點(diǎn)與等高線的錯(cuò)誤自動(dòng)查找,據(jù)此改正即可提高數(shù)字地形圖的質(zhì)量,可以明顯減輕質(zhì)檢人員在檢查數(shù)字地形圖的高程點(diǎn)與等高線錯(cuò)誤時(shí)的勞動(dòng)強(qiáng)度,提高工作效率,解決了質(zhì)檢人員人工查找點(diǎn)線矛盾的難題。
[1] 洪濤,譚仁春,李寧. AutoCAD數(shù)據(jù)自動(dòng)創(chuàng)建ArcGIS“地圖瓦片”服務(wù)的方法研究[J]. 測(cè)繪通報(bào),2015(12): 85-87.
[2] 余代俊,蒲朝旭,朱逍賢. 基于AutoCAD二次開發(fā)的高斯投影轉(zhuǎn)等積割圓錐投影[J]. 測(cè)繪通報(bào),2013(7): 71-73.
[3] 胡紹輝, 陳海英, 魏葉敏. AutoCAD 2004平臺(tái)下農(nóng)村宅基地宗地圖批量生產(chǎn)軟件的研發(fā)[J]. 測(cè)繪通報(bào),2016(9): 83-86.
[4] 詹必偉,高穎,翟翔,等. 基于AutoCAD的DLG自動(dòng)化質(zhì)量檢查探究[J]. 測(cè)繪通報(bào),2014(10): 111-113.
[5] 郭沛沛,李成名,殷勇.建筑物合并的Delaunay三角網(wǎng)分類過濾法[J]. 測(cè)繪學(xué)報(bào),2016,45(8): 1001-1007.
[6] 竇世卿,趙學(xué)勝,劉成軍,等. 河網(wǎng)線要素與DEM綜合的三維Douglas-Peucker算法[J]. 測(cè)繪學(xué)報(bào),2016,45(4): 450-457.
[7] 李國輝,許文帥,龍毅,等. 面向等高線與河流沖突處理的多約束移位方法[J]. 測(cè)繪學(xué)報(bào), 2014,43(11): 1204-1210.
[8] 馮向前. 使用ObjectARX實(shí)現(xiàn)自動(dòng)檢查點(diǎn)線矛盾[J]. 城市勘測(cè),2008(2): 115-118.
[9] ROBINSON S, NAGEL C. C#高級(jí)編程[M].3版.北京:清華大學(xué)出版社,2005.
[10] 李冠億. 深入淺出AutoCAD.NET二次開發(fā)[M].北京:中國建筑工業(yè)出版社,2012.
[11] 楊坤. 可視域分析算法的并行化與容錯(cuò)研究[D].南京:南京師范大學(xué),2014.
[12] 蔡偉明.一種基于AutoCAD平臺(tái)高程值檢查功能的開發(fā)[J].礦山測(cè)量,2010(3):26-28.
[13] 董玉德,趙韓. CAD二次開發(fā)理論與技術(shù)[D].合肥:合肥工業(yè)大學(xué)出版社,2009.
[14] 陸貽豪.ObjectARX在城市地下排水管道上的開發(fā)[J].科技風(fēng),2016(14):154-155.
[15] 秦洪現(xiàn),崔惠嵐,孫劍.Autodesk 系列產(chǎn)品開發(fā)培訓(xùn)教程[M]. 北京:化學(xué)工業(yè)出版社, 2008.
Using Secondary Development of AutoCAD to Automatically Find Errors of Elevation Points and Contour Lines in Digital Topographic Map
LIU Hong1,HUANG Junsheng2
(1. Guangxi Nonferrous Survey and Design Institute, Nanning 530031, China; 2. Guangxi Water and Power Design Institute, Nanning 530023, China)
This paper discusses the possible causes of the elevation point and contour errors in digital topographic map, analyzes the spatial location relationship and the mathematical relationship of the elevation point and contour in the topographic map, with the mathematical relationship working as a judgment condition. It discusses the solutions and judgment rules, and shows the realization of finding out its mistakes’core codes through computer program. This research is very meaningful to reduce the labor intensity of inspection personnel while checking elevation point and contour errors in the digital topographic map so as to improve the working efficiency.
digital topographic map; contour; elevation point; no conformation between the point and line; C#
劉洪,黃軍勝.利用AutoCAD二次開發(fā)實(shí)現(xiàn)地形圖高程點(diǎn)與等高線錯(cuò)誤自動(dòng)查找[J].測(cè)繪通報(bào),2017(5):100-104.
10.13474/j.cnki.11-2246.2017.0164.
2016-11-22;
2017-02-06
劉 洪(1974—),男,碩士,高級(jí)工程師,從事大地測(cè)量與測(cè)繪工程工作。E-mail: 36682165@qq.com
P208
A
0494-0911(2017)05-0100-05