当前位置: 首页 > 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);}}

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

相关文章:

  • 【华为HCIP实战课程一】OSPF相关基础介绍及基础配置,网络工程师必修
  • 【数据库】sqlite
  • Qt 每日面试题 -3
  • 前端基础知识汇总(一)
  • ubuntu20.04编译安装opencv-4.9.0的cuda版本
  • 力扣(leetcode)每日一题 2516 每种字符至少取 K 个 | 滑动窗口
  • 【项目经验分享】深度学习自然语言处理技术毕业设计项目案例定制
  • 学生信息管理系统开发实战:掌握多数据模型关联关系的设计和使用
  • 「iOS」——KVC
  • 使用 pypdf 给 PDF 添加目录书签
  • 搜索引擎onesearch3实现解释和升级到Elasticsearch v8系列(四)-搜索
  • 基于Hive和Hadoop的图书分析系统
  • nodejs逐字读取文件示例
  • 防火墙详解(三)华为防火墙基础安全策略配置(命令行配置)
  • 如何恢复被删除的 GitLab 项目?
  • 78. Subsets
  • Android Volley源码解析
  • Angular6错误 Service: No provider for Renderer2
  • create-react-app项目添加less配置
  • ES学习笔记(12)--Symbol
  • gcc介绍及安装
  • Java 23种设计模式 之单例模式 7种实现方式
  • JavaScript 基础知识 - 入门篇(一)
  • maven工程打包jar以及java jar命令的classpath使用
  • Mysql优化
  • supervisor 永不挂掉的进程 安装以及使用
  • Web Storage相关
  • 半理解系列--Promise的进化史
  • 动态规划入门(以爬楼梯为例)
  • 聊聊flink的BlobWriter
  • 排序算法学习笔记
  • 使用 Node.js 的 nodemailer 模块发送邮件(支持 QQ、163 等、支持附件)
  • 小程序开发之路(一)
  • 源码之下无秘密 ── 做最好的 Netty 源码分析教程
  • 怎么将电脑中的声音录制成WAV格式
  • 智能网联汽车信息安全
  • LevelDB 入门 —— 全面了解 LevelDB 的功能特性
  • UI设计初学者应该如何入门?
  • 阿里云ACE认证学习知识点梳理
  • 带你开发类似Pokemon Go的AR游戏
  • ​业务双活的数据切换思路设计(下)
  • #AngularJS#$sce.trustAsResourceUrl
  • (10)工业界推荐系统-小红书推荐场景及内部实践【排序模型的特征】
  • (31)对象的克隆
  • (4)事件处理——(6)给.ready()回调函数传递一个参数(Passing an argument to the .ready() callback)...
  • (9)YOLO-Pose:使用对象关键点相似性损失增强多人姿态估计的增强版YOLO
  • (9)目标检测_SSD的原理
  • (搬运以学习)flask 上下文的实现
  • (初研) Sentence-embedding fine-tune notebook
  • (回溯) LeetCode 78. 子集
  • (力扣记录)235. 二叉搜索树的最近公共祖先
  • (亲测成功)在centos7.5上安装kvm,通过VNC远程连接并创建多台ubuntu虚拟机(ubuntu server版本)...
  • (求助)用傲游上csdn博客时标签栏和网址栏一直显示袁萌 的头像
  • (四)activit5.23.0修复跟踪高亮显示BUG
  • (四)事件系统