在三維場景中瀏覽數據更加直觀和真實,對于同樣的數據,三維可視化將使數據能夠提供一些平面圖上無法直接獲得的信息。可以很直觀地對區域地形起伏的形態及溝、谷、鞍部等基本地形形態進行判讀,比二維圖形如等高線圖更容易為大部分讀圖者所接受。
ArcScene 是ArcGIS 三維分析模塊的一部分,通過在3D Analyst 菜單條中點擊按鈕打開。它具有管理3D GIS 數據、進行3D 分析、編輯3D 要素、創建3D 圖層以及把二維數據生成3D 要素等功能。
一、要素立體顯示
有時需要將要素數據在三維場景中以透視圖顯示出來進行觀察和分析。要素數據與表面數據的不同之處在于,要素數據描述的是離散的對象如點對象、線對象、面對象(多邊形)等。它們通常具有一定的幾何形狀和屬性。常見的點要素有通信塔臺、泉眼等在地圖上通常表現為點狀符號;線狀要素更為常見,如道路、水系、管線等等;多邊形要素如湖泊、行政區及大比例尺地形圖上的居民地等。
在三維場景中顯示要素的先決條件是要素必須被以某種方式賦予高程值或其本身具有高程信息。因此,要素的三維顯示主要有兩種方式:1)具有三維幾何的要素,在其屬性中存儲有高程值,可以直接使用其要素幾何中或屬性中的高程值,實現三維顯示;2)對于缺少高程值的要素,可以通過疊加或突出兩種方式在三維場景中顯示。所謂疊加,即將要素所在區域的表面模型的值作為要素的高程值,如將所在區域柵格表面的值作為一幅遙感影像的高程值,可以對其做立體顯示;突出則是指根據要素的某個屬性或任意值突出要素,如要想在三維場景中顯示建筑物要素,可以使用其高度或樓層數這樣的屬性來將其突出顯示(圖1)。
.jpg)
圖1 建筑物二維圖形按高度突出
另外,有時研究分析可能需要使用要素的非高程屬性值作為三維Z值,在場景中顯示要素。最常見的是在社會、經濟領域的應用。如對某省行政范圍內每個市縣的經濟總量值 作為Z 值進行三維立體顯示(圖2),可直觀地觀察和分析全省總體的情況。
.jpg)
圖2某地區各個城鎮人口數突出顯示
由前所述,添加到三維場景中的數據并不一定會自動以三維方式顯示。具有三維幾何 的要素及TIN表面將自動以三維方式進行繪制時,會放置在一個平坦的三維平面上,若要以三維方式查看它們,需首先定義其Z 值。
ArcGIS 的三維分析功能在要素屬性對話框中提供了要素圖層在三維場景中的三種顯示方式:1)使用屬性設置圖層的基準高程;2)在表面上疊加要素圖層設置基準高程;3)突出要素。還可以結合多種顯示方式,如先使用表面設置基準高程,然后在表面上再突出顯示要素。在城市景觀三維顯示中,以表面設置基準高程,然后在表面上突出顯示要素建筑物,可以更加自然真實顯示城市景觀。
1. 通過屬性設置基準高程顯示要素圖層
在要素屬性對話框(Properties)中,選擇基準高程選項卡(Base Heights),設置以常量或表達式作為基準高程,填寫或點擊Calculate 按鈕生成提供Z 值的字段或表達式即可,見圖3。
之后,二維要素將以所設定屬性或表達式的值為Z 值在三維場景中顯示,圖4是以等高線的高程屬性作為基準高程顯示的等高線三維透視圖。
.jpg)
圖3設置要素圖層的基準高程
.jpg)
圖4等高線要素的三維顯示
2.使用表面設置基準高程顯示要素圖層
在設置基準高程時選擇由表面獲取要素圖層的高程,點擊Obtain heights for layers frome surface 選擇所需表面即可(圖5)。要素將會以表面所提供的高程在場景中顯示。
.jpg)
圖5 使用表面設置要素的基準高程
3. 要素的突出顯示
.jpg)
.jpg)
在圖層屬性對話框的突出(Extrusion)標簽中,選中對圖層中的要素進行突出復選框(圖6)。
圖6 突出表達式生成器
二、設置場景屬性
在實現要素或表面的三維可視化時,需要注意以下一些問題,包括:
1.添加到場景中的圖層必須具有坐標系統才能正確顯示;
2.為更好地表示地表高低起伏的形態,有時需要進行垂直拉伸,以免地形顯示地過于陡峭或平坦;
3.為全面地了解區域地形地貌特征,可以進行動畫旋轉;
4.為增加場景真實感,需要設置合適的背景顏色;
5.根據不同分析需求,設置不同的場景光照條件,包括入射方位角,入射高度角及表面陰影對比度;
6.為提高運行效率,需要盡可能地減小場景范圍,去除一些不需要的信息。以下就ArcScene中常用的場景設置內容做一詳細介紹。
1. 場景坐標系統
如果場景中要顯示的數據都處于相同的坐標系統之下,則直接將數據添加顯示即可,不需考慮圖層的疊加是否正確。如果各個圖層存在不同的坐標系統,則須進行適當的轉換以確保ArcScene能夠正確顯示它們。通常,當在一個空的場景中加入某圖層時,該圖層的坐標系統就決定了場景的坐標系統。在這之后可以根據應用需求再對場景的坐標系統進行更改。當隨后加入其它圖層到場景中時,ArcScene 將會自動將圖層的坐標系統轉換使與場景的坐標系統一致。若新加入圖層沒有坐標系統,將不能正確顯示,此時可人為地確定數據的坐標系統。
如果數據本身沒有任何坐標系統的信息,ArcScene 將會檢查圖層的坐標值,看其X 值 是否落在-180 度到180 度之間,Y值是否在-90 度到90 度之間。如果滿足上述條件,則 ArcScene 將該數據認為是經緯度坐標數據。否則,將認為該數據為平面坐標數據。
(1) 查詢當前場景坐標系統
打開場景的屬性對話框(圖7)。選擇其中的坐標系統(Coordinate System)選項卡,將顯示當前使用的坐標系統的詳細信息。(圖8)
.jpg)
圖7 打開場景的屬性對話框
(2)在圖8 所示的場景屬性對話框中,雙擊預定義(Predefined),選擇預定義坐標系統,之后,所有加載到場景中的數據都將使用該坐標系統進行顯示。
.jpg)
圖8 將顯示當前使用的坐標系統的詳細信息
需要注意的是,改變場景的坐標系統,并不會改變圖層源數據其坐標系統,只是以場景坐標系統對其進行顯示。
2. 垂直拉伸
垂直拉伸一般用于強調表面的細微變化。在進行表面的三維顯示時,如果表面的水平范圍遠大于其垂直變化,則表面的三維顯示效果可能不太明顯,此時,可以進行垂直拉伸以利于觀察分析。另外,當表面垂直變化過于劇烈不便于分析應用時也可以進行垂直拉伸,不過垂直拉伸系數 應設置為分數。垂直拉伸對場景內所有圖層都產生作用,如果要對單個圖層做垂直拉伸,可以通過改變圖層的高程轉換系數來實現。
打開場景屬性對話框,在General 選 項卡中選擇垂直拉伸(Vertical Exag geration)系數(圖9),或者點擊 Calculate From Extent 按鈕,系統將根據場景范圍與高程變化范圍自動計算垂直拉伸系數。圖10 為原始表面與設置拉伸系數為2 時的顯示效果的對比。
.jpg)
圖9 垂直拉伸(Vertical Exag geration)系數
.jpg)
圖10 原始表面與拉伸后的表面
3. 使用動畫旋轉
通過對場景進行旋轉觀察,可以獲得表面總體概況。ArcScene 可以使場景圍繞其中心旋轉,旋轉速度與察看角度可以人為調整,并可在旋轉的同時進行縮放。
欲使用動化旋轉,需要先對該功能進行激活。打開場景屬性對話框后,在General 選
項卡中選中Enable Animated Rotation 選項即可激活動畫旋轉功能(圖11)
激活之后,可以使用場景漫游工具(Navigate)將場景左右拖動之后,即可開始進行 旋轉,旋轉的速度決定于鼠標釋放前的速度,在旋轉的過程中也可以通過鍵盤的Page Up鍵和Page Down 鍵進行調節速度。點擊場景即可停止其轉動。
.jpg)
圖11 激活動畫旋轉功能
.jpg)
圖12 設置場景的光照
4. 設置場景背景顏色
同樣地,打開場景屬性對話框,在General 選項卡中,選擇背景色(Background),同時還可以將所選顏色設置為場景默認背景色(選中Use as default in all new scenes 復選框)。
5. 改變場景的光照
通過設置光源的方位角、高度角及對比度可以調整場景的照明情況。在場景屬性對話 框的Illumination 選項卡中,可以通過手動輸入方位角(Azimuth)和高度角(Altitude)或 通過鼠標滑動改變這兩個參數。另外,同時在此還可設置對比度。以上操作見圖12 所示。
6. 改變場景范圍
設置合適的場景范圍,可以消除一些無關信息,增加繪圖時的性能。默認情況下,場 景的范圍為場景中所有圖層的范圍。可以根據應用需求改變場景的范圍,使之與某個圖層的范圍一致,或通過X、Y 坐標的最大最小值來指定。
打開場景屬性對話框后,選擇Extent 選項卡,在此設置場景范圍(圖13)。如前所述可以兩種方式進行設置:1)在Layers 下拉列表中選擇某一圖層(圖a);2)點擊自定義(Custom),輸入最大最小X、Y 坐標,從而確定場景范圍(圖b)。
.jpg)
a b
圖13 設置設置場景范圍的兩種方式
三、飛行動畫
通過使用動畫,可以使場景栩栩如生,能夠通過視角、場景屬性、地理位置以及時間 的變化來觀察對象。例如,可以創建一個動畫來觀察運動著的衛星在它們的軌道上是如何 相互作用的,也可以用動畫來模擬地球的自轉及隨之的光照變化。
1. 如何制作動畫
在ArcScene 中提供了制作動畫的工具條Animation。默認情況下,它沒有添加到 ArcScene 的視圖中,可以通過在工具欄上點擊右鍵,在彈出的快捷菜單中選擇Animation 項打開它。能夠制作數據動畫、視角動畫和場景動畫。動畫是由一條或多條軌跡組成,軌 跡控制著對象屬性的動態改變,例如,場景背景顏色的變化,圖層視覺的變化或者觀察點 的位置的變化。軌跡是由一系列幀組成,而每一幀是某一特定時間的對象屬性的快照,是 動畫中最基本的元素。在ArcScene 中可以通過以下幾種方法生成三維動畫:
(1) 通過創建一系列幀組成軌跡來形成動畫:
在動畫工具條中提供了創建幀的工具。可以通過改變場景的屬性(例如場景的背景顏 色、光照角度等)、圖層的屬性(圖層的透明度、比例尺等)以及觀察點的位置來創建不 同的幀。然后用創建的一組幀組成軌跡演示動畫。動畫功能會自動平滑兩幀之間的過程。 如,可以改變場景的背景顏色由白變黑,同時改變場景中光照的角度來制作一個場景由白天到黑夜的動畫。
實現過程如下:
1) 設置動畫第一幀的場景屬性;
2) 點擊Animation 下拉菜單,選擇Create Keyframe 命令(圖14);
.jpg)
圖15 選擇幀類型
.jpg)
圖14 創建幀工具
3) 在Type 欄中選擇幀類型為Scene,由不同場景構成動畫的幀(圖9.65);
4) 點擊New 按鈕,創建一個動畫,此時彈出Animation Track 對話框(圖9.66),鍵入動畫名稱;
5)點擊Create抓取一個新的幀 ;
6) 再次改變場景屬性,之后點擊Create,抓取第二幀,根據需要抓取全部所需的幀。
7) 抓取完全部的幀之后,點擊Close,關閉創建幀對話框;
(2)通過錄制導航動作或飛行創建動畫:
點擊動畫控制器上(Animation Controls,圖17)的錄制按鈕開始錄制,在場景中通過導航工具進行操作或通過飛行工具進行飛行,操作結束后點擊錄制按鈕停止錄制。這個工具類似錄相器,將場景中的導航操作或飛行動作的過程錄制下來形成動畫。
.jpg)
圖16 命名動畫
.jpg)
圖17 動畫控制工具條
(3) 通過捕捉不同視角,并自動平滑視角間過程創建動畫:
通過導航工具將場景調整到某一合適的視角,用動畫工具條上的捕捉視角命令捕捉此視角,然后將場景調整到另一個合適的視角,再次用捕捉命令捕捉視角,依次可捕捉多個視角。動畫功能會自動平滑兩視角間的過程,形成一個完整的動畫過程。
(4) 通過改變一組圖層的可視化形成動畫效果:
通過動畫制作工具條中的創建組合動畫命令,選擇圖層控制一組圖層使他們按照順序逐個顯示通過效果調整實現動畫效果。例如,可以用一組顯示洪水淹沒過程的圖層生 成洪水演進的動畫效果。
實現過程如下:
1) 在場景中添加相關圖層,并按照動畫設計的播放順序從上到下依次調整圖層順序;。
2)點擊 Animation 下拉菜單下的Create Group Animation 命令(圖18),彈出創建圖層動畫對話框(圖19);
.jpg)
圖18Create Group Animation 命令
.jpg)
圖19 創建圖層動畫對話框
3)在Base name for tracks 欄中鍵入動畫名稱;
4)設置起止時間;
5)根據需要條調整圖層出現的方式(Transitions);
6)利用動畫控制工具條對生成的動畫進行預覽。
(5)通過導入路徑的方法生成動畫:
選擇場景中存在的矢量要素,用動畫工具條中的沿路徑飛行命令制作沿路徑飛行的動畫效果,此時可以設置飛行時的一些參數來控制飛行過程中的視覺效果。或用圖層沿路徑移動命令制作某一圖層沿路徑移動的動畫軌跡。此種方法一般用來制作場景行走動畫。
實現過程如下:
1) 選擇場景中的矢量要素;
2) 點擊Animation 下拉菜單下的Camera Flyby from path 命令(圖20),彈出沿路徑飛行動畫對話框(圖21);
.jpg)
圖20 導入路徑生成動畫工具
.jpg)
圖21 沿路徑飛行動畫對話框
3) 在Vertical offset 欄中鍵入視高(視點距離地面的垂直距離),建議視高選擇3-10; 4) 在Path destination 選項欄中設置路徑目的地;
有三種方式:沿指定路徑同時移動攝像機和目標地物、沿指定路徑圍繞目標地物移動 攝像機、目標地物沿指定路徑圍繞攝像機移動。
5) 點擊Import 輸入路徑。
6) 預覽動畫,方法同前。
以上是ArcGIS 中五種基本的動
2. 編輯和管理動畫屬性
對其進行組合搭配,達到最好的表達效果。
動畫的幀或軌跡創建完成之后,可以用動畫管理器編輯和管理組成動畫的幀和軌跡。 另外,通過它也能改變幀的時間屬性,并可預覽動畫播放效果。
(1) 啟動動畫管理器。單擊Animation 下拉菜單中的Animation Manager 項(圖22)。
.jpg)
圖22打開動畫管理器
(2) 打開的動畫管理器如圖23 所示。
.jpg)
圖23動畫管理器
3.保存動畫
在ArcScene 中制作的動畫可以存儲在當前的場景文檔中,即保存在SXD 文檔中;也能存儲成獨立的ArcScene 動畫文件(*.asa)用來與其他的場景文檔共享;同時也能將動畫導出成一個AVI 文件,被第三方的軟件調用。
(1) 將動畫存儲為獨立的ArcScene 動畫文件。
步驟如下: 1) 在Animation 下拉菜單下選擇Save Animation File 項(圖24);

圖24 存儲動畫文件
2) 在彈出的對話框中指定存儲路徑及文件名即可(圖25)。

圖25 存儲動畫文件對話框
(2)將動畫導出為AVI 文件。
步驟如下:
3) 點擊Animation 菜單下的Export to Video 項(圖26);

圖26 導出動畫文件
4) 在彈出的導出對話框中指定保存路徑及文件名即可(圖27)。

圖27 導出動畫文件對話框
4. 使用Fly工具進行飛行
此外,ArcScene 工具條提供了飛行(Fly)工具 ,使用它可以實現對場景的飛行瀏覽。選擇該工具后,鼠標將變為一只小鳥的形狀,單擊之后,鼠標會再次變形。此時,可以通過鼠標的移動控制飛行方向與速度。再次單擊鼠標,則可從當前視點沿鼠標所指方向 向下方向飛行,途中,點擊左鍵加快飛行速度,右鍵減速。