亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于VB 的EPS 腳本技術(shù)在鐵路地形圖中的應(yīng)用

        2020-12-17 06:27:24張文騰
        鐵道勘察 2020年6期
        關(guān)鍵詞:等高線腳本高程

        張文騰

        (中國鐵路設(shè)計集團有限公司,天津 300251)

        鐵路勘測是鐵路設(shè)計的先行工序,地形測量與地形圖繪制是其中一項重要的基礎(chǔ)工作。 目前,鐵路1 ∶2 000 地形圖采集與編輯多采用EPS 平臺,選用該平臺的原因有:①平臺具有強勁的三維顯示和圖形表現(xiàn)能力,可支持最新的裸眼三維測圖編輯模式,在該模式下,數(shù)據(jù)獲取和成果完成效率較傳統(tǒng)方法都有較大提升;②支持C++、C#等編程語言以及VBScript/JSript等腳本語言開發(fā)。

        根據(jù)CH/T 9020.1-2013《基礎(chǔ)地理信息數(shù)字成果1 ∶500 1 ∶1 000 1 ∶2 000 生產(chǎn)技術(shù)規(guī)程》相關(guān)規(guī)定,地貌類要素應(yīng)反映不同地貌類型的特點,正確表達細部地貌的形態(tài)特征,與其他要素關(guān)系合理。 因此,在處理等高線和地貌類要素(如斜坡和陡坎)與一般常規(guī)地物要素(如居民地、道路和河流等)相對關(guān)系時,必須將等高線打斷并進行相應(yīng)的捕捉處理。 傳統(tǒng)方法為人工判讀并進行裁剪打斷操作,其效率、準確度均較低;此外,在地形圖編輯時,需要返回EPS 三維測圖模塊內(nèi),根據(jù)DEM 重新采集高程,工作量較大。 上述問題均對地形圖成果產(chǎn)出效率影響較大。

        在1 ∶2 000 圖編輯過程中,基于VBScript 進行腳本開發(fā),能夠批量對等高線進行裁剪,節(jié)省人工成本和時間成本;同時能對高程點高程進行修正,減少工序從而提升效率。 已有許多學(xué)者進行了相關(guān)研究,李奇等基于EPS 平臺進行1 ∶500 地形圖縮編為1 ∶2 000 地形圖的研究[1-2];郭夢熾對道路的注記轉(zhuǎn)化為道路屬性進行了研究,其后通過腳本技術(shù)完成了該操作的批量化[3];李玉芳等以水系方向為研究對象進行腳本開發(fā)自動檢查流向正確性的研究與應(yīng)用[4-5];孫大龍根據(jù)地形圖入庫建設(shè)項目的要求,使用EPS 腳本技術(shù)進行CAD 注記數(shù)據(jù)轉(zhuǎn)化為GIS 屬性的操作[6];覃豪杰基于腳本技術(shù)完成平臺內(nèi)數(shù)據(jù)無損轉(zhuǎn)化[7];張子林基于VBScript 進行EPS 內(nèi)勘測定界自動化的研究[8];王鵬對DLG 入庫一體化操作進行相關(guān)研究,并利用相關(guān)腳本函數(shù)完成一些功能的自動化[9];彭永峰等利用VBScript 腳本技術(shù)實現(xiàn)房屋陽臺部分的繪制和地下管線數(shù)據(jù)的特定檢查工作[10-11]。 以下基于前人的研究成果,針對1 ∶2 000 地形圖編輯整飾進行開發(fā)設(shè)計。

        研究具體思路為:①整理研究EPS VBScript 的基本原理與編碼方法;②介紹兩個功能的相應(yīng)原理與源代碼;③進行1 ∶2 000 地形圖實例應(yīng)用,驗證其效果。

        1 EPS 腳本語言VBScript

        1.1 腳本語言的基本規(guī)則

        該平臺采用VBScript 語言,支持普通用戶和第三方進行各類二次開發(fā),在平臺上可以完成諸如數(shù)據(jù)清整,轉(zhuǎn)換和入庫等處理操作,兼容性較好。

        在平臺的句法邏輯中,SSProcess 是平臺主環(huán)境下預(yù)先設(shè)定完成的Entrance 對象,是與平臺任何環(huán)境下的其他所有函數(shù)與功能連接交互的主通道,其重要性不言而喻。 其對應(yīng)函數(shù)功能幾乎包括所有系統(tǒng)環(huán)境內(nèi)所需,如選擇集指定操作,不同角度與視圖下圖形編輯操作,不同數(shù)據(jù)格式的轉(zhuǎn)換操作和系統(tǒng)環(huán)境內(nèi)操作命令響應(yīng)設(shè)定等。 平臺內(nèi)所有的腳本程序主要包括兩個大類:Modular 腳本和Modeless 腳本。 兩者的相同之處是腳本程序終結(jié)語句一致,以系統(tǒng)默認的自定方式結(jié)束; 不同之處主要體現(xiàn)在Modeless 腳本多以O(shè)nInitScript()作為起始函數(shù),再進行其他相關(guān)操作,這是由于Modeless 腳本需要和主視圖窗口進行連接,以便后續(xù)在視圖窗口內(nèi)完成消息的響應(yīng)功能,包括鼠標、按鍵和其他指示命令等;同時,還需要標準可視化窗口來保證用戶對于特定參數(shù)的自定義需求。 因此,除起始入口函數(shù)外,還必須定義OnExitScript、OnOK 和OnCancel 等響應(yīng)函數(shù)[12]。 而Modular 腳本較為方便,按照平臺環(huán)境給定的默認方法即可運行。

        1.2 腳本語言的功能模塊

        功能模塊是為用戶可以更高效地完成腳本而編寫,將一部分已經(jīng)存在的設(shè)定對象寫成類似于庫的形式。 這樣做的好處是當用戶需要相關(guān)功能時,無需再進行單獨定義,這些主要的依據(jù)方式是“模塊主名稱.指定命令名稱”來完成調(diào)用模塊對象[13]。 常見的功能模塊有SSEdit 修改平臺模塊、SScript 腳本處理模塊、SSCheck 數(shù)據(jù)監(jiān)理模塊和SSDateBase 數(shù)據(jù)庫模塊等。部分功能模塊的功能分類及其包含的一些函數(shù)命令見表1。

        表1 腳本語言常用功能與實例

        1.3 腳本語言的編碼方法

        EPS 內(nèi)腳本的編碼方法基本符合一般程序語言的編碼方法,但仍有一些特征函數(shù)與方法需要特別注意,主要包括如下內(nèi)容。

        (1)任何腳本的入口函數(shù)均為OnClick(),這是一個腳本啟動遞進的方式,不可或缺。

        (2)BeforeSaveImportData()函數(shù)作為系統(tǒng)消息函數(shù),所有腳本函數(shù)都需要調(diào)用; 同時,該函數(shù)作為數(shù)據(jù)庫訪問指示函數(shù),在導(dǎo)入外部數(shù)據(jù)時,需要進行調(diào)用激活,使得數(shù)據(jù)庫能夠正常被訪問。

        (3) 坐標投影換算入口函數(shù)

        TransCoord XYZ ( ByVal planeSysName, ByVal heightSysName, ByVal reverse, ByVal transxy, ByVal transz,ByRef x, ByRef y, ByRef z)

        (4)在某個腳本程序中完全支持運行外部其他腳本程序,可通過預(yù)先設(shè)置好的調(diào)用方式使用外部腳本程序。

        2 等高線批量裁剪

        2.1 基本原理

        地貌要素是指地貌形態(tài)的各個組成部分,地貌要素各不相同,如山地要素有山頂、山坡和山麓等;階地要素有階地面、階地斜坡或陡壁等;地貌最常用的表示方法有等高線法、分層設(shè)色法和暈渲法[14]。 在鐵路地形圖中,一般采用等高線法表示地區(qū)地形與地貌,還會使用各種類型的坎線、坡線和溝渠線等來表示區(qū)域內(nèi)具體地貌狀態(tài)[15]。

        在使用EPS 進行地形圖采集時,需要使用不同類型地貌符號來完成特征表示,這些地貌符號要素與等高線的性狀相近,當?shù)雀呔€與這些要素發(fā)生位置重疊時,就需要進行打斷與裁剪等處理。

        為提升效率,可使用腳本開發(fā)篩選功能來完成這個操作,快速將等高線與地貌要素符號的重疊部分進行裁剪。

        2.2 主要源碼說明

        腳本分為兩個部分,一個是針對面狀地貌,另一個是針對單獨的坎線(坎編碼)。 當進行編輯的時候,需要將其分開;按照制圖要求與習慣,常用的面狀地物有:未加固斜坡面,未加固人工斜坡面,田坎、路塹、溝塹和路堤等。 將其讀取后,應(yīng)設(shè)定需要編輯的地物面編碼和圖層,同時定義裁剪距離參數(shù)jl,源碼如下。

        res=SSProcess. ShowInputParameterDlg ("輸入?yún)?shù)")

        if res=0 then

        '符號化刷新

        SSProcess. ObjectDeal objID, " AddToSelection","", result

        SSProcess. ObjectDeal 0," FreeSelection ObjectDisplayList", "", result

        exit Sub

        end if

        bm = SSProcess. GetInputParameter ( " 裁剪面編碼")

        jl=SSProcess.GetInputParameter ("裁剪距離")

        定義完成之后,將所需地物編碼加入選擇集中,再提出裁剪操作的判定條件,當面狀地物區(qū)域內(nèi)包括采集好的等高線時,可執(zhí)行裁剪操作,裁剪距離通過jl參數(shù)傳入,直到遍歷該工程文件內(nèi)所有面狀地物編碼,主要代碼如下。

        SSProcess. SetSelectCondition " SSObj _ Code","=", bm'范圍面編碼

        SSProcess.SelectFilter

        count=SSProcess.GetSelGeoCount

        For i=0 To count-1

        idss(i)= SSProcess. GetSelGeoValue(i," SSObj_ID")

        Next

        For i=0 To count-1

        SSProcess. SetSelectCondition " SSObj _Type","=","LINE"

        SSProcess. SetSelectCondition " SSObj _Code","=","7101012,7101022" '等高線編碼編碼

        對于田坎等幾種制圖中常用的陡坎類線狀地物,在裁剪編輯時,需要注意對坎毛方向的定義,這樣裁剪出來的結(jié)果不會因為沒有對該元素進行判讀而產(chǎn)生歧義。 對于坎毛線,可使用定義距離平行線的方法來處理,方向則定義線前進方向左側(cè)為0,右側(cè)為1,具體代碼如下。

        id1 = SSProcess. LineParallelDist ( id0, dist,direction,0,1)

        darwarea id0,id1

        SSProcess.DeleteObject id1

        Next

        For i=0 To k-1

        SSProcess.ClearSelection

        SSProcess.ClearSelectCondition

        SSProcess. SetSelectCondition " SSObj _Code","=",clipcodes

        SSProcess.SelectFilter

        SSProcess.SelectionObjClip idstrs(i),0,0.001

        SSProcess.DeleteObject idstrs(i)

        Next

        其中,darwarea 是針對坎毛中間部分的一個界定,在制圖標準中,這部分的等高線被坎線部分打斷之后,也需要進行編輯。 因此,重新定義了該函數(shù)的編輯操作,具體代碼如下。

        pc0 = SSProcess. GetObjectAttr ( id0," SSObj _PointCount")

        pc1 = SSProcess. GetObjectAttr ( id1," SSObj _PointCount")

        SSProcess.CreateNewObjByCode 2

        For i=0 To pc0-1

        SSProcess. GetObjectPoint id0, i,x,y,z, ptype,name

        SSProcess.AddNewObjPoint x,y,0,0,""

        Next

        For i=pc1-1 To 0 step-1

        SSProcess. GetObjectPoint id1, i,x,y,z, ptype,name

        SSProcess.AddNewObjPoint x,y,0,0,""

        Next

        SSProcess. GetObjectPoint

        id0,

        0, x, y, z,ptype, name

        SSProcess.AddNewObjPoint x,y,0,0,""

        2.3 程序運行與實例

        參照之前的代碼與功能分析,得到相應(yīng)的腳本程序后,選擇某鐵路項目1 ∶2 000 地形圖成果進行檢驗。 該項目為高速鐵路,線路位于山東省東部地區(qū),設(shè)計時速為350 km,地形整體較為平坦,但局部起伏較大。 為方便比對,在腳本運行的同時,也通過人工編輯的方法進行相同操作,以獲取人工編輯效率作為對比。

        所選地區(qū)制圖面積為1.56 km2,地形起伏較為明顯,故等高線密度較高,并且存在諸多斜坡與陡坎地形,地形圖編輯工作量較大,部分情況如圖1 所示。

        圖1 某鐵路項目地形圖部分成果

        通過實際編輯操作,發(fā)現(xiàn)人工編輯所使用的時間較長,且出現(xiàn)4 處等高線未捕捉到位的情況,這是因為使用了打斷功能后,未進行二次捕捉操作,根據(jù)制圖規(guī)范和成果要求,該類問題應(yīng)按照錯誤處理,如圖2。

        而通過腳本運行完成等高線批量操作,所消耗時長較短,同時可在腳本程序?qū)υ捒騼?nèi)自定義統(tǒng)一的裁剪距離,如圖3 所示。 處理結(jié)果準確度較高,完成后未發(fā)現(xiàn)存在錯誤(見圖4、圖5)。

        3 高程點修正

        圖2 人工編輯后不準確問題

        圖3 裁剪范圍面腳本運行界面

        圖4 裁剪范圍面腳本運行前

        圖5 裁剪范圍面腳本運行后

        3.1 基本原理

        在地形圖編輯工序中,高程點修正是非常重要的一個步驟,高程準確與否,直接影響區(qū)域內(nèi)等高線與地形表達的正確性。 在檢查高程數(shù)值后,傳統(tǒng)方法不僅需要重新加載該地區(qū)的DEM 數(shù)據(jù),還需要重新判斷該點的位置與實際高程值,當出現(xiàn)整體系統(tǒng)性誤差時,編輯人員需逐個改正,消耗了大量的人力與時間;在EPS中,通過腳本程序,編輯人員可以按照自定義區(qū)域選中需要改正的高程點,并進行統(tǒng)一修正操作,極大提升了編圖效率。

        3.2 主要源碼說明

        定義geocount 進行地物選擇集的個數(shù)判斷,即確定所需要進行操作的高程點,保證腳本運行的嚴謹性。

        定義EleChange 獲取所輸入的高程改正值,參數(shù)為自行輸入,正數(shù)代表高程增加,負數(shù)代表高程下降,同時對地物編碼為7201001(高程點)進行遍歷,對其Z 值進行運算操作,當選擇集內(nèi)所有高程點都進行了改正操作之后,腳本跳出循環(huán)結(jié)束,具體代碼如下。

        geocount=SSProcess.GetSelGeoCount

        if geocount=0 then

        msgbox "請先選擇地物"

        exit sub

        end if

        count=0

        SSProcess.ClearInputParameter

        SSProcess. AddInputParameter "變化高程", "",0, "", "增加填正值,降低填負值"

        SSProcess.AddInputParameter "", "",0, "", ""

        res=SSProcess. ShowInputParameterDlg ("設(shè)置變化高程")

        If res=0 Then

        msgbox "放棄處理"

        Exit Sub

        End If

        EleChange=SSProcess. GetInputParameter ("變化高程")

        for i=0 to geocount-1

        code = SSprocess. GetSelGeoValue ( i," SSObj _Code")

        if code="7201001" then

        ID=SSprocess. GetSelGeoValue(i,"SSObj_ID")Z=SSprocess.GetSelGeoValue(i,"SSObj_Z")

        Z=Cdbl(Z)+Cdbl(EleChange)

        SSProcess.SetObjectAttr ID, "SSObj_Z", Z

        count=count+1

        4 程序運行與實例

        在該項目內(nèi)選擇一個高程點較為密集的測區(qū),進行實際應(yīng)用測試。 測區(qū)內(nèi)共有高程點212 個,若采用傳統(tǒng)人工編輯的方法,需要結(jié)合項目的DEM 情況對測區(qū)內(nèi)的高程點進行逐個操作,效率非常低下;若采用腳本進行操作,只需要幾秒即可完成該區(qū)域內(nèi)高程點的修正。 由圖6 可以看出,在彈出的對話框內(nèi)可以輸入改正值,并對選擇集內(nèi)的高程點進行改正,點擊確定之后,高程值也發(fā)生對應(yīng)的變化,如圖7、圖8 所示。

        圖6 高程點改正腳本界面

        圖7 高程點改正腳本運行前(單位:m)

        圖8 高程點改正腳本運行后(單位:m)

        5 結(jié)論

        (1)利用VB 腳本對EPS 軟件內(nèi)所繪制的地形圖進行批量編輯操作,較傳統(tǒng)人工方法效率提升顯著,是一種行之有效的方法。

        (2)按照各種地物的不同屬性與字段進行分類,同時在腳本中進行針對性操作的方法更加合理。

        (3)Modular 和Modeless 腳本的結(jié)合使用對解決EPS 中地形圖編輯問題具有一定的參考價值。

        猜你喜歡
        等高線腳本高程
        酒駕
        8848.86m珠峰新高程
        當代陜西(2020年23期)2021-01-07 09:24:44
        安奇奇與小cool 龍(第二回)
        地形圖的閱讀
        一種基于Fréchet距離的斷裂等高線內(nèi)插算法
        測繪通報(2019年1期)2019-02-15 04:56:06
        數(shù)據(jù)庫系統(tǒng)shell腳本應(yīng)用
        電子測試(2018年14期)2018-09-26 06:04:24
        快樂假期
        GPS控制網(wǎng)的高程異常擬合與應(yīng)用
        “等高線地形圖的判讀”專題測試
        地理教育(2016年10期)2016-11-09 00:32:53
        SDCORS高程代替等級水準測量的研究
        免费99精品国产自在在线| 人妖啪啪综合av一区| 一区二区三区中文字幕p站| 久久久精品人妻无码专区不卡| 亚洲精品成人专区在线观看| 国产精品天干天干在线观蜜臀| 亚洲中文字幕第15页| 无套中出丰满人妻无码| 国产成人无码av在线播放dvd| 亚洲欧洲日产国码久在线| 加勒比av在线一区二区| 在线观看老湿视频福利| 午夜精品久久久久久中宇| 亚洲综合伦理| 男人天堂亚洲一区二区| 国产69精品久久久久app下载| 亚洲av日韩av无码av| 久久久99久久久国产自输拍 | 国产亚洲91精品色在线| 国产一区二区三区乱码| 91尤物视频在线观看| 国产一区二区三区资源在线观看| 中文字幕女优av在线| 性色av无码中文av有码vr| 91精品啪在线观看国产18| 亚洲国产一区中文字幕| 无码人妻精品中文字幕| 色妞www精品视频| 久久久久国产精品四虎| 亚洲男人综合久久综合天堂| 日日碰狠狠添天天爽| 国产91 对白在线播放九色| 少妇一区二区三区精选| 在线中文字幕乱码英文字幕正常| 亚洲av无码成人黄网站在线观看| 吃下面吃胸在线看无码| 免费看黄片的视频在线观看| 国产精品久久久久久久妇| 国产91 对白在线播放九色| 国产影院一区二区在线 | 成人av综合资源在线|