孫躍龍 鞠立華



摘? 要:在ArcGIS Pro下利用Python編程語言結合ArcGIS的Arcpy庫進行編程對空間數據進行三維可視化分析,對勘探測量野外采集物理點的高程進行質量監控,從而減少對地震勘探資料處理的影響。該文結合實際應用提出實現方法,對ArcGIS結合Python編程在勘探測量中的進一步應用具有參考意義。
關鍵詞:ArcGIS Pro;Python;空間數據;可視化分析;勘探測量
中圖分類號:P208? ? ? ? 文獻標志碼:A? ? ? ? ? 文章編號:2095-2945(2024)05-0168-04
Abstract: Under ArcGIS Pro, we use Python programming language combined with Arcpy library of ArcGIS to carry out 3D visual analysis of spatial data, and monitor the elevation of physical points collected in the field of exploration survey, so as to reduce the impact on seismic data processing. This paper puts forward a realization method combined with practical application, which is of reference significance for the further application of ArcGIS combined with Python programming in exploration and survey.
Keywords: ArcGIS Pro; Python; spatial data; visual analysis; exploration survey
在地球物理勘探測量工作中,常常需要對野外采集物理點的高程進行質量監測,以此篩選出高程異常的點,以便消除對后續的地震資料處理帶來的影響,常規的方法很難對大量的物理點進行質量監控,如果能夠形成數字地形模型來可視化的顯示物理點的高程變化,可以高效率地篩查高程異常的點,并且可以指導野外對這些異常點進行復測。
ArcGIS是ESRI推出的一款功能齊全的專業桌面 GIS 應用程序。使用ArcGIS可以可視化分析數據; 創建2D地圖和3D應用場景,使用ESRI ArcGIS提供的Spatial Analyst工具,可以對數據執行空間分析。ArcGIS中的全套Spatial Analyst工具可以探索和分析空間數據,并幫助找到空間問題的解決方案。可以從 Spatial Analyst工具箱或Python窗口運行工具,可通過任何ArcGIS Desktop應用程序訪問這些工具。還可以創建自己的自定義工具(模型或Python腳本)來同時運行一系列工具。ArcGIS Pro是全新的ArcGIS的桌面應用程序,使用新的功能區界面,界面頂部的功能區具有上下文相關性,使用更加方便。ArcGIS Pro與ArcGIS Enterprise、ArcGIS Online和ArcGIS平臺的其余部分緊密集成,使跨平臺工作更加強大,把其他ArcGIS桌面應用程序整合在一個項目里進行管理,使得應用更高效,2D地圖和3D場景可以轉換和同步,使得應用更便利。
Python語言作為一種開源語言,在GIS軟件中,常作為輔助工具使用,其為ArcGIS提供了大量的處理模塊,能更高效地完成地理信息處理工作。利用Python語言,調用集成在ArcGIS中ArcPy軟件包,能實現數據的輸入、投影變換,以及制圖、查詢、三維數據可視化分析等功能,同時其代碼簡單易讀,便于使用,可為地理信息數據處理提供更方便的工具[1]。
ArcGIS Pro全新強大的功能結合Python語言的高效應用,為本文闡述的方法提供了很好的工具支持。本文就是探討利用ArcGIS Pro平臺結合Python語言對地震勘探測量數據進行可視化空間分析的方法。
1? GIS空間數據類型
空間數據,也稱為地理空間數據,用于描述與地球表面特定位置相關或包含有關地球表面特定位置信息的任何數據。空間數據包含的信息不僅是地球表面的位置,空間數據可以具有任意數量的附加屬性及有關位置的信息。空間數據類型有多種,但2種主要的空間數據是幾何數據和地理數據。幾何數據是映射在二維平面上的空間數據類型,地理數據是圍繞地球繪制的信息[2]。矢量和柵格是用于存儲地理空間數據的常見數據格式,矢量數據主要有3種類型:點、線和多邊形。這些點有助于創建線,連接線形成封閉區域或多邊形。矢量通常代表地球表面特征或物體的概括。矢量數據通常存儲在shapefile中,在ArcGIS應用程序中存儲為.shp文件。柵格表示像素網格中呈現的信息。柵格中存儲的每個像素都有值。這可以是測量單位、顏色或有關特定元素的信息等任何內容[3]。
應用于地震勘探測量的空間數據主要有3種:Raster(柵格數據)、TIN(不規則三角形網)、Contour(等高線)。
柵格數據:柵格由組織成行和列(或網格)的像元(或像素)矩陣組成,其中每個像元包含表示信息的值。每個像元都有一個值,用于表示該位置的某些特征,例如海拔高度等。柵格數據可以與地圖上的其他地理數據顯示為數據圖層,但通常使用ArcGIS Spatial Analyst擴展模塊將其用作空間分析的源數據。
TIN數據:表示表面形態的數字手段。TIN是一種基于矢量的數字地理數據,通過對一組頂點進行三角測量構建。頂點與一系列邊連接以形成三角形網絡。有不同的插值方法可以形成這些三角形,例如,Delaunay三角剖分或距離排序。ArcGIS支持Delaunay三角測量方法。TIN的邊緣形成連續、不重疊的三角面,可用于捕獲在表面中發揮重要作用的線性要素的位置,例如,山脊線或河道。TIN數據和柵格數據可以互相轉換。
等高線數據:等高線是連接柵格數據集中等值位置的線,表示連續現象,例如海拔高度、溫度、降水、污染或大氣壓力。等高線的分布顯示了值在表面上的變化情況。如果值變化不大,則線條間隔較遠。當值快速上升或下降時,線條靠得更近。
在實際應用中,以上3種數據類型互相轉換結合使用對空間數據進行可視化分析,柵格數據更便于柵格中存儲數據的進一步運算,而TIN數據更便于觀察空間的數據的變化,等高線數據利于觀測空間數據的變化大小。
2? 應用方法研究
利用ArcGIS Pro的三維分析功能可以把勘探生產中具有空間屬性的數據,更直觀地可視化顯現出來,并能表現出數據的空間位置、分布、形態演變等信息,對數據分析和質量監控起到很大的作用。在勘探生產過程中,需要監控野外物理點的高程變化是否符合地形變化,這些對勘探記錄、數據處理尤為重要。ArcGIS Pro的三維分析模塊在勘探數據的三維分析過程中能發揮重大作用,且能夠直觀地表現出來。
勘探測量數據的三維地理信息通常包括坐標信息和對應在這個坐標位置的某個屬性數據,比如,某個點的高程、某個面元的覆蓋次數等,因此,如果把這些三維信息立體呈現出來,就可以更加直接地展示某個屬性數據的特性,以便分析研究。勘探數據的三維信息數據,即X、Y、Z,X、Y表示地理平面坐標,Z代表這個坐標位置的某個屬性值,把包含X、Y、Z這些值的離散點轉化為TIN數據,或形成Raster數據(柵格數據),Raster數據可以通過不同的算法對柵格數據的每一個像元進行運算,形成新的柵格數據,這些不同類型的柵格數據疊加,就能夠把數據直觀地呈現出來[4]。
通常應用的柵格數據的算法有2種,一是Slope(坡度),通過對柵格數據相鄰的像元的Z值的變化而運算的坡度值存儲在相應的像元里,這個坡度值的可以以2種方式輸出,一種是角度,變化范圍是0~90 °,一種是增強的百分比;二是Hillshade(山影),通過設置光源的方位角和太陽高度角,來得到山影圖,經過運算后的柵格數據的像元里的值是原有數據的陰影的灰度值,范圍從0(最暗)到255(最亮),通過這種柵格數據的運算,能夠很直觀地呈現出柵格數據存儲值的起伏變化。
通過GIS軟件的空間分析模塊對柵格數據的每個像元所存儲的Z值的計算,可以輔助勘探測量數據的三維分析[5]。所以通過以上論述的理論方法對勘探測量數據的高程建立數字高程模型,對野外地形的變化和物理點的高程進行分析。把原始的柵格數據和Hillshade運算后的柵格數據進行疊加可以比較好地反映地形的變化[6],Arcpy是ArcGIS的Python庫,可以應用庫里的函數、類、模塊實現數據管理、數據轉換和數據分析等功能,基于Python與Arcpy的GIS空間分析是利用Python編程語言調用Arcpy的各種函數、類、模塊實現空間數據的分析功能。用到的主要功能模塊有數據管理模塊(坐標文件生成數據要素、計算要素類、要素圖層或柵格的字段值)、3D分析(形成TIN數據、Raster數據、等高線數據、Raster數據轉換山影和坡度數據、異常值的定位)、圖像分析(焦點統計功能計算輸出鄰域柵格的值)、空間數據分析(柵格數據提取)。
基于以上功能和方法,可以設計程序處理數據流程如圖1所示。
根據以上原理和方法,利用Python語言設計應用程序,既可以在ArcGIS Pro軟件內部運行Python程序語句來完成,也可以運行Python腳本來完成。實際應用中利用后者更簡便高效。
3? 應用實例
目前,在筆者參與的勘探項目中,文章提出的方法已經得到了應用,在實際應用中,取得了很好的應用效果。在實際應用中,根據上文的流程,利用Python語言編程調用Arcpy庫,提取高程異常的點位的高程,并與柵格數據焦點統計后存儲的高程平均值進行比較得出差異,并且可以把異常數據及周邊區域在ArcGIS Pro里進行2D和3D可視化分析。在2D地圖下,柵格數據和等高線數據疊加山影數據可以更直觀顯示地形的變化,對于監測高程有異常的點,可以形成shape文件存儲,并作為一個圖層展現在ArcGIS Pro里進行可視化分析。如圖2所示,圖上所示點位為高程可能有異常的點,除了可以在圖上分析以外,也可以指導野外對高程值異常點的復測。
可以轉換到ArcGIS Pro Scene下原始柵格數據結合slope柵格數據對地形進行三維可視化分析,如圖3所示。利用三維圖形的旋轉變化,可以更方便和直觀地觀察。
此外,在ArcGIS Pro里結合衛星圖片,可以更直觀地觀察高程有異常的點周邊的地形和地貌的變化,也更利于判讀點位高程的正確性,更好地指導野外點位采集,減少野外工作量,提高工作效率。如圖4所示。
Python部分源碼如下。
首先需要調用Arcpy庫,設置三維分析功能和坐標系及投影,Python代碼如下。
Python調用Arcpy庫,把野外采集的物理點形成點特征的要素類,把這個點要素類形成TIN數據、Raster數據、山影數據、坡度數據和等高線數據等, 對原始柵格數據進行焦點統計,通過TIN數據進行異常點的定位。異常點定位的要素類和焦點統計后的數據進行對比得到高程存在異常的點位,部分源碼如下。
4? 結束語
本文闡述了勘探測量中的主要空間數據類型,給出了在ArcGIS Pro平臺下利用Python語言編程實現勘探測量空間數據的可視化分析的方法,利用這一方法,可以實現對野外采集數據的高程質量監控,減少物理點高程的異常對地震勘探資料處理的影響,同時利用ArcGIS的三維分析功能可以更好地指導野外生產。ArcGIS Pro空間數據分析功能強大,Python編程語言功能豐富,可以方便地調用ArcGIS的分析功能模塊,編程效率高,把兩者相結合,在勘探測量數據處理中極大地提高了工作效率。
參考文獻:
[1] 丘恩.Python核心編程[M].2版.北京:人民郵電出版社,2008.
[2] 方芳,徐世武,萬波.GIS空間分析建模技術進展研究[J].測繪科學,2010,35(6):137-138,163.
[3] 鄔倫,劉瑜,張晶,等.地理信息系統——原理、方法和應用[M].北京:科學出版社,2001.
[4] 畢華興,譚秀英,李笑吟.基于DEM的數字地形分析[J].北京林業大學學報,2005,27(2):49-53.
[5] 劉陵,方軍,陳利生,等.三維GIS的研究現狀及其發展趨勢[J].礦山測量,2011(2):71-75.
[6] AUSTIN J H. Performance evaluation of three DEM based fluvial terrace mapping methods[J].Earth Surface Processes and Landforms,2016(8):1144-1152.