TransWikia.com

Creating FeatureLayer from CIMFeaturelayer in ArcGIS Pro?

Geographic Information Systems Asked on April 19, 2021

I’ve been asked to develop a strategy to work with Layers that have not yet been added to a Map.

From what I can tell, one cannot simply create a new layer as one can with ArcObjects. One must use a method on the LayerFactory, all of which add a layer to the map upon creation.

So instead of using Layers, I thought I would have my analysis engine deal with layer definitions, e.g. CIMFeatureLayer, which can exist outside of a map.

For example, my analysis engine would generate CIMFeatureLayers and then, once I’m ready to present the layer, I would use something similar to LayerFactory.CreateFeaturelayer to create a layer from the CIMFeatureLayer.

I’ve searched but cannot find any method that does this.

Clearly Pro does this behind the scenes – if I save a .lyrx file and look at it in a text editor, I see that it is a json serialization of a CIMLayerDocument with CIMFeatureLayers within it. How can I do what Pro does when it reads the .lyrx file?

Update

I also tried this code, but SetDefinition doesn’t seem to do anything.

private void Test()
{
    var def = MapView.Active.Map.Layers[0].GetDefinition() as CIMFeatureLayer;
    var fLayer = LayerFactory.CreateLayer(def.FeatureTable.DataConnection,MapView.Active.Map) as FeatureLayer;
    fLayer.SetName("my layer");
    // name remains "my layer" Setdefinition has no discernable effect
    fLayer.SetDefinition(def);
}

One Answer

You can use this:

 private void Test() 
 {
  var layer=await QueuedTask.Run(()=>MapView.Active.Map.Layers[0].GetDefinition() as CIMFeatureLayer);
  var fLayer = await QueuedTask.Run(()=>LayerFactory.CreateLayer(polyLayer.FeatureTable.DataConnection, MapView.Active.Map)) as FeatureLayer;
  await QueuedTask.Run(()=>  fLayer.SetName("My Name"));
  await QueuedTask.Run(()=> fLayer.SetDefinition(polyLayer));
 }

Answered by osman on April 19, 2021

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP