使用DDL创建一个双字段

169
5
两个星期前
mody_buchbinder
新的贡献者三世

你好,所有人

我们试图使用新的DDL创建带有类型为double的字段的层

在sql server的层中的字段。

看起来代码忽略了比例和精度。

尝试用GP工具(添加字段)做同样的工作。

这是一个bug,特性还是会在下一个版本中出现的东西?

谢谢

0荣誉
5回复
AashisLamsal1
通过 Esri贡献者
Esri贡献者

@mody_buchbinder,你能发给我们一个导致问题的代码片段吗?我们无法再现不遵循DDL提供的规模和精度的场景。

Pro和SQL Server的版本信息也有助于进一步诊断。

下面的字段描述在我们的测试中成功地创建了一个具有规模和精度的双字段。

FieldDescription doubleFieldDescription = new FieldDescription("TestDoubleField", FieldType.Double){规模= 3,精度= 9};

aashislamsal1_0 - 1624558060157. - jpeg

0荣誉
狼
通过 亚博搜索yabovip28点com
亚博搜索yabovip28点com

谢谢你的报道。 我可以复制这个问题。我将向Geodatabase团队报告这个问题。

0荣誉
狼
通过 亚博搜索yabovip28点com
亚博搜索yabovip28点com

我认错。Geodatabase团队指出了我的测试插件中的错误,我选择了一个比精度更大的刻度。一旦我修正了这个错误,我得到了正确的结果:

wolf_0 - 1624571868016. - png

我使用下面的代码片段创建了这个特性类。'selectedFeatureLayer'是一个特性层,我从TOC获得,以获得我的数据库连接。

var selectedLayerTable = selectedFeatureLayer.GetTable();var testName = $@"Point{DateTime.Now:HHmmss}";var hasZ = false;var hasM = false;//创建一个ShapeDescription对象var ShapeDescription = new ShapeDescription(几何类型。点,SpatialReferences.WebMercator) {HasM = HasM, HasZ = HasZ};var objectIDFieldDescription = new ArcGIS.Core.Data.DDL。FieldDescription(“ObjectID”,FieldType.OID);var stringFieldDescription = new ArcGIS.Core.Data.DDL。FieldDescription(“TheString”,FieldType.String);var intFieldDescription = new ArcGIS.Core.Data.DDL。FieldDescription(“TheInteger”,FieldType.Integer);var dblFieldDescription = new ArcGIS.Core.Data.DDL。FieldDescription("TheDouble", FieldType.Double){精度= 9,规模= 5}; var dateFieldDescription = new ArcGIS.Core.Data.DDL.FieldDescription("TheDate", FieldType.Date); using (var geoDb = selectedLayerTable.GetDatastore() as Geodatabase) { var fcName = $@"{testName}"; try { // Assemble a list of all of our field descriptions var fieldDescriptions = new List() { objectIDFieldDescription, stringFieldDescription, intFieldDescription, dblFieldDescription, dateFieldDescription }; // Create a FeatureClassDescription object to describe the feature class to create var fcDescription = new FeatureClassDescription(fcName, fieldDescriptions, shapeDescription); // Create a SchemaBuilder object SchemaBuilder schemaBuilder = new SchemaBuilder(geoDb); // Add the creation of the Cities feature class to our list of DDL tasks schemaBuilder.Create(fcDescription); // Execute the DDL bool success = schemaBuilder.Build(); } catch (Exception ex) { MessageBox.Show($@"Exception: {ex}"); } }

0荣誉
dkuida
通过
新的因素

你好@Wolf

下面是代码,注意数据库是内存数据库。

然而结果是:

private async Task CreateParcelTempLayers(Polygon parcelGeometry, bool shouldGeneralize) {var memoryConnectionProperties = new memoryConnectionProperties ();var map = MapView.Active.Map;使用var geodatabase = schembuilder . creategeodatabase (memoryConnectionProperties);BuildEdgesLayer(地图,geodatabase);} //和bellow private void BuildEdgesLayer(Map Map, Geodatabase Geodatabase) {var shapeDescription = new shapeDescription(几何类型。多段线,map.SpatialReference);var fieldDescriptions = new[] {new FieldDescription(m_FromVertexToVertex, FieldType.String){Length = 50}, new FieldDescription(m_EdgeLength, FieldType.Double) {Scale = 2, Precision = 9, AliasName = ReportsManagerResources。ReportsManagerProxy_BuildEdgesLayer_DistancesAlias}};var featureClassDescription = new featureClassDescription (m_ParcelEdgesLayerName, fieldDescriptions, shapeDescription);var schemaBuilder = new schemaBuilder (geodatabase);schemaBuilder.Create (featureClassDescription);var success = schembuilder . build (); }

image.png

想听听你的反馈吗

0荣誉
狼
通过 亚博搜索yabovip28点com
亚博搜索yabovip28点com

感谢您的报告,一个ArcGIS Pro Geodatabase团队成员能够在使用内存Geodatabase时复制这个问题。这个问题将在即将发布的Pro版本中修复。

0荣誉