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

作者: 賊寇在何方  來源: 博客園  發布時間: 2010-12-21 16:10  閱讀: 5244 次  推薦: 2   原文鏈接   [收藏]  

  前些日子在做ESRI的開發大賽,從剛開始接觸ArcGIS Engine(以下稱AE)那會兒“摸著石頭過河”那個階段一路走下來,有了不少心得體會,在此給大家分享下。

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

  我的系統環境:Windows 7 專業版,Visual Studio 2010,ArcGIS Engine 9.3

  1.創建項目

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

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

  VS08可以在.Net選項卡下面找到所有引用,但10則只能去ESRI安裝目錄下找

  2.界面

  把缺省標題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);//綁定TocScene
   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

2
0
 
 
 

文章列表

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()