免费视频|新人指南|投诉删帖|广告合作|地信网APP下载

查看: 2021|回复: 5
收起左侧

[求助] Arcgis Engine开发

[复制链接]

5

主题

2万

铜板

3

好友

传奇会员

Rank: 30Rank: 30Rank: 30Rank: 30Rank: 30Rank: 30Rank: 30Rank: 30

积分
24519
发表于 2015-4-13 12:45 | 显示全部楼层 |阅读模式
使用Arcgis Engine如何统计一幅地图的图层。

5

主题

2万

铜板

3

好友

传奇会员

Rank: 30Rank: 30Rank: 30Rank: 30Rank: 30Rank: 30Rank: 30Rank: 30

积分
24519
 楼主| 发表于 2015-4-13 12:46 | 显示全部楼层
要详细教程。
回复 支持 反对

使用道具 举报

113

主题

1万

铜板

174

好友

地信贵宾

Rank: 13Rank: 13Rank: 13Rank: 13

积分
39147

精华勋章宣传勋章爱心勋章组织勋章优秀斑主地信元老灌水勋章荣誉会员勋章活跃勋章官方团队地信专家组VIP勋章贡献勋章名人堂勋章成就学员勋章

发表于 2015-4-13 14:13 | 显示全部楼层

遍历所有图层方法

通过IMap中的get_layers()可以遍历MapControl中当前的图层。此方法可以通过指定UID对图层进行过滤或者分类。

1. 遍历矢量图层


  1.   public IEnumLayer GetFeatureLayers()
  2.         {
  3.             UID uid = new UIDClass();
  4.             uid.Value = "{40A9E885-5533-11d0-98BE-00805F7CED21}";//FeatureLayer
  5.             IEnumLayer layers = frmMap.m_mapCtrl.Map.get_Layers(uid, true);
  6.             return layers;
  7.         }
复制代码



2. 遍历栅格图层


  1.   public IEnumLayer GetRasterLayers()
  2.         {
  3.             UID uid = new UIDClass();
  4.             uid.Value = "{D02371C7-35F7-11D2-B1F2-00C04F8EDEFF}";//RasterLayer
  5.             IEnumLayer layers = frmMap.m_mapCtrl.Map.get_Layers(uid, true);
  6.             return layers;
  7. }
复制代码



3.遍历其它图层

只要修改相应的UID即可。常见的数据类型的UID有:


{6CA416B1-E160-11D2-9F4E-00C04F6BC78E} IDataLayer (包括所有类型的图层)
{40A9E885-5533-11d0-98BE-00805F7CED21} IFeatureLayer
{E156D7E5-22AF-11D3-9F99-00C04F6BC78E} IGeoFeatureLayer
{34B2EF81-F4AC-11D1-A245-080009B6F22B} IGraphicsLayer
{5CEAE408-4C0A-437F-9DB3-054D83919850} IFDOGraphicsLayer
{0C22A4C7-DAFD-11D2-9F46-00C04F6BC78E} ICoverageAnnotationLayer
{EDAD6644-1810-11D1-86AE-0000F8751720} IGroupLayer


4. 通过图层名获取图层接口

在AE开发中,这是常用到的功能,配合上面的方法,很容易实现。



  1. //获取矢量图层接口
  2. public IFeatureLayer GetFeatureLayer(string layerName)
  3.         {
  4.             //get the layers from the maps
  5.             IEnumLayer layers = GetFeatureLayers();
  6.             layers.Reset();
  7.             ILayer layer = null;
  8. while ((layer = layers.Next()) != null)
  9.             {
  10.                 if (layer.Name == layerName)
  11.                     return layer as IFeatureLayer;
  12.             }
  13.             return null;
  14.         }

  15. //获取栅格图层接口        
  16. public IRasterLayer GetRasterLayer(string layerName)
  17.         {
  18.             //get the layers from the maps
  19.             IEnumLayer layers = GetRasterLayers();
  20.             layers.Reset();
  21.             ILayer layer = null;
  22.             while ((layer = layers.Next()) != null)
  23.             {
  24.                 if (layer.Name == layerName)
  25.                     return layer as IRasterLayer;
  26.             }
  27.             return null;
  28.         }
复制代码




获取其它类型的图层接口,同此类似。

回复 支持 反对

使用道具 举报

5

主题

2万

铜板

3

好友

传奇会员

Rank: 30Rank: 30Rank: 30Rank: 30Rank: 30Rank: 30Rank: 30Rank: 30

积分
24519
 楼主| 发表于 2015-4-14 10:41 | 显示全部楼层
非常感谢!
回复

使用道具 举报

0

主题

110

铜板

0

好友

实习生

Rank: 1

积分
4
发表于 2015-4-27 22:17 | 显示全部楼层

回帖奖励 +100 个铜板

ILayer paramLayer;
回复 支持 反对

使用道具 举报

37

主题

2万

铜板

111

好友

钻石会员

Rank: 26Rank: 26Rank: 26Rank: 26Rank: 26Rank: 26Rank: 26

积分
5763
发表于 2022-3-15 21:46 | 显示全部楼层
高手如云,学习学习
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

在线客服
快速回复 返回顶部 返回列表