WPF & ArcGIS Engine三維開發入門攻略

原文 http://www.cnblogs.com/Realh/archive/2010/12/14/1906112.htmlhtml

前些日子在作ESRI的開發大賽,從剛開始接觸ArcGIS Engine(如下稱AE)那會兒「摸着石頭過河」那個階段一路走下來,有了很多心得體會,在此給你們分享下。app

作得是一個三維的校園地下管線系統,使用的AE的SceneControl組件。傳說Scene適合小場景精細模型展現,Globe適合大場景海量 數據展現,因此選的前者。界面用的是Dotnetbar for WinForm,但其實WPF更好些,這裏我也以WPF爲例。post

 

個人系統環境:Windows 7 專業版,Visual Studio 2010,ArcGIS Engine 9.3this

 

1.建立項目spa

建立一個WPF的項目,必須選擇.Net framework 3.5AE9.3不支持.Net4.0),添加引用:orm

ESRI.ArcGIS.3DAnalyst
ESRI.ArcGIS.AxControls
ESRI.ArcGIS.Carto
ESRI.ArcGIS.Controls
ESRI.ArcGIS.Display
ESRI.ArcGIS.Geometry
ESRI.ArcGIS.GlobeCore
ESRI.ArcGIS.Output
ESRI.ArcGIS.System
ESRI.ArcGIS.SystemUI xml

VS08能夠在.Net選項卡下面找到全部引用,但10則只能去ESRI安裝目錄下找htm

 

2.界面blog

把缺省標題MainWindow改掉,分割主窗體中的Grid爲左右兩部分,兩邊各放置一個WindowsFormsHost,用於承載AE的控件。資源

打開XAML視圖,
在頂部引入AE控件的命名空間,名字隨意

xmlns:esri="clr-namespace:ESRI.ArcGIS.Controls;assembly=ESRI.ArcGIS.AxControls"

編輯兩個WindowsFormsHost,添加兩個控件

<WindowsFormsHost Margin="10" >
    <esri:AxTOCControl x:Name="toc" Dock="Fill" />
</WindowsFormsHost>

<WindowsFormsHost Grid.Column="1" Margin="10" >
    <esri:AxSceneControl x:Name="scene" Dock="Fill" />
</WindowsFormsHost>

 

3.代碼
AE的程序須要Liscene才能啓動,一般的辦法是在窗體上放置一個LicenseControl。但對於WPF,這個辦法行不通。
在App.xaml.cs,App類下建一個構造方法

public App()
{
   AoInitialize aoi = new AoInitializeClass ();
   //Additional license choices can be included here.
   esriLicenseProductCode productCode =
       esriLicenseProductCode .esriLicenseProductCodeEngine;
   if (aoi.IsProductCodeAvailable(productCode) ==
       esriLicenseStatus .esriLicenseAvailable)
   {
        aoi.Initialize(productCode);
   }
}

程序啓動後,綁定TOC到Scene,並加載地圖

private void Window_Loaded( object sender, RoutedEventArgs e)
{
   this .toc.SetBuddyControl( this .scene); // 綁定 Toc Scene
   this .scene.LoadSxFile( "******" ); // 加載場景
   this .scene.Navigate = true ; // 啓用 Navigate
   this .scene.Update();
}

 

OK,F5啓動看下效果

 

 

最後,請一樣裝了64位Windows的朋友們,再作下面一個步驟:項目->WpfScene屬性->生成,把目標平臺設置成x86。只由於AE尚未支持64位,使人失望的是,最新的ArcGIS 10依然沒有。

 

 

參考:

WPF 與ArcEngine 也挺有情調的麼

如何在WPF項目中使用ArcEngine的控件作開發

ArcGIS Blog:Can you use Visual Studio 2010 to develop against ArcGIS 10

ESRI資源中心:How to host an ArcGIS Engine map control in a WPF application

相關文章
相關標籤/搜索