• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    Python 編程語言在“工程測量實(shí)習(xí)”課程數(shù)據(jù)處理中的應(yīng)用*

    2023-07-25 05:18:20陳學(xué)永王澤誠楊水泉李冬濤
    科技與創(chuàng)新 2023年11期
    關(guān)鍵詞:水準(zhǔn)測量高差數(shù)據(jù)處理

    張 波,陳學(xué)永,王澤誠,楊水泉,李冬濤

    (廣州華立學(xué)院,廣東 廣州 529100)

    1 研究背景

    在“工程測量實(shí)習(xí)”課程的教學(xué)過程中,數(shù)據(jù)處理是課程重點(diǎn)內(nèi)容之一。工程測量實(shí)習(xí)完成以后,學(xué)生需要花費(fèi)大量的時間進(jìn)行測量數(shù)據(jù)的處理,教師在收到學(xué)生提交的測量實(shí)習(xí)報告后,也需要花費(fèi)大量時間校核學(xué)生的測量數(shù)據(jù)的可靠性。

    Python 語言是一個語法簡潔、可跨平臺、可擴(kuò)展的開源通用腳本語言,Python 語言在數(shù)據(jù)分析、工程計算等方面優(yōu)勢突出[1-4]。

    在“工程測量實(shí)習(xí)”課程中,一般會進(jìn)行水準(zhǔn)測量、角度測量、導(dǎo)線測量等實(shí)習(xí)內(nèi)容,為了提高工程測量實(shí)習(xí)的效率,本文利用Python 編程語言開發(fā)了一套工程測量數(shù)據(jù)處理系統(tǒng),通過使用該軟件系統(tǒng)處理數(shù)據(jù),極大地提高了“工程測量實(shí)習(xí)”課程測量數(shù)據(jù)的處理速度,提高了學(xué)生的學(xué)習(xí)效率,減輕了教師核查學(xué)生測量實(shí)習(xí)數(shù)據(jù)的工作量[5-6]。

    2 數(shù)據(jù)處理軟件主界面及數(shù)據(jù)輸入流程設(shè)計

    為了方便用戶使用軟件,需編寫可視化界面,本文采用Python 程序的tkinter 庫編寫可視化界面[7],框架結(jié)構(gòu)如圖1 所示。

    圖1 “工程測量實(shí)習(xí)”數(shù)據(jù)處理程序主界面菜單

    對于高程測量,程序需要從原始數(shù)據(jù)文件中提取相關(guān)信息,獲取各站的高差、視距差、累計視距差和累計高差信息,形成高差文件。同時程序必需核查數(shù)據(jù)是否符合要求,如果數(shù)據(jù)符合要求,程序按設(shè)定格式生成包含控制點(diǎn)高差、水準(zhǔn)路線長度等信息的表格文件,為下一步高程控制網(wǎng)平差做準(zhǔn)備。

    核查數(shù)據(jù)程序代碼如下所示:

    df1=df1[df1.apply(lambda x:x.str.contains("|".join(key word)),axis=1)]#遍歷所有列搜索

    df1=df1.dropna(how="all").dropna(axis=1,how="all")#清空全行或全列為NAN 的元素

    df=df[df1.keys()]#選中所在列

    df=df[df.index>df1.index[(df1.shape[0]-1)]].dropna(thresh=2)#篩選,并清空無關(guān)數(shù)據(jù)

    df=df[df.applymap(lambdax:type(x)!=str)].dropna(how="all")

    if df.shape[0]%2==1 and df.shape[0]>0:df=df[:-1]

    dict_names=dict(zip(df.keys(),keyword))

    df=df.rename(columns=dict_names)#重命名#搜索結(jié)束

    if df.empty==True:#為空

    state=-1

    return(state,"")

    n=int(df.shape[0]/2)

    high=df['后視']-df['前視']#高差

    high_half=high/2.0#高差中數(shù)

    h_add=high_half.sum()#高差中數(shù)和

    h_add=round(h_add,limit)#保留5 位小數(shù)

    h_permit=round(idea(n),limit)

    if abs(h_add*1000)<h_permit:

    state=1

    return (state,"高差中數(shù):"+str(h_add)+"m,"+"容許值:"+str(h_permit)+"mm")

    except(Exception)as e:

    state=-2

    return(state,"出錯信息:"+str(e))對于角度測量,由于數(shù)據(jù)較多且比較煩瑣,考慮采用先在Excel 軟件中輸入數(shù)據(jù),再以文件的形式導(dǎo)入程序中進(jìn)行數(shù)據(jù)處理[8],程序代碼如下所示:self.root.title("「工程測量數(shù)據(jù)處理工具」")

    self.root.geometry(str(w)+"x"+str(h))

    self.frame=tk.Frame(master=self.root)

    self.frame_1=tk.Frame(master=self.frame)

    self.data_label = tk.Label(master=self.frame_1,text="待處理文件")

    self.btn_choose=tk.Button(self.frame_1,text="選擇文件(可多選)",command=self.choose_file)

    self.btn_data_clear=tk.Button(self.frame_1,text="清空",command=self.data_Text_clear)

    self.data_Text = tk.Text(master=self.frame_1)#文件輸入框

    利用Python 程序編程也可以準(zhǔn)確地校核測量數(shù)據(jù)是否準(zhǔn)確有效,程序代碼如下所示:

    def permit_error(df):#最大允許誤差

    state=0#判斷情況

    limit=5#精度,保留5 位小數(shù)

    keyword=["后視","前視"]#關(guān)鍵詞

    idea=lambda n:pow(n,0.5)*10#最大允許誤差計算公式

    3 水準(zhǔn)測量實(shí)習(xí)數(shù)據(jù)分析及相應(yīng)代碼

    水準(zhǔn)測量實(shí)習(xí)一般以閉合水準(zhǔn)測量實(shí)習(xí)為主,本文以閉合水準(zhǔn)測量數(shù)據(jù)處理展開討論。水準(zhǔn)測量是利用一條水平視線,并借助水準(zhǔn)尺,來確定地面兩點(diǎn)之間的高差,然后由已知點(diǎn)的高程推算出未知點(diǎn)位高程的測量方法。

    閉合水準(zhǔn)測量是由一已知水準(zhǔn)點(diǎn)出發(fā),沿環(huán)線待測高程點(diǎn)1、2、3、4 進(jìn)行水準(zhǔn)測量,最后回到原水準(zhǔn)點(diǎn)的測量方法,其線路上各點(diǎn)之間高差的代數(shù)和理論值應(yīng)等于零。由于誤差的存在,實(shí)際測量值代數(shù)和只是接近于零,但不能超出設(shè)定的誤差范圍,否則測量數(shù)據(jù)就不符合要求,須進(jìn)行重測,由此編寫的Python程序核心代碼如下:

    def check_data(df,limit=(0,0)):

    df,read,num=HoriAngle.read_data(df)

    judge=HoriAngle.check_is_ok(read,num)

    if not judge or not num:'''獲取到數(shù)據(jù)'''

    return(-1,"獲取不到測回數(shù)")if not limit:

    '''無誤差判斷條件'''

    return(-1,'無誤差判斷條件')try:

    num=int(num)

    half=HoriAngle.calcu_half(read)

    one=HoriAngle.calcu_one(half)

    permit1=HoriAngle.calcu_perimit(half,int(limit[0]))

    if num==1:

    '''測回數(shù)為1 時'''

    if len(permit1)>0:

    '''數(shù)據(jù)不合理'''

    return (0,"第"+",".join(permit1)+"行的數(shù)據(jù)誤差過大")#誤差過大

    else:

    '''數(shù)據(jù)合理'''

    return(1,"半測回角值之差均<="+str(limit[0])+"″")

    else:

    '''測回數(shù)大于1 時'''

    #aver=HoriAngle.calcu_aver(one,num)

    permit2=HoriAngle.calcu_perimit(on e,int(limit[1]))

    if len(permit1)>0 or len(permit2):

    '''數(shù)據(jù)不合理'''

    info=permit1|permit2

    return(0,"第"+",".join(info)+"行的數(shù)據(jù)誤差過大")#誤差過大

    else:

    return (1," 半測回角值之差均<="+str(limit[0])+" ″ ,"+" 各 測 回 角 值 均<="+str(limit[1])+"″")#數(shù)據(jù)合理

    return(-2,"未知")except(Exception)as e:

    print(e)

    return(-2,e)

    4 角度測量實(shí)習(xí)數(shù)據(jù)分析及相應(yīng)代碼

    角度測量是“工程測量實(shí)習(xí)”課程的基本內(nèi)容,是確定地面點(diǎn)位的基本測量工作之一。角度測量分為水平角測量和豎直角測量,“工程測量實(shí)習(xí)”課程一般會要求學(xué)生用測回法測量水平角,本文以測回法測量水平角數(shù)據(jù)處理展開討論。

    測回法要求在測點(diǎn)A安置儀器,在盤左位置用照準(zhǔn)部瞄準(zhǔn)目標(biāo)B,讀取水平盤度數(shù),再松開水平制動螺旋,順時針方向轉(zhuǎn)動照準(zhǔn)部,瞄準(zhǔn)目標(biāo)C,讀取水平盤度數(shù),以上稱為上半測回。

    再縱轉(zhuǎn)望遠(yuǎn)鏡成盤右位置,瞄準(zhǔn)目標(biāo)C,讀取水平盤度數(shù),松開水平制動螺旋,逆時針方向轉(zhuǎn)動照準(zhǔn)部,瞄準(zhǔn)目標(biāo)B,讀取水平盤度數(shù),以上稱為下半測回,即完成水平角測回法測量工作。

    由此編寫的Python 程序代碼如下:

    def calcu_half(ser):

    '''計算半測回角值'''

    sec=HoriAngle.to_second(ser)

    ser1,ser2=HoriAngle.split_l_r(sec,2)

    result=ser2-ser1

    result=HoriAngle.to_recover(result)

    return result def calcu_one(ser):

    '''計算一測回角值'''

    sec=HoriAngle.to_second(ser)

    ser1,ser2=HoriAngle.split_l_r(sec,2)

    result=ser1+(ser2-ser1)/2

    result=result.round(0)

    result=result.astype(int)

    result=HoriAngle.to_recover(result)

    return result

    def calcu_aver(ser,n):

    '''計算各測(平均)回角值'''

    n=int(n)

    if n==1:#如果n==1 直接返回

    return ser

    sec=HoriAngle.to_second(ser)

    ser1,ser2=HoriAngle.split_l_r(sec,2)sec=(ser1+ser2)/n

    result=sec.astype(int)

    result=HoriAngle.to_recover(result)

    return result def calcu_perimit(ser,limit):

    '''計算是否超過允許值,返回判斷結(jié)果'''

    info=set()

    sec=HoriAngle.to_second(ser)

    ser1,ser2=HoriAngle.split_l_r(sec,2)

    sec=ser2-ser1

    sec=sec.abs()

    #print(sec)

    result=sec[sec.apply(lambda x:x>limit)]

    #print(result)

    lst_idx=result.index.to_list()

    if not sec.empty and result.empty:

    lst=result.to_list()

    for i in lst_idx:

    info.add(str(i))return info

    5 結(jié)束語

    使用Python 編程語言編寫的工程測量數(shù)據(jù)軟件,能夠極大地提高工程測量數(shù)據(jù)處理速度,減輕教師和學(xué)生在“工程測量實(shí)習(xí)”課程中的數(shù)據(jù)計算負(fù)擔(dān)。在廣州華立學(xué)院的“工程測量實(shí)習(xí)”課程教學(xué)中證明,該軟件不但能夠幫助教師提升教學(xué)效果,也能幫助更多學(xué)生提升學(xué)習(xí)效率和學(xué)習(xí)成績。

    猜你喜歡
    水準(zhǔn)測量高差數(shù)據(jù)處理
    認(rèn)知診斷缺失數(shù)據(jù)處理方法的比較:零替換、多重插補(bǔ)與極大似然估計法*
    煤氣與熱力(2021年10期)2021-12-02 05:11:52
    ILWT-EEMD數(shù)據(jù)處理的ELM滾動軸承故障診斷
    框架結(jié)構(gòu)梁板面鋼筋疊合產(chǎn)生的高差問題探討
    同時對向間接高差精密測量技術(shù)應(yīng)用研究
    鐵道勘察(2018年5期)2018-10-22 06:12:00
    基于希爾伯特- 黃變換的去噪法在外測數(shù)據(jù)處理中的應(yīng)用
    地形高差較大的別墅區(qū)排水設(shè)計要點(diǎn)分析
    水準(zhǔn)測量在高層沉降觀測中的應(yīng)用思考
    SDCORS高程代替等級水準(zhǔn)測量的研究
    全站儀進(jìn)行水準(zhǔn)測量的可行性分析
    河南科技(2014年5期)2014-02-27 14:08:32
    古交市| 马龙县| 色达县| 澄迈县| 正阳县| 辉南县| 静海县| 双峰县| 连城县| 龙口市| 叙永县| 梁平县| 通化县| 综艺| 梁河县| 宜丰县| 正蓝旗| 武鸣县| 将乐县| 长乐市| 沙河市| 武安市| 益阳市| 剑阁县| 安庆市| 芜湖县| 泸水县| 兰西县| 桦南县| 夏邑县| 壶关县| 松原市| 黎平县| 新龙县| 吉林省| 阜平县| 读书| 连江县| 九江市| 安徽省| 焦作市|