• 
    

    
    

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

      ?

      基于ArcGIS的鉆孔柱狀圖自動生成方法

      2022-11-07 07:27:26李志國王庶懋
      江西科學 2022年5期
      關鍵詞:柱狀圖巖性頁面

      李志國,王庶懋,劉 欽

      (1.中國電力工程顧問集團華東電力設計院有限公司,200063,上海;2.中國地震臺網(wǎng)中心,100036,北京)

      0 引言

      鉆探是各類勘察工程的主要手段之一[1]。各種類型的工程勘察柱狀圖是日??辈旃ぷ髦挟a(chǎn)出的最基本,也是使用數(shù)量最多的鉆探成果圖件。應用于工程勘察的柱狀圖包括單孔鉆孔柱狀圖、動力觸探試驗成果圖、靜力觸探試驗成果圖等多種類型的圖件。這類圖件如采用傳統(tǒng)的手工繪制方式,往往效率低,容易出錯而且不易修改,不能滿足實際工作的需要。隨著計算機技術的應用,國內(nèi)外開發(fā)了一系列專業(yè)軟件實現(xiàn)鉆孔柱狀圖的繪制,但是這些軟件往往是半自動成圖,修改起來也不方便,而且不能根據(jù)專業(yè)特點添加填充圖樣[2]。為了能夠更好地完成鉆孔柱狀圖的繪制,現(xiàn)代繪制技術主要分為兩類:一類采用AutoCAD、CorelDRAW等計算機輔助制圖軟件進行鉆孔柱狀圖的自動或半自動生成;另一類采用ArcGIS、MapInfo等組件式GIS平臺進行二次開發(fā)生成鉆孔柱狀圖[3]。這2種方式往往均存在通用性、靈活性和擴展性不強等問題,無法對產(chǎn)出模板進行靈活的定義。

      針對以上問題,本文提出基于Jinja2模板引擎,通過Excel排版實現(xiàn)鉆孔柱狀圖模板格式配置的靈活定義和表達?;贏rcGIS平臺,利用空間數(shù)據(jù)和屬性數(shù)據(jù)管理功能,實現(xiàn)鉆孔數(shù)據(jù)在模板引擎上的渲染,以及鉆孔柱狀圖的自動繪制和輸出功能。

      1 系統(tǒng)總體設計

      1.1 鉆孔柱狀圖格式分析

      從各類圖件的表現(xiàn)形式中可以看出,鉆孔柱狀圖是一種表格式的圖件。表格中地層厚度、試驗曲線、取樣位置等單元格比較特殊,其高度需要按比例符合實際的精確度,而地層描述等單元格則需要根據(jù)描述內(nèi)容文字的高度,通過緩沖線標識相對位置,以便達到整體美觀、協(xié)調(diào)的目的。

      鉆孔柱狀圖的繪制內(nèi)容由文字、花紋、符號和曲線等要素構成。文字為表格中的各種數(shù)據(jù)和描述文字,花紋為柱狀圖中表示地層巖性的各種填充花紋,符號為柱狀圖中標識地下水位、標貫點和取樣類型等位置的點狀符號,曲線為靜力觸探、動力觸探等各類物理性質(zhì)試驗曲線。所有內(nèi)容的繪制和表達均需要符合國家、部門或行業(yè)的標準。

      1.2 數(shù)據(jù)模型設計

      鉆孔數(shù)據(jù)由工程信息、鉆孔信息、地層信息、取樣信息、標貫信息、靜探信息、動探信息等一系列的表組成,每個與鉆孔相關的信息通過鉆孔編號相關聯(lián)。這些信息的錄入可以通過Excel導入的功能,按對應的項目導入到系統(tǒng)的數(shù)據(jù)庫中,也可直接讀取Excel中的數(shù)據(jù)進行柱狀圖的繪制。

      根據(jù)不同行業(yè)的工程情況,可以將工程信息表、勘探點信息表、勘探點地層表、鉆孔取樣信息表、標貫試驗成果表、靜探試驗成果表、動探試驗成果表等信息建立數(shù)據(jù)模型。通過數(shù)據(jù)的導入,將成果信息轉(zhuǎn)換為JSON格式便于后續(xù)處理。

      圖2 數(shù)據(jù)模型ER圖

      1.3 系統(tǒng)架構設計

      本文提出的自動成圖工具利用ArcToolbox的開發(fā)接口,使用ArcPy實現(xiàn)用戶自定義工具,從而便捷快速地進行鉆孔柱狀圖的處理和產(chǎn)出。

      ArcGIS Desktop軟件是ESRI公司開發(fā)的專業(yè)地理信息處理軟件,軟件的ArcToolbox工具箱提供了一套處理地理數(shù)據(jù)任務的工具集。ArcToolbox包含了ArcGIS地理處理的大部分分析工具和數(shù)據(jù)管理工具[4],這些工具可以單獨使用,也可以通過ModelBuilder工具把它們的處理流程連接起來,建立空間分析工作流模型,還可以通過代碼把這些工具引用到定制腳本中來創(chuàng)建自己的工具和工具箱,用來擴展ArcGIS的功能。本文采用ArcPy定制一系列的工具箱和工具的方式,來實現(xiàn)靈活的鉆孔柱狀圖產(chǎn)出功能。

      自定義工具的整體結構包括定義參數(shù)、驗證參數(shù)和處理工作流3個部分。分別定義輸入的參數(shù),驗證參數(shù)合法性和執(zhí)行產(chǎn)出處理過程。

      輸入數(shù)據(jù)可以選擇存放工程信息的數(shù)據(jù)庫或Excel文件,定義了數(shù)據(jù)輸出所需要的各類信息,默認輸出工程內(nèi)的所有鉆孔信息,也可以通過可選參數(shù),指定要輸出的鉆孔編號,來限定產(chǎn)出范圍。

      圖3 自定義工具界面

      為了實現(xiàn)鉆孔柱狀圖的靈活定義,出圖模板由兩部分組成,一個是基于Excel文件的鉆孔柱狀圖表格結構的數(shù)據(jù)模板,定義了鉆孔柱狀圖表格結構、變量位置等柱狀圖結構信息;一個是基于ArcGIS文件頁面布局的版面模板,定義了符號表達、標注位置、頁面布局等渲染出圖信息。

      通過模板定義的表達信息實現(xiàn)出圖的表格結構和頁面框架,使用實際工程數(shù)據(jù),將模板中的動態(tài)內(nèi)容進行渲染,即可產(chǎn)出一套完整的鉆孔柱狀圖圖冊。

      2 自動成圖關鍵技術

      2.1 模板引擎技術

      Jinja2是一個基于Python語言的模板引擎(Template Engine)。它定義了一套簡單易用的模板語言(Template Language),可以用來引用Json形式的數(shù)據(jù)對象,實現(xiàn)內(nèi)容的動態(tài)產(chǎn)出。當Jinja2應用于動態(tài)內(nèi)容產(chǎn)出的場景時,負責產(chǎn)出產(chǎn)品頁面的設計人員可以和負責數(shù)據(jù)產(chǎn)出的程序開發(fā)人員在約定好數(shù)據(jù)的結構后,就可以分別獨立同步進行各自的工作,程序開發(fā)人員可以只關注業(yè)務邏輯代碼的編寫,頁面設計人員可以只關注頁面的表現(xiàn)形式,并可以根據(jù)業(yè)務情況隨時靈活地修改頁面的結構信息,而不需要重新編寫代碼。利用模板引擎技術將數(shù)據(jù)資源從頁面表現(xiàn)中分離出來,為軟件的長期維護提供了便利。

      采用Jinja2模板引擎技術,將數(shù)據(jù)與表格結構分離,構建了基于模板引擎技術的表格內(nèi)容結構定義系統(tǒng),利用Excel表格定義結構信息,實現(xiàn)了表格結構和展示內(nèi)容的靈活智能化定義。利用模板引擎,可以將變量使用雙花括號“{{變量名稱}}”標記,當Jinja2解釋器讀取到該內(nèi)容后,會自動將該變量替換為真正的指,從而實現(xiàn)基于數(shù)據(jù)的模板渲染。也可使用類似“{%...%}”格式的條件語句,針對不同的條件進行判斷和有針對性地輸出相關內(nèi)容。

      文本擴展該項技術,將應用范圍擴大到Excel表格結構中。首先,將Excel的表格格式轉(zhuǎn)為Json格式;然后,利用Jinja2模板引擎渲染替換動態(tài)內(nèi)容,形成針對工程的表格Json數(shù)據(jù);最后,利用ArcGIS將該數(shù)據(jù)定義轉(zhuǎn)換為點、線、面和標記形式的數(shù)據(jù),在并擴展定義“{| S...| S}”形式的矢量標注標簽,從而將數(shù)據(jù)輸出到ArcGIS格式。

      2.2 巖性花紋繪制

      利用ArcGIS的StyleManager構建各類巖性花紋是一種解決方案[5],但是有2個問題,一是不同版本ArcGIS符號庫的兼容性問題會導致系統(tǒng)在不同的版本之間無法遷移,無法滿足靈活性的需要;二是無法進行復合花紋樣式的表達,由于地質(zhì)的復雜性,當遇到某一巖層出現(xiàn)多種巖性的情況時,需要將每種巖性對應的花紋樣式進行復合填充到同一區(qū)域。因此,本文使用AutoDESK公司的填充圖案為規(guī)則,將不同巖性的圖案通過算法寫入矢量文件中進行表達。

      填充圖案在一個或多個文件擴展名為.pat的定義文件中定義。由標題行和描述行組成,下面是文件的基本格式。

      *pattern-name[, description]

      angle, x-origin,y-origin, delta-x,delta-y,dash-1,dash-2, …

      第1行是標題行,以星號開頭;pattern-name定義了圖案名稱,方括號為可選的說明內(nèi)容。

      第2行是圖案的描述行,可以有一行或多行;每條陣列線都被視為直線族的第1個成員,通過在2個方向上應用增量偏移來生成無限的平行線族而創(chuàng)建直線族,符號代表的含義如下。

      angle代表繪制直線的角度;

      x-origin,y-origin代表填充直線族中第一條直線所經(jīng)過點的X、Y軸坐標;

      delta-x代表直線族成員之間在直線方向上的位移,它僅用于表達虛線;

      delta-y代表直線族成員之間的間距,也就是多個直線間的垂直距離;

      dash-n代表一條直線的長度,可取正、負值或為零,取正值表示該長度為實線,取負值表示該線段留空,取零則畫點。若不含dash-n,則為實線。

      根據(jù)該算法,即可將多條線段組合成為需要的巖性填充符號,并填充在指定的區(qū)域內(nèi)。

      對于復合巖性花紋,系統(tǒng)則自動識別其中的多個巖性,并在巖性花紋庫中進行查找比對,將多個巖性花紋在同一區(qū)域內(nèi)繪制,從而實現(xiàn)復合巖性花紋的表達。

      在模板文件中,使用“{| SHTC={{hatch_name}}| S}”標簽動態(tài)定義要表達的巖性花紋符號,在系統(tǒng)渲染后,進行矢量內(nèi)容輸出時,會根據(jù)該標簽,在填充圖案庫中查找對應的填充圖案,對于符合地層,將識別該地層包含的所有巖性符號并疊加繪制。

      2.3 緩沖線繪制技術

      當鉆孔柱狀圖的某一個地層巖性描述文字較多,而地層劃分又比較薄,其所在巖性高度無法容納下全部的巖性文字時,需要通過繪制緩沖線的方式,向上面的地層或下面的地層借出一定的空間,從而達到巖性描述文字能夠美觀地顯示出來的目的。在進行繪制緩沖線時,往往會遇到一些比較復雜的情況,需要設計合理的算法計算來繪制出比較合適的線。本文采用動態(tài)修正技術實現(xiàn)緩沖線的繪制。在繪制巖性描述線時,該矢量線由起點、緩沖點、終點組成,默認情況下這幾個點是一條直線,即不向上層或下層借位。

      當文字占用高度高于巖層厚度時,則需要最低限度原則,向上層和下層借出需要的最小繪制高度,具體過程如下。

      1)當繪制一個地層時,如果該層的巖性描述文字所占總高度大于該層厚度,首先修改上一層的巖性描述線,提高上一層緩沖點和終點的位置,根據(jù)上一層的巖性描述文字高度和剩余空間的計算,向上一層借出所需的最大高度。

      2)如果該層的巖性描述文字所占總高度不大于該層厚度(包括向上層借出的高度),則以巖層底部繪制巖性描述線。

      3)如果向上一層借出高度仍然不夠,則繪制該巖層緩沖線時,將緩沖點和終點的位置下調(diào),向下層預借出所需的高度。

      經(jīng)過上面的步驟,即可完成巖性描述緩沖線的繪制,同時巖性描述文字關聯(lián)到線的屬性中,后續(xù)只需在ArcGIS配圖文件中,設置文字標注顯示在線上即可實現(xiàn)巖性描述的貼線顯示。

      在模板定義時,使用“{| Svm| S}{| SELR=line-width| S}”定義緩沖線區(qū)域,其中“{| Svm| S}”標簽表示對于多條記錄,進行單元格的合并。line-width定義巖性描述文字每行的字數(shù),在實現(xiàn)時,會識別中文和英文的寬度,使得每行內(nèi)容長度保持一致。

      2.4 矢量內(nèi)容填充

      首先,根據(jù)Excel形式的模板定義要生成面狀的表格框架及內(nèi)容,每個單元格對應一個面狀要素。針對單元格內(nèi)容填充動態(tài)的矢量內(nèi)容。

      針對數(shù)據(jù)屬性,進行動態(tài)矢量內(nèi)容的生成。動態(tài)矢量內(nèi)容包括文字標注、點符號、線符號3種類型。

      文字標注:直接將面要素的文字內(nèi)容以點要素的形式生成到單元格框架內(nèi)的合適位置。

      點符號:包括巖性填充花紋中標記取樣類型、穩(wěn)定水位、標貫點等位置的符號。

      線符號:包括巖性填充花紋、緩沖線、穩(wěn)定水位、標貫點位置、數(shù)據(jù)曲線及標頭等內(nèi)容。

      在模板定義時,使用以下特殊的符號定義矢量內(nèi)容:

      {| Svm| S}:垂直合并單元格,將多個地層的單元格合并作為整體進行渲染。

      {| Srh={{layer.thickness}}| S}:定義地層單元格的高度,在渲染時,會根據(jù)比例尺及實際地層厚度,計算每個單元格的高度。

      {| SHTC={{layer.name}}| S}:定義巖性花紋的填充,如果渲染內(nèi)容有取樣數(shù)據(jù)、標貫數(shù)據(jù)和水位數(shù)據(jù),會在巖性花紋對應深度標注這些數(shù)據(jù)的位置和符號。

      {| SELR=line-width | S}:定義巖性描述的緩沖線及每行文字的寬度。

      {| SSLT| S}:定義取樣數(shù)據(jù)的位置,并標注取樣編號和深度。

      {| SSPT| S}:定義標貫數(shù)據(jù)的位置,并標注標貫擊數(shù)和深度。

      {| SDW| S}:定義水位數(shù)據(jù)的位置,并標注深度和測量日期。

      {| SCPT.head.res| S}:定義靜探數(shù)據(jù)錐尖阻力和側(cè)壁摩阻力的表頭內(nèi)容,包括比例尺、圖例。

      {| SCPT.res| S}:定義靜探數(shù)據(jù)錐尖阻力和側(cè)壁摩阻力的數(shù)據(jù)曲線。

      {| SCPT.head.frr| S}:定義靜探數(shù)據(jù)摩阻比的表頭內(nèi)容,包括比例尺及標題。

      {| SCPT.frr| S}:定義靜探數(shù)據(jù)摩阻比的數(shù)據(jù)曲線。

      2.5 數(shù)據(jù)驅(qū)動制圖

      通過數(shù)據(jù)驅(qū)動制圖,可基于單個地圖文檔創(chuàng)建統(tǒng)一的幅面與排版布局,將同一個工程下的多個鉆孔的內(nèi)容輸出到一個PDF文件中,從而形成圖冊資料進行歸檔,實現(xiàn)鉆孔柱狀圖的批量生產(chǎn)。

      要使用數(shù)據(jù)驅(qū)動制圖,通過設定的幅面大小,預先生成鉆孔柱狀圖的索引要素,系統(tǒng)根據(jù)索引要素的大小,按比例根據(jù)模板布局自動渲染繪制鉆孔柱狀圖。在輸出時,基于索引要素將數(shù)據(jù)分割為多個部分,并為每個索引要素生成一個相應的頁面。每一個頁面對應著一個鉆孔柱狀圖數(shù)據(jù),同時可關聯(lián)顯示頁面名稱和頁碼等動態(tài)文本內(nèi)容。從而實現(xiàn)圖庫一體的自動化制圖技術。

      具體實現(xiàn)為,系統(tǒng)首先根據(jù)要輸出的鉆孔編號,輸出頁面范圍,然后利用模板引擎技術,為每個頁面生成矢量內(nèi)容,最后,利用數(shù)據(jù)驅(qū)動制度,將每一頁的數(shù)據(jù)內(nèi)容,按照預定義的模板標注格式,渲染成一本pdf形式的圖冊產(chǎn)出。

      3 功能實現(xiàn)及工程應用

      3.1 設計表格結構

      由于每個單位都有自己的柱狀圖格式,而且各個格式也不盡相同,為了很好地解決這個問題,采用模板引擎技術,實現(xiàn)利用Excel表格直觀的設計模板的格式。

      可按照期望的格式和內(nèi)容,在Excel中填充各類信息。其中“{{…}}”定義了動態(tài)變量信息,“{%...%}”定義了條件語句和循環(huán)語句,可用來循環(huán)輸出地層信息,“{| S...| S}”定義了矢量內(nèi)容信息,可在渲染時,根據(jù)該內(nèi)容輸出相應的矢量數(shù)據(jù)。

      圖4 柱狀圖模板結構定義

      3.2 設計成圖版面

      利用ArcGIS將最終的成果渲染呈現(xiàn),可在軟件中定義各標注位置與符號、顏色等表達方式,以及圖名、圖簽等內(nèi)容,其中圖簽包括編錄、制圖、審核、制圖日期、圖號、順序號等內(nèi)容。

      利用文中的動態(tài)渲染技術,可將輸出的點、線、面等數(shù)據(jù)根據(jù)內(nèi)容和格式進行靈活地定義,使用符號和標注將內(nèi)容進行合理展示,并添加標題、頁碼、頁簽等動態(tài)內(nèi)容和頁面整飾內(nèi)容,從而使得輸出的圖件符合實際工程需求。

      圖5 版面內(nèi)容定義

      圖6 柱狀圖的圖冊批量輸出

      3.3 數(shù)據(jù)渲染制圖

      利用ArcGIS的數(shù)據(jù)驅(qū)動制圖頁面將整個工程的所有圖件導出為多頁面的PDF文檔。PDF格式的特點為兼容性很好,并且轉(zhuǎn)碼后排版不變,可以在不同的平臺查看和打印,并保證格式始終如一。是分發(fā)文檔和建立檔案的理想格式。通過ArcMap產(chǎn)出的PDF文件是矢量格式輸出,可以在多種圖形應用程序中編輯,同時會保留 ArcMap 內(nèi)容列表中的標注、注記和屬性數(shù)據(jù)等內(nèi)容。由于PDF文件支持嵌入字體,因此即使文檔分發(fā)的對象未安裝 ArcGIS中使用的字體,也可以正確地打開并顯示符號。

      4 結束語

      經(jīng)過系統(tǒng)化的分析,介紹了基于ArcGIS的通用鉆孔柱狀圖的自動繪制方法,并在實際工作中發(fā)揮了重要作用,具有靈活的適應性和廣闊的應用前景。

      通過使用模板引擎技術來擴展定義柱狀圖布局模板,使得調(diào)整柱狀圖的表現(xiàn)方式變得非常簡單,只需要簡單地修改Excel模板中的表格布局和變量位置,即可靈活地定制鉆孔柱狀圖的結構。通過修改ArcGIS模板的頁面布局,可以為數(shù)據(jù)輸出增加很多適合實際生產(chǎn)需求動態(tài)內(nèi)容。對于不同專業(yè)的柱狀圖,除了鉆孔深度,采樣間隔等技術不同以外,對同種地層或巖性的表達方式也可能不同。對于本系統(tǒng)的設計,只需要將其他專業(yè)的巖性符號文件進行簡單替換即可,從而真正實現(xiàn)多專業(yè)通用繪制,使得本系統(tǒng)有著良好的移植性和擴展性。

      猜你喜歡
      柱狀圖巖性頁面
      大狗熊在睡覺
      繪制和閱讀降水量柱狀圖
      刷新生活的頁面
      基于Unity3D 的冒泡排序算法動態(tài)可視化設計及實現(xiàn)
      一種識別薄巖性氣藏的地震反射特征分析
      云南化工(2020年11期)2021-01-14 00:50:58
      K 近鄰分類法在巖屑數(shù)字圖像巖性分析中的應用
      錄井工程(2017年1期)2017-07-31 17:44:42
      基于Android平臺的柱狀圖組件的設計實現(xiàn)
      低滲巖性氣藏壓降法計算庫容量改進
      基于核Fisher判別的致密碎屑巖巖性識別
      Mapgis在繪制鉆孔柱狀圖中的應用
      尉犁县| 平安县| 年辖:市辖区| 南华县| 金堂县| 绥宁县| 独山县| 朝阳市| 石渠县| 凤城市| 南康市| 桦南县| 周宁县| 沂源县| 贵港市| 潮安县| 固始县| 濮阳市| 永新县| 泰兴市| 阿拉善左旗| 武夷山市| 星座| 富民县| 威信县| 南郑县| 昭通市| 布拖县| 汉阴县| 灵台县| 阳江市| 漳浦县| 临城县| 廉江市| 平谷区| 隆昌县| 溆浦县| 兴隆县| 阳西县| 沅江市| 游戏|