在数据库创建要素类是一个很基本的功能。
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文件直接安装。