![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
ArcEngine
冉总
这个作者很懒,什么都没留下…
展开
-
ArcEngine导出数据量较大的属性表(ICursor接口的使用)
之前的博文“ArcEngine查看数据量较大属性表的解决方案”中,用了ICursor接口来实现数据量较大属性表的分页查询。既然实现了分页查询,那么就有可能会遇到数据量较大的属性表导出至本地的需求(虽然我觉得这样做意义不大,但是毕竟也算是客户的需求)。在这种情况下,一次性导出至本地显然是不合理的,势必会造成内存溢出的异常,所以考虑用ICursor接口。在ArcObject的帮助文档中对ICursor的说明中我看到了这样一句话:Cursors are forward only; they do not su原创 2020-12-07 21:31:15 · 717 阅读 · 0 评论 -
ArcEngine查看数据量较大属性表的解决方案(解决HRESULT:0x8004160A)
在之前的博文“ArcEngine做一个“仿”ArcMap中的属性表”中,如果遇到数据量较大(万级以上)的数据就会出现查询很慢甚至内存溢出的问题,这对于一个实际应用的系统肯定是不允许的。好在ao中提供了定义过滤查询的接口:IQueryFilterDefinition3在接口文档中对这个接口的说明是这样的:Provides access to query filter definition properties.定义过滤条件主要要用到IQueryFilterDefinition3接口中PostfixC原创 2020-10-18 17:01:43 · 650 阅读 · 0 评论 -
ArcEngine实现要素重塑(Reshape)编辑操作
1、需求要实现的需求就是ArcGis中的重塑(Reshape)编辑操作,在ArcGIS的帮助文档中对这一工具的说明如下图:我的理解其实就是用一个线要素改变面或者线的形状,可以理解成操作更方便的节点编辑。2、实现思路如果因为需求比较急于实现可以直接跳过该部分,直接转向下一部分。通过查看ArcObject帮助,得知三个接口下有Reshape方法,分别是IRing、IPolyline、IGeometryServer2,通过接口的名字就可以排除第三个,这个操作和几何服务没有什么关系。2.1 IPoly原创 2020-10-12 22:37:39 · 1242 阅读 · 2 评论 -
ArcEngine注册版本编辑sde中的数据(解决报错0x80040356)
1、问题提出在我的上一篇博文中(ArcGIS编辑SDE的矢量数据(集)(解决因版本化问题不能编辑))解决了在ArcGIS中编辑sde时遇到的未注册导致不能编辑的问题,同样,在ArcEngine中也可以用同样的思路解决这个问题。这个问题比较简单,所以为了增加篇幅,我在这篇博文中整理了一下我解决ArcEngine问题的一贯思路,如果比较赶时间可以跳过第二部分。2、解决思路我始终坚信遇到问题最好的解决办法第一是帮助文档,第二是百度谷歌,所以在已经知道在ArcGIS中如何解决这个问题之后就可以在帮助文档中查找原创 2020-09-28 22:07:28 · 705 阅读 · 1 评论 -
ArcEngine做一个“仿”ArcMap中的属性表
1、需求GIS的数据有空间信息和属性信息,基于ArcEngine开发GIS系统的时候,空间信息用MapControl可以直接展示,但是属性信息却没有相关的控件直接进行展示(或许有接口,我没有找到,而且arcobject自带的接口可能很难满足客户奇奇怪怪的需求)。参考ArcMap中的属性表的功能仿制了一个自定义控件。2、界面设计这个是自定义控件的主界面,有两个GridControl组成,之所以用两个GridControl,是为了避免在大量数据的情况下一个GridControl反复刷新造成卡顿。自定义控原创 2020-09-13 15:45:49 · 734 阅读 · 0 评论 -
ArcEngine调用工具箱(Geoprocessor)工具输入的要素/栅格为多个情况时的处理方法(20190829)
1、需求在用ArcEngine调用工具箱中的工具时,碰到了这样的情况,以工具箱中“Data Management Tools–>Features–>Feature ToPolygon”工具为例,需要选择多个输入的要素,如下图:查看这个工具的帮助文档,得知输入的要素是如下图这样的,他的In_feature可以是单个要素类,也可以是多个要素类。从帮助文档给的Python的代码示例...原创 2019-08-28 19:47:57 · 789 阅读 · 0 评论 -
ArcEngine实现要素属性的标注及取消标注(20190904)
1、需求选择地图中的某一要素图层的属性,在地图中对其进行标注,同时,标注的颜色、字号、字体可以进行修改。另外,取消不需要的图层标注。2、解决方案1、控制图层标注的显示或隐藏通过IGeoFeatureLayer.DisplayAnnotation属性设置;2、IAnnotateLayerPropertiesCollection接口操作要素类图层,包括清除图层标注等;3、ILabelEngi...原创 2019-09-04 21:34:40 · 2059 阅读 · 0 评论 -
ArcEngine实现要素图层唯一值符号化(渲染)(20190909)
1、需求选择地图中某一要素图层的属性,对其进行唯一值符号化(相同的属性用同样的颜色渲染)2、解决方案(1)IUniqueValueRenderer接口实现要素唯一值的渲染;(2)IRandomColorRamp接口创建随机颜色带;3、界面设计主要有两个界面,分别是主窗体界面和唯一值符号化界面(1)主界面:(2)唯一值符号化界面4、代码实现实现要素图层属性唯一值设色的方法,这...原创 2019-09-09 21:48:52 · 3753 阅读 · 3 评论 -
ArcEngine制作专题地图(上,标题、图例)(20190920)
1、需求为地图添加地图的基本要素(图例、比例尺、指北针)及相关注记,并将地图导出为图片。2、解决方案(1)创建地图的基本要素主要用到IMapFrame接口中的CreateSurroundFrame方法;(2)控制地图的基本要素主要用到IMapSurround接口;(3)还有一个IMapSurroundFrame接口,这个是做什么的我也不知道怎么表达,代码中慢慢意会吧;(4)通过一个标志...原创 2019-09-20 21:03:34 · 3985 阅读 · 1 评论 -
ArcEngine使用Geoprocessor接口实现工具箱中的方法(以线要素平滑为例)(20190822)
1、前言接触AE开发也有一段时间了,现在基本的操作也算是熟悉了,既然作为ArcGIS的二次开发,理论上在ArcGIS中能实现的操作用AE都可以实现,尤其是ArcToolbox中的工具,功能非常丰富,在ArcEngine中用Geoprocessor接口调用工具箱即可实现工具箱中的功能,可以说是非常简单,这里以ArcGIS工具箱中“Cartography Tools–>Generalizati...原创 2019-08-22 22:23:26 · 2429 阅读 · 2 评论 -
ArcEngine新建文件地理数据库及其要素数据集,要素数据集加载(20190809)
1、需求为了完成拓扑分析模块,需要在系统中新增创建文件地理数据库、要素数据集并加载要素数据集中的数据一系列功能。2、设计思路很简单,和ArcGIS中新建文件地理数据库、导入数据、加载数据的功能一样:(1)创建文件地理数据库:选择某一位置,在选定的位置创建文件地理数据库;(2)创建要素数据集:选择已经建立的文件地理数据库,在该数据库中新建要素数据集(IFeatureWorkspace接口中...原创 2019-08-09 21:45:45 · 5263 阅读 · 1 评论 -
ArcEngine实现矢量数据的属性标准化(20190706)
1原创 2019-07-07 20:28:07 · 490 阅读 · 0 评论 -
ArcEngine连接地理数据库(20190702)
上一篇文章已经在postgreSQL中成功地新建了一个数据库,现在需要连接这个新建的数据库。在ArcGIS中对应的操作为ArcCatalog中Database Connection -->Add Database Connection。参考ArcGIS中连接地理数据库的工具,基于DevExpress插件设计了这一功能的界面:在选择了数据库类型,输入了IP、用户密码之后需要点击数据库名称...原创 2019-07-02 21:26:44 · 1606 阅读 · 0 评论 -
ArcEngine将含有坐标的Excel表导出成shp
ArcEngine将含有坐标的Excek表导出成shp转行做GIS二次开发的第一个需求,不算特别复杂的需求,但是对于新手的我来说也用了半天的时间,但是对于理解GIS中的图形的原理很有帮助,废话不多说,直接上干货。需求:将excel中的点数据连接成线并导出,excel中的记录如图所示:Excel中的“townfrom”列和“townto”列分别表示出发点编号和到达点编号,“PF”表示权重,这...原创 2019-06-28 21:38:05 · 1141 阅读 · 0 评论 -
ArcEngine实现两个地图控件(axMapControl)之间的联动(20190710)
在开发的系统上有一个小需求,关联两个地图,以分析不同时期相同地点的地物变化,也就是两个axMapControl之间的联动,针对这个需求简单的设计了如下的界面:当然,这个界面比较原始,仅仅作为一个原型来说明这一功能,在用图形化界面设置ArcToolbar的Item属性的时候,一定不要把某些item选择错了,比如FullExtent和Pan,千万不要选成Scene或Global中的FullExten...原创 2019-07-10 22:30:21 · 2111 阅读 · 0 评论 -
将CAD要素类中的点线面和注记按相应的"Layer"属性导出为shp文件(20190717)
最近公司事情太多,都一周没有写博客了,最近在做的事情是做一个将CAD矢量数据按照属性字段导出成shapefile的功能,CAD我不太了解,如果文章中对于CAD矢量数据有错误的地方也请大家指正,互相学习。要知道导出的方法,那么就应该先了解ArcGIS打开CAD数据的原理,下图是在ArcGIS中打开的一个dwg格式的矢量文件,在CAD中矢量数据是按照点线面注记来分层存储的,当然,这个数据还额外添加了...原创 2019-07-17 22:31:39 · 2608 阅读 · 2 评论 -
ArcEngine转换要素类的投影坐标系(20190722)
1、需求上一篇博客对不同坐标系统之间的转换做了简要的介绍,在此基础之上今天用ArcEngine来实现要素类投影坐标系转换的功能。2、设计思路(1)遍历IFeatureWorkspace中的所有shp,将其加到IFeatureClass的列表中,每一个IFeatureClass的Name添加到下拉列表框的Items中;(2)从下拉框中选择了IFeatureClass实例后,得到实例的Spat...原创 2019-07-22 21:39:21 · 1620 阅读 · 1 评论 -
ArcEngine实现各个图层面积\长度\个数的实时统计(20190804)
1需求在空间规划作业中,编辑要素时,我们需要同时知道编辑要素的面积或长度,以保证工程在预算范围之内,所以,我们需要有一个工具对编辑过程进行实时的检测。2设计思路(1)首先需要编辑Map中的所有图层,把符合统计条件的图层找出来,在这里符合条件的是shp数据,如果是shp数据则进行统计;(2)对符合条件的图层的各个要素(Feature)进行遍历,以求得每个要素(Feature)的长度\面积,求...原创 2019-08-04 21:08:06 · 1978 阅读 · 1 评论 -
ArcEngine创建拓扑并验证拓扑(20190813)
1、需求在空间分析中,有时需要判断要素与要素之间的关系,比如,在一个国家的所有省份必须要填满整个国界,不得有缝隙,再比如,省份与省份之间不能有重叠等,这些例子网上已经很详细了,这里就不多说了。我们需要做的就是在上一篇博客(https://blog.csdn.net/weixin_41607453/article/details/98991762)建立好了要素数据集、文件地理数据库的基础之上创建拓...原创 2019-08-13 21:46:15 · 2716 阅读 · 5 评论 -
ArcEngine创建企业地理数据库(20190701)
在项目上,经常需要针对不同的分析、需求建立不同的数据库,本文就基于ArcEngine实现这一功能。这一功能在ArcGIS中相当于“Data Management Tools–>Geodatabase Administration–>Create Enterprise Geodatabase”工具。当然,我是因为接手了任务才知道建立企业数据库,对企业数据库的原理和优缺点也并不是特别了解,...原创 2019-07-01 21:55:53 · 674 阅读 · 4 评论