如何在ArcGIS Pro 3.1 API中不加载图层到地图就获取其名称?
ArcGIS Pro 3.1 API:不加载图层获取.lyr文件名称并判断是否已加载
在ArcGIS Pro API中,要实现不加载图层到地图就能获取.lyr文件的图层名称,可以使用LayerFactory.Instance.GetLayerItemInfo方法,该方法能读取图层文件的元数据信息,包括图层名称。
以下是完整的实现代码:
private static void LoadLayer(string layerFilename) { if (MapView.Active == null) return; // 确保有活跃的地图视图 Map map = MapView.Active.Map; var layerUri = new Uri(layerFilename); // 不加载图层,直接获取.lyr文件的图层名称 var layerItemInfo = LayerFactory.Instance.GetLayerItemInfo(layerUri); if (layerItemInfo == null) { MessageBox.Show("无法读取图层文件信息"); return; } string newLayerName = layerItemInfo.Name; // 检查地图中是否已存在同名图层 bool layerExists = map.Layers.Any(layer => layer.Name.Equals(newLayerName, StringComparison.OrdinalIgnoreCase)); if (layerExists) { MessageBox.Show($"图层 '{newLayerName}' 已加载。"); return; } // 加载图层到地图 Layer newLayer = LayerFactory.Instance.CreateLayer(layerUri, map); }
关键说明:
GetLayerItemInfo是核心方法,它通过图层文件的Uri读取元数据,无需将图层添加到地图就能获取名称、类型等信息,解决了你之前使用LayerCreationParams无法获取名称的问题。- 图层名称对比时使用
StringComparison.OrdinalIgnoreCase可以忽略大小写差异,避免因大小写不一致导致的误判。 - 增加了
MapView.Active的空值判断,提升代码健壮性。
内容的提问来源于stack exchange,提问作者Gener4tor
相关产品推荐
相关产品推荐

