ArcGIS Pro 3.4 API Reference Guide
ArcGIS.Desktop.Editing.Attributes Namespace / Inspector Class / LoadSchema Method / LoadSchema(MapMember) Method
Example

In This Topic
    LoadSchema(MapMember) Method
    In This Topic
    Load the schema of a mapMember into the inspector. This method must be called on the MCT. Use QueuedTask.Run.
    Syntax
    public void LoadSchema( 
       MapMember member
    )
    Public Overloads Sub LoadSchema( _
       ByVal member As MapMember _
    ) 

    Parameters

    member
    Exceptions
    ExceptionDescription
    This method or property must be called within the lambda passed to QueuedTask.Run.
    Example
    Get a layers schema using Inspector
    QueuedTask.Run(() =>
    {
      var firstFeatureLayer = MapView.Active.Map.GetLayersAsFlattenedList().OfType<ArcGIS.Desktop.Mapping.FeatureLayer>().FirstOrDefault();
    
      // create an instance of the inspector class
      var inspector = new ArcGIS.Desktop.Editing.Attributes.Inspector();
    
      // load the layer
      inspector.LoadSchema(firstFeatureLayer);
    
      // iterate through the attributes, looking at properties
      foreach (var attribute in inspector)
      {
        var fldName = attribute.FieldName;
        var fldAlias = attribute.FieldAlias;
        var fldType = attribute.FieldType;
        int idxFld = attribute.FieldIndex;
        var fld = attribute.GetField();
        var isNullable = attribute.IsNullable;
        var isEditable = attribute.IsEditable;
        var isVisible = attribute.IsVisible;
        var isSystemField = attribute.IsSystemField;
        var isGeometryField = attribute.IsGeometryField;
      }
    });
    Create New Template using layer.CreateTemplate
    var layer = MapView.Active.Map.GetLayersAsFlattenedList().OfType<FeatureLayer>().FirstOrDefault();
    if (layer == null)
      return;
    QueuedTask.Run(() =>
    {
      var insp = new Inspector();
      insp.LoadSchema(layer);
    
      insp["Field1"] = value1;
      insp["Field2"] = value2;
      insp["Field3"] = value3;
    
      var tags = new[] { "Polygon", "tag1", "tag2" };
    
      // set defaultTool using a daml-id 
      string defaultTool = "esri_editing_SketchCirclePolygonTool";
    
      // tool filter is the tools to filter OUT
      var toolFilter = new[] { "esri_editing_SketchTracePolygonTool" };
    
      // create a new template  
      var newTemplate = layer.CreateTemplate("My new template", "description", insp, defaultTool, tags, toolFilter);
    });
    Create Annotation Template
    // get an anno layer
    AnnotationLayer annoLayer = MapView.Active.Map.GetLayersAsFlattenedList().OfType<AnnotationLayer>().FirstOrDefault();
    if (annoLayer == null)
      return;
    
    QueuedTask.Run(() =>
    {
      Inspector insp = null;
      // get the anno feature class
      var fc = annoLayer.GetFeatureClass() as ArcGIS.Core.Data.Mapping.AnnotationFeatureClass;
    
      // get the featureclass CIM definition which contains the labels, symbols
      var cimDefinition = fc.GetDefinition() as ArcGIS.Core.Data.Mapping.AnnotationFeatureClassDefinition;
      var labels = cimDefinition.GetLabelClassCollection();
      var symbols = cimDefinition.GetSymbolCollection();
    
      // make sure there are labels, symbols
      if ((labels.Count == 0) || (symbols.Count == 0))
        return;
    
      // find the label class required
      //   typically you would use a subtype name or some other characteristic
      // in this case lets just use the first one
    
      var label = labels[0];
    
      // each label has a textSymbol
      // the symbolName *should* be the symbolID to be used
      var symbolName = label.TextSymbol.SymbolName;
      int symbolID = -1;
      if (!int.TryParse(symbolName, out symbolID))
      {
        // int.TryParse fails - attempt to find the symbolName in the symbol collection
        foreach (var symbol in symbols)
        {
          if (symbol.Name == symbolName)
          {
            symbolID = symbol.ID;
            break;
          }
        }
      }
      // no symbol?
      if (symbolID == -1)
        return;
    
      // load the schema
      insp = new Inspector();
      insp.LoadSchema(annoLayer);
    
      // ok to assign these fields using the inspector[fieldName] methodology
      //   these fields are guaranteed to exist in the annotation schema
      insp["AnnotationClassID"] = label.ID;
      insp["SymbolID"] = symbolID;
    
      // set up some additional annotation properties
      AnnotationProperties annoProperties = insp.GetAnnotationProperties();
      annoProperties.FontSize = 36;
      annoProperties.TextString = "My Annotation feature";
      annoProperties.VerticalAlignment = VerticalAlignment.Top;
      annoProperties.HorizontalAlignment = HorizontalAlignment.Justify;
    
      insp.SetAnnotationProperties(annoProperties);
    
      var tags = new[] { "Annotation", "tag1", "tag2" };
    
      // use daml-id rather than guid
      string defaultTool = "esri_editing_SketchStraightAnnoTool";
    
      // tool filter is the tools to filter OUT
      var toolFilter = new[] { "esri_editing_SketchCurvedAnnoTool" };
    
      // create a new template 
      var newTemplate = annoLayer.CreateTemplate("new anno template", "description", insp, defaultTool, tags, toolFilter);
    });
    
    Requirements

    Target Platforms: Windows 11, Windows 10

    ArcGIS Pro version: 3 or higher.
    See Also