You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 21:25:29