摘要:本文是由mapbasic结合mapinfo开发的程序实现的。主要是通过点选一段电力线,使与之‘线路名称’属性相同的电力线都呈被选中状态,同时出现一个文本窗口,给修改‘线路名称’属性提供接口。已有的值在第一个文本框中显示出来,第二个文本框是空白的,输入新属性值,点击确定就可修改全部选中电力线的‘线路名称’属性值。与mapinfo本身提供的功能,所进行的修改过程来比,速度提高了十几倍。
关键词:mapinfo,mapbasic,电力线,属性
1前言
这个问题的产生来源于辽中电力项目。该项目是根据辽中县农电局对辽中地区电力事业发展的需求,对该地区面积约1635平方公里范围内的66KV、10KV电力线路及供电所和变电所进行调查、测量,最后数字化1:1万地形图。电力专业数据包括66KV和10KV两种电力线,要对其电压伏数、杆塔号、线路名称、变电所或供电所名称进行实地测量调查,并填写在数据属性字段中。
在项目编辑过程中,由于作业方案的改变,要求将电力线的‘线路名称’属性值,举例来说,由‘三亿分’改为‘黄腊坨线三亿分’;‘三亿造纸厂支’改为‘黄腊坨线三亿分三亿造纸厂支’,也就是注记线路名称的全称。该项目共涉及到24个变电所,5万个左右的电杆,象蜘蛛网一样的线路,并且数据已经都是按杆位打断的数据,同一‘线路名称’值的线段有很多,看下表1所示的属性信息就会明白。
表1
要一个一个的修改肯定是不现实的事,如何能快速、高效的更改这一属性值,让我们来看看下面两种方法的比较,及最终的结论。
2依靠mapinfo软件本身的功能修改
Mapinfo本身自带了一个sql查询功能,借助它我们能一次选择同一‘线路名称’值的所有线出来,在统一修改其值。具体步骤如下:
⑴使所要修改的表变成可编辑状态。
⑵用‘信息查询’工具或‘新建浏览窗口’工具选择一个‘线路名称’值,如:三亿分。
⑶点击菜单‘查询’SQL选择,出现一个‘SQL选择’对话框,填写正确的选择条件,如图1,就可以选择所有线路名称’为东荒地分的电力线出来,同时出现一个名为Query1的浏览窗口。
图1
⑷选择菜单‘表’更新列,出现‘更新列’对话框,填写正确的选择条件,如图2,就可统一更改‘线路名称’的值为‘黄腊坨线三亿分’了。
图2
3属性修改的程序实现过程
⑴定义一个工具按钮
createbuttonpad"查询工具"as
toolbuttoncallingtool_subID1
iconmi_icon_arrow
cursormi_cursor_arrow
drawmodedm_custom_point
helpmsg"在地图窗口中单击n单击一位置"
⑵定义一个修改对话框
dialog'对话框
title"选择"
controlstatictext
title"点选电力线'线路名称'"
controledittext
values_vz
controlstatictext
title"替换'线路名称'"
controledittext
intosearchfor
controlokbutton
title"确定"
ControlCancelButton
title"取消"
⑶选择所有与选中的‘线路名称’同值的电力线
fetchreci_row_idfroms_table
s_tn=s_table
s_table=s_table+".线路名称"
s_vz=s_table
select*froms_tnwhere线路名称=s_vzintosel
next
⑷修改‘线路名称’值
ifcommandinfo(cmd_info_dlg_ok)then
ifsearchfor<>""then
updateselset线路名称=searchfor
dimnobjasobject
dimjasinteger
j=selectioninfo(sel_info_nrows)
dimnasinteger
forn=1toj
select*fromselwhererowid=nintosele1
nobj=sele1.obj
alterobjectnobjinfoobj_info_pen,makepen(1,2,red)
updateselsetobj=nobjwhererowid=n
next
endif
else
gotonpro'点取消键就跳到下一个循环
endif
到这程序实现的‘线路名称’属性值修改过程也就完成了。用文字总结一下就是通过点选一段电力线,使与之‘线路名称’属性相同的电力线都呈被选中状态,同时出现一个文本窗口,给修改‘线路名称’属性提供接口。已有的值在第一个文本框中显示出来,第二个文本框是空白的,输入新属性值,点击确定就可修改全部选中电力线的‘线路名称’属性值。完成一条电力线的修改只需几秒钟的时间。
4、结束语
上面两种方法虽然主要的完成过程都有四步,但第二种方法的整个过程都是程序实现的,人工只需点击一段线输入新值就可以,比起第一种方法要快上几十倍。在我们这样的生产单位,速度与效益是紧密相关的,在以后的工作中,我会挖掘更多的方法来提高作业效率。
参考文献:
[1]地理信息系统二次开发教程—语言篇/刘光编著.北京:清华大学出版社,2003