基于mapbasic的电力线属性修改

  摘要:本文是由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