Wie bekomme ich den Namen einer Schicht, ohne sie in eine Karte mit ArcGIS Pro 3.1 -API zu laden?C#

Ein Treffpunkt für C#-Programmierer
Anonymous
 Wie bekomme ich den Namen einer Schicht, ohne sie in eine Karte mit ArcGIS Pro 3.1 -API zu laden?

Post by Anonymous »

In meinem ArcGIS Pro-Addon möchte ich ein .lyr-File in eine Karte laden, aber nur, wenn sie nicht bereits geladen ist. Dies ist der Code, den ich in Arcgis-Desktop verwendet habe: < /p>

Code: Select all

public static void LoadDataToArcMap(String layerfilename)
{
IGxLayer pGxLayer = new GxLayerClass();
IGxFile pGxFile = (IGxFile)pGxLayer;
pGxFile.Path = layerfilename;

IMxDocument doc = ArcMap.Document;
IMap map = doc.FocusMap;
Int16 index = 0;
if (map.LayerCount > 0)
{
do
{

ILayer layer = map.get_Layer(index);
index++;
if (layer.Name == pGxLayer.Layer.Name)
return;
}
while (index < map.LayerCount);
}
map.AddLayer(pGxLayer.Layer);
}
Aber mit der neuen API finde ich keinen Weg, um den Namen der Ebene (die sich vom Dateinamen unterscheiden kann), ohne ihn in meine Karte zu laden.

Code: Select all

private static void LoadLayer(string layerFilename)
{

Map map = MapView.Active.Map;

//I already tried this but createParams.Item.Name is empty
//var uriNewLayer = new Uri(layerFilename);
//var createParams = new LayerCreationParams(uriNewLayer);
//var newLayerName = createParams.Item.Name;

var newLayerName = "???";

foreach (var layer in map.Layers)
{
if (layer.Name == newLayerName)
{
MessageBox.Show("Layer '" + newLayerName + "' already loaded.");
return;
}
}

Layer newLayer = LayerFactory.Instance.CreateLayer(uriNewLayer, map);
}

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post