コード例 #1
0
 private ESRI.ArcGIS.Carto.ILayer GetBackgroundLayer(ESRI.ArcGIS.Carto.IMap map)
 {
     ESRI.ArcGIS.Carto.ILayer pLayer     = map.get_Layer(0);
     ESRI.ArcGIS.Carto.ILayer pTempLayer = null;
     for (int i = 1; i < map.LayerCount; i++)
     {
         pTempLayer = map.get_Layer(i);
         if (pLayer.AreaOfInterest.Width < pTempLayer.AreaOfInterest.Width)
         {
             pLayer = pTempLayer;
         }
     }
     return(pLayer);
 }
 protected override void OnPopup(ItemCollection items)
 {
     ESRI.ArcGIS.Carto.IMap map = ArcMap.Document.FocusMap;
     for (int i = 0; i < map.LayerCount; i++)
     {
         ESRI.ArcGIS.Carto.ILayer layer = map.get_Layer(i);
         Item item = new Item();
         item.Caption = layer.Name;
         item.Enabled = layer.Visible;
         item.Message = layer.Name;
         item.Tag     = layer;
         items.Add(item);
     }
 }
コード例 #3
0
 /// <summary>
 /// 重置mxd文档的数据源
 /// </summary>
 /// <param name="pMapDoc"></param>
 /// <param name="pWs"></param>
 public static void ChangeMxdDataSource(ESRI.ArcGIS.Carto.IMapDocument pMapDoc, ESRI.ArcGIS.Geodatabase.IWorkspace pWs)
 {
     ESRI.ArcGIS.Geodatabase.IWorkspaceName pWsName  = GetWorkspaceName(pWs);
     ESRI.ArcGIS.Carto.IMap               pMap       = pMapDoc.ActiveView.FocusMap;
     ESRI.ArcGIS.Carto.ILayer             pLayer     = null;
     ESRI.ArcGIS.Carto.IDataLayer         pDataLayer = null;
     ESRI.ArcGIS.Geodatabase.IDatasetName pDataName  = null;
     for (int i = 0; i < pMap.LayerCount; i++)
     {
         pLayer = pMap.get_Layer(i);
         if (pLayer.Valid == false)
         {
             if (pLayer is ESRI.ArcGIS.Carto.IDataLayer)
             {
                 pDataLayer = pLayer as ESRI.ArcGIS.Carto.IDataLayer;
                 try
                 {
                     pDataName = pDataLayer.DataSourceName as ESRI.ArcGIS.Geodatabase.IDatasetName;
                     //获取DatasetName,必须是要替换的工作空间下的
                     ESRI.ArcGIS.Geodatabase.IDatasetName pDsName = GetDatasetName(pWs, pDataName.Name);
                     if (pDsName == null)
                     {
                         continue;
                     }
                     pDataName = pDataLayer.DataSourceName as ESRI.ArcGIS.Geodatabase.IDatasetName;
                     pDataName.WorkspaceName = pWsName;
                     pDataLayer.Connect(pDsName as ESRI.ArcGIS.esriSystem.IName);
                     System.Runtime.InteropServices.Marshal.ReleaseComObject(pDataName);
                     System.Runtime.InteropServices.Marshal.ReleaseComObject(pDsName);
                     //pDataName = pDataLayer.DataSourceName as ESRI.ArcGIS.Geodatabase.IDatasetName;
                 }
                 catch { }
                 System.Runtime.InteropServices.Marshal.ReleaseComObject(pDataLayer);
             }
         }
     }
     System.Runtime.InteropServices.Marshal.ReleaseComObject(pWsName);
     System.Runtime.InteropServices.Marshal.ReleaseComObject(pMap);
     pMapDoc.Save(true, true);
 }
コード例 #4
0
        /// <summary>
        /// Get the index number for the specified layer name
        /// </summary>
        /// <param name="activeView">An IActiveView interface</param>
        /// <param name="layerName">A System.String that is the layer name in the active view. Example: "states"</param>
        /// <returns>
        /// A System.Int32 representing a layer number.
        /// Return values of 0 and greater are valid layers. A return value of -1 means the layer name was not found.
        /// </returns>
        public static Int32 GetIndexNumberFromLayerName(ESRI.ArcGIS.Carto.IActiveView activeView, System.String layerName)
        {
            if (activeView == null || layerName == null)
            {
                return(-1);
            }
            ESRI.ArcGIS.Carto.IMap map = activeView.FocusMap;

            // Get the number of layers
            int numberOfLayers = map.LayerCount;

            // Loop through the layers and get the correct layer index
            for (System.Int32 i = 0; i < numberOfLayers; i++)
            {
                if (layerName == map.get_Layer(i).Name)
                {
                    // Layer was found
                    return(i);
                }
            }

            // No layer was found
            return(-1);
        }