APP下载

基于南方CASS成图系统植被符号自动抽稀的实现

2014-09-29吴祖程陈永就

地理空间信息 2014年4期
关键词:点位个数标高

吴祖程,陈永就

(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].

猜你喜欢

点位个数标高
多级节能工厂化养殖池塘建设的标高设计初探
怎样数出小正方体的个数
基于结构光视觉的钻孔点位法矢检测技术研究
办公楼楼面装饰标高控制流程及注意事项
等腰三角形个数探索
怎样数出小木块的个数
机器人点位控制速度规划算法选择策略
怎样数出小正方体的个数
大盘仍在强烈下跌趋势中
垂直面内建立基线的特殊点位高程测量法