原文 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

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

  1. WPF/ArcGIS Engine三维开发和EVC3/4升级到VS项目建议(转)

    系统环境:Windows 7 专业版,Visual Studio 2010,ArcGIS Engine 9.3 1.创建项目 创建一个WPF的项目,必须选择.Net framework 3.5(AE9 ...

  2. ArcGIS Engine三维动画开发 来自:http://www.iarcgis.com/?p=826

    ArcGIS Engine 三维开发 来自:http://www.iarcgis.com/?p=826 在三维中,经常使用的一个功能就是播放动画,也就是我们要对一条动画轨迹进行播放,而在ArcGIS ...

  3. wpf arcgis engine 当前没有或未启用Spatial Analyst许可解决办法

    用wpf 在做叠加分析时 遇到了一个错误:“ERROR 010096:当前没有或未启用Spatial Analyst许可”:在环境中把这个Spatial Analyst扩展功能给勾了也不能解决,现在把 ...

  4. ArcGIS Engine开发前基础知识(4)

    ArcGIS不同开发方式的比较 关于GIS应用软件的开发,通常有三种方式:C/S架构.网络GIS和移动GIS.ArcGIS平台提供了对三种开发方式的支持,对于采用从C/S架构的大多数开发者来讲,首先想 ...

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

    原文 http://blog.csdn.net/flexmapserver/article/details/5868882 用Windows Form进行ArcGIS Engine二次开发时常见的形式 ...

  6. VC、OpenGL、ArcGIS Engine开发的二维三维结合的GIS系统

    一.前言 众所周知,二维GIS技术发展了近四十年,伴随着计算机软硬件以及关系型数据库的飞速发展,二维GIS技术已日臻完善.在对地理信息的分析功能上有着无可比拟的优势.一些宏观的地理信息,一维的地理信息 ...

  7. VS2010下WPF开发ARCGIS ENGINE 10的带Ribbon控件项目

    原文 http://blog.sina.com.cn/s/blog_47522f7f0100nq5t.html 题目好长,但是集目前最新的工具于一身..VS是最新的2010版,不过用的是.net3.5 ...

  8. ArcGIS Engine开发前基础知识(1)

    ArcGIS二次开发是当前gis领域的一项重要必不可少的技能.下面介绍它的基本功能 一.ArcGIS Engine功能 在使用之前首先安装和部署arcgis sdk,(在这里不在赘述相关知识)可以实现 ...

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

    原文 http://www.gisall.com/html/47/122747-4038.html WPF(Windows Presentation Foundation)是美国微软公司推出.NET ...

随机推荐

  1. windows 守护进程

    use Win32::Process::Info; while (1==1){ use Sys::Hostname; use HTTP::Date qw(time2iso str2time time2 ...

  2. jdbc连接数据库工具类

    import java.lang.reflect.Field; import java.sql.Connection; import java.sql.DriverManager; import ja ...

  3. (转)linux下fork的运行机制

    转载http://www.cnblogs.com/leoo2sk/archive/2009/12/11/talk-about-fork-in-linux.html 给出如下C程序,在linux下使用g ...

  4. Python Cookie HTTP获取cookie并处理

    Cookie模块同样是Python标准库中的一员,它定义了一些类来解析和创建HTTP 的 cookie头部信息. 一.创建和设置Cookie >>> import Cookie #导 ...

  5. 数据库--PHP环境搭建

    一: 1.PHP的架构 LAMP :Linux  阿帕奇  MySQL  PHP WAMP:Linux 阿帕奇  Mysql  PHP (集成的环境搭建软件),一键搭建PHP开发环境工具 2.修改数据 ...

  6. bootstrap 兼容IE8设置

    <!--[if lt IE 9]> <script src="//cdn.bootcss.com/html5shiv/3.7.2/html5shiv.min.js" ...

  7. 学习笔记DAY2

    Pycharm使用 1.添加模板 file => settings =>Editor=>file and code template => python script => ...

  8. 19. Crontab

    一.Crontab 的使用 1.crontab 命令参数: -e   编辑该用户的计时器设置 -l 列出该用户的计时器设置 -r 删除该用户的计时器设置-u<用户名称> 指定要设定计时器的 ...

  9. AJAX 控件集之TextBoxWatermark(水印文本框)控件

    功能:       可以让TextBox控件初始化的时候拥有水印文字.属性:    TargetControlID :要使用具有水印效果的TextBox控件ID.    WatermarkCssCla ...

  10. baidu地图让多个标注出现在最佳视野

    原文:http://www.cnblogs.com/milkmap/archive/2011/08/23/2150641.html 摘要: “我有一堆标注,不规则的散落在地图的各个地方,我想把它们展示 ...