当前位置: 首页 > news >正文

ArcEngine C#二次开发图层处理:根据属性分割图层(Split)

需求:仅根据某一属性,分割图层,并以属性值命名图层名称保存。

众所周知,ArcGIS ArcToolbox中通过Split可以实现图形分割一个图层,以属性值命名图层,如下图所示。

本文仅仅依据属性值,将一个shp图层,自动分割成多个图层shp。当然如果不嫌麻烦,可以通过选中feature,使用export,逐批次导出图形,也可以实现,实现该功能主要是分割大量数据,节省时间。

使用VS C# 2012 ArcEngine10.2二次开发,操作模式如下图:

一、实现界面如下图:

二、执行步骤:

1.选择输入图层(shp、gdb等arcgis通用图层);

2.选择属性列(split field)

3.选择一个或多个属性值

4.保存导出shp图层,图层名以属性值命名。

三、输出结果shp图层,如下图:

四、关键代码

public void SplitByFieldShp(IFeatureClass inputFeatureClass, string inputfieldValue, string outputPath){//创建一个Geoprocessor工具类Geoprocessor geoprocessor = new Geoprocessor();try{//1.创建一个临时图层geoprocessor.OverwriteOutput = true;MakeFeatureLayer makefeature = new MakeFeatureLayer();makefeature.in_features = inputFeatureClass;makefeature.out_layer = "temp_lyr";//临时图层名称geoprocessor.Execute(makefeature, null);//2.通过属性查找featureSelectLayerByAttribute selectTool = new SelectLayerByAttribute();selectTool.in_layer_or_view = makefeature.out_layer;selectTool.selection_type = "NEW_SELECTION";selectTool.where_clause = selectField + " = '" + inputfieldValue + "'";geoprocessor.Execute(selectTool, null);//3.导出选择图层              ESRI.ArcGIS.DataManagementTools.CopyFeatures copyfeature = new ESRI.ArcGIS.DataManagementTools.CopyFeatures();copyfeature.in_features = selectTool.out_layer_or_view;copyfeature.out_feature_class = outputPath + @"\" + inputfieldValue + ".shp";geoprocessor.Execute(copyfeature, null);}catch (Exception ex){//如果出错,输出GP内部错误信息object sev = null;string msgs = geoprocessor.GetMessages(ref sev);MessageBox.Show(msgs);}}

五、小结:如其说依据分割功能,不如说实现了选择功能,然后导出符合条件的要素。提供关键代码,一起学习共享。

http://www.lryc.cn/news/448124.html

相关文章:

  • 【二叉平衡搜索树】Treap
  • Spring Boot 应用Kafka讲解和案例示范
  • 以到手价为核心的品牌电商价格监测
  • Android中使用RecyclerView制作横向轮播列表及索引点
  • Llama 3.1 技术研究报告-2
  • 【深度学习】05-RNN循环神经网络-02- RNN循环神经网络的发展历史与演化趋势/LSTM/GRU/Transformer
  • C++学习9.27
  • 【STM32开发环境搭建】-1-Keil(MDK) 5.27软件安装和注册教程
  • 武汉正向科技格雷母线公司,无人天车系统,采用格雷母线定位技术
  • 【保姆级教程】批量下载Pexels视频Python脚本(以HumanVid数据集为例)
  • Python画笔案例-067 绘制配乐七角星
  • Spark Job 对象 详解
  • C#中NModbus4中常用的方法
  • 【Linux】线程同步与互斥
  • 003、网关路由问题
  • Eclipse 快捷键:提高开发效率的利器
  • Agent智能体
  • 用Promise实现前端并发请求
  • 通过队列实现栈
  • Mac下可以平替paste的软件pastemate,在windows上也能用,还可以实现数据多端同步
  • 106. 从中序与后序遍历序列构造二叉树
  • 监控和日志管理:深入了解Nagios、Zabbix和Prometheus
  • Win10下载Python:一步步指南
  • Race Karts Pack 全管线 卡丁车赛车模型素材
  • C#——switch案例讲解
  • 技术美术一百问(02)
  • 12 函数的应用
  • 鸿蒙开发(NEXT/API 12)【硬件(接入手写套件)】手写功能开发
  • 基于python+flask+mysql的音频信息隐藏系统
  • 18724 二叉树的遍历运算