牟乃夏ArcEngine教程-第11章__三維分析_第1頁
牟乃夏ArcEngine教程-第11章__三維分析_第2頁
牟乃夏ArcEngine教程-第11章__三維分析_第3頁
牟乃夏ArcEngine教程-第11章__三維分析_第4頁
牟乃夏ArcEngine教程-第11章__三維分析_第5頁
已閱讀5頁,還剩40頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、牟乃夏牟乃夏 ArcGIS Engine 地理信息系統(tǒng)開發(fā)教地理信息系統(tǒng)開發(fā)教程程配套配套PPT-第11章 三維分析目錄 1. 三維數(shù)據(jù)模型 2. MultiPatch 3. TIN數(shù)據(jù) 4. SceneControl三維可視化 5. GlobeControl三維可視化 6. 實例:基于GlobeControl的三維數(shù)字校園1. 三維數(shù)據(jù)模型 三維數(shù)據(jù)(X,Y,Z)的定義中包含一個額外的維度:Z值。Z值具有測量單位,同傳統(tǒng)的二維數(shù)據(jù)(X,Y)相比,它能存儲和顯示更多的信息。Z值可表示很多內(nèi)容,如:海拔高度、深度、溫度、化學物濃度、噪聲指數(shù)等。Z值是二維數(shù)據(jù)成為三維數(shù)據(jù)的標志。 ArcGIS中三

2、維數(shù)據(jù)有3D要素數(shù)據(jù)和表面數(shù)據(jù)兩種形式。 3D要素數(shù)據(jù) 3D要素數(shù)據(jù)用來表示離散的對象,每個對象的信息都存儲在要素的幾何和屬性中。 3D要素數(shù)據(jù)又分為三維點數(shù)據(jù)、三維線數(shù)據(jù)和多面體(MultiPatch)數(shù)據(jù)。 多面體數(shù)據(jù)根據(jù)組成方式的不同又分為Triangle Strip、Triangle Fan和Ring三種類型。 1. 三維數(shù)據(jù)模型 表面數(shù)據(jù) 表面數(shù)據(jù)是指具有空間連續(xù)特征的地理要素的集合,表示地球表面某部分或整體范圍內(nèi)的地理要素或現(xiàn)象。在ArcGIS中,常用的表面數(shù)據(jù)有 柵格表面 不規(guī)則三角網(wǎng)(TIN) Terrain數(shù)據(jù)集等。2. MultiPatch MultiPatch幾何類型又叫

3、多面體數(shù)據(jù)類型,是ESRI公司于1997年推出的一種數(shù)據(jù)模型,主要用來定義3D對象的描述性外殼。MultiPatch通過地理數(shù)據(jù)庫和ShapeFile文件來存儲3D要素,如建筑物、地質(zhì)體等。 MultiPatch創(chuàng)建 在ArcGIS中,不能通過ArcGIS Desktop產(chǎn)品來創(chuàng)建MultiPatch,只能通過以下幾種方法創(chuàng)建: 1)通過某些地理處理(Geoprocessing)工具創(chuàng)建,例如Extrude Between、Layer 3D to Feature Class等。 2)通過從已有的模型中導入ArcGIS創(chuàng)建,例如SketchUp、COLLADA、3D Studio Max或Ope

4、nFlight等。 3)通過在ArcGIS Engine中編寫代碼創(chuàng)建。2. MultiPatchArcGIS Engine提供了創(chuàng)建MultiPatch幾何對象的類和接口,主要用到兩個接口,分別是IGeometryCollection和IConstructMultiPatch。這兩個接口創(chuàng)建MultiPatch的方式略有不同:IGeometryCollection接口是通過添加各個組件的組成部分來創(chuàng)建MultiPatch;IConstructMultiPatch接口是通過操作Geometry對象,如拉伸Polyline對象(拉伸為墻)和Polygon對象(拉伸為多面體)等來創(chuàng)建MultiPa

5、tch。這兩種方法的創(chuàng)建步驟相似,將要創(chuàng)建的MultiPatch顯示出來需要用到IGeometryCollection、IGraphicsContainer3D、IPoint、IPointCollection、IGeometry、IElement 等接口。實現(xiàn)思路如下:(1)使用IPoint接口生成新的點對象,用IPointCollection接口的AddPoint方法將點對象添加進集合,并用IGeometryCollection接口的AddGeometry方法或IconstructMultiPatch接口的ConstructExtrudeFromTo方法將PointCollection對象轉(zhuǎn)

6、換為一個Geometry對象;(2)使用IElement接口實例化一個元素對象,并將該元素對象的Geometry屬性設(shè)置為步驟1得到的Geometry對象,并設(shè)置元素對象顯示時使用的Symbol(符號);(3)使用IGraphicsContainer3D的AddElement方法把步驟2產(chǎn)生的元素添加到視圖中去,刷新視圖,讓元素顯示出來。2. MultiPatch按鈕名稱按鈕功能創(chuàng)建axes創(chuàng)建一個帶有箭頭的三維坐標軸創(chuàng)建TriangleStrip創(chuàng)建一個TriangleStrip樣式的階梯創(chuàng)建TriangleFan創(chuàng)建一個TriangleFan樣式的棱錐創(chuàng)建Triangles創(chuàng)建Triang

7、les樣式的多個三角片創(chuàng)建Ring創(chuàng)建一個Ring樣式的迷宮創(chuàng)建RingGroup創(chuàng)建四個Ring樣式的正方形環(huán)Extrusion拉伸一個正方形為棱柱Composite創(chuàng)建一個綜合的房子樣式實例按鈕功能介紹詳細代碼見程序2. MultiPatch MultiPatch編輯 MultiPatch有多種編輯操作,常用的主要有移動、旋轉(zhuǎn)和縮放等。MultiPatch的編輯需要用到ITransform3D接口,通過該接口的Move3D、RotateVector3D和Scale3D等方法實現(xiàn)。實現(xiàn)思路如下: (1)得到某一圖層的某個3D要素,并通過要素的Shape屬性得到要素的幾何形狀; (2)將該幾何

8、對象轉(zhuǎn)換為ITransform3D類型對象; (3)運用ITransform3D中的方法對得到的對象進行相應(yīng)的編輯; (4)開始編輯,將要素的Shape設(shè)置為編輯后的幾何要素; (5)保存、停止編輯。2. MultiPatch 左圖中展示的是將MultiPatch在X、Y、Z方向以1:1:3的比例變換后的結(jié)果,可以輸入相應(yīng)的參數(shù)進行MultiPatch的平移、旋轉(zhuǎn)和縮放操作。2. MultiPatchMultiPatch分析MultiPatch的分析主要有:獲取體積、表面積,判斷兩個MultiPatch之間是否相連及在某一值范圍內(nèi)是否臨近,MultiPatch之間的相交、差異、聯(lián)合等運算分析。

9、獲取MultiPatch的體積和表面積獲取MultiPatch的表面積和體積需要用到IArea3D接口和IVolume接口,實現(xiàn)思路如下: (1)從某一個圖層中獲得一個具有多面體結(jié)構(gòu)的要素(Feature),通過要素的Shape屬性獲得該多面體幾何形狀; (2)通過QI(Query Interface)得到IArea3D接口的Area屬性和IVolume接口的Volume屬性; (3)將得到的結(jié)果顯示。2. MultiPatch 判斷MultiPatch相連與鄰接 判斷兩個MultiPatch是否相連及在某個值范圍是否鄰接需用到IRelationalOperator3D2接口,實現(xiàn)思路如下:

10、(1)從某一圖層或多個圖層中獲得兩個多面體要素(Feature),通過要素的Shape屬性獲得兩個多面體的幾何形狀; (2)通過IRelationalOperator3D2接口的Disjiont3D方法判斷其是否相連,或者通過輸入一個距離容差判斷是否鄰接; (3)顯示結(jié)果。2. MultiPatch MultiPatch之間的差異、相交、聯(lián)合 多面體的差異計算是求出兩個閉合多面體要素的幾何交集,然后從一個要素中剪除兩要素類的交集,并將結(jié)果保存到新輸出的要素類中。 多面體相交是計算兩個或多個多面體要素的幾何交集,將重疊的要素輸出為新要素。 多面體聯(lián)合是計算重疊多面體的幾何交集,然后將多面體幾何聯(lián)

11、合在一起,存儲到新的多面體要素類中。 在ArcGIS Engine中,進行多面體之間的差異、相交、聯(lián)合等三維要素分析需要通過調(diào)用Analyst3DTools類庫中的GP(Geoprocessing,地理處理工具)工具實現(xiàn),只需要設(shè)置相應(yīng)工具的輸入?yún)?shù)即可。實現(xiàn)思路如下:(1)根據(jù)需要,選擇GP工具,這里調(diào)用Analyst3DTools類庫中的Difference3D、Intersect3D和Union3D三個工具;(2)為每個工具設(shè)置輸入?yún)?shù)和輸出參數(shù);(3)執(zhí)行GP工具,顯示所有結(jié)果。2. MultiPatch 左圖顯示的是兩個多面體要素差異后的結(jié)果,在進行多面體差異、相交和聯(lián)合之前,要設(shè)置

12、輸出結(jié)果的保存路徑。3. TIN數(shù)據(jù) TIN是表示三維表面非常有效的工具,常用于表示地球自然表面、各類現(xiàn)象的趨勢面等。由于TIN能較好地表示地理現(xiàn)象的三維可視化,所以在GIS的三維地形可視化領(lǐng)域中有著廣泛的應(yīng)用。 加載TIN數(shù)據(jù) TIN數(shù)據(jù)集的加載需要用到ITINWorkspaceFactory接口、ITINWorkspace接口、ITIN接口和ITINLayer接口。實現(xiàn)思路如下: (1)獲取TIN數(shù)據(jù)的文件路徑; (2)使用IWorkspaceFactory的Creat方法實例化一個TinWorkspaceFactoryClass對象、使用ITinWorkspace、ITin、ITINLa

13、yer等接口將TIN中的數(shù)據(jù)提取,并轉(zhuǎn)化為一個圖層(Layer); (3)將圖層(Layer)添加進SceneControl,刷新SceneControl以顯示該TIN。3. TIN數(shù)據(jù) 加載TIN數(shù)據(jù)3. TIN數(shù)據(jù) TIN數(shù)據(jù)創(chuàng)建 在ArcGIS中,創(chuàng)建TIN的方式有三種,分別是:由矢量要素創(chuàng)建TIN、由柵格數(shù)據(jù)創(chuàng)建TIN和由Terrain數(shù)據(jù)集創(chuàng)建TIN。 矢量數(shù)據(jù)創(chuàng)建TIN 由矢量數(shù)據(jù)創(chuàng)建TIN需要用到ITINEdit接口,在該接口中有兩種方法來創(chuàng)建TIN。一種是通過AddPointZ方法加載有限個三維點數(shù)據(jù)創(chuàng)建TIN,另一種是通過AddFromFeatureClass方法加載矢量數(shù)據(jù)

14、圖層創(chuàng)建TIN,最后都調(diào)用ITINEdit接口的SaveAs方法將創(chuàng)建的TIN數(shù)據(jù)保存。3. TIN數(shù)據(jù)左圖顯示的是由離散點圖層創(chuàng)建TIN的結(jié)果,生成TIN前要先選擇點圖層和設(shè)置TIN的保存路徑;點數(shù)據(jù)創(chuàng)建TIN則是在代碼中新建三維點創(chuàng)建TIN。3. TIN數(shù)據(jù) 由柵格數(shù)據(jù)創(chuàng)建TIN 由柵格數(shù)據(jù)創(chuàng)建TIN,需要用到ITINEdit接口,通過該接口的AddFromPixelBlock方法加載柵格單元創(chuàng)建TIN,然后調(diào)用該接口的SaveAs方法將創(chuàng)建的TIN數(shù)據(jù)保存。3. TIN數(shù)據(jù)TIN表面分析基于TIN表面可以做各種表面分析,如計算TIN的體積、表面積和投影面積,獲取TIN表面某點的三維坐標、

15、坡度、坡向、等高線和最陡路徑,也可以生成TIN圖層表面坡度和坡向圖層,繪制TIN表面的剖面線。計算TIN的體積、表面積和投影面積計算TIN的體積、表面積和投影面積,需要用到ISurface接口,通過ISurface接口的GetVolume方法、GetSurfaceArea方法和GetProjectedAre方法獲得相應(yīng)結(jié)果。實現(xiàn)思路如下: (1)獲得SceneControl中的某個TIN圖層,并通過ISurface接口得到表面; (2)設(shè)置基本高度和投影方向; (3)獲取結(jié)果顯示。 TIN的體積、表面積和投影面積3. TIN數(shù)據(jù)3. TIN數(shù)據(jù) 獲取TIN表面某點三維坐標、坡度和坡向 獲得TI

16、N表面某點的三維坐標信息、坡度信息和坡向信息,需要調(diào)用ISurface接口,通過ISurface接口的GetElevation方法、GetSlopeDegrees方法和GetAspectDegrees方法獲取相應(yīng)信息。實現(xiàn)思路如下: (1)獲取某個TIN圖層,并通過ISurface接口得到表面; (2)點擊TIN表面一點,通過ISurface接口的GetElevation方法、GetSlopeDegrees方法和GetAspectDegrees方法獲得該點信息; (3)顯示該點信息。3. TIN數(shù)據(jù)上圖顯示的是TIN表面某點的屬性信息,鼠標左鍵單擊TIN表面一點將彈出該點的屬性信息。獲取TIN

17、表面某點三維坐標、坡度和坡向3. TIN數(shù)據(jù) 生成TIN表面某點等高線和最陡路徑 獲得TIN表面某點的高度及該點所在的等高線和最陡線,需要使用ISurface接口,通過ISurface接口的GetElevation方法、GetContour方法和GetSteepestPath方法獲取相應(yīng)信息。實現(xiàn)思路如下: (1)獲得一個TIN圖層,并通過ISurface接口得到TIN表面; (2)點擊TIN表面一點,通過ISurface接口的GetElevation方法得到該點高度信息,然后通過GetSlopeDegrees方法和GetAspectDegrees方法獲得該點的等高線和最陡線。3. TIN數(shù)據(jù)

18、上圖顯示的是點擊TIN表面一點顯示該點的等高線和最陡線,其中鼠標左鍵顯示等高線,右鍵顯示最陡線。生成TIN表面某點等高線和最陡路徑3. TIN數(shù)據(jù) 獲取TIN表面坡度、坡向圖 在ArcGIS Engine中,計算整個TIN表面坡度和坡向需要通過調(diào)用Analyst3DTools類庫中的GP工具實現(xiàn),在實現(xiàn)的過程中,只需要設(shè)置相應(yīng)GP工具的參數(shù)即可。實現(xiàn)思路如下: (1)添加Analyst3DTool引用,選擇Analyst3DTool中的SurfaceSlope類和SurfaceAspect類,并將其實例化; (2)設(shè)定SurfaceSlope對象和SurfaceAspect對象的in_surf

19、ace屬性(TIN文件的路徑)和out_feature_class屬性(結(jié)果保存路徑); (3)調(diào)用Geoprocess的Execute方法運行GP工具,并將結(jié)果顯示。3. TIN數(shù)據(jù)獲取TIN表面坡度、坡向圖3. TIN數(shù)據(jù) 繪制TIN表面剖剖面線反映沿表面上某條線前進時表面高程變化的情況,如在工程上,常常需要提取地形斷面,即剖面線。 剖面線的繪制通常采用該區(qū)域的TIN表面,需要用到ISurface接口的GetProfile方法,實現(xiàn)思路如下: (1)在表面繪制一條線; (2)通過ISurface接口的GetProfile方法獲得沿著該線的剖面線; (3)讀取剖面線的屬性,并將其在坐標系中顯

20、示出來。3. TIN數(shù)據(jù)繪制剖面圖左圖顯示的是TIN表面某一線段的剖面線,首先在TIN表面單擊選取兩個點,然后點擊繪制剖面圖按鈕,顯示剖面線。詳細代碼見程序4. SceneControl三維可視化 ArcGIS Engine提供了兩個顯示三維的控件,分別是SceneControl和GlobeControl,它們分別對應(yīng)于ArcGIS桌面產(chǎn)品中的ArcScene和ArcGlobe。本節(jié)主要介紹使用SceneControl實現(xiàn)三維地圖的加載、瀏覽、二維數(shù)據(jù)以三維顯示以及三維動畫等。4. SceneControl三維可視化 三維數(shù)據(jù)加載 在三維控件中加載三維數(shù)據(jù)是三維可視化的第一步,在ArcGIS

21、Engine中加載ArcScence文檔即是加載*.sxd格式文件,需要調(diào)用ISceneControl接口的LoadSxFile方法,實現(xiàn)思路如下: (1)得到*.sxd文檔的具體路徑; (2)調(diào)用ISceneControl接口的CheckSxFile方法檢查*.sxd文檔是否可用; (3)如果*.sxd文檔可用,則調(diào)用ISceneControl接口的LoadSxFile方法將*.sxd文檔加載進SceneControl控件。4. SceneControl三維可視化 三維數(shù)據(jù)加載4. SceneControl三維可視化 三維地圖瀏覽 在ArcScene中,三維地圖瀏覽包括導航、放大、縮小、平移

22、、全圖、飛行、目標處居中、縮放至目標、設(shè)置觀察點、選擇要素與清除所選要素等。在ArcGIS Engine中實現(xiàn)這些操作有兩種方式:一是不需編寫任何代碼,直接在ToolbarControl控件中添加相關(guān)工具即可;二是調(diào)用ICommand接口,對已經(jīng)封裝好的相關(guān)功能類進行實例化。類名功能ControlsSceneFlyToolClass飛行ControlsSceneFullExtentCommandClass全圖ControlsSceneNavigateToolClass導航ControlsSceneOpenDocCommandClass 打開*.sxd文檔ControlsScenePanTool

23、Class 漫游ControlsSceneSelectFeaturesToolClass單選要素ControlsSceneSelectGraphicsToolClass單選圖形ControlsSceneSetObserverToolClass設(shè)置觀察點ControlsSceneTargetZoomToolClass放大至目標ControlsSceneZoomInOutToolClass放縮場景ControlsSceneZoomInToolClass放大ControlsSceneZoomOutToolClass縮小 三維瀏覽功能的類4. SceneControl三維可視化 三維地圖識別 三維地圖

24、識別是指獲取地圖某一點上的所有圖層信息,類似于ArcScene和ArcMap中的Identify工具。在ArcGIS Engine的三維分析模塊中,不能直接調(diào)用Identify工具,需要通過IHit3DSet和ISceneGraph接口編程實現(xiàn)。實現(xiàn)思路如下: (1)在SceneControl控件中單擊某點,通過ISceneGraph接口的LocateMultiple方法返回一個IHit3DSet類型對象,并解析IHit3DSet對象包含的所有圖層信息; (2)將信息以TreeView的形式顯示。4. SceneControl三維可視化 三維地圖識別左圖顯示的是鼠標單擊場景中的一點,彈出該點的

25、屬性信息。4. SceneControl三維可視化 遙感影像圖與三維地形疊加 為了便于觀察和分析,很多情況下需要將二維數(shù)據(jù)在三維表面上顯示。如將遙感影像疊加在三維地形上,以便清楚地辨別各類地貌特征,便于增強對影像模式及其對地形相關(guān)性的理解,實現(xiàn)思路如下: (1)加載TIN數(shù)據(jù)和影像數(shù)據(jù); (2)將影像圖層的三維屬性添加到I3DProperties類型的對象中; (3)將I3DProperties類型對象的BaseSurface屬性設(shè)置為TIN表面,調(diào)用I3DProperties對象的Apply3DProperties方法將三維信息應(yīng)用到影像數(shù)據(jù),刷新視圖。4. SceneControl三維可視

26、化上圖顯示的是將遙感影像疊加在TIN表面的顯示效果。4. SceneControl三維可視化 矢量圖層與地形疊加 除了遙感影像和三維地形疊加以外,在實際應(yīng)用中,很多時候需要將矢量數(shù)據(jù)疊加到三維地形上,以便直觀地觀察地理現(xiàn)象和表達地理要素。矢量數(shù)據(jù)與地形疊加的原理同影像與地形疊加的原理相似。4. SceneControl三維可視化 三維動畫 ArcGIS Engine中,通過使用三維書簽和制作關(guān)鍵幀來創(chuàng)建動畫,需要用到BookMark3D類、IKeyframe接口、IAnimationTrack接口和IAnimationTracks接口,實現(xiàn)思路如下: (1)將當前場景保存為三維書簽,并調(diào)用IKeyframe接口的CaptureProperties方法創(chuàng)建一個關(guān)鍵幀; (2)調(diào)用IAnimationTrack接口的InsertKeyframe方法將所有的關(guān)鍵幀加入IAnimationTrack類型的對象; (3)調(diào)用IAnimationTracks接口的AddTrack方法將

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論