基于南方CASS成图系统植被符号自动抽稀的实现
2014-09-29吴祖程陈永就
吴祖程,陈永就
(1.惠州市惠阳区国土资源测绘队,广东 惠州 516211;2.广东省国土资源测绘院,广东 广州 510500)
目前,AutoCAD在测绘行业得到普遍应用,数字化测图主要是以AutoCAD为平台进行二次开发的制图软件系统,所以地图缩编也大多在AutoCAD软件中进行。对于高程点的抽稀,南方CASS成图系统已提供了较为合理及快速方法,而对于植被符号的抽稀,则是通过植被符号填充辅助层(骨架线ASSIST层)改变图形比例尺后进行重新填充,但当骨架数据属性丢失后,就无法进行符号自动填充;对于丢失骨架线的植被数据,则需要重新圈定植被范围线后才可以进行填充处理,耗时费力。通过分析,利用点抽稀的方法,可以实现植被符号的抽稀。
1 植被符号自动抽稀的方法
1.1 在图面中按距离值进行自动抽稀
按距离值在图面中进行植被符号的抽稀方法,是在AutoCAD选定的范围内,将所有的植被符号放入选择集中,通过遍历每一个植被符号并建立一定距离的搜索圆,对搜索圆内的植被符号进行图面删除并从选择集中移除。使用图面距离抽稀方法的特点是经过抽稀的地形图,任意植被间两点的距离值不小于给定的间距值。
1.2 利用点位过滤功能实现植被符号抽稀
此方法是利用南方CASS成图系统本身所提供的高程点抽稀功能,通过编制程序进行数据交换,实现快速、自动的植被抽稀。其方法是:首先将植被符号提取到新文件中,将植被根据代码值写入植被符号的标高,满足高程点抽稀的数据要求,并自动输出数据文件;其次利用高程点过滤功能,指定一定的过滤值(即过滤间距),重新生成点位;最后将点的属性(即标高值)作为符号属性重新绘制过滤后的植被符号。
2 两种植被抽稀方法的效果及效率
为验证两种抽稀方法的效果和效率,使用Visual Basic语言编制了程序,对同一植被数据文件进行处理,通过效果及处理所耗时间对比,验证两种方法的优劣。
2.1 通过选择集进行数据处理的实现
首先将ZBTZ图层中的植被符号全部提取到新建的文件中,作为过渡数据。程序的编制首先建立存储数据需要的选择集:
Dim SSetObj As IAcadSelectionSet
Set SSetObj = CreatNEWsset("SS1")
Call BuildFilter(Filtertype, Filterdata, 8, "ZBTZ", 0,"Insert")
SSetObj.Select acSelectionSetAll, , , Filtertype,Filterdata
其次通过遍历选择集中的每一个实体(即植被符号),根据一定的间距值,建立搜索圆,对间距范围内的植被符号进行删除,并从选择集中移除,实现代码如下(部分):
Curpnt = CLobj.InsertionPoint‘当前植被符号插入点
For FenJiao = 0 To 330 Step 30 ‘建立搜索圆所需坐标
Acut = FenJiao * 0.01745
SouSuo = AcadApp.ActiveDocument.Utility.PolarPoint(Curpnt, Acut, 30) ‘范围30米Addpolypnt(cum* 2 + cum) = sousuo(0): Addpolypnt(cum *2 + 1 + cum)= SouSuo(1)
Addpolypnt(cum *2 + 2 + cum) = 0
Cum = Cum + 1
Next
Set BlockObj = CreatNEWsset("SS2")
Call BuildFilter(Blofiltertype, Blofilterdata, 0, "insert",8, "ZBTZ")
BlockObj.SelectByPolygon acSelectionSetCrossing Polygon, addpolypnt, Blofiltertype, Blofilterdata
BlockObj.Erase ‘删除搜索圆内的植被符号
将需删除的植被符号从选择集中删除后,循环次数会逐渐减少,实际遍历次数会大大小于植被符号的个数,进而减小运行时间。
2.2 利用点位过滤功能实现植被抽稀
同样,将植被符号提取到新文件中,通过程序将每一类型的植被符号根据属性值(数字型)赋予到标高值中,然后将数据输出到用作过渡的数据文件中,首先在程序中定制各种符号的块名和属性:
Dim ZbfhStr(0 To 77) As String
ZbfhStr(0) = "2111001,gc120,稻田符号"
ZbfhStr(1) = "2114001,gc123,菜地符号"
…
通过程序调用南方CASS高程点的展绘功能,根据一定的间距和比例尺,将抽稀后的点位展绘到图上。展绘点的实际属性为高程点位,但可以通过原先设定的标高值(存放植被符号的属性)来判断植被符号的属性。通过程序的进一步处理,根据展绘的点位和标高重新标绘植被符号,并利用定制的属性表恢复植被的属性,部分代码如下:
(
For OPT = 0 To Pcp - 1
For CCL = 0 To 77
If UCase(Bname(OPT)) = UCase(UCase(FindStrForD H(ZbfhStr(CCL), 2))) Then
Sxok$ = FindStrForDH(ZbfhStr(CCL), 1)
If Len(Sxok$) = 7 Then
Sxok$ = Left(Sxok$, 6) & "-1"
End If
AcadApp.ActiveDocument.SendCommand"TKTOTK" & vbCr & "5" & vbCr & Bname(OPT) &vbCr & Sxok$ & vbCr
Exit For
End If
Next
…
2.3 效果及效率比较
为测试2种方法执行数据处理的效果及效率,笔者选择取了一块约8 km2的地形图数据,其植被符号个数为118 397个(见图1、图2),按照20 m的抽稀间隔,通过选择集方式进行编程实现,抽稀后的植被个数为13 332个,抽稀后的植被个数比例为11.26%,抽稀时间为35 min42 s;利用点位过滤功能实现植被抽稀的方法经抽稀后的植被个数为13 253个(按1︰ 2 000比例尺进行抽稀,符号抽稀距离为20 m,抽稀后的效果见图3),抽稀植被个数比例为11.19%,抽稀时间为6 min4 s。2种方法执行后的数据结果相当,抽稀间隔均匀合理。
从计算机运行效率来看,第一种方法占用太多的内存资源,随着运行次数的增加,运行速度逐渐减慢,数据处理所需的时间较长。第二种方法的耗时约是第一种方法的1/6,效果与第一种方法相差无几,效率明显提升。这种方法不需考虑植被符号是否有属性,根据植被的符号样式进行分类抽取,在实际应用中更为合理。
3 结 语
以上2种方法都是根据一定的间距值对所有符号进行整体分布式的抽稀,依据不同的比例尺,小面积的植被区域会出现完全被抽除的情况,即没有了植被符号。虽然满足地形图对植被间距的要求,但在图面的合理性方面仍存在着不足,对于相邻植被间的符号保留问题,值得进一步探讨。
图式[S].
[2]张正禄.工程测量学[M].武汉:武汉大学出版社,2002
[3]叶海青.土木工程测量[M].上海:同济大学出版社,2006
[4]求是科技.Visual Basic6.0程序设计与开发技术大全[M].北京:人民邮电出版社,2004
[5]李长勋.AutoCAD VBA程序开发技术[M].北京:国防工业出版社,2004
[6]AutoCAD Asia Pte Ltd.Autodesk地理信息系统解决方案[M].北京:电子工业出版社,2011
[7]GB/T149112-2005.l︰500、l︰1 000、1︰2 000外业数字测图技术规程[S].