Parameters
- name
- The name of the description.
- fieldType
- The ArcGIS.Core.Data.FieldType of the description.
- minValue
- The minimum value for the range.
- maxValue
- The maximum value for the range.
Exception | Description |
---|---|
System.ArgumentException | name is invalid. -or- fieldType is invalid. The only valid types are ArcGIS.Core.Data.FieldType.SmallInteger, ArcGIS.Core.Data.FieldType.Integer, ArcGIS.Core.Data.FieldType.Single, ArcGIS.Core.Data.FieldType.Double, and ArcGIS.Core.Data.FieldType.Date. -or- The type of minValue and/or maxValue is invalid. The expected type for ArcGIS.Core.Data.FieldType.Date is System.DateTime. The expected type for ArcGIS.Core.Data.FieldType.SmallInteger and ArcGIS.Core.Data.FieldType.Integer is an integer. The expected type for ArcGIS.Core.Data.FieldType.Single and ArcGIS.Core.Data.FieldType.Double is a float. -or- |
System.ArgumentNullException | minValue and/or maxValue are null. |
System.ArgumentOutOfRangeException | The System.DateTime object is representing a year earlier than the year 100 AD. |
public void CreateRangeDomainSnippet(Geodatabase geodatabase) { // Create a range description with minimum value = 0 and maximum value = 1000 RangeDomainDescription rangeDomainDescriptionMinMax = new RangeDomainDescription("RangeDomain_0_1000", FieldType.Integer, 0, 1000) { Description = "Domain value ranges from 0 to 1000" }; SchemaBuilder schemaBuilder = new SchemaBuilder(geodatabase); // Create a range domain schemaBuilder.Create(rangeDomainDescriptionMinMax); schemaBuilder.Build(); }
await QueuedTask.Run(() => { using (var kg = GetKnowledgeGraph()) { if (kg == null) return; var entity_name = "Fruit"; //Domains are managed on the GDB objects... var fruit_fc = kg.OpenDataset<FeatureClass>(entity_name); var fruit_fc_def = fruit_fc.GetDefinition(); var fieldFruitTypes = fruit_fc_def.GetFields() .FirstOrDefault(f => f.Name == "FruitTypes"); var fieldShelfLife = fruit_fc_def.GetFields() .FirstOrDefault(f => f.Name == "ShelfLife"); //Create a coded value domain and add it to a new field var fruit_cvd_desc = new CodedValueDomainDescription( "FruitTypes", FieldType.String, new SortedList<object, string> { { "A", "Apple" }, { "B", "Banana" }, { "C", "Coconut" } }) { SplitPolicy = SplitPolicy.Duplicate, MergePolicy = MergePolicy.DefaultValue }; //Create a Range Domain and add the domain to a new field description also var shelf_life_rd_desc = new RangeDomainDescription( "ShelfLife", FieldType.Integer, 0, 14); var sb = new SchemaBuilder(kg); sb.Create(fruit_cvd_desc); sb.Create(shelf_life_rd_desc); //Create the new field descriptions that will be associated with the //"new" FruitTypes coded value domain and the ShelfLife range domain var fruit_types_fld = new ArcGIS.Core.Data.DDL.FieldDescription( "FruitTypes", FieldType.String); fruit_types_fld.SetDomainDescription(fruit_cvd_desc); //ShelfLife will use the range domain var shelf_life_fld = new ArcGIS.Core.Data.DDL.FieldDescription( "ShelfLife", FieldType.Integer); shelf_life_fld.SetDomainDescription(shelf_life_rd_desc); //Add the descriptions to the list of field descriptions for the //fruit feature class - Modify schema needs _all_ fields to be included //in the schema, not just the new ones to be added. var fruit_fc_desc = new FeatureClassDescription(fruit_fc_def); var modified_fld_descs = new List<ArcGIS.Core.Data.DDL.FieldDescription>( fruit_fc_desc.FieldDescriptions); modified_fld_descs.Add(fruit_types_fld); modified_fld_descs.Add(shelf_life_fld); //Create a feature class description to modify the fruit entity //with the new fields and their associated domains var updated_fruit_fc = new FeatureClassDescription(entity_name, modified_fld_descs, fruit_fc_desc.ShapeDescription); //Add the modified fruit fc desc to the schema builder sb.Modify(updated_fruit_fc); //Run the schema builder try { if (!kg.ApplySchemaEdits(sb)) { var err_msg = string.Join(",", sb.ErrorMessages.ToArray()); System.Diagnostics.Debug.WriteLine($"Create domains error: {err_msg}"); } } catch (Exception ex) { System.Diagnostics.Debug.WriteLine(ex.ToString()); } } });
Target Platforms: Windows 11, Windows 10