Map 3D中通过程序删除图层及数据源

本文详细介绍了在Map3D中如何通过API实现删除图层并断开与SHP、Oracle等数据源的连接。通过删除图层资源和数据源资源,可以有效地管理地图数据,提升应用效率。

在Map 3D中可以通过API来连接到SHP,Oracle等各种数据源,如果你对这个过程不熟悉,可以参考Map 3D ObjectARX SDK中的BuildMap示例,但BuildMap中没有演示如何断开到这些数据源的连接。如果你看过BuildMap的实现代码,就会发现连接到数据源其实就是创建FeatureSource资源的过程,添加图层到地图上即创建LayerDefinition的过程。那么于此对应,断开连接也就是删除相应资源的过程。

 

下面是实现从地图中删除图层并断开连接的代码(在Map 3D 2013下测试通过):

 

    [CommandMethod("RemoveLayer")]
    public void RemoveLayer()
    {
      Document doc = Application.DocumentManager.MdiActiveDocument;
      Editor ed = doc.Editor;
      Database db = doc.Database;

      AcMapMap map = AcMapMap.GetCurrentMap();
      string layerName = "layer1";

      // remove the layer
      var layers = map.GetLayers();
      if (!layers.Contains(layerName))
      {
        ed.WriteMessage("\nLayer does not exist: " + layerName);
        return;
      }

      MgLayerBase layer = layers.GetItem(layerName);
      layers.Remove(layer);

      // remove the layer resource
      MgResourceIdentifier identifier = layer.LayerDefinition;
      MgResourceService resourceService
        = AcMapServiceFactory.GetService(MgServiceType.ResourceService)
        as MgResourceService;

      if (resourceService.ResourceExists(identifier))
        resourceService.DeleteResource(identifier);

      // remove the feature source
      identifier = new MgResourceIdentifier(layer.FeatureSourceId);
      if (resourceService.ResourceExists(identifier))
        resourceService.DeleteResource(identifier);
    }

 

另外,这个方法也还有其他的妙用,今天没时间了,以后再详细写。

转载于:https://www.cnblogs.com/junqilian/archive/2012/08/02/2620490.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值