丁肇軍,任娜娜,王尊濤
(山東中基地理信息監(jiān)理有限責(zé)任公司,山東濟(jì)南250101)
鐵路遍布全國各地,鐵路用地是國有土地中重要的一個組成部分,核實(shí)鐵路用地線對于合理規(guī)劃國有土地具有深遠(yuǎn)的意義。本測區(qū)內(nèi)鐵路沿線均于20世紀(jì)90年代至2002年進(jìn)行了土地證發(fā)放工作,發(fā)證坐標(biāo)以地畝圖上里程支距(以下稱為舊里程、舊支距)坐標(biāo)為準(zhǔn)。隨著鐵路多次提速需求下鐵路線路的變化及新建鐵路線的增加,地畝圖上百米位置與現(xiàn)百米標(biāo)位置不再吻合,鐵路部門現(xiàn)使用的基準(zhǔn)中心線與原發(fā)證時的基準(zhǔn)中心線也發(fā)生了多處變化,若不及時更新鐵路界址線,在很大程度上會影響鐵路土地管理部門對已有土地資源的有效利用和配置。除了要將新舊里程值進(jìn)行轉(zhuǎn)換,將舊里程、支距坐標(biāo)轉(zhuǎn)換成國家統(tǒng)一坐標(biāo)是亟待解決的問題。
南方CASS是現(xiàn)在全國范圍內(nèi)使用較為普遍的測繪繪圖軟件,編程語言的選擇應(yīng)該考慮實(shí)用性和普及性。在CASS繪圖軟件中使用VB程序語言進(jìn)行程序開發(fā)具有以下優(yōu)勢:
1)VB編程界面操作簡單,可視化操作。VB提供了可視化設(shè)計工具,開發(fā)人員在設(shè)計對象時,不必為界面設(shè)計和描述對象而寫大量的代碼,只需在屏幕上“畫出”各控件,在屬性對話框中編輯各控件屬性,即可完成對界面的設(shè)計和控件的效果編輯,降低了編程難度。
2)VB具有高級程序設(shè)計語言的語句結(jié)構(gòu),接近于人的自然思維方式,可自動進(jìn)行語法錯誤檢查。VB是解譯語言,在輸入代碼的同時解譯系統(tǒng)將高級語言分解翻譯成計算機(jī)可以識別的指令,并判斷每個語法是否錯誤[1]。
3)事件驅(qū)動靈活,程序掛接人性化。VB通過事件來操作對象,一個對象可以產(chǎn)生一個事件,也可以產(chǎn)生多個事件,每個事件通過一個程序來控制。對象的程序代碼是獨(dú)立編寫的,對于程序間的掛接,開發(fā)人員可以按照自己的習(xí)慣來進(jìn)行分別設(shè)置,操作更為靈活。
4)VB可以與CASS繪圖軟件同一程序運(yùn)行,執(zhí)行速度快。
不同坐標(biāo)系統(tǒng)的轉(zhuǎn)換本質(zhì)上是不同基準(zhǔn)間的轉(zhuǎn)換[2],搜集鐵路相關(guān)資料后發(fā)現(xiàn),發(fā)證時采用的舊里程數(shù)是發(fā)證年代鐵路系統(tǒng)采用的一套舊標(biāo)準(zhǔn),時間多在二十年前,此套標(biāo)準(zhǔn)現(xiàn)已完全棄用,作為關(guān)鍵里程定義的所標(biāo)示的橋涵里程,因里程改變及橋涵改造修建,也發(fā)生較大變化。因此,編寫程序按以下流程進(jìn)行:
1)將舊里程進(jìn)行推算后,對原始界線進(jìn)行恢復(fù)。
2)按照鐵路要求,將舊百米標(biāo)進(jìn)行恢復(fù)。
3)確定新中心線路后,確定新百米標(biāo)。
4)對鐵路界線按照新里程支距進(jìn)行標(biāo)示。
主要實(shí)現(xiàn)的功能如下:
1)根據(jù)地畝圖上的舊里程支距,確定原始界線點(diǎn)位置,實(shí)現(xiàn)的最終結(jié)果如圖1所示。
圖1 地畝圖轉(zhuǎn)換成電子圖
2)將權(quán)屬調(diào)查后確定的新界址點(diǎn),按照鐵路最新里程標(biāo)準(zhǔn)進(jìn)行標(biāo)示。
3)將中心線上的新舊百米標(biāo)和新舊公里標(biāo)標(biāo)示出。
恢復(fù)的鐵路界址點(diǎn)坐標(biāo)(里程和支距)和百米標(biāo)、新里程對應(yīng)的界址點(diǎn)坐標(biāo)(新里程和新支距)和新百米標(biāo)均有圖層歸類要求,按要求分別進(jìn)行分層。
按照《鐵路用地圖繪制管理辦法》第19條中規(guī)定:注記界址點(diǎn)為分?jǐn)?shù)形式,分子為垂直距離,分母為百米以下線路里程,單位為m,保留兩位小數(shù)。
在恢復(fù)出鐵路中心線后,能夠提供的初始數(shù)據(jù):
1)起點(diǎn)舊里程;圖上舊里程;圖上舊支距。
2)推算后的里程系數(shù)(用于理論線路長度和實(shí)際線路長度轉(zhuǎn)換)。
3)起點(diǎn)新里程;圖上新里程;圖上新支距。
定點(diǎn)即按照舊里程支距值恢復(fù)出舊界址點(diǎn)的過程,因里程系數(shù)不同,起始點(diǎn)里程數(shù)值因情況而定,若從整千米數(shù)開始變更系數(shù),則起始里程為0,否則按照實(shí)際數(shù)值輸入,計算距離位置時需將輸入數(shù)值扣除。
里程點(diǎn)坐標(biāo)首先判斷:
定義位置時利用函數(shù)計算:
里程標(biāo)注即標(biāo)注界址點(diǎn)的新里程支距值的過程。這步相當(dāng)于關(guān)鍵操作1的逆操作,主要原理是根據(jù)中心線起始坐標(biāo)值(里程)來確定界址點(diǎn)的新里程數(shù),利用界址點(diǎn)到中心線的垂距確定支距值,最終將界址點(diǎn)的新坐標(biāo)值按照標(biāo)準(zhǔn)標(biāo)注格式表示出來。
在CASS繪圖軟件中,線段是有方向的,起始位置的確定是標(biāo)示點(diǎn)坐標(biāo)的前提,里程的計算是以鐵路中心線的起算點(diǎn)為起算點(diǎn)的,提取點(diǎn)位時做以下定義:
此時,命令行會提示輸入點(diǎn),按照捕捉輔助準(zhǔn)確選定點(diǎn)位。
選取中心線通過以下實(shí)現(xiàn):
點(diǎn)和中心線確定后,界址點(diǎn)的坐標(biāo)標(biāo)注功能即能完成,標(biāo)注效果圖如圖2所示。
圖2 界址點(diǎn)新坐標(biāo)標(biāo)注效果圖
(1)建立主界面
建立程序主界面。首先用 Visual Basic面向?qū)ο蟮木幊坦δ埽砑哟绑w、控件等需要的編程元素,建立適合的程序界面[3]。添加必要圖層:
(2)定義里程支距格式
因里程坐標(biāo)以每千米計數(shù),按公里標(biāo)進(jìn)行注記,考慮里程系數(shù)可能跨度幾千米,所以需將里程數(shù)超過整千米后的里程數(shù)值舍去千米位數(shù)表示:
(3)百米標(biāo)標(biāo)注
百米標(biāo)的標(biāo)注同定點(diǎn)的第一步操作是相同的,首先確定中心線起始及起始里程,鐵路里程是線形增加[4],定義代碼如下:
起點(diǎn)里程是手動輸入:
里程垂距的確定通過提取圖面平面直角坐標(biāo)作為中轉(zhuǎn)數(shù)據(jù):
整百米和整公里的位置通過輸入的中心線起始里程和比例系數(shù)計算確定,值得注意的是,除了百米標(biāo)處需標(biāo)注百米位數(shù),公里標(biāo)需要在千米位數(shù)前加前綴“K”以作區(qū)分:
程序主界面如圖3所示。
圖3 程序主界面圖
通過VB編碼,實(shí)現(xiàn)點(diǎn)與坐標(biāo)(里程支距)的正反標(biāo)示功能。確定出點(diǎn)的位置后,利用CASS的內(nèi)置提取坐標(biāo)功能,確定點(diǎn)的直角坐標(biāo)。
在測繪工作中,經(jīng)常會與多個行業(yè)出現(xiàn)交集,每個行業(yè)也有其特殊的繪圖表示形式,經(jīng)常需進(jìn)行二次開發(fā)。VB具有良好的圖形用戶接口,其豐富的控件和工具功能,以及簡單便捷的操作方法,對測繪繪圖軟件的二次開發(fā)相當(dāng)實(shí)用。
VB開發(fā)測繪的應(yīng)用程序,免去了界面屬性設(shè)置的復(fù)雜操作,只要將所需控件直接畫到Form上,然后針對每個控件進(jìn)行編碼編輯即可,省去很多編寫代碼的工作,鐵路換證項(xiàng)目需要實(shí)現(xiàn)的功能多與數(shù)學(xué)模型有關(guān),數(shù)學(xué)模型的建立與VB的語言表達(dá)方式接近,對于非專業(yè)編程人員來說,實(shí)現(xiàn)起來更加容易。CASS繪圖軟件內(nèi)置的VB兼容功能,通過APPLOAD命令即可實(shí)現(xiàn)VB程序的實(shí)現(xiàn),對于測繪內(nèi)業(yè)工作非常方便,VB在CASS繪圖軟件二次開發(fā)中的應(yīng)用有著深遠(yuǎn)的前景。
[1]王強(qiáng),胡鐵石.VB語言在編寫水準(zhǔn)測量程序中的應(yīng)用[J],測繪與空間地理信息,2009,32(6):177-179.
[2]梅熙,王國祥.高速鐵路坐標(biāo)轉(zhuǎn)換方法探討[J].高速鐵路技術(shù),2012,3(4):6-10.
[3]祝昕剛.VB編程實(shí)現(xiàn)測量數(shù)據(jù)文件的批量處理[J].地理空間信息,2011,9(5):115-117.
[4]張江.坐標(biāo)轉(zhuǎn)換在鐵路勘察設(shè)計中的應(yīng)用探討[J].鐵道勘察,2010(4):11-13.