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

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

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

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


一、要实现的功能

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

2e10d8ac50a24995abcff70e3f2750f7.png


二、实现流程

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文件直接安装。

 

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
SkyWalking是一个开源的分布式系统追踪解决方案,它可以帮助开发人员监控和诊断分布式系统中的性能问题。如果你想进行SkyWalking的二次开发,你可以按照以下步骤进行: 1. 了解SkyWalking的架构和核心概念:在开始二次开发之前,你需要了解SkyWalking的基本架构和核心概念,例如代理、探针、数据收集和存储等。这将帮助你更好地理解系统的工作原理。 2. 设置开发环境:为了进行二次开发,你需要设置好开发环境。首先,你需要安装Java开发环境和相关的构建工具,如Maven或Gradle。然后,你可以从SkyWalking的官方GitHub仓库中获取源代码,并按照指南进行构建和部署。 3. 阅读文档和示例:SkyWalking提供了详细的文档和示例,以帮助开发人员理解系统的各个方面。你可以阅读官方文档,并尝试运行示例应用程序来熟悉SkyWalking的使用方式和功能。 4. 根据需求进行二次开发:一旦你对SkyWalking有了基本的了解,你可以根据自己的需求进行二次开发。例如,你可以添加自定义的数据收集器、扩展现有的监控指标、修改UI界面等。在进行二次开发时,你可以参考官方文档和源代码,以及向社区寻求帮助和支持。 5. 测试和部署:在完成二次开发后,你需要进行测试以确保你的修改和扩展能够正常工作。你可以使用SkyWalking提供的测试工具和框架来进行单元测试和集成测试。一旦通过了测试,你可以将你的修改部署到生产环境中。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

规划GIS会

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值