• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      基于Python的電子水準(zhǔn)數(shù)據(jù)處理程序的設(shè)計(jì)與實(shí)現(xiàn)*

      2021-09-27 10:20:30雪,彭
      地礦測(cè)繪 2021年3期
      關(guān)鍵詞:水準(zhǔn)儀原始數(shù)據(jù)測(cè)站

      白 雪,彭 晨

      (云南省測(cè)繪工程院,云南 昆明 650033)

      0 引言

      天寶公司的DINI系列數(shù)字水準(zhǔn)儀具有精度高、讀數(shù)快、效率高等特點(diǎn),深受廣大測(cè)繪作業(yè)人員的青睞。采用DiNi03水準(zhǔn)儀可以實(shí)現(xiàn)自動(dòng)記錄、檢核數(shù)據(jù),有效的減少人工報(bào)讀數(shù)據(jù)、聽記數(shù)據(jù)以及現(xiàn)場(chǎng)計(jì)算的作業(yè)流程,避免因人工記錄錯(cuò)誤造成的重測(cè)情況。在提高工作效率的同時(shí),也達(dá)到了“少紙化”辦公,綠色作業(yè)的目標(biāo)。

      DiNi03電子水準(zhǔn)儀雖然有著諸多的優(yōu)點(diǎn),但是仍然存在和國家標(biāo)準(zhǔn)水準(zhǔn)測(cè)量通用格式不相同的地方,主要為隨機(jī)軟件下載的電子記錄水準(zhǔn)記錄數(shù)據(jù)和現(xiàn)行國家規(guī)范格式不同,并且沒有與Cosa(科傻)平差軟件對(duì)接的數(shù)據(jù)。綜上所述,筆者利用Python語言進(jìn)行程序設(shè)計(jì)[1],對(duì)天寶隨機(jī)數(shù)據(jù)軟件下載的數(shù)據(jù)進(jìn)行數(shù)據(jù)分離,轉(zhuǎn)換為武漢大學(xué)開發(fā)的Cosa(科傻)平差軟件通用數(shù)據(jù)格式并生成Excel標(biāo)準(zhǔn)水準(zhǔn)手簿格式。

      1 原始數(shù)據(jù)格式

      在天寶DiNi03電子水準(zhǔn)儀的儀器內(nèi)置程序中,有4種測(cè)量模式可供選擇[2],分別為:BF(后前)、BBFF(后后前前)、BFFB(后前前后)、FBBF(前后后前),其中在二等及其以上的水準(zhǔn)測(cè)量作業(yè)中,根據(jù)相關(guān)國家規(guī)范的要求,往測(cè)為后前前后,返測(cè)為前后后前,并奇偶站交替[3]。以二等水準(zhǔn)測(cè)量往測(cè)為例,數(shù)據(jù)記錄格式見圖1。

      由圖1可知:①框中所表示的為天寶電子水準(zhǔn)儀數(shù)據(jù)記錄的流水作業(yè)號(hào);②框中的信息反映了作業(yè)員在作業(yè)時(shí),所建立的工程文件信息;③框中所代表的信息為本條路線的起始;④框中為觀測(cè)的順序;⑤框中為點(diǎn)號(hào)信息;⑥框中為天寶電子水準(zhǔn)儀的編碼信息,該信息在作業(yè)中取決于作業(yè)員的作業(yè)習(xí)慣,為非必須;⑦框中記錄了作業(yè)時(shí)間(此時(shí)間為水準(zhǔn)儀中的系統(tǒng)時(shí)間);⑧框中為作業(yè)員在建立新的水準(zhǔn)路線時(shí),所取得的線路名稱;⑨框中的信息為當(dāng)前測(cè)站的記錄順序,可以從該信息中判斷出此測(cè)站為奇數(shù)站或是偶數(shù)站;⑩框中為尺子的讀數(shù);框中記錄的是水準(zhǔn)儀的視距信息。通過對(duì)原始數(shù)據(jù)的解析,進(jìn)一步實(shí)現(xiàn)程序相關(guān)功能。

      圖1 天寶DiNi03電子水準(zhǔn)儀原始數(shù)據(jù)格式Fig.1 Original data format of Trimble DiNi03 electronic level

      2 編程思路

      程序設(shè)計(jì)的基本思路,如圖2所示。

      圖2 程序設(shè)計(jì)流程圖Fig.2 Program design flow

      為達(dá)到行業(yè)規(guī)范,通過加載參數(shù)文件,將所測(cè)數(shù)據(jù)等級(jí)、測(cè)段信息、天氣、觀測(cè)者、觀測(cè)時(shí)間等信息展現(xiàn)在生成的標(biāo)準(zhǔn)電子手簿中,使用戶能夠在標(biāo)準(zhǔn)手簿中獲取所有測(cè)段相關(guān)信息。經(jīng)過實(shí)踐,發(fā)現(xiàn)生產(chǎn)中還需要對(duì)所測(cè)得的數(shù)據(jù)進(jìn)行嚴(yán)密平差處理。為了能夠?qū)y(cè)量數(shù)據(jù)進(jìn)行平差處理,本程序最終生成武漢大學(xué)研發(fā)的Cosa(科傻)平差系統(tǒng)能識(shí)別的“*.in1”平差文件。

      3 Python編程實(shí)現(xiàn)

      3.1 用戶界面的實(shí)現(xiàn)

      用戶界面主要用于實(shí)現(xiàn)原始數(shù)據(jù)文件和參數(shù)文件的選擇,并確定生成記錄數(shù)據(jù)文件的保存位置。

      原始數(shù)據(jù)文件以及參數(shù)文件的選擇通過讀取文件絕對(duì)路徑進(jìn)行,通過讀取用戶選擇的文件夾絕對(duì)路徑與程序自定義的文件名稱進(jìn)行字符串組合,得到生成記錄數(shù)據(jù)文件的保存位置。原始數(shù)據(jù)文件及參數(shù)文件選擇完成,并確定生成記錄數(shù)據(jù)文件的保存位置后,點(diǎn)擊“開始”按鈕,程序?qū)?duì)數(shù)據(jù)進(jìn)行解析轉(zhuǎn)存。

      3.2 參數(shù)文件處理

      參數(shù)文件由用戶按照模板記錄于“*.txt”文件中,根據(jù)用戶所選擇的參數(shù)文件所在的絕對(duì)位置,打開參數(shù)文件,以“,”為分隔符,對(duì)所記錄的參數(shù)字符串進(jìn)行分割,按照等級(jí),方向,儀器型號(hào),儀器編號(hào),天氣,風(fēng)向,風(fēng)力,土質(zhì),呈像,觀測(cè)者,測(cè)量單位的順序,讀取參數(shù)信息,并存儲(chǔ)于列表中,以便后續(xù)寫入相應(yīng)記錄文件中。實(shí)現(xiàn)代碼如下:

      pf=open(parafile)

      uline=pf.readlines()[1]

      para=list(uline.split(′,′))

      pf.close()

      3.3 原始數(shù)據(jù)處理

      3.3.1 原始數(shù)據(jù)讀取

      原始數(shù)據(jù)保存于“*.dat”文件中,通過用戶所選擇的原始數(shù)據(jù)文件絕對(duì)位置,打開原始數(shù)據(jù)文件,并按行讀取原始數(shù)據(jù),存儲(chǔ)于列表中,以便后續(xù)解析處理。實(shí)現(xiàn)代碼如下:

      of=open(odfile)

      datas=of.readlines()

      of.close()

      3.3.2 原始數(shù)據(jù)解析

      天寶電子水準(zhǔn)儀所記錄的數(shù)據(jù)中,根據(jù)不同數(shù)據(jù)特征可區(qū)分該行數(shù)據(jù)所記錄信息。主要的數(shù)據(jù)特征包括以下幾類:

      1)字符串含有“Start-Line”:開始一條水準(zhǔn)路線;

      2)字符串含有“End-Line”:結(jié)束一條水準(zhǔn)路線;

      3)字符串含有“Rb”:后視數(shù)據(jù);

      4)字符串含有“Rf”:前視數(shù)據(jù);

      5)字符串含有“#####”:重測(cè)記錄數(shù)據(jù);

      6)字符串含有點(diǎn)號(hào)信息,并且不具有以上5種特殊標(biāo)識(shí)符:移動(dòng)至新測(cè)站。

      讀取原始數(shù)據(jù)列表數(shù)據(jù)項(xiàng),根據(jù)以上特征判斷原始數(shù)據(jù)項(xiàng)含義,并獲取相應(yīng)記錄信息存儲(chǔ)于列表中。原始數(shù)據(jù)項(xiàng)含義對(duì)應(yīng)記錄信息,如表1所示。

      表1 原始數(shù)據(jù)項(xiàng)含義對(duì)應(yīng)記錄信息表

      其中,當(dāng)數(shù)據(jù)項(xiàng)表示為結(jié)束一條水準(zhǔn)路線時(shí),時(shí)間信息為使用程序的日期。實(shí)現(xiàn)代碼如下:

      dt=datetime.datetime.now()

      time=str(dt.year)+′年′+str(dt.month)+′月′+str(dt.day)+′日′

      原始數(shù)據(jù)結(jié)束一條水準(zhǔn)路線時(shí),程序?qū)⒂涗浽摋l水準(zhǔn)路線的列表傳入信息寫入模塊,將數(shù)據(jù)寫入相應(yīng)的記錄手簿文件及平差文件。

      3.4 信息寫入對(duì)應(yīng)文件

      3.4.1 記錄手簿格式寫入

      記錄手簿包括用于測(cè)量信息的表頭,用于記錄測(cè)量數(shù)據(jù)的表格,以及用于記錄測(cè)段計(jì)算數(shù)據(jù)的結(jié)尾。為方便用戶閱覽且輸出美觀,設(shè)置打印紙張大小為A4紙,每一頁均輸出表頭,至多輸出13個(gè)測(cè)站數(shù)據(jù),測(cè)量數(shù)據(jù)輸出完成后,輸出結(jié)尾。由于測(cè)站數(shù)量不固定,表格與測(cè)站數(shù)據(jù)進(jìn)行同步輸出。

      為便于輸出,將記錄手簿格式分為表頭,表格以及結(jié)尾分別存儲(chǔ)于3張模板表格中,寫入時(shí)按需求分別調(diào)用。根據(jù)模板,設(shè)置輸出記錄手簿的Excel文件單元格格式。實(shí)現(xiàn)代碼如下:

      for i in range(1,nrows+1):

      for j in range(97,97+ncols+1):

      n=chr(j).upper()

      a='%s%d’ % (n,(i+number))

      b='%s%d’ % (n,i)

      ws[a].border=copy(rs[b].border)

      ws[a].alignment=copy(rs[b].alignment)

      ws[a].font=copy(rs[b].font)

      ws[a].value=copy(rs[b].value)

      3.4.2 記錄手簿數(shù)據(jù)寫入

      表頭信息由參數(shù)文件及部分原始數(shù)據(jù)得到,根據(jù)記錄手簿格式,將相應(yīng)信息填入對(duì)應(yīng)單元格中。表格中觀測(cè)數(shù)據(jù)由原始數(shù)據(jù)列表中輸出,視距差、累計(jì)差、高差、讀數(shù)差由原始數(shù)據(jù)計(jì)算得到,并填入對(duì)應(yīng)單元格中。測(cè)站數(shù)據(jù)輸出完成后,對(duì)測(cè)段的累計(jì)前距、累計(jì)后距、累計(jì)視距差、累計(jì)高差、測(cè)段距離進(jìn)行計(jì)算,并輸出結(jié)尾。實(shí)現(xiàn)代碼如下:

      sjc=((float(datas[i][4])-float(datas[i][8]))+(float(datas[i][5])-float(datas[i][9])))/2

      sjc=round(sjc,5)

      sjc=round(sjc,4)

      acc_s=acc_s+sjc

      acc_s=round(acc_s,4)

      gc1=float(datas[i][6])-float(datas[i][10])

      gc1=round(gc1,5)

      gc2=float(datas[i][7])-float(datas[i][11])

      gc2=round(gc2,5)

      dsc_h=(float(datas[i][6])-float(datas[i][7]))*1000

      dsc_h=round(dsc_h,2)

      dsc_q=(float(datas[i][10])-float(datas[i][11]))*1000

      dsc_q=round(dsc_q,2)

      dsc=dsc_h-dsc_q

      dsc=round(dsc,2)

      gc=(gc1+gc2)/2

      gc=round(gc,6)

      gc=round(gc,5)

      acc_gc=acc_gc+gc

      distance=distance+float(datas[i][5])+float(datas[i][9])

      dis_h=dis_h+float(datas[i][5])

      dis_q=dis_q+float(datas[i][9])

      distance=distance/1000

      dis_h=dis_h/1000

      dis_q=dis_q/1000

      3.4.3 平差文件寫入

      平差文件記錄每一條水準(zhǔn)路線由起始點(diǎn)到終止點(diǎn)的高差和距離。實(shí)現(xiàn)代碼如下:

      gc=str(′%.5f′ % gc)

      distance=str('%.3f’ % distance)

      f=open(file,′a′)

      f.write(spoint.ljust(8)+′,′+epoint.ljust(8)+′,′+gc.rjust(11)+′,′+distance.rjust(6)+′ ′)

      f.close()

      4 程序運(yùn)行

      程序運(yùn)行完成,由原始數(shù)據(jù)文件*.dat輸出相應(yīng)記錄手簿文件*.xlsx以及平差文件*.in1。

      5 結(jié)束語

      DiNi03電子水準(zhǔn)儀能夠?qū)崿F(xiàn)自動(dòng)記錄、核檢測(cè)量數(shù)據(jù)的功能,提高了測(cè)繪作業(yè)效率,但其隨機(jī)軟件下載的電子記錄水準(zhǔn)記錄數(shù)據(jù)和現(xiàn)行國家規(guī)范格式不同,也無法與Cosa(科傻)平差軟件對(duì)接。結(jié)合Python語言在數(shù)據(jù)處理方面的優(yōu)勢(shì),本文編寫了一個(gè)電子水準(zhǔn)記錄數(shù)據(jù)處理程序,將DiNi03電子水準(zhǔn)儀數(shù)據(jù)轉(zhuǎn)換為國家標(biāo)準(zhǔn)格式,并得到相應(yīng)平差文件,使其所得到的測(cè)量數(shù)據(jù)在后續(xù)的使用中更加方便,大大的優(yōu)化了幾何水準(zhǔn)測(cè)量的作業(yè)效率,具有更強(qiáng)的實(shí)用性。

      猜你喜歡
      水準(zhǔn)儀原始數(shù)據(jù)測(cè)站
      GNSS鐘差估計(jì)中的兩種測(cè)站選取策略分析
      GOLDEN OPPORTUNITY FOR CHINA-INDONESIA COOPERATION
      受特定變化趨勢(shì)限制的傳感器數(shù)據(jù)處理方法研究
      全球GPS測(cè)站垂向周年變化統(tǒng)計(jì)改正模型的建立
      測(cè)站分布對(duì)GPS解算ERP的影響分析
      全新Mentor DRS360 平臺(tái)借助集中式原始數(shù)據(jù)融合及直接實(shí)時(shí)傳感技術(shù)實(shí)現(xiàn)5 級(jí)自動(dòng)駕駛
      汽車零部件(2017年4期)2017-07-12 17:05:53
      建筑裝修用簡易水準(zhǔn)儀的設(shè)計(jì)
      DiNi-12電子水準(zhǔn)儀在采沉區(qū)沉降觀測(cè)中的應(yīng)用
      基于GPS坐標(biāo)殘差序列的全球測(cè)站非線性變化規(guī)律統(tǒng)計(jì)
      長度計(jì)量基礎(chǔ)知識(shí)講座(三十八)
      阿拉尔市| 县级市| 富源县| 太仆寺旗| 双柏县| 谷城县| 依兰县| 珲春市| 淮安市| 洛川县| 云阳县| 图们市| 福鼎市| 眉山市| 运城市| 松桃| 洪洞县| 来安县| 赤城县| 镇雄县| 友谊县| 定陶县| 尚义县| 大悟县| 商丘市| 郑州市| 夹江县| 茂名市| 临泉县| 乡城县| 太保市| 金堂县| 宜昌市| 寻乌县| 新巴尔虎左旗| 错那县| 北碚区| 寻甸| 安达市| 甘泉县| 北流市|