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图层,如下图:

四、关键代码

cs 复制代码
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.通过属性查找feature
                SelectLayerByAttribute 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);
            }
        }

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

源码程序下载:https://download.csdn.net/download/GIS_Master/89805996

相关推荐
bryant_meng12 天前
【python】OpenCV—WaterShed Algorithm(2)
开发语言·python·opencv·分割·分水岭
城城城_3 个月前
yolact导出onnx
python·yolo·分割·onnx·yolact
冷冷清清里风风火火是我3 个月前
Android Studio 设置打开layout.xml文件的默认视图split
android·xml·gradle·android studio·split
loong_XL4 个月前
opencv grabCut前景后景分割去除背景
人工智能·opencv·计算机视觉·分割
闻缺陷则喜何志丹5 个月前
【马拉车 中心扩展】1745. 分割回文串 IV
c++·算法·leetcode·字符串·分割·回文·中心扩展
冲上云霄的Jayden8 个月前
Linux大文件分割小文件
linux·unzip·split·cat·大文件传输·大文件分割·文件合并
江上清风山间明月10 个月前
Android Split APK介绍
android·apk·split·bundle·spilit apk
zy_destiny10 个月前
【EVP】Explicit Visual Prompting for Low-Level Structure Segmentations
人工智能·python·机器学习·计算机视觉·prompt·提示·分割
千寻物语10 个月前
Angular组件(二) 分割面板ShrinkSplitter
javascript·angular.js·split·分割面板