1、开发环境

基于ArcObjects SDK开发,开发环境一般选用Visual Studio,开发语言使用C#,开发包使用ArcObjects SDK for .Net。UI有的使用Winform,也可以使用WPF。调用的时候,不关心接口或类是否可以在ArcEngine Runtine下运行,验证的时候,也是按照Desktop环境验证,开发的软件直接在ArcGIS Desktop环境下运行。

一般情况下,我使用Visual Studio+ArcObjects SDK for .Net+C#+WPF+ArcGIS Desktop的组合进行开发。

2、准备工作

安装Visual Studio社区版,社区版是免费的,也足够我们使用,目前最新版本是2022,建议安装最新的版本即可。

安装ArcGIS桌面软件即ArcMap,建议安装最新的10.8版本,也是ArcMap的最后版本。以后ArcGIS的桌面软件就是ArcGIS Pro了。

安装和ArcMap版本一致的ArcObjects SDK。

软件开发的UI建议选择WPF,建议使用第三方UI库DEV。

3、新建工程

打开Visual Studio,点击创建新项目,选择WPF应用(.Net Framework),点击下一步,设置项目名称、位置、解决方案名称等信息,框架建议选择.Net Framework 4.8,这也是.Net Framework的最后一个版本,以后都是.Net 6.0、7.0了。

点击创建按钮完成创建。完成后,我们把常用的一些dll文件都引用到工程下。 如下图所示。

点击引用项,在属性页设置其嵌入互操作类型为False,如下图所示。

4、开始写代码

因为ArcObjects SDK是基于WinForm的,而我们又是用WPF开发,所以我们需要在窗体上加一个WindowsFormsHost,然后把初始化后的AxMapControl添加到WindowsFormsHost。组织带AxMapControl的系统主界面流程一般如下。

1、绑定Runtime,这里可以选择绑定Desktop或者Engine,我们一般会绑定Desktop,但则就要求当前机器必须安装ArcGIS桌面软件,不然绑定代码会报错。代码如下:

RuntimeManager.Bind(ProductCode.Desktop);

2、验证许可,我们调用ArcObjects SDK里面的IAoInitialize接口验证许可。

IAoInitialize myAoInitialize = new AoInitializeClass();
myAoInitialize.Initialize(esriLicenseProductCode.esriLicenseProductCodeAdvanced);

3、初始化AxMapControl。我们在这里就不直接拖控件了,而是使用代码生成。

AxMapControl myAxMapControl = new AxMapControl();
myAxMapControl.BeginInit();
this.UI_Map_WindowsFormsHost.Child = myAxMapControl;
myAxMapControl.EndInit();
myAxMapControl.BackColor = System.Drawing.Color.White;
myAxMapControl.BorderStyle = esriControlsBorderStyle.esriNoBorder;
myAxMapControl.ShowScrollbars = false;

4、可以加一段测试代码,例如点击一个按钮,加载指定的地图文件。

myAxMapControl.LoadMxFile("E:\\A.mxd");

到此为止,一个Hello Word版本的ArcObjects SDK程序就创建起来了。但距我们使用ArcObjects SDK做一个业务应用系统还差的很远。

ArcObjects SDK开发 002 写第一个ArcObjects SDK程序的更多相关文章

  1. 开发你的第一个BLE应用程序—Blinky

    本文将和大家一起编写我们的第一个BLE应用程序:Blinky(闪灯程序),哪怕你之前没有任何BLE开发经验,也不用担心,只要跟着文中所述步骤,你就可以一步步搭建自己的第一个BLE应用程序.通过这个Bl ...

  2. 用Racket语言写了一个万花筒的程序

    用Racket语言写了一个万花筒的程序 来源:https://blog.csdn.net/chinazhangyong/article/details/79362394 https://github. ...

  3. 基于Unity的AR开发初探:第一个AR应用程序

    记得2014年曾经写过一个Unity3D的游戏开发初探系列,收获了很多好评和鼓励,不过自那之后再也没有用过Unity,因为没有相关的需求让我能用到.目前公司有一个App开发的需求,想要融合一下AR到A ...

  4. FFmpeg SDK开发模型之中的一个:解码器

    简单介绍 本例解说了怎样使用ffmpeg SDK解码媒体文件: 參考源代码是ffmpeg 自带的apiexample.c 一.源代码#include <stdlib.h>#include ...

  5. [maven学习笔记]第一节,认识maven,搭建maven开发环境,写第一个HelloWorld

    本文地址:http://blog.csdn.net/sushengmiyan/article/details/40142771 maven官网:http://maven.apache.org/ 学习视 ...

  6. android 串口开发第一篇:搭建ndk开发环境以及第一个jni调用程序

    一:ndk环境搭建 1:开发环境 我使用的是android studio 2.3.3版本,搭建ndk开发环境比较简单,打开File----Settings----Appearance&Beha ...

  7. 02-编写第一个C语言程序

    本文目录 1.打开Xcode,新建Xcode项目 2.选择最简单的命令行项目 3.输入项目信息 4.选择一个用来存放C程序代码的文件夹 5.运行项目 说明:这个C语言专题,是学习iOS开发的前奏.也为 ...

  8. 在Seismic.NET下用最少的语句写出一个剖面显示程序

    用Seismic.NET开发地震剖面显示程序可以节省大量的时间,下面的代码展开了如何用最少的代码显示一个SEGY文件. // 用一行语句把 reader, pipeline, view 和 plot ...

  9. 基于C#的钉钉SDK开发(1)--对官方SDK的重构优化

    在前段时间,接触一个很喜欢钉钉并且已在内部场景广泛使用钉钉进行工厂内部管理的客户,如钉钉考勤.日常审批.钉钉投影.钉钉门禁等等方面,才体会到原来钉钉已经已经在企业上可以用的很广泛的,因此回过头来学习研 ...

  10. 29-ESP8266 SDK开发基础入门篇--编写TCP 客户端程序(Lwip RAW模式,非RTOS版,精简入门)

    https://www.cnblogs.com/yangfengwu/p/11456667.html 由于上一节的源码长时间以后会自动断开,所以再做这一版非RTOS版的,咱直接用lua源码里面别人写的 ...

随机推荐

  1. C#/VB.NET 如何在Excel中使用条件格式设置交替行颜色

    说起高亮数据行,不让人想起了交替颜色行,有的人把交替颜色行也都设置成高亮,不仅不美观,而且对阅读还是个干扰.隔行交替的颜色是为了阅读不串行,这些行只是环境,数据才是主体.那么如何通过C#/VB.NET ...

  2. OKR之剑(理念篇)02—— OKR布道之旅

    作者:vivo互联网平台产品研发团队 1.我们是如何引入的 1.1.企业文化匹配 大概是在2013年底,一些创业者在硅谷深受OKR洗礼,并在自己的公司内小范围运用,以此OKR开始传入中国.而vivo初 ...

  3. kubepi访问

    ko最新版本会默认安装kubepi,端口没有对外暴露,点击dashboard打开的就是默认安装的kubepi 如果安装了最新版本的ko,之前单独运行的kubepi就可以stop了

  4. git commit、git push、git pull、 git fetch、git merge 的含义与区别

    git commit:是将本地修改过的文件提交到本地库中: git push:是将本地库中的最新信息发送给远程库: git pull:是从远程获取最新版本到本地,并自动merge: git fetch ...

  5. MongoDB 副本集故障情况描述

    副本集有两种类型三种角色 两种类型: 主节点( Primary)类型:数据操作的主要连接点,可读写. 次要(辅助.从)节点( Secondaries)类型:数据冗余备份节点,可以读或选举. 三种角色: ...

  6. Fluentd直接传输日志给Elasticsearch

    官方文档地址:https://docs.fluentd.org/output/elasticsearch td-agent的v3.0.1版本以后自带包含out_elasticsearch插件,不用再安 ...

  7. ElastAlert监控日志告警Web攻击行为---tomcat和nginx日志json格式

    一.ELK安装 1.2 elk配置 logstash自定义配置文件,取名为filebeat_log.conf : input { beats { port => 5044 client_inac ...

  8. 线段树学习笔记(基础&进阶)(一) | P3372 【模板】线段树 1 题解

    什么是线段树 线段树是一棵二叉树,每个结点存储需维护的信息,一般用于处理区间最值.区间和等问题. 线段树的用处 对编号连续的一些点进行修改或者统计操作,修改和统计的复杂度都是 O(log n). 基础 ...

  9. python-绘图与可视化

    python 有许多可视化工具,但本书只介绍Matplotlib.Matplotlib是一种2D的绘图库,它可以支持硬拷贝和跨系统的交互,它可以在python脚本,IPython的交互环境下.Web应 ...

  10. 【Java8新特性】- Stream流

    Java8新特性 - Stream流的应用 生命不息,写作不止 继续踏上学习之路,学之分享笔记 总有一天我也能像各位大佬一样 一个有梦有戏的人 @怒放吧德德 分享学习心得,欢迎指正,大家一起学习成长! ...