吉林省易航测绘地理信息有限公司 吉林 长春 130062
摘要:清华山维EPS地理信息系统是以数据库为核心,综合CAD技术与GIS技术,从地理信息角度创建数据模型与图形属性共存为一体,提供了数据采集、数据编辑、数据监理、数据转换、数据分发、数据库建设、数据更新到GIS分析应用的综合地理信息系统平台。伴随着测绘仪器设备的不断发展,可使用无人机、三维激光扫描仪等设备生产出DOM(数字正射影像图)、DEM(数字高程模型)、DRG(数字栅格地图)、DLG(数字线划地图)以及复合模式组成的测绘成果。使用全站仪、RTK等设备采集外业数据时可以方便的输入编码,使用清华山维PES软件可以利用VBScript脚本语言根据地物点7位国标编码直接展绘出相应的符号,提高了工作效率。本文阐述如何利用VBScript脚本语言读取测绘仪器的CASS格式数据,然后利用EPS内置函数,直接展绘独立地物符号,以减轻内业编辑的劳动强度。
关键词:清华山维EPS;编码;VBScript脚本语言
0引言
测绘行业随着国产自主研发的GIS类平台软件清华山维EPS的发展,许多实用模块例如外业测图、点云处理、管网处理、地籍处理、房产处理、土地利用、立体测图、变形观测、地理信息系统等都很好的服务于生产实践中。VBScript是Visual Basic Script的简称,即 Visual Basic 脚本语言,有时也被缩写为VBS。它是一种微软环境下的轻量级的解释型语言,它使用COM组件、WMI、WSH、ADSI访问系统中的元素,对系统进行管理,是一种非常流行的编程语言。测绘外业生产中作业员每天要采集许多条外业数据,把这些数据用约定的编码进行归类,然后用VBScript编程脚本语言根据地物编码展绘相应地物,使得复杂的任务变得简单容易,提高了生产效率,减少了手工作业产生的错误。
1程序设计思路
首先自定义分解每行CASS格式数据过程,然后读取CASS格式外业数据文件分解成点名、编码、东坐标、北坐标、高程数组,然后根据EPS函数依据7位国标码创建相应独立地物,添加新创建图形对象空间点、点名到存库列表,最后保存存库列表对象到数据库,完成展绘相应独立地物点。
2主要程序代码
整个程序中重要代码如下:
'自定义分解字符串到数组strs(4)中的过程
Function ScanString(ByVal str, ByVal sep, ByRef strs(), ByRef count)
Dim sepidx1, sepidx2, strtemp
count = 0 : sepidx1 = 1 : sepidx2 = InStr(sepidx1 , str, sep, 1)
While (sepidx2 > 0)
strs(count) = Mid( str, sepidx1, sepidx2-sepidx1)
sepidx1 = sepidx2+1 : sepidx2 = InStr(sepidx1, str, sep, 1): count = count + 1
Wend
strs(count) = Mid( str, sepidx1, Len(str)+1-sepidx1) :count = count + 1
End Function
Sub OnClick() '脚本入口函数
dim fileName , tf, zfc,strs(4),count, dm1,dm,bm,x,y,z '声明变量filename-----z
fileName = SSProcess.SelectFileName(1,"",0,"南方CASS坐标数据(*.dat)|*.dat|All Files (*.*)|*.*||") '选择南方CASS外业数据文件名
Set fso = CreateObject("Scripting.FileSystemObject") '创建script文件系统实例
Set tf = fso.OpenTextFile(fileName, 1) '以只读方式打开坐标数据文件
do While Not tf.AtEndOfStream '开始循环,直到读取数据文件完毕
zfc=trim(tf.readline()) '读取一行文件数据去掉首尾空格
ScanString zfc, ",", strs, count '以逗号分解字符串到数组strs()中
dm1=strs(0) : bm=ucase(strs(1)) ' dm1为点号,转换编码为大写
if bm<>"" then '如果编码不为空
dm=dm1 & bm '点名为点号加编码,方便展点后编辑数据
else
dm=dm1 '编码为空点名为点号
end if
x=strs(2) : y=strs(3) : z=strs(4) '东坐标、北坐标、高程
select case bm '选择编码变量
case "SSJ" '编码是上水检修井
SSProcess.createnewobjbycode 5430051 '创建新图形对象上水检修井
SSProcess.addnewobjpoint x,y,z,0,dm '添加新对象的空间点和点名
SSProcess.addnewobjtosaveobjlist '添加新创建图形对象到存库列表
……'同理以下是创建新图形对象路灯的过程,省略创建其他图形对象过程
case "LD"
SSProcess.createnewobjbycode 3805011
SSProcess.addnewobjpoint x,y,z,0,dm
SSProcess.addnewobjtosaveobjlist
case else '编码不在自定义的编码列表中
SSProcess.createnewobjbycode 0 '依据地物编码0创建新图形对象点
SSProcess.addnewobjpoint x,y,z,0,dm
SSProcess.addnewobjtosaveobjlist
end select '结束选择语句
loop '结束循环语句
SSProcess.SaveBufferObjToDatabase '保存存库列表对象到数据库
tf.Close '关闭坐标数据文件
End Sub '结束脚本
3结论
通过这个程序,可以根据CASS外业数据的编码来展绘EPS相对应的独立地物。虽然程序代码简单,但可以大大的提高工作效率。
参考文献
[1]《VBScript程序员参考手册(第三版)》.清华大学出版社.2009年2月
[2]《EPS地理信息基础平台使用说明书》.北京清华山维新技术开发有限公司.2009年7月