WPF & ArcGIS Engine三维开发入门攻略

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

前些日子在做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.5(AE9.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 = newAoInitializeClass();

   //Additional license choices can be included here.

   esriLicenseProductCode productCode =

       esriLicenseProductCode.esriLicenseProductCodeEngine;

   if (aoi.IsProductCodeAvailable(productCode) ==

       esriLicenseStatus.esriLicenseAvailable)

   {

        aoi.Initialize(productCode);

   }

}

程序启动后,绑定TOC到Scene,并加载地图

privatevoid 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

时间: 2024-08-12 10:23:29

WPF & ArcGIS Engine三维开发入门攻略的相关文章

arcgis engine +c#开发,发布的时候如何打包?

问题描述 如何打包Runtime?如何激活runtime?求大神指点!!! 解决方案 解决方案二:参考:

arcgis engine开发类似arcmap的功能

问题描述 arcgis engine开发类似arcmap的功能 怎样在arcgis engine中开发类似arcmap中新建shapefile的功能..

使用XAML在WPF项目中承载ArcGIS Engine地图控件开发

原文 http://blog.csdn.net/flexmapserver/article/details/5868882 用Windows Form进行ArcGIS Engine二次开发时常见的形式,当然也可以用WPF来进行ArcEngine的二次开发.         由于WPF很方便承载Windows Form控件,而Map Control.Toolbar Control.TOC Control等都是.NET 控件,当然也可以用XAML来承载ArcEngine的这些控件来开发了.     

如何在WPF程序中使用ArcGIS Engine的控件

原文 http://www.gisall.com/html/47/122747-4038.html WPF(Windows Presentation Foundation)是美国微软公司推出.NET Framework 3.0的组成部分之一,它是一套基于XML..NET Framework.矢量绘图(vector graphic)技术的展示层(presentation layer)开发框架,微软视其为下一代用户界面(user interface)技术,将广泛被用于下一代的Windows平台(Wi

《ArcGIS Engine 地理信息系统开发从入门到精通(第二版)》——第6章 空间数据管理 6.1 SDE及空间数据

第6章 空间数据管理 6.1 SDE及空间数据 ArcGIS Engine 地理信息系统开发从入门到精通(第二版)6.1.1 SDE介绍 ArcSDE是数据库系统中管理地理数据库的接口,通过该接口可以往关系数据中加入空间数据,提供地理要素的空间位置及形状等信息,是ArcGIS与关系数据库之间的GIS通道.它允许用户在多种数据管理系统中管理地理信息,并使所有的ArcGIS应用程序都能够使用这些数据. ArcSDE是多用户ArcGIS系统的一个关键部件,它为DBMS提供了一个开放的接口,允许ArcG

ArcGIS Engine开发入门教程

利用ArcGIS Engine.VS .NET和Windows控件开发GIS应用 Dixon整理 此过程说明适合那些使用.NET建立和部署应用的开发者,它描述了使用ArcGIS控件建立和部署应用的方法和步骤. 你可以在下面的目录下找到相应的样例程序: <安装目录>/DeveloperKit/Samples/Developer_Guide_Scenarios/ ArcGIS_Engine/Building_an_ArcGIS_Control_Application/Map_Viewer 注:Ar

控件-请问ArcGIS Engine + VS2010 怎么开发出那种统计直方图?

问题描述 请问ArcGIS Engine + VS2010 怎么开发出那种统计直方图? 2C 是配合VS2010里面自带的图表控件的那种,还有分区统计,频率统计,功能都怎么实现啊

《ArcGIS Engine+C#实例开发教程》第八讲 属性数据表的查询显示

原文:<ArcGIS Engine+C#实例开发教程>第八讲 属性数据表的查询显示 第一讲 桌面GIS应用程序框架的建立 第二讲 菜单的添加及其实现 第三讲 MapControl与PageLayoutControl同步 第四讲 状态栏信息的添加与实现 第五讲 鹰眼的实现 第六讲 右键菜单添加与实现 教程Bug及优化方案1 第七讲 图层符号选择器的实现1 第七讲 图层符号选择器的实现2 第八讲 属性数据表的查询显示 摘要:这一讲中,我们将实现图层属性数据表的查询显示.在ArcMap中,单击图层右

《ArcGIS Engine+C#实例开发教程》第二讲 菜单的添加及其实现

原文:<ArcGIS Engine+C#实例开发教程>第二讲 菜单的添加及其实现 摘要:在上一讲中,我们实现了应用程序基本框架,其中有个小错误,在此先跟大家说明下.在"属性"选项卡中,我们当时添加的是 DataGridView控件,这个控件是用来显示数据表的,而专门用于属性的查询和设置的控件是 PropertyGrid 控件.因此请你删除"属性"选项卡中的DataGridView 控件,再把位于"工具箱 | 所有 Windows 窗体 |Pro