随笔分类 -  C#与AE

在学习工作中的经验体会
摘要:最近在用CSLA做数据管理的功能。有个功能需要查看一个表b1,但一些字段的信息要从表b2中获取,这就需要每次获取b1的一行值就需要遍历b2的所有集合。刚开始的时候是这样写的: /// <summary> /// 获取测点名称和类别 /// </summary> /// <param name="name">测点名称</param> private void SetNameAndType(string name) { //设置设备名和型号 if (name != null) { MeasurePntList meaLst=Mea 阅读全文
posted @ 2012-11-29 15:56 心平_气和 阅读(250) 评论(0) 推荐(0)
摘要:using System; namespace ConsoleApplication{ class Program { static void Main(string[] args) { people p = new people("Name1"); p.PropertyChanged += new EventHandler(p_PropertyChanged);//注册事件处理函数 p.Name = "Name2"; Console.ReadKey(); } static void p_PropertyChanged(object sender, Ev 阅读全文
posted @ 2012-11-09 09:17 心平_气和 阅读(6665) 评论(0) 推荐(3)
摘要:在编程的过程中,特别是AE二次开发或office二次开发的过程中,在调用已有函数时,需要传入较多的参数,如在excel二次开发时,对一个单元格进行操作,需要传入字体信息、边框样式、内容等。结构体如下: /// <summary> /// 报表列头信息 /// </summary> public struct ExcelColumnHead { /// <summary> /// 起始单元格行索引 /// </summary> public int StartRow; /// <summary> ... 阅读全文
posted @ 2012-09-25 09:01 心平_气和 阅读(582) 评论(0) 推荐(0)
摘要:实现过程:创建或打开一个FileGDB-->创建或打开一个栅格目录-->选择一个文件夹,把此文件夹下的栅格数据导入栅格目录:下面为核心代码using System;using System.IO;using ESRI.ArcGIS.DataSourcesGDB;using ESRI.ArcGIS.DataSourcesRaster;using ESRI.ArcGIS.Geodatabase;using ESRI.ArcGIS.Geometry;using ESRI.ArcGIS.DataManagementTools;using ESRI.ArcGIS.Geoprocessor;u 阅读全文
posted @ 2012-07-20 10:13 心平_气和 阅读(5053) 评论(0) 推荐(0)
摘要:做GIS二次开发,不论用什么语言或二次开发工具,只要对图形的操作,都会涉及到空间参考的问题,至于空间参考的基础知识我就不再强调了!在做栅格裁剪的时候,也会涉及到空间参考的问题,主要有一下几个地方,有栅格图的空间参考、矢量图的空间参考、剪裁后栅格图的空间参考,最好这三个参考是一致的,如果不一致就要让他一致,以下为例子代码:pRaster为原栅格图,pPolygon为矢量图的上的某个面要素的最大外环。以原栅格图为参考基准。重点在于投影空间参考! //多边形裁剪 、矩形裁剪 public void CutByPolygon(ILayer layer, IGeometry clip... 阅读全文
posted @ 2012-07-14 09:45 心平_气和 阅读(2519) 评论(1) 推荐(1)
摘要:对于很多应用功能,有时需要获取指定目录下的指定后缀名文件以实现批处理。以下为事例代码:取到的文件放入动态数组中……/// <summary> /// 获取某一扩展名的文件集合 /// </summary> /// <param name="dictoryName">目录名</param> /// <param name="fiterName">扩展名</param> /// <returns>文件名集合</returns> public List<str 阅读全文
posted @ 2012-07-06 14:51 心平_气和 阅读(2593) 评论(0) 推荐(0)
摘要:在AE二次开发过程中很多时候需要克隆对象,如IMap ,ILayer,IDomain,IElement等等,如果简单的用等于是行不通的,如果每一个细节的赋值,又容易遗漏很多东西。所以就提供了深度克隆的方法:以IDomain深度克隆为例: IObjectCopy pObjectCopy = new ObjectCopyClass(); object preDomain = pObjectCopy.Copy(perDomain);//对象的深度复制 IDomain acessDomain = preDomain as IDomain;这样就会把值域的名称、描述及代码等细节都会一个不落的克隆过去。. 阅读全文
posted @ 2012-07-05 21:39 心平_气和 阅读(1068) 评论(0) 推荐(0)
摘要:用ArcEngine做二次开发,做查询并对查询到的数据做修改是再正常不过的事情了!最近也做了一点这方面的学习。在查询过程中,主要用到,Search、Select、Update等方法。以下对几种方法做简要的介绍:1、 用ISelectionSet接口查询,返回IDs,再根据IDs获取要素,我现在用的是这种方法,因为我频繁的查数据,如果用游标就会产生大量的游标,很容易出现如“不能打开其他表了”或“调用COM组件错误”等错误提示。 IQueryFilter pQueryFilter = new QueryFilterClass(); pQueryFilter.WhereClause = " 阅读全文
posted @ 2012-07-03 10:41 心平_气和 阅读(1484) 评论(0) 推荐(0)
摘要:最近测试了一个AE+C#二次开发的程序,做过AE二次开发的都知道,开发主要是基于图形的,也就是说基于ArcGIS的多种图形格式,如最普遍的点、线、面图层,一般做某些功能也是以图层为单元的!当然也非为矢量和栅格了!这就要求我们在编码的过程中注意格式的判断和筛选。如果不加严格的筛选控制,将出现大量的bug。下面举几个例子: 1)格式筛选,矢量和栅格作为GIS行业的两大格式,不同的GIS功能针对不同的格式。如做影像拼接就不可以加载矢量图。如果做拓扑检查就不可以用栅格图。 2)要素类型筛选,对于某些功能,特别是针对某个行业的GIS功能,对要素类型是有要求的,比如林业,一般是对面进行处理,这就要求程序员 阅读全文
posted @ 2012-06-11 08:38 心平_气和 阅读(590) 评论(0) 推荐(0)
摘要:最近做了一下Excel相关的程序,学到了不少东西,在此感谢博客园中无私奉献的园友们。很多资料和信息都是从博客园获取的!1、完美关闭Excel进程思路:只把EXCEL进程kill是不够的,还必须把全局变量中的所有与Excel操作相关的excel变量赋值为null才可以!代码如下:View Code 1 private void QuitExcelApp() 2 { 3 if (excelApp != null)//excelApp全局变量 4 { 5 //关闭EXCEl进程,只把EXCEL进程kill是不够的, 6 ... 阅读全文
posted @ 2012-05-31 10:18 心平_气和 阅读(2263) 评论(0) 推荐(1)
摘要:最近正在做一些简单的测试工作,很不专业的那种,就是最简单的功能测试,测试有没有bug、界面操作方式怎么样!忘了说了,我测试的是一个GIS专业软件,针对某个特定领域的,用的是AE+C#开发出来的!下面谈谈我这几天的收获吧。 1、系统定位。对于一个应用GIS系统,必然是针对某个领域的,这个领域一定有其独有的特点,有其最在乎最常用的功能。所以,一定要对这个领域这个行业有一个全面的了解,说的极端点就是这个系统只能针对这个领域,其他领域就用不成!千万不要做出来和ArcGIS似的,样样都行,那就意味着什么都干不成。 2、操作紧跟需求。“操作”指的是用一个功能,完成一个工作的流。对于某个领域来说,一个工作. 阅读全文
posted @ 2012-05-29 13:20 心平_气和 阅读(1956) 评论(0) 推荐(0)
摘要:在做AE开发时,有的功能需要获取某个图层选择的要素,以下是部分代码(非原创):注:对于一个文档map做处理时,一定要注意ILayer是矢量IFeatureLayer或栅格IRasterLayer,两者是有很大不同的!ILayer pLayer;IFeatureLayer pFeatureLayer;IQueryFilter queryFilter = new QueryFilterClass();IFeatureSelection pFeatSelection = pFeatureLayer as IFeatureSelection;ISelectionSet selectionSet = . 阅读全文
posted @ 2012-05-02 19:16 心平_气和 阅读(641) 评论(0) 推荐(0)
摘要:现在有个shp,里面只有SID这个关键字段,其它属性都在excel里面,通过关键字匹配然后生成新shp。步骤如下:1、用ArcCatalog在shape里建字段(字段最好与EXCEl表中的字段名一致,类型必须一致)。2、在ArcMap中打开shape文件,根据匹配字段建立连接关系。可以先打开编辑状态,因为如果数据量很大,进入编辑状态很慢!3、编辑状态下打开要更新的shape文件属性表。在要更新的字段上点击右键,选择计算字段。然后再选择对应的Excel字段就更新上去了! 这是用ArcGIS自带的软件做的,如果要用AE编程也可以实现。思路大体也是这样的!注:此思路是与同学讨论整理出来!在此感谢我的 阅读全文
posted @ 2012-04-17 09:38 心平_气和 阅读(3993) 评论(0) 推荐(0)
摘要:今天做了一个闪屏的功能,在网上查了很多资料,但总是在主窗体显示前关闭不了闪屏窗体,最后是把关闭闪屏放到主窗体的构造函数里执行就好了!Form_Load事件发生在窗体显示之后,所以最好把加载菜单和工具条等操作放到后台执行,即写到窗体的构造函数中。如果不写到构造函数中,而写到Form_Load事件中,就显得主窗体加载比较慢。特别对于AE二次开发尤为重要。ArcMap中的闪屏就是把所有模块都加载好后才让用户看到,大家可以想象一下,如果模块在闪屏后加载,会有什么感觉。这是我再构造函数中写的代码: InitializeComponent();//加载控件 Init();//动态初始化菜单和工具条Spl. 阅读全文
posted @ 2012-03-28 17:12 心平_气和 阅读(286) 评论(0) 推荐(0)
摘要:1、日期控件的应用dtpTime.Value=dtpTime.Value.AddDays(1);2、dateTimePicker时间控件,可基本满足应用程序对时间显示和设置的要求。3、日期操作技巧01-01")).AddDays(-1).ToShortDateString();//下年度DateTime.Parse(DateTime.Now.ToString("yyyy-01-01")).AddYears(1).ToShortDateString();DateTime.Parse(DateTime.Now.ToString("yyyy-01-01&quo 阅读全文
posted @ 2012-03-15 09:07 心平_气和 阅读(281) 评论(0) 推荐(0)
摘要:1、 在编程的过程中,尽量把一个大的函数分割成小的函数,小的函数可以更好的复用,也更灵活,原则上不要超过100行(我的建议)。应该以实现一个独立小功能为单位。同时尽量不要有外部数据,一旦有外部数据会影响函数的独立性。2、 方法和函数是对一个动作的分装,尽量细化,最好是1-15行即可。能被两个以上方法调用的要考虑方法的适用性。每个方法要加注释,如有后置或前置条件必须在注释中写明,也要写上此方法的用途及方法中参数的含义。有利于调用和再次修改维护。3、由于嵌套for语句将消耗很大的资源,所以在实际开发项目时,能不使用嵌套for语句尽量不要使用。4、设置基础窗体的样式,其他窗体继承,可以保证窗体样式的 阅读全文
posted @ 2012-03-14 09:02 心平_气和 阅读(657) 评论(2) 推荐(0)
摘要:刚开始写C#窗体应用程序时,总是要在窗体上加上确定和删除按钮,还要在对应按钮下写某些内容,想着怎样把确定按钮和Enter键联动?这几天看了别人写的程序,发现在窗体有自带的属性AcceptButton和CancelButton。只需要在AcceptButton中把确定按钮的name赋值给它就OK了。即方便又省事! 阅读全文
posted @ 2012-03-12 11:37 心平_气和 阅读(469) 评论(0) 推荐(0)