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