999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

標準模塊和類模塊編程在土地質量地球化學調查建庫輔助系統設計中的應用

2020-12-30 06:51:58王增輝
物探化探計算技術 2020年6期
關鍵詞:界面信息

王增輝

(山東省地質調查院 山東省土地質量地球化學與污染防治工程技術研究中心,濟南 250014)

0 前言

VB是編制地球化學數據處理程序的常用工具之一,其提供的的模塊包括三種類型:①窗體模塊;②標準模塊;③類模塊。其中窗體模塊是VB應用程序的基礎界面;標準模塊是程序中的一個獨立容器,可包含全局變量、Function過程和Sub過程,通常用于存放與特定窗體或控件無關的代碼;而類模塊是面向對象編程的基礎,其創建的對象可被程序內的過程調用。合理利用標準模塊和類模塊進行程序設計,可極大提高代碼通用性和可維護性。

模塊化程序設計在數據采集與分析方面具有廣泛的實用價值,就地質領域而言其設計思想已經廣泛應用于重、磁、電等數據處理軟件中,尤其是地震軟件更為成熟[1-4],但在地球化學數據采集方面可供參考的資料相對較少。就大比例尺地球化學調查工作而言,近年來在各級主管部門的推動下,全國各地結合實際情況開展了大量針對局部地區的大比例尺土地質量地球化學評價項目[5],成果極大地促進了地球化學調查成果向經濟、社會效益的轉化,但大比例尺土地質量地球化學調查具有調查點位多、調查內容詳細的特點,并且往往有較高的時效性要求,因此工作集中度較高。調查數據采集是該項工作中的重要一環,以往因數據采集效率不高需要大量人力投入,實際工作中對更高效的數據采集手段的需求日益迫切。編制數據采集輔助程序,是進一步提高數據電子化采集效率的一種有效途徑。

目前調查原始數據記錄表的錄入,是借助Excel、Access等軟件提供的電子表格來完成的[6],但傳統的手動輸入效率不高并且易出錯,通過編程實現多種信息的自動錄入是提高工作效率的有效途徑,在地質行業也有較廣泛的應用先例[7-10]。這里以山東聊城1:50 000土地質量地球化學評價項目為例,通過模塊化編程方法設計了一種用于土地質量地球化學調查原始信息錄入的建庫輔助系統(Database Building Assistant System-DBAS),從實際應用來看,該系統在提高數據輸入效率、降低輸入錯誤率等方面效果顯著。

1 方法

1.1 系統工作流程

建庫數據源主要包括:野外采樣原始記錄表格、包含“點號”、“預布點坐標”、“預布點屬性信息”的預布點信息表以及由手持GPS定位儀導出的包含實際采樣點“點號”、“坐標”、“高程”等信息的GPS坐標信息表。數據處理之前將預布點信息表和GPS坐標信息表整理成符合建庫要求的數據格式,并在同一工作簿下分別保存為獨立的工作表,二者可通過統一的“點號”字段進行匹配。建庫輔助系統設計思路是將已有信息在錄入窗體內進行匹配,并進行有效性檢查,信息檢查通過后寫入數據庫記錄表,詳見圖1。

數據的錄入過程,可以視作將一系列不同來源的信息表進行重新整合的過程,具體工作流程是:

圖1 建庫輔助系統工作流程圖Fig.1 Workflow of database building assistant system

1)首先根據采樣原始記錄表格在窗體界面內輸入“點號”項,系統將首先利用預布點信息匹配模塊根據“點號”在預布點信息表內查詢對應的信息,如查詢到則將該預布點已有信息(如位置、地類、氣候、土壤等),調入到窗體的相應信息錄入窗口,這些信息除特殊情況外一般不需修改,如查詢不到該點號信息則所有預填項目均為空白,說明輸入點號不正確或不完整,需進一步檢查。

2)系統利用GPS信息匹配模塊根據“點號”在GPS坐標信息表內查詢該點的實際GPS記錄,正確的“點號”應能夠被查詢到,并將其對應的“坐標”、“高程”等信息調入到窗體界面對應的輸入位置,否則將報錯。取得GPS樣點坐標后,系統將計算實際樣點與預布樣點的偏差并顯示在窗體內供錄入人員核對,當采樣偏差超出一定范圍(一般為50 m)視為移點,需根據實際情況記錄移點原因。

3)預布點匹配模塊工作完畢后,系統將利用已有信息匹配模塊在已建立的數據庫信息表內查詢是否已有該“點號”記錄,如果查詢到則將該記錄項的全部對應信息調入到錄入窗體界面內顯示,該模塊的主要意義是避免重復錄入或由于錄入點號錯誤導致數據庫已有信息被覆蓋,并且提供了對已有信息的調取和修改途徑。

4)錄入人員檢查錄入窗體界面自動調取信息的正確性,并根據野外采樣原始記錄表格將相應信息在窗體界面內補全,系統將在每個記錄項錄入完畢后自動根據邏輯關系推斷補全相關項內容,輸入完畢檢查無誤后點擊“導入或更新”按鈕,系統將利用導入模塊將窗體內全部信息導入數據庫記錄表末端,如有漏填項則報錯。

5)為了進一步提高輸入效率,系統在導入數據庫記錄的同時,將利用字典更新模塊將每個記錄項新出現的值增補至字典工作表,當下次加載窗體時,窗體內的下拉選擇框將以字典工作表內保存的值作為初始值,錄入相似記錄項時可直接點選。

1.2 模塊化設計思路

以功能塊為單位進行程序設計,實現其求解算法的方法稱為模塊化。模塊化程序設計是在進行程序設計時將一個大程序按照功能劃分為若干小程序模塊,每個小程序模塊完成一個確定的功能,并在這些模塊之間建立必要的聯系,通過模塊的互相協作完成整個功能。目的是為了降低程序復雜度,使程序設計、調試和維護等操作簡單化。模塊化程序設計的任務首先是模塊功能實現,其次是模塊間調用關系的確定和優化,最后是在主界面中調用的實現。

本系統程序包括數據錄入和數據檢查2個工作界面、5個功能模塊和1個繪圖類模塊。功能模塊包括:預布點信息匹配模塊(PreInfoMatch)、GPS信息匹配模塊(GPSInfoMatch)、已有信息匹配模塊(ExsInfoMatch)、數據導入模塊(DataImport)和字典更新模塊(DictUpdate)。建庫輔助系統程序架構見圖2,數據錄入界面根據實際需要調用5個功能模塊對相應數據表進行讀取和寫入,數據檢查界面用于讀取并顯示已有數據,根據指定信息調用繪圖類模塊進行點位信息預覽,并可根據需要調用數據導入模塊對已有數據表進行修改。各功能模塊功能相互獨立,并可在不同界面中適時進行調用。同時類模塊負責點位符號和信息的顯示,規定了繪圖方式和傳遞參數類型,在檢查界面中使用循環語句對繪圖類對象進行調用以完成全部點位和信息預覽圖繪制,極大地提高了代碼的重用率,降低了兩個界面代碼的復雜程度。

圖2 建庫輔助系統程序架構Fig.2 Procedural framework of database building assistant system

1.3 界面設計

土地質量地球化學評價項目野外采樣記錄卡格式,通常參考《土地質量地球化學評價規范(DZ/T 0295-2016)》給出的推薦格式,該表記錄項目較多,對于縣(區)級1:50 000土地質量地球化學評價項目來說過于繁瑣,相比來說,采用省級標準推薦的采樣記錄卡更為切合實際。以土壤采樣記錄卡為例,山東省1:50 000土地質量地球化學評價項目多采用山東省地質調查技術標準——《1:50 000 土地質量地球化學調查評價技術要求(試行)》推薦的記錄卡格式,其記錄項目包括:省(市)名稱、地(市)名稱、縣(區)名稱、鄉(鎮)名稱、村組名稱、樣品編號、橫坐標(X)、縱坐標(Y)、海拔高度(m)、地類名稱、作物種類、地貌類型、地形部位、地面坡度(度)、坡向、常年降雨量(mm)、常年積溫(℃)、常年無霜期(天)、水源條件、輸水方式、灌溉方式、熟制、典型種植制度、常年產量水平(公斤/畝)、土壤類型、顏色、質地(手測)、耕層厚度(cm)、采樣深度(cm)、成土母質、土壤結構、侵蝕程度、主要巖性、人為污染、周邊環境描述、采樣人、記錄人、核對人、日期。這里以此為基礎進行錄入窗體界面設計,見圖3。

窗體內數據錄入區域主要采用下拉選擇框完成,其中可由自動補全的部分背景色設定為灰色,需手動輸入或選擇的設定為白色。由于調查信息之間往往存在內在聯系和邏輯關系,因此,系統自動實時跟蹤部分項目值變化(通過ComboBox方法),調用相應模塊,或根據邏輯關系對其他項的值進行補全,如“樣品編號”項變化將自動調用預布點匹配模塊、GPS信息匹配模塊及已有信息匹配模塊工作,“作物”項變化將自動在“熟制”、“種植制度”等項內補全最常見默認值,如作物為“小麥”,“熟制”則自動填“4”(一年兩熟)、“種植制度”自動填“2”(小麥-玉米);如作物為“-”(無),則與之相關的項均填為“-”。“周邊描述”中常見描述可進行勾選,選中后自動添加到錄入窗口,不必手動錄入。此外界面內按鈕提供了各模塊的直接調用方式。

1.4 代碼設計

當數據量不太大的時候采用Excel工作表存儲數據是相對簡便有效的(在Excel2007之后版本中工作表的大小為16384列×1048576行,在Excel97-2003中,工作表的大小為256列×65536行),一般能夠滿足絕大多數化探調查項目要求,當數據量達到百萬條以上時應使用Access表格存儲數據,以滿足容量和處理速度上的需求,當然需對代碼進行適當改寫。本系統底層采用Excel工作表進行數據存儲,錄入工作開始之前,首先將全部數據表置于同一工作簿內,其中Sheet1、Sheet2、Sheet4和Sheet5依次為數據庫記錄表、GPS坐標信息表、預布點信息表和字典工作表,各工作表數據互相獨立,僅通過相應的模塊對各工作表進行操作。這里將記錄上限暫時設為9 999條,記錄項目39項。各模塊編碼如下。

1.4.1 預布點信息匹配模塊(PreInfoMatch)

預布點信息的取得依靠對預布點信息表(Sheet4)的遍歷來完成,獲得樣點所在行號之后對相應下拉選擇框(ComboBox)賦值。由于實際點和預布點正常情況下不會相差1 000 m以上,因此二者坐標至少前4-5位應該是一致的,實際坐標會進一步根據GPS坐標信息表確定,當GPS信息缺失時由用戶補充后三位。

圖3 建庫輔助系統主界面Fig.3 Main interface of database building assistant system

Sub PreInfoMatch ()Dim bl As Boolean 'bl為點號是否與預布點匹配的標記變量

bl=False

For i=2 To 10000 '設定Sheet4為10000行

If UserForm1.ComboBox4.Text Like Sheet4.Cells(i, 4)=True And UserForm1.ComboBox4.Text <> "" Then

bl=True '當點號已輸入并且在Sheet4中存在時,將預布點信息(縣、鎮、村、地類、土壤、坐標、海拔)填入對應的文本框

UserForm1.ComboBox1=Sheet4.Cells(i, 9)

UserForm1.ComboBox2=Sheet4.Cells(i, 10)

UserForm1.ComboBox3=Sheet4.Cells(i, 11)

UserForm1.ComboBox8=Sheet4.Cells(i, 7)

UserForm1.ComboBox23=Sheet4.Cells(i, 6)

UserForm1.ComboBox5=Left(Sheet4.Cells(i, 13), 5) 'X坐標填入前5位

UserForm1.ComboBox6=Left(Sheet4.Cells(i, 12), 4)'Y坐標填入前4位

UserForm1.ComboBox7=Sheet4.Cells(i, 14)

End If

Next i

End Sub

1.4.2 GPS信息匹配模塊(GPSInfoMatch)

首先對GPS坐標信息表(Sheet2)的遍歷,之后讀取實際采樣點坐標、高程和采樣日期用以對窗體內相應的下拉選擇框(ComboBox)賦值。

Sub GPSInfoMatch ()

Dim bl As Boolean 'bl為匹配標記變量,同上

bl=False

For i=2 To 10000 '設定Sheet2為10000行

If UserForm1.ComboBox4.Text Like Sheet2.Cells(i, 1)=True And UserForm1.ComboBox4.Text <> "" Then

bl=True '當點號已輸入并且在Sheet2中存在時,將樣點實際位置信息(坐標、高程、采樣日期)填入對應的文本框

UserForm1.ComboBox5=Sheet2.Cells(i, 2)

UserForm1.ComboBox6=Sheet2.Cells(i, 3)

UserForm1.ComboBox7=Sheet2.Cells(i, 4)

UserForm1.ComboBox37=Sheet2.Cells(i, 5)

End If

Next i

End Sub

1.4.3 已有信息匹配模塊(ExsInfoMatch)

首先對數據庫記錄表(Sheet1)進行遍歷,如找到樣號則予以提示,這時系統進入已有記錄修改模式,需要將表中全部項目值賦值到窗體下拉選擇框內。否則,系統處于新紀錄錄入模式,無提示。

Sub ExsInfoMatch ()

Dim bl As Boolean

bl=False 'bl為匹配標記變量,同上

For i=2 To 1600

If UserForm1.ComboBox4.Text Like Sheet1.Cells(i, 6)=True And UserForm1.ComboBox4.Text <> "" Then

bl=True

MsgBox "此樣號記錄已經存在,現在進行修改"

'找到已有樣號的記錄,下面將Sheet1中全部項目顯示到窗體內

For k=1 To 33

UserForm1.Controls("ComboBox" & k).Value=Sheet1.Cells(i, k + 2)

Next k

End If

Next i

'采樣偏差及項目邏輯判斷代碼最后執行,這里略去

End Sub

1.4.4 數據導入模塊(DataImport)

遍歷數據庫記錄表(Sheet1)并找到末尾行位置,之后將窗體內全部項目值寫入該表(數據項的合理性檢查功能在窗體代碼中實現)。

Sub DataImport ()

Dim bl As Boolean 'bl為匹配標記變量,判斷Sheet1中是否已有該樣點記錄

bl=False

'找到已有記錄行號i以修改

For i=2 To 10000

If UserForm1.ComboBox4.Text Like Sheet1.Cells(i, 6)=True And UserForm1.ComboBox4.Text <> "" Then

bl=True

Exit For

End If

Next i

'定位至末尾行號i以新增一條記錄

If bl=False Then

For i=2 To 10000

If Sheet1.Cells(i, 6)="" Then

Exit For

End If

Next i

End If

'在第i行處導入數據

For k=1 To 39

Sheet1.Cells(i, k)=UserForm1.Controls("ComboBox" & k).Value

Next k

End Sub

1.4.5 字典更新模塊(DictUpdate)

首先清空舊的字典工作表(Sheet5),之后通過二重循環逐項讀取并判斷數據庫記錄表(Sheet1)中的值,如果是新出現的值就將其寫入字典工作表末行。

Sub DictUpdate ()

Dim bl As Boolean 'bl為判斷字典內每列值是否唯一的標記變量

bl=True

'清空舊字典

Sheets("sheet5").Range("2:65536").Delete

For j=1 To 39 '按列依次處理

k=2

For i=2 To 10000 'Sheet1表內按行依次處理

bl=True

For x=2 To k

'如果Sheet5中已存在相同記錄則繼續判斷下一條記錄,否則在Sheet5中新增一條記錄

If Sheet5.Cells(x, j)=CStr(Sheet1.Cells(i, j)) Then

bl=False

End If

Next x

If bl=True Then

Sheet5.Cells(k, j)=CStr(Sheet1.Cells(i, j))

k=k + 1

End If

Next i

Next j

End Sub

窗體按鈕的響應以及各模塊的調用主要通過窗體代碼來完成,代碼較長且繁瑣,這里不做過多介紹。系統運行情況見圖4,當首先錄入點號后系統會依次調用PreInfoMatch、GPSInfoMatch和ExsInfoMatch模塊,將除“周邊描述”外的大部分項目自動填寫完畢,“作物”、“水源條件”等少量項目會填入本地區的常見值,錄入人員僅需根據記錄卡對這些項目進行核對和必要的修改。當“采樣偏差”大于50m時會自動勾選“移點”選項以提示錄入移點原因。

圖4 建庫輔助系統運行效果圖Fig.4 Operation diagram of database building assistant system

1.4.6 繪圖類模塊設計

為了在圖上直觀反映數據點信息,需要將數據從Excel表轉出至MapGIS等制圖軟件中進行投點和屬性標注,操作較繁瑣。因此在本系統中增加了包含信息點位圖的數據檢查窗體,提供了一種可視化的數據檢驗途徑,建庫過程中可隨時通過單擊“入庫數據檢查”按鈕打開。數據檢查窗體提供了對已入庫信息的預覽功能,按已入庫點位坐標信息生成點位圖,并對指定點號、指定項目及項目值進行突出顯示。該窗體提供了對相應信息的修改、統改和撤銷更改功能。其中點位預覽功能主要通過運用Shapes對象AddShape方法的類模塊編程及窗體內調用代碼來實現。繪圖類模塊,包含的生成Box、Round的2個Function過程以及顯示圖形的Sub過程,Function代碼如下:

'根據矩形位置和大小信息繪制預覽圖框

Public Function Box(Left As Single, Top As Single, Width As Single, Height As Single) As Shape '定義的參數包括左上角坐標、寬度和高度

On Error GoTo ErrBox

Set Box=m_shtHolder.Shapes.AddShape(msoShapeRectangle, Left, Top, Width, Height)

Exit Function

ErrBox:

Set Box=Nothing

Exit Function

End Function

'根據樣點坐標和半徑繪制樣點標記圓

Public Function Round(CenterX As Single, CenterY As Single, Radius As Single) As Shape

'定義的參數包括標記圓的中心坐標和半徑

Dim Left As Single

Dim Top As Single

Dim Width As Single

Dim Height As Single

On Error GoTo ErrRound

Left=CenterX - Radius

Top=CenterY - Radius

Width=Radius * 2

Height=Radius * 2

Set Round=m_shtHolder.Shapes.AddShape(msoShapeOval, Left, Top, Width, Height)

Exit Function

ErrRound:

Set Round=Nothing

Exit Function

End Function

符號、字體、顏色等參數定義在窗體代碼中對繪圖類模塊的調用中完成,圖框范圍根據Sheet1中坐標最大范圍確定,單擊“信息預覽”按鈕后樣點信息預覽運行效果見圖5。樣點和編號用紅色圓圈和字體表示,當前查詢的值用藍色字表示,其他信息用黑色字表示。樣點總體分布符合實際情況,數據分布較直觀。數據修改功能通過調用數據導入模塊完成。

圖5 數據檢查界面運行效果圖Fig.5 Operation diagram of data check interface

2 結論

標準模塊和類模塊使程序結構更加清晰,不僅有利于代碼的維護和重用,對程序功能的進一步擴展也有諸多好處,在地球化學數據采集與分析領域具有極好的適用性。

目前開展的區域地球化學調查工作采樣量往往較大,特別是目前各地重點開展的大比例尺土地質量地球化學調查和評價項目,按照4個點/km2~16個點/km2的采樣密度計算,1:50 000縣級調查實際采樣量往往達到數千甚至1萬余件,地市級采樣量可達數萬件,大量采樣原始記錄的電子化已成為一項較為繁重的工作。從本系統的實際應用情況來看,使用熟練后數據的錄入效率較傳統的表格錄入方式大幅提高,對減少勞動時間、降低人為錯誤幾率、提高工作效率均有較大的幫助,值得在類似項目開展過程中推廣應用。

從長遠來看,隨著技術的進步簡化數據采集過程是未來地球化學調查工作的大勢所趨。獲取數據是構建地質大數據的前提[11],地球化學調查體系也必將進入大數據信息主導的新時代[12],隨著地球化學調查在新領域的不斷探索和深入,對信息的采集和記錄方式也提出了更高的要求。地球化學調查中記錄項目隨著研究的變化也在不斷演變,不同地區、不同項目記錄內容和重點不同,為了使工作更加貼近地球化學工作的新方向,前人在記錄方式和手段上都做過很多有益的嘗試[13],各類工作規范也日益豐富[14-15],但傳統的原始信息記錄方式不便和效率偏低的問題依然比較突出。隨著電子通訊技術的進步,傳統的地球化學調查記錄方式和介質有必要向電子化、網絡化轉變,借此原始數據的采集和記錄完全可以做到“所見即所得”,這樣采樣信息數據庫在采樣完成后即可同步建立起來,既降低了信息采集和資料保存的人力物力成本,又提高了調查工作初始環節的效率。

隨著計算機編程語言的發展,VB程序在效率、結構復雜度、移植性等方面存在的諸多問題日益顯著,已逐漸被更高效、易用、跨平臺的程序語言如Java、Python等所取代。近年來在地質、測繪、環保、水利等部門已有大規模應用采樣終端機和APP的成功先例[16-17],可以預見大數據的采集與整合處理,必將成為未來物化探工作的重要組成部分,其程序設計思想和手段值得進一步研究、總結和借鑒,在今后物化探勘查相關規范、標準的制定過程中應對新的信息采集、匯總和處理手段予以考慮,并給予規范上了許可和技術上的引領。

猜你喜歡
界面信息
國企黨委前置研究的“四個界面”
當代陜西(2020年13期)2020-08-24 08:22:02
基于FANUC PICTURE的虛擬軸坐標顯示界面開發方法研究
空間界面
金秋(2017年4期)2017-06-07 08:22:16
訂閱信息
中華手工(2017年2期)2017-06-06 23:00:31
電子顯微打開材料界面世界之門
人機交互界面發展趨勢研究
手機界面中圖形符號的發展趨向
新聞傳播(2015年11期)2015-07-18 11:15:04
展會信息
中外會展(2014年4期)2014-11-27 07:46:46
信息
建筑創作(2001年3期)2001-08-22 18:48:14
健康信息
祝您健康(1987年3期)1987-12-30 09:52:32
主站蜘蛛池模板: 不卡网亚洲无码| 青青国产视频| 免费99精品国产自在现线| 亚洲精品男人天堂| 国产三级成人| 一本久道久久综合多人| 在线精品亚洲一区二区古装| 香蕉视频在线精品| 国产精品久久久久无码网站| lhav亚洲精品| 午夜精品区| 中文字幕精品一区二区三区视频 | 亚洲国产黄色| 亚洲激情99| 色婷婷色丁香| 99热这里只有精品在线观看| 成人午夜久久| 黄色片中文字幕| 国产亚洲高清视频| 免费在线不卡视频| 2020最新国产精品视频| 日韩性网站| 亚洲天堂在线免费| 亚洲乱码精品久久久久..| 曰韩免费无码AV一区二区| AV片亚洲国产男人的天堂| 日韩精品成人网页视频在线| 亚洲黄色片免费看| 亚洲国产日韩欧美在线| 99在线观看国产| 国产精品私拍在线爆乳| 亚洲欧美另类日本| 免费AV在线播放观看18禁强制| 国产国语一级毛片| 欧洲精品视频在线观看| 一区二区自拍| 97成人在线观看| 国产成人综合久久精品尤物| 玖玖免费视频在线观看| 青青极品在线| 久久国产精品电影| 色婷婷狠狠干| 99热免费在线| 无码AV动漫| 91精品国产91欠久久久久| 第九色区aⅴ天堂久久香| 日本三区视频| 日韩乱码免费一区二区三区| 欧美精品高清| 国产高清在线观看| 农村乱人伦一区二区| 久久亚洲AⅤ无码精品午夜麻豆| 伊人久久久大香线蕉综合直播| 欧美中出一区二区| 一级毛片不卡片免费观看| 亚洲人成影院午夜网站| 夜精品a一区二区三区| 先锋资源久久| 色哟哟精品无码网站在线播放视频| 亚洲欧美精品日韩欧美| 中文字幕亚洲另类天堂| 亚洲va视频| 国产剧情伊人| 波多野一区| 玖玖精品视频在线观看| 91国语视频| 国产v欧美v日韩v综合精品| 日本少妇又色又爽又高潮| 国产精品自在在线午夜区app| 无码免费视频| 22sihu国产精品视频影视资讯| 一区二区在线视频免费观看| 91系列在线观看| 午夜福利亚洲精品| 欧美一级高清片久久99| 有专无码视频| 幺女国产一级毛片| 亚洲大尺码专区影院| 亚洲免费毛片| 欧美精品1区| 亚洲精品国偷自产在线91正片| 亚洲欧美国产高清va在线播放|