随笔分类 -  ArcGIS Engine

ArcGIS Engine开发学习与实践
摘要:思考点线面的绘制过程:1. 考虑ITool与控件AxMapControl的参数传递,这里HookHelper的Hook属性用AxMapControl.Object赋值。AxMapControl(.Net对象)对MapControl(COM对象)进行了封装。2. 明显所有的绘制都涉及控件这几个事件Mouse_Down、Mouse_Move、Mouse_Up、DoubleClick;事件是控件的,IMapControlEvents2中几个事件的定义:而Itool中只有如下三个重载的方法,注意参数不一样。public virtual void OnMouseDown(int Button, int 阅读全文
posted @ 2013-05-04 11:22 太一吾鱼水 阅读(534) 评论(0) 推荐(0) 编辑
摘要:一直在思考如何利用AE开发应用系统,现在有有些想法,以煤矿地质信息管理系统为例。基础底图:采掘工程平面图、井上下对照图。空间数据,图形方式管理,数据存储在空间数据库中,利用SDE或者Geodatabase。地质信息:非空间数据,在图上展示。钻孔要三维可视化。基础底图数据采用Xml文件进行配置,在二维视图和三维视图显示。地质钻探信息基于关系数据库进行管理,动态生成在视图中显示。不应该使用TocControl,自定义目录树;抛开Mxd文档,符号信息存储到.lyr中,或者序列化Ilayer,或者序列化Renderer对象,可以缓存在本地,也可以存储在数据库中。实质是空间库和非空间两个库并存。 阅读全文
posted @ 2013-04-25 20:13 太一吾鱼水 阅读(348) 评论(0) 推荐(0) 编辑
摘要:阅读:http://www.cnblogs.com/hans_gis/archive/2011/07/22/2114013.html转载:http://resources.arcgis.com/zh-cn/content/kbase?fa=articleShow&d=37879 Error: ArcGIS Engine Controls fail to build using Visual Studio 2010 on a 64-bit OSArticle ID:37879Software:ArcGIS Engine Developer Kit 10Platforms:Windows 阅读全文
posted @ 2013-04-09 17:17 太一吾鱼水 阅读(2974) 评论(2) 推荐(1) 编辑
摘要:前期开发了一个三维交互查询要素属性值的功能,用到了FeatureLayer实现的IIdentify2接口。如果想实现在SceneControl中查询栅格像元属性值应该怎么做? 首先查询OMD,想找到IIdentify2类似的接口。而IRasterLayer并没有直接实现IIdentify2接口。倒是其父类DisplayLayer实现了IIdentify接口。IIdentify接口只有一个Identify方法:帮助中其描述如下:When the IIdentify interface is on a map layer, the Identify method returns an arr... 阅读全文
posted @ 2013-04-04 13:37 太一吾鱼水 阅读(2468) 评论(4) 推荐(0) 编辑
摘要:今天和同门解决了一个问题,这个问题12年6月份就遇到,困拢了我们近7个月。使用esri的arcsde建库,有些表在arccatalog中不可见。今天才发现原来是表名冲突了,以D101这样的放式命名,居然和内部的增加表(A)和删除表(D)冲突,真是没想到,虽然知道SDE版本控制时有有这么两个表,但是没有想到他也会这样命名,要不是他们在arcmap中注册为版本编辑了这些要素类或者Table,通过Oracle发现多了以sde.A123和sde.D131这样的表,真的不会发现会是这种问题!本来是通过ArcDiagramer建立的OMD,然后导出XML,在ArcCatalog中直接导入建立数据库,之所以 阅读全文
posted @ 2013-01-24 20:39 太一吾鱼水 阅读(268) 评论(0) 推荐(0) 编辑
摘要:如何在SceneControl中绘制面?目前好像没有找到相关的代码,我的目的是在ArcScene中显示垂直剖切的剖面,但是面要素类不可以是垂直的!所以只有借助Multipatch了。绘制面这个功能在ArcScene中已经实现了,在ArcScene中获得点是基于现有的面或者要素相交得到的。并不是很... 阅读全文
posted @ 2012-07-30 08:51 太一吾鱼水 阅读(882) 评论(6) 推荐(0) 编辑
摘要:有些工作看似简单,其实真正做起来还是需要很花一些功夫的!别人开发了唯一值着色程序,本想拿来用无奈做的实在没有办法满足要求,所以只好自己开发。不多言,先上截图: 这里做了一个颜色显示控件ColorRampComboBox,主要可以返回色带的起始颜色FromColor和ToColor。还定义了一个事件和属性SelectedIndex;ColorRampComboBox 1 using System; 2 using System.Drawing; 3 using System.Windows.Forms; 4 using System.Drawing.Drawing2D; 5 6 nam... 阅读全文
posted @ 2012-07-26 11:15 太一吾鱼水 阅读(1074) 评论(2) 推荐(0) 编辑
摘要:把Mxd文件压缩上传测试代码!View Code 1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.IO.Compression; 6 using System.IO; 7 using ESRI.ArcGIS.DataSourcesGDB; 8 using ESRI.ArcGIS.esriSystem; 9 using ESRI.ArcGIS.Geodatabase; 10 using ESRI.ArcGIS... 阅读全文
posted @ 2012-05-23 17:48 太一吾鱼水 阅读(624) 评论(0) 推荐(0) 编辑
摘要:前一段时间分析了MapControl和PageLayoutControl同步的一些问题,自己也根据原来的思路做了一些工作,但是存在的一个很大的问题就是,对于多文档程序,获取axPageLayoutControl1.ActiveView.FocusMap直接传递给axMapControl1时屏幕刷新老是出问题。如果对axPageLayoutControl1中的MapFrame操作过于频繁还会出现“内存损坏”的报错。感觉应该是让axPageLayoutControl1和axMapControl1共用一个IMap出了问题。不能共用一个IMap,那就只能通过拷贝的方式了。查了兰小机的书,还真的这么.. 阅读全文
posted @ 2012-04-09 16:35 太一吾鱼水 阅读(1381) 评论(1) 推荐(1) 编辑
摘要:今天希望用自己编的编辑模块编辑一下Geodatabase中的要素图层,因为属性编辑框用的是一个CommandClass所以自己以为应该没有问题,应该可以显示关联关系信息。但是点击几下要素都没有显示属性内容,点多了窗体就自动消失!很是莫名!难道是ArcEngine没封装好? 找了资料,原来是这样:DescriptionThe CLSID of thiscommandis:{A554ADBC-D0DD-469A-8A95-B4CEED0794C3}.This command works with the ToolbarControl, PageLayoutControland MapCont... 阅读全文
posted @ 2012-04-03 18:50 太一吾鱼水 阅读(1078) 评论(4) 推荐(0) 编辑
摘要:地图视图和版面视图同步是从开始AE编程就接触的问题!现在再来分析主要还是因为制图的需要,我希望将多个Data Frame放到一个版面视图中显示和打印。ArcGIS提共了“插入”——>“New Data Frame”功能。可以很好的解决这个问题,但是前期自己做的都是读取MapDocument中的一个地图对象,通过mapDoc.GetMap(0);来获取IMap,这真是对MapDocument的大材小用,MapDocument可以包括多个地图,可以包括版面中的多个制图信息如地图整饰的信息、TableFrame的信息等等。 在AE中找了半天,没有找到DataFrame命名的类,郁闷了半天。Ma 阅读全文
posted @ 2012-03-31 12:02 太一吾鱼水 阅读(1696) 评论(1) 推荐(0) 编辑
摘要:1. 获取Map中选择的元素(Element)View Code IGraphicsContainer m_GraphicsContainer =axMapControl1.Map as IGraphicsContainer; m_GraphicsContainer.Reset(); IGraphicsContainerSelect pGraphicSelect = m_GraphicsContainer as IGraphicsContainerSelect; //pGraphicSelect.SelectedElements... 阅读全文
posted @ 2012-03-28 10:47 太一吾鱼水 阅读(1466) 评论(0) 推荐(0) 编辑
摘要:在AE数据处理过程中,数据量往往不小,单线程处理往往由于主线程阻滞导致用户就不能进行其他操作了,还会出现假死的状态。因此前端出现一个等待窗体或者进度条,在后台线程处理数据是很有必要的!今天计划实现这样的一个功能,使用BackgroundWorker来实现。首先还是要参考已有的例子!(水平低,没办法啊!)http://msdn.microsoft.com/zh-cn/library/b2zk6580(v=vs.85).aspxView Code using System;using System.Collections;using System.ComponentModel;using Syst 阅读全文
posted @ 2012-03-16 16:32 太一吾鱼水 阅读(401) 评论(2) 推荐(0) 编辑
摘要:一直都犯了严重的错误,妄想将SqlServer或者Oracle中的多张具有关联关系的表存储到Geodatabase中,而且存储成包括要素类、表和关系的这样多个对象!数据验证让我头疼不已。存入关系数据库中的数据还不完整,比如坐标,这样数据验证的操作就让我无法忍受了。 那不如换一种思路:直接通过关联查询关系数据库,将查询结果存储到Geodatabase中,这样数据存在冗余,但是这样的冗余数据是和制图显示紧密结合的。参考Surfer软件的数据方式就可以了,干嘛搞的那么复杂?正解。一定要想法把问题简单化,不然把自己头搞大了也不行。 阅读全文
posted @ 2012-03-15 13:58 太一吾鱼水 阅读(289) 评论(1) 推荐(0) 编辑
摘要:前面实现的编辑功能存在以下问题:没有与属性表编辑联动,对于分组图层无法编辑,没有考虑不同工作空间的情况,没有考虑版本的问题,没有设置右键菜单……今天解决没有与属性表编辑联动,对于分组图层无法编辑两个问题:1. 实现与界面分离的编辑事件类,只需传入编辑工具条按钮进行构造,执行OnCreate()方法。View Code 1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using ESRI.ArcGIS.Controls; 6 using E... 阅读全文
posted @ 2012-03-10 12:55 太一吾鱼水 阅读(1850) 评论(8) 推荐(0) 编辑
摘要:有些沮丧,ArcGIS9.3的汉化包居然能够汉化AE!以前从来没有用过。现在实现ArcEngine的属性编辑似乎没有多少意义了!只要调用ToolBarControl添加相关的Command按钮就行了!唯一的理由就是为了界面布局的统一,哎!原来开发可以这样简单。不过理解ArcGIS和AE的设计思想确实是不应该放弃的。 接下来要学习并实现属性表的编辑,是指在属性窗体中进行批量修改! 学习内容主要是ArcDataBinding2008项目,这是AE自带的示例程序。首先这个项目包括两个类FieldPropertyDescriptor和TableWrapper;FieldPropertyDesc... 阅读全文
posted @ 2012-03-08 14:54 太一吾鱼水 阅读(1697) 评论(5) 推荐(1) 编辑
摘要:这里给出采用混合模式开发编辑工具条的完整代码,但是没有给出界面,相信熟悉ArcGIS操作的朋友一定可以设计出类似的界面。功能还有不少不完善的地方,希望感兴趣的朋友可以帮忙改进!View Code 1 using System; 2 using System.Collections.Generic; 3 using System.ComponentModel; 4 using System.Data; 5 using System.Drawing; 6 using System.Linq; 7 using System.Text; 8 using System.Windows.... 阅读全文
posted @ 2012-02-27 11:39 太一吾鱼水 阅读(6165) 评论(11) 推荐(1) 编辑
摘要:我已经出离的愤怒了,对于这个问题一年半以前曾经研究过,上过学期又回过头来弄过,但是到现在我仍然没有像样的把这个问题解决掉!所以下定决心抽一点时间把这个问题解决一下。不求做出来的东西功能多么全面,但求弄够实现基本功能! 参考了一些代码,但是还是没有完全得到要领!目前开发ArcGIS编辑模块有两种方式:一种是用IEngineEditor接口。 先来实践混合用的,http://www.gisall.com/html/52/25952-2752.html文中提出:EditTool用ControlsEditingEditToolClassSketchTool用ControlsEditingSke... 阅读全文
posted @ 2012-02-26 11:30 太一吾鱼水 阅读(6148) 评论(2) 推荐(0) 编辑
摘要:在Geodatabase中有一张Table,希望通过AE开发的方式将信息存储到表的一个Blob字段中。这个该如何实现? 1 IWorkspaceName pWpsName = null; //当前工作空间名称 2 pWpsName= GWorkSapce.CreateAccessWorkSpace(); 3 if (pWpsName==null) 4 { 5 return; 6 } 7 m_WorkspacePath = pWpsName.P... 阅读全文
posted @ 2012-02-22 15:34 太一吾鱼水 阅读(616) 评论(3) 推荐(1) 编辑
摘要:1. 创建工作空间工厂——EDNView Code public void IWorkspaceFactory_Create_Example_Access() {// create a new Access workspace factory IWorkspaceFactory workspaceFactory = new ESRI.ArcGIS.DataSourcesGDB.AccessWorkspaceFactoryClass(); // Create a workspacename with the workspace factory IWorkspaceN... 阅读全文
posted @ 2012-02-06 10:24 太一吾鱼水 阅读(1970) 评论(2) 推荐(0) 编辑

点击右上角即可分享
微信分享提示