基于mapbasic的電力線屬性修改

  摘要:本文是由mapbasic結(jié)合mapinfo開發(fā)的程序?qū)崿F(xiàn)的。主要是通過點(diǎn)選一段電力線,使與之‘線路名稱’屬性相同的電力線都呈被選中狀態(tài),同時(shí)出現(xiàn)一個(gè)文本窗口,給修改‘線路名稱’屬性提供接口。已有的值在第一個(gè)文本框中顯示出來,第二個(gè)文本框是空白的,輸入新屬性值,點(diǎn)擊確定就可修改全部選中電力線的‘線路名稱’屬性值。與mapinfo本身提供的功能,所進(jìn)行的修改過程來比,速度提高了十幾倍。

  關(guān)鍵詞:mapinfo,mapbasic,電力線,屬性

  1前言

  這個(gè)問題的產(chǎn)生來源于遼中電力項(xiàng)目。該項(xiàng)目是根據(jù)遼中縣農(nóng)電局對遼中地區(qū)電力事業(yè)發(fā)展的需求,對該地區(qū)面積約1635平方公里范圍內(nèi)的66KV、10KV電力線路及供電所和變電所進(jìn)行調(diào)查、測量,最后數(shù)字化1:1萬地形圖。電力專業(yè)數(shù)據(jù)包括66KV和10KV兩種電力線,要對其電壓伏數(shù)、桿塔號(hào)、線路名稱、變電所或供電所名稱進(jìn)行實(shí)地測量調(diào)查,并填寫在數(shù)據(jù)屬性字段中。

  在項(xiàng)目編輯過程中,由于作業(yè)方案的改變,要求將電力線的‘線路名稱’屬性值,舉例來說,由‘三億分’改為‘黃臘坨線三億分’;‘三億造紙廠支’改為‘黃臘坨線三億分三億造紙廠支’,也就是注記線路名稱的全稱。該項(xiàng)目共涉及到24個(gè)變電所,5萬個(gè)左右的電桿,象蜘蛛網(wǎng)一樣的線路,并且數(shù)據(jù)已經(jīng)都是按桿位打斷的數(shù)據(jù),同一‘線路名稱’值的線段有很多,看下表1所示的屬性信息就會(huì)明白。

  表1

  要一個(gè)一個(gè)的修改肯定是不現(xiàn)實(shí)的事,如何能快速、高效的更改這一屬性值,讓我們來看看下面兩種方法的比較,及最終的結(jié)論。

  2依靠mapinfo軟件本身的功能修改

  Mapinfo本身自帶了一個(gè)sql查詢功能,借助它我們能一次選擇同一‘線路名稱’值的所有線出來,在統(tǒng)一修改其值。具體步驟如下:

 、攀顾薷牡谋碜兂煽删庉嫚顟B(tài)。

 、朴‘信息查詢’工具或‘新建瀏覽窗口’工具選擇一個(gè)‘線路名稱’值,如:三億分。

 、屈c(diǎn)擊菜單‘查詢’SQL選擇,出現(xiàn)一個(gè)‘SQL選擇’對話框,填寫正確的選擇條件,如圖1,就可以選擇所有線路名稱’為東荒地分的電力線出來,同時(shí)出現(xiàn)一個(gè)名為Query1的瀏覽窗口! 

  圖1

  ⑷選擇菜單‘表’更新列,出現(xiàn)‘更新列’對話框,填寫正確的選擇條件,如圖2,就可統(tǒng)一更改‘線路名稱’的值為‘黃臘坨線三億分’了!

  圖2

  3屬性修改的程序?qū)崿F(xiàn)過程

 、哦x一個(gè)工具按鈕

  createbuttonpad"查詢工具"as

  toolbuttoncallingtool_subID1

  iconmi_icon_arrow

  cursormi_cursor_arrow

  drawmodedm_custom_point

  helpmsg"在地圖窗口中單擊n單擊一位置"

 、贫x一個(gè)修改對話框

  dialog'對話框

  title"選擇"

  controlstatictext

  title"點(diǎn)選電力線'線路名稱'"

  controledittext

  values_vz

  controlstatictext

  title"替換'線路名稱'"

  controledittext

  intosearchfor

  controlokbutton

  title"確定"

  ControlCancelButton

  title"取消"

 、沁x擇所有與選中的‘線路名稱’同值的電力線

  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'點(diǎn)取消鍵就跳到下一個(gè)循環(huán)

  endif

  到這程序?qū)崿F(xiàn)的‘線路名稱’屬性值修改過程也就完成了。用文字總結(jié)一下就是通過點(diǎn)選一段電力線,使與之‘線路名稱’屬性相同的電力線都呈被選中狀態(tài),同時(shí)出現(xiàn)一個(gè)文本窗口,給修改‘線路名稱’屬性提供接口。已有的值在第一個(gè)文本框中顯示出來,第二個(gè)文本框是空白的,輸入新屬性值,點(diǎn)擊確定就可修改全部選中電力線的‘線路名稱’屬性值。完成一條電力線的修改只需幾秒鐘的時(shí)間。

  4、結(jié)束語

  上面兩種方法雖然主要的完成過程都有四步,但第二種方法的整個(gè)過程都是程序?qū)崿F(xiàn)的,人工只需點(diǎn)擊一段線輸入新值就可以,比起第一種方法要快上幾十倍。在我們這樣的生產(chǎn)單位,速度與效益是緊密相關(guān)的,在以后的工作中,我會(huì)挖掘更多的方法來提高作業(yè)效率。

  參考文獻(xiàn):

  [1]地理信息系統(tǒng)二次開發(fā)教程—語言篇/劉光編著.北京:清華大學(xué)出版社,2003