ArcGIS Pro二次开发(19):创建要素类(FeatureClass)

Posted 规划GIS会

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ArcGIS Pro二次开发(19):创建要素类(FeatureClass)相关的知识,希望对你有一定的参考价值。

在数据库创建要素类是一个很基本的功能。

ArcGIS Pro中已经提供了一个工具:【数据管理工具】——【要素类】——【创建要素类】,可以实现这个功能。

这里演示的是如何在SDK中实现。


一、要实现的功能

通过点击【创建点要素】按钮,在默认数据库里新建一个空的点要素【示例点XXXX】,并且给它新建2个字段,如图所示:


二、实现流程

1、创建一个ShapeDescription,并定义2个字段

                var hasZ = false;
                var hasM = false;                
                // 创建一个ShapeDescription
                var shapeDescription = new ShapeDescription(GeometryType.Point, SpatialReferences.WebMercator)
                
                    HasM = hasM,
                    HasZ = hasZ
                ;
                // 定义2个字段
                var stringFieldDescription = new ArcGIS.Core.Data.DDL.FieldDescription("字符串字段", FieldType.String);
                var dblFieldDescription = new ArcGIS.Core.Data.DDL.FieldDescription("双精度字段", FieldType.Double);

ShapeDescription是一个用于描述要素类中几何形状的类。ShapeDescription对象包含要素类的几何形状类型、空间参考、坐标系等信息。

ShapeDescription中包含以下几个重要的属性:

  • ShapeType:表示要素类的几何形状类型,可以是点、线、面或多边形等。ShapeType属性是一个枚举类型,在ArcGIS Pro SDK中被称为“GeometryType”。

  • SpatialReference:表示要素类的空间参考,包括地理坐标系、投影坐标系等信息。

  • HasZ:表示要素类是否包含Z值(即垂直坐标)。

  • HasM:表示要素类是否包含M值(即测量值)。

这里示例的ShapeDescription的GeometryType以最简单的点为例,坐标系随意,M值和Z值都设为false。

然后定义1个字符串字段和1个双精度字段作为示例。

2、打开默认数据库gdb,通过DDL创建要素类

                // 打开默认数据库gdb
                using (Geodatabase gdb = new Geodatabase(new FileGeodatabaseConnectionPath(new Uri(gdbPath))))
                
                    var fcName = $@"testName";
                    try
                    
                        // 收集字段列表
                        var fieldDescriptions = new List<ArcGIS.Core.Data.DDL.FieldDescription>() 
                                        stringFieldDescription,
                                        dblFieldDescription,
                              ;
                        // 创建FeatureClassDescription
                        var fcDescription =new FeatureClassDescription(fcName, fieldDescriptions, shapeDescription);
                        // 创建SchemaBuilder
                        SchemaBuilder schemaBuilder = new SchemaBuilder(gdb);
                        // 将创建任务添加到DDL任务列表中
                        schemaBuilder.Create(fcDescription);
                        // 执行DDL
                        bool success = schemaBuilder.Build();
                    
                    catch (Exception ex)
                    
                        MessageBox.Show($@"Exception: ex");
                    
                

以上代码涉及ArcGIS.Core.Data.DDL的使用。

在ArcGIS Pro SDK中,DDL指的是“Data Definition Language”,即用于定义和管理数据库对象(如表、字段、索引、触发器等)的语言。

ArcGIS Pro SDK中的DDL主要用于创建和管理与GIS相关的数据库对象。它支持的语法和操作与标准的SQL语言相似,但具有一些针对GIS数据的特殊功能和语法。

具体流程在上面的代码中已经写得比较清楚了。

1)将定义好的字段收集为列表List<ArcGIS.Core.Data.DDL.FieldDescription>。

2)创建FeatureClassDescription。

3)创建SchemaBuilder。

4)将创建任务添加到DDL任务列表中。

5)执行DDL。

这5步基本就是固定的套路,抄就完事了。

PS:以上代码比较简单,虽然我也才刚学到这里,但是感觉DDL应该是比较重要的知识点,这篇文章就算是一个基础,后面还会深入研究。


三、工程文件分享

 最后,放上工程文件的链接:

CreateFeatureClasshttps://pan.baidu.com/s/1y7Q_IxxN4hUPntDkPJ2JFw?pwd=cvst

PS:可以直接点击...bin\\Debug\\net6.0-windows\\下的.esriAddinX文件直接安装。

 

以上是关于ArcGIS Pro二次开发(19):创建要素类(FeatureClass)的主要内容,如果未能解决你的问题,请参考以下文章

ArcGIS Pro风暴ArcGIS Pro 2.5质量检查:拓扑创建与编辑案例教程

ArcGIS Pro风暴ArcGIS Pro 2.5质量检查:拓扑创建与编辑案例教程

ArcGIS Pro二次开发,定制开发,参考资料

请问你是如何具体实现的 arcgis engine 二次开发怎样获取某线要素的结点及各结点的坐标值?

arcgis engine 二次开发怎样获取某线要素的结点及各结点的坐标值?还要识别出端点。

ArcGIS Pro二次开发-添加字段