一.軟件安裝及其說明
1.需要安裝的軟件及其安裝:
這份報告主要涉及到的有三個需要安裝的軟件ArcGIS9.3(或9.2) 、Sketchup6.0和SketchUp6 ESRI 插件。
ArcGIS是本專業大家耳熟能詳的重要軟件,這里就不再介紹,主要介紹一下Google Sketchup軟件,它是一套直接面向設計方案創作過程的設計工具,其創作過程不僅能夠充分表達設計師的思想而且完全滿足與客戶即時交流的需要,它使得設計師可以直接在電腦上進行十分直觀的構思,是三維建築設計方案創作的優秀工具。
現在ArcGIS已經出到了10而sketchup已經出現了8.0版本,但是由於插件只有sketchup6版本的,這一版本的插件和ArcGIS9.2配合是最好的,所以可以的情況下盡可能安裝ArcGIS9.2,這樣會省去很多不必要的麻煩。因為我的電腦操作系統是win8專業版,此版本不支持9.2版本,所以我只能安裝9.3.
ArcGIS和Sketchup的安裝就不再贅述了,SketchUp6 ESRI插件安裝有一些關鍵步驟需要注意!如圖所示的安裝界面:
其中,第一個組件“GIS Plugin”,使用戶能夠在SketchUp中將模型以Multipatch要素的形式導入GDB。 第二個組件 “ 3D Analyst SketchUp 3D Symbol Support ” ,用戶可以在ArcMap中將GIS數據導入SketchUp中。所以GIS Plugin安裝在Sketchup的安裝目錄下,3D Analyst SketchUp 3D Symbol Support 安裝在ArcGIS的安裝目錄下,不能安裝錯路徑,否則Sketchup和ArcGIS是無法連接起來的。
2.在ArcGIS環境中激活SketchUp6 ESRI插件
插件安裝完成后,sketchup不用再進行任何設置就已經可以導出mdb文件,但是ArcGIS是要設置的。我們在三維建模前應該選擇在哪里打地基,這項工作可以由ArcMap完成,所以我們需要在ArcMap中設置以導出數據到Sketchup中。設置很簡單,在工具欄處點擊右鍵單擊“Customize” ,如下圖:
點擊“Add from file”,加載SketchUp插件安裝后,為ArcGIS產品添加的動態庫文件“FeaturesToSkp.dll” :
添加插件動態庫后,在Toolbars項中可以找到SketchUp6的功能項,選中“SketchUp 6 Tools”組件以后點擊關閉,就會出現如下圖標:
另外,為了使用方便我還設置了快捷鍵,點擊Customize界面的Keyboard(中間下方)就可以設置了。
至此,ArcGIS就可以和Sketchup進行聯合的建模與管理了。
二.Sketchup與ArcGIS聯合三維建模流程
Sketchup是一款三維建模能力十分強大且操作簡便的軟件,ArcGIS又是一款管理數據和空間分析的王牌軟件,但其模型構建和編輯能力並不強,把兩者結合起來正好可以優勢互補,在一個數字化的建築或規划項目中,這樣的軟件組合有利於不同工作人員的分工,建築設計師只需要用他們熟悉的Sketchup建模即可,而數據管理與分析人員可以通過ArcGIS進行各種空間分析和數據管理。
將Sketchup和ArcGIS結合的流程如下:
(1)使用ArcGIS桌面,即ArcMap,加載矢量數據;
(2)在ArcMap環境中,利用SketchUp插件工具,將所需要建模的區域導入SketchUp中。
(3)在SketchUp創建模型。
(4)在SketchUp中將模型轉成ArcGIS的Multipatch模型要素文件並保存於Personal GeoDatabase中。
二.利用ArcGIS與SKetchup結合樣例
1.數據來源
在ArcMap中矢量格式的數據才可以導出到Sketchup中,所以我們獲得的數據要先進行轉化,成為ESRI支持的Shapefile或GeoDatabase。一般柵格數據要進行矢量化,對於其他類型的矢量數據(如:CAD矢量文件,dwf格式數據),雖然ArcMap可以加載,但是它們往往不含有空間坐標,所以要在ArcCatalog中新建GeoDatabase或shp文件,導入這些數據,然后再添加空間參考。新建方法很簡單,在目標目錄下新建一個Personal GeoDatabase,按照ArcCatalog給的提示,一步步加載原始數據和空間參考。生成完成后,就可以用ArcMap加載,導入Sketchup了。
2.從ArcMap中導出數據
首先在ArcMap中加載想要建模的矢量數據,就是上面所說的從GeoDatabase或Shp文件,同時應該給它添加高程屬性(Height) 如下圖:
並給部分Polygon的Height屬性添加屬性值:
選中要導出的要素,按ctrl +s(我自己設置的快捷鍵)彈出如下對話框:
系統將自動讀出所選擇矢量要素所在的FeatureClass,並且提供自動建模選項。Elevate by field:依據屬性字段,設置建築物高程。 Extrude by field:依據屬性字段,設置建築物高度,即對其做拉伸。 Name Groupusing:為導出數據,選擇分組名稱。本例中勾選了Extrude by field
導出至Sketchup的結果如下:
其中突出的部分為在導出前給Polygon的Height屬性賦予高度值的,然后勾選Extrude by field的結果,接下來設計師就可以在Sketchup中對它進行建模了。
3.Sketchup建模結果導出MultiPatch
用sketchup建模雖然簡單易學,但是有一些繪圖和設計的基本功才能設計出美觀大方的模型,我在這方面就沒什么天分了,所以就簡單對這個模型做一些添加修改就可以了。
首先,想要對導出來的模型直接編輯是不行的,因為導入的數據都是以群組為單位存在的。要進行對面的操作,要選中一個群組,然后對它進行炸開操作,否則不能對面進行各種建模(畫圖,伸展等):
然后就可以對群組中的單個面進行編輯了。
編輯結束后,一定要對編輯結束的模型做創建群組操作,否則無法被導出,原因在於在su里面新建的建築或其他地物,都是由面組成的,它們不是一個整體:
另外,本例中我並沒有進行特別多編輯,僅是添加了兩棟建築物。
接下來就要把這些模型導出了,這又是關鍵的一步,因為稍有不慎,導出的結果就會不正確。只有在SketchUp操作空間中被選中的模型,才能以獨立Multipatch要素導出。未被選中的模型也會被導出成Multipatch要素導出,但是將作為一個整體要素存在於Multipatch圖層中。
導出的步驟應該如下:
首先,必須新建一個GeoDatabase,里面新建MultiPatch用來存儲導出的數據。新建過程中一定要添加如下字段,原因在下一節解釋:
序號 |
字段名稱 |
字段類型 |
備注 |
1 |
SUSourceFeatureID |
LongInteger |
原始數據的唯一ID值 |
2 |
SUSourceFeatureClass |
Text |
原始數據的圖層名稱 |
3 |
SUInstanceName |
Text |
在SketchUp環境中的圖層名稱 |
4 |
SketchUpData |
Blob |
可保存SketchUp的模型字段 |
接下來,將模型導入這個新建的MultiPatch中:
點擊確定后出現:
最后,選中剛才手動新建的MultiPatch,出現以下對話框表面成功了:
接下來就可以在ArcScene里面查看了,並且地物都是可以單獨選中的:
導出后並沒有結束,把從ArcMap中導出的數據也加入ArcScene,然后對它們做空間連接操作,讓原圖中高程、周長等屬性也出現在新建的MultiPatch中:
四.常見錯誤及處理方法
1.不新建一個Geodatabase或新建了沒有添加MultiPatch的情況下,從Sketchup中直接導出mdb會出現以下錯誤:
這是版本問題導致的,開頭的時候就已經說過,Sketchup6和ArcGIS9.2的契合是最好的,所以如果用戶使用的是ArcGIS9.2就不會出現這種問題。出現這種問題也是可以解決的,那就是新建Geodatabase並添加MultiPatch。
2.導出Multipatch時會出現以下的提示:
同樣,在ArcGIS9.2的情況下直接導出一般不會出現這種問題。出現這種情況后,雖然能夠導出,但是建模的一些信息會丟失,解決方案就是在新建Multipatch時要添加以下這些屬性:
序號 |
字段名稱 |
字段類型 |
備注 |
1 |
SUSourceFeatureID |
LongInteger |
原始數據的唯一ID值 |
2 |
SUSourceFeatureClass |
Text |
原始數據的圖層名稱 |
3 |
SUInstanceName |
Text |
在SketchUp環境中的圖層名稱 |
4 |
SketchUpData |
Blob |
可保存SketchUp的模型字段 |
3.在Sketchup中選中導出有時會出現以下的問題:
這表示編輯完后的建築沒有創建群組,導出會導致編輯部分丟失。解決方案就是一定要在導出前保證待導出的模型都是群組。