趁着这次总结的机会,就想着把这几个星期编的小功能都写成博客记录下来,省的之后遗忘,我写这些东西也算是给自己加深印象吧,鱼的记忆哈哈。

一、AE缓冲区接口和类

还是老生常谈,先来了解实现缓冲区功能都需要那些接口和类:
GP工具:也就是Geoprocessor类,这其中主要是封装了输入路径、输出路径还有就是可以调用各种工具的函数方法。它给我的感觉类似于原来我是一亩地一亩地的打农药,突然有一天来了一架飞机直接在天上散农药,一下子活就干完了。这GP工具就是那飞机,它大大的提高了效率。
Buffer类:这里注意了这是AnalysisTools下的Buffer类,我记得有两个buffer类,下图是Buffer类中的参数设置表。
图有点不清晰,我就只能截一点相对重要的信息。

二、功能的实现

2.1功能实现代码

   private IActiveView pActiveView;private AxMapControl mapControl;//通过构造函数获取MapControl控件public BufferAnalysis(AxMapControl mainmapControl): this(){mapControl = mainmapControl;pActiveView = mainmapControl.ActiveView;}//输出路径private void button1_OutputPath_Click(object sender, EventArgs e){SaveFileDialog saveDlg = new SaveFileDialog();saveDlg.Filter = "Shapefile(*.shp)|*.shp";if (saveDlg.ShowDialog() != DialogResult.OK) return;textBox2_OutputPath.Text = saveDlg.FileName;}//生成窗体函数private void BufferAnalysis_Load(object sender, EventArgs e){if (mapControl == null || pActiveView.FocusMap.LayerCount == 0){return;}IEnumLayer layers = pActiveView.FocusMap.get_Layers();layers.Reset();ILayer layer = layers.Next();while (layer != null){comboBox1_ChooseLayer.Items.Add(layer.Name);layer = layers.Next();}}//确认分析private void button2_OK_Click(object sender, EventArgs e){double bufferDistance = Convert.ToDouble(textBox1_BufferDistance.Text.Trim());if (bufferDistance == 0.0){MessageBox.Show("缓冲区距离有误!");return;}if (comboBox1_ChooseLayer.Text == string.Empty){MessageBox.Show("输入图层不能为空!");return;}if (textBox2_OutputPath.Text == string.Empty){MessageBox.Show("输出路径不能为空!");return;}int index = comboBox1_ChooseLayer.SelectedIndex;string name = getLayerPath(pActiveView.FocusMap.get_Layer(index));string outPath = textBox2_OutputPath.Text.Trim();Geoprocessor pGp = new Geoprocessor();pGp.OverwriteOutput = true; //允许运算结果覆盖现有文件,可无ESRI.ArcGIS.AnalysisTools.Buffer pBuffer = new ESRI.ArcGIS.AnalysisTools.Buffer();//获取缓冲区分析图层ILayer pLayer = pActiveView.FocusMap.get_Layer(index);IFeatureLayer featLayer = pLayer as IFeatureLayer;//IFeatureCursor cursor = featLayer.Search(null, false);//IFeature feaClass = cursor.NextFeature();pBuffer.in_features = featLayer;pBuffer.out_feature_class = outPath; //输出路径pBuffer.buffer_distance_or_field = bufferDistance; //缓冲区参数pBuffer.dissolve_option = "NONE"; //融合缓冲区重叠交叉部分,如果不融合填"ALL"pGp.Execute(pBuffer, null); //执行string pFolder = System.IO.Path.GetDirectoryName(outPath); //得到字符串中文件夹位置string pFileName = System.IO.Path.GetFileName(outPath); //得到字符串中文件名字mapControl.AddShapeFile(pFolder, pFileName); //往地图控件里添加文件mapControl.ActiveView.Refresh(); //激活窗口刷新this.Close();}//获取图层源路径private string getLayerPath(ILayer pLayer){IDatasetName pDatasetName = (pLayer as IDataLayer2).DataSourceName as IDatasetName;IWorkspaceName pWorkspaceName = pDatasetName.WorkspaceName;return pWorkspaceName.PathName +"\\" +pLayer.Name+".shp";}

为了省事,我直接将代码整个复制过来了哈哈。

2.2功能实现效果

三、过程总结

GP工具的出现大大的提升了编程的速度,但是这也使得我们变得“肤浅”,不过现在对我这种小白来讲现在的主要矛盾其实还是学习怎么使用GP工具,其他的日后再说吧哈哈。

C#+AE缓冲区分析相关推荐

  1. AE二次开发中几个功能速成归纳(符号设计器、创建要素、图形编辑、属性表编辑、缓冲区分析)...

    /** 实习课上讲进阶功能所用文档,因为赶时间从网上抄抄改改,凑合能用,记录一下以备个人后用.** -------------------------------------------------- ...

  2. C# 基于AE的GIS二次开发 空间分析 缓冲区分析(Buffer) 相交(Intersect) 联合(Union)

    调用GP工具实现空间分析的; 需引用命名空间: using ESRI.ArcGIS.AnalysisTools;//添加引用 在Arcgis10.2\DeveloperKit10.2\DotNet\T ...

  3. SuperMap.IS.AjaxScript缓冲区分析及专题图制作

    在缓冲区分析上,SuperMap.IS.AjaxScript提供的主要功能函数有spatialAnalystManager.BufferQuery(bufferParam,qeruyParam,onC ...

  4. 【ArcGIS风暴】缓冲区分析、叠置分析综合实验案例:购房区域的选择

    实验平台:ArcGIS 9.3 实验目的:熟练掌握A rcGIS缓冲区分析和叠置分析操作,综合利用各项空间分析工具解决实际问题. 实验要求:对每个条件进行缓冲区分析,运用空间叠置分析对多个图层叠加,并 ...

  5. ArcGIS实验教程——实验十七:缓冲区分析(Buffer Analysis)

    ArcGIS实验视频教程合集:<ArcGIS实验教程从入门到精通>(附配套实验数据) [实验描述] 缓冲区(Buffer)是为了识别某一地理实体对周围地物的影响而在其周围建立的一定宽度多边 ...

  6. 缓冲区分析—ArcGIS API for JavaScript

    缓冲区分析是地理信息系统中的空间分析基本功能之一,是众多空间分析方法的基础.缓冲区分析是指为了识别某地理实体或空间物体对其周围的邻近性或影响度而在其周围建立的一定宽度的带状区. 缓冲区介绍 缓冲区分析 ...

  7. Oracle Spatial 空间分析之缓冲区分析

    缓冲区分析需要主要使用Oracle Spatial 空间分析操作函数,下面会对其各个参数进行详细讲解,资料有来源于网上与书上. 使用Oracle Spatial 空间分析操作函数--SDO_WITHI ...

  8. GIS应用技巧之缓冲区分析

    一.缓冲区介绍 缓冲区是地理空间目标的一种影响范围或服务范围,是对选中的一组或一类地图要素(点.线或面)按设定的距离条件,围绕其要素而形成一定缓冲区多边形实体,从而实现数据在二维空间得以扩展的信息分析 ...

  9. ArcGis缓冲区分析

    所以我的思路如下: 使用arcgis javascript api 的Draw工具( esri/toolbars/draw ),主要功能是绘制出点线面. 然后再计算绘制出来的图形,这里需要使用geom ...

最新文章

  1. IDEA 一些基本概念
  2. word的小操作--页码的编辑
  3. 常用的JavaScript模式
  4. Java多线程之synchronized(二)
  5. 20应用统计考研复试要点(part15)--应用多元分析
  6. 为什么软件测试需要变革?
  7. Spring Boot 事务支持
  8. eclipse远程连接hadoop_hadoop上搭建hive
  9. mysql linux压缩包官网下载_mysql for linux 压缩包下载
  10. hbase 中文乱码 查询_如何在 HBase Shell 命令行正常查看十六进制编码的中文?哈哈~...
  11. 【codevs1245】最小的N个和
  12. python数据结构之图深度优先和广度优先
  13. 【动态规划】FatMouse's Speed
  14. Weak Pointer
  15. 最新版 Whatsapp 官网下载安装
  16. 机器学习实战——2.3 示例:手写识别系统
  17. 自学php多久可以工作_php自学要多久,学php难吗,多久能学会?
  18. Adobe Premiere导出文件过大
  19. 消防安全监测模块,筑牢工厂消防安全屏障
  20. sap成本流怎么看_[原创]SAP方丈-写给新手的SAP成本核算流程

热门文章

  1. 英语单词学习 - 记忆版(English Vocabulary):Clothes Vocabulary:List of Clothes and Accessories in English
  2. Python实现:读入一个正整数 n,计算其各位数字之和,用汉语拼音写出和的每一位数字
  3. kill -9 无法杀死进程解决
  4. MaoKePlayer猫客影音播放器
  5. matlab 画图的颜色
  6. U盘出现打不开或者无法访问
  7. php大文件 readfile,php – Readfile()和大文件
  8. 杰里之电池和磁铁引起的机械振动声【篇】
  9. ubuntu 搭建实验室多人使用服务器
  10. 必背五十句户外经典英语口语 绝对实用!