protected override void OnClick(Item item)
 {
     ESRI.ArcGIS.Carto.ILayer       layer = item.Tag as ESRI.ArcGIS.Carto.ILayer;
     ESRI.ArcGIS.Geometry.IEnvelope env   = layer.AreaOfInterest;
     ArcMap.Document.ActiveView.Extent = env;
     ArcMap.Document.ActiveView.Refresh();
 }
        protected override void OnClick()
        {
            try
            {
                // establish a reference to the running ArcMap instance
                ESRI.ArcGIS.ArcMapUI.IMxDocument mxDoc
                    = (ESRI.ArcGIS.ArcMapUI.IMxDocument)ArcMap.Application.Document;

                // retrieve the TOC selected layer (if there is one)
                ESRI.ArcGIS.Carto.ILayer selectedLayer = mxDoc.SelectedLayer;

                // validate layer meets minmum requirements
                if (isLayerValid(selectedLayer))
                {
                    // open the upload dialog
                    Dialogs.Interact.UploadToGoogleMapsEngine dialog
                        = new Dialogs.Interact.UploadToGoogleMapsEngine(ref ext);
                    dialog.Show();
                }
                else
                {
                    // display an error to the user
                    System.Windows.Forms.MessageBox.Show("Please select a valid vector or raster layer.");
                }
            }
            catch (System.Exception ex)
            {
                // log an error, unable to open in dialog
                log.Error(ex);
            }
        }
Пример #3
0
 /// <summary>
 /// Constractor
 /// </summary>
 /// <param name="layer"></param>
 public LayerInfo(ESRI.ArcGIS.Carto.ILayer layer)
 {
     m_Layer               = layer;
     m_Name                = m_Layer.Name;
     m_MaximumScale        = m_Layer.MaximumScale;
     m_MinimumScale        = m_Layer.MinimumScale;
     m_Cached              = m_Layer.Cached;
     m_ShowTips            = m_Layer.ShowTips;
     m_SupportedDrawPhases = m_Layer.SupportedDrawPhases;
     m_Valid               = m_Layer.Valid;
     m_Visible             = m_Layer.Visible;
 }
Пример #4
0
 internal static ESRI.ArcGIS.Carto.IFeatureLayer2 getFeatureLayerByName(string name)
 {
     if (name.Length > 0)
     {
         ESRI.ArcGIS.Carto.ILayer layer = getLayerByName(name);
         if (layer != null)
         {
             ESRI.ArcGIS.Carto.IFeatureLayer2 featlayer = (ESRI.ArcGIS.Carto.IFeatureLayer2)layer;
             return(featlayer);
         }
     }
     return(null);
 }
 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);
     }
 }
Пример #6
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);
 }
Пример #7
0
        private void axTOCControl_OnMouseDown(object sender, ESRI.ArcGIS.Controls.ITOCControlEvents_OnMouseDownEvent e)
        {
            ESRI.ArcGIS.Controls.esriTOCControlItem pTOCControlItem = ESRI.ArcGIS.Controls.esriTOCControlItem.esriTOCControlItemNone;

            //HitTest引用参数定义
            ESRI.ArcGIS.Carto.IBasicMap pBasicMap = null;
            ESRI.ArcGIS.Carto.ILayer    pLayer    = null;
            object pObjectOther = null;
            object pObjectIndex = null;

            m_TOCControl.HitTest(e.x, e.y, ref pTOCControlItem, ref pBasicMap, ref pLayer, ref pObjectOther, ref pObjectIndex);

            //确保有项目被选中
            if (pTOCControlItem == ESRI.ArcGIS.Controls.esriTOCControlItem.esriTOCControlItemMap)
            {
                m_TOCControl.SelectItem(pBasicMap, null);
            }
            else
            {
                m_TOCControl.SelectItem(pLayer, null);
            }

            //对选中的item进行处理
            //选中的是Map
            if (pTOCControlItem == ESRI.ArcGIS.Controls.esriTOCControlItem.esriTOCControlItemMap)
            {
                MapInfo pMapInfo = new MapInfo(m_MapControl.Map);
                propertyGrid1.SelectedObject = pMapInfo;
            }
            //layer
            if (pTOCControlItem == ESRI.ArcGIS.Controls.esriTOCControlItem.esriTOCControlItemLayer)
            {
                LayerInfo pLayerInfo = new LayerInfo(pLayer);
                propertyGrid1.SelectedObject = pLayerInfo;
            }
            //Heading
            if (pTOCControlItem == ESRI.ArcGIS.Controls.esriTOCControlItem.esriTOCControlItemHeading)
            {
                MessageBox.Show("Selected Heading");
            }
            //LegendClass
            if (pTOCControlItem == ESRI.ArcGIS.Controls.esriTOCControlItem.esriTOCControlItemLegendClass)
            {
                MessageBox.Show("Selected LegendClass");
            }
        }
Пример #8
0
        internal static ESRI.ArcGIS.Carto.ILayer getLayerByName(string name)
        {
            ESRI.ArcGIS.Carto.IMap     map = ArcMap.Document.FocusMap;
            ESRI.ArcGIS.esriSystem.UID uid = new ESRI.ArcGIS.esriSystem.UIDClass();
            uid.Value = "{40A9E885-5533-11d0-98BE-00805F7CED21}";


            ESRI.ArcGIS.Carto.IEnumLayer enumLayer = map.get_Layers(null, true);
            ESRI.ArcGIS.Carto.ILayer     l         = enumLayer.Next();
            while (l != null)
            {
                if (l.Name.ToUpper() == name.ToUpper())
                {
                    break;
                }

                l = enumLayer.Next();
            }

            return(l);
        }
 /// <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);
 }
 public static bool isLayerValid(ESRI.ArcGIS.Carto.ILayer layer)
 {
     try
     {
         // determine if there is a selected layer, it is valid, and
         // it is a feature class or raster type layer
         if (layer != null && layer.Valid &&
             (layer is ESRI.ArcGIS.Carto.IFeatureLayer ||
              layer is ESRI.ArcGIS.Carto.IRasterLayer))
         {
             return(true);
         }
         else
         {
             return(false);
         }
     }
     catch (Exception e)
     {
         return(false);
     }
 }
Пример #11
0
        private void FrmZhzzt_Load(object sender, EventArgs e)
        {
            axMapControlZZT.LoadMxFile(Application.StartupPath + @"\综合柱状图.mxd");
            pLayer = DataEditCommon.GetLayerByName(axMapControlZZT.Map, LayerNames.LAYER_ALIAS_MR_Zhuzhuang);
            ESRI.ArcGIS.Carto.IFeatureLayer pFeatureLayer = (ESRI.ArcGIS.Carto.IFeatureLayer)pLayer;
            pFeatureClass = pFeatureLayer.FeatureClass;
            if (pFeatureLayer == null)
            {
                MessageBox.Show("柱状图图层缺失!");
                this.Close();
                return;
            }
            if (pFeatureClass == null)
            {
                MessageBox.Show("柱状图图层缺失!");
                this.Close();
                return;
            }
            if (BID == "" || pGeometry == null)
            {
                return;
            }
            List <IGeometry> listgeo = new List <IGeometry>();
            IQueryFilter     pFilter = new QueryFilterClass();

            pFilter.WhereClause = "BID='" + BID + "'";
            IFeatureCursor pCursor  = pFeatureClass.Search(pFilter, false);
            IFeature       pFeature = pCursor.NextFeature();

            while (pFeature != null)
            {
                listgeo.Add(pFeature.Shape);
                pFeature = pCursor.NextFeature();
            }
            pGeometry = setgeo(MyMapHelp.GetGeoFromGeos(listgeo));
            axMapControlZZT.Extent   = pGeometry.Envelope;
            axMapControlZZT.MapScale = blc;
            axMapControlZZT.ActiveView.Refresh();
        }
Пример #12
0
        // The execute part of the algorithm
        private void InternalExecute(ISchematicLayer schematicLayer, ISchematicInMemoryDiagram inMemoryDiagram, ITrackCancel CancelTracker)
        {
            if (schematicLayer == null || inMemoryDiagram == null)
            {
                return;
            }

            // get the diagram spatial reference for geometry transformation
            IGeoDataset geoDataset = (IGeoDataset)inMemoryDiagram;

            if (geoDataset == null)
            {
                return;
            }

            ISpatialReference spatialReference = geoDataset.SpatialReference;

            ISchematicDiagramClass diagramClass;

            diagramClass = inMemoryDiagram.SchematicDiagramClass;
            if (diagramClass == null)
            {
                return;
            }

            ISchematicDataset schemDataset;

            schemDataset = diagramClass.SchematicDataset;
            if (schemDataset == null)
            {
                return;
            }

            ISchematicAlgorithmEventsTrigger algorithmEventsTrigger;

            algorithmEventsTrigger = (ISchematicAlgorithmEventsTrigger)schemDataset;
            if (algorithmEventsTrigger == null)
            {
                return;
            }

            ESRI.ArcGIS.Carto.ILayer layer     = (ESRI.ArcGIS.Carto.ILayer)schematicLayer;
            ISchematicAlgorithm      algorithm = (ISchematicAlgorithm)this;

            bool canExecute = true;

            algorithmEventsTrigger.FireBeforeExecuteAlgorithm(layer, algorithm, ref canExecute);
            if (!canExecute)
            {
                return; // cannot execute
            }
            // Get the selected Features
            IEnumSchematicFeature enumFeatures = schematicLayer.GetSchematicSelectedFeatures(true);

            if (enumFeatures == null)
            {
                return;
            }

            // Count the selected nodes
            ISchematicInMemoryFeatureClass inMemoryFeatureClass;
            ISchematicFeature selectedFeature = null;
            int iCount = 0;
            ISchematicFeature schemFeature;

            enumFeatures.Reset();
            schemFeature = enumFeatures.Next();
            while (schemFeature != null && iCount < 2)
            {
                // just want SchematicFeatureNode
                inMemoryFeatureClass = (ISchematicInMemoryFeatureClass)schemFeature.Class;

                if (inMemoryFeatureClass.SchematicElementClass.SchematicElementType == esriSchematicElementType.esriSchematicNodeType)
                {
                    selectedFeature = schemFeature;
                    iCount++;
                }
                schemFeature = enumFeatures.Next();
            }

            if (iCount != 1 || selectedFeature == null)
            {
                return; // must be only one
            }
            // Create a new SchematicAnalystFindConnected algorithm
            ISchematicAnalystFindConnected analystFindConnected = null;

            analystFindConnected = (ISchematicAnalystFindConnected) new SchematicAnalystFindConnected();
            if (analystFindConnected == null)
            {
                return;
            }

            // Modifying parameters value for this SchematicAnalystFindConnected algorithm so that when it is launched the trace result appears a selection set{
            analystFindConnected.SelectLink = true;
            analystFindConnected.SelectNode = true;
            analystFindConnected.UseFlow    = false;
            //pAnalystFindConnected.FlowDirection = 1;
            // Execute the algorithm
            analystFindConnected.Execute(schematicLayer, CancelTracker);

            // Retrieving the trace result (if any)
            IEnumSchematicFeature resultFeatures;

            resultFeatures = analystFindConnected.TraceResult;

            // free the schematic analyst COM object
            while (System.Runtime.InteropServices.Marshal.ReleaseComObject(analystFindConnected) > 0)
            {
            }

            if (resultFeatures == null || resultFeatures.Count < 1)
            {
                return;
            }

            // Apply the translation to the result
            //ISchematicInMemoryDiagram inMemoryDiagram;
            //inMemoryDiagram = schematicLayer.SchematicInMemoryDiagram;

            // Translating each traced elements according to the TranslationFactorX and TranslationFactorY parameters current values
            ISchematicInMemoryFeature inMemoryFeature;

            resultFeatures.Reset();
            while ((inMemoryFeature = (ISchematicInMemoryFeature)resultFeatures.Next()) != null)
            {
                IGeometry                geometry;
                ITransform2D             transform;
                esriSchematicElementType elemType;

                inMemoryFeatureClass = (ISchematicInMemoryFeatureClass)inMemoryFeature.Class;
                elemType             = inMemoryFeatureClass.SchematicElementClass.SchematicElementType;
                if (elemType == esriSchematicElementType.esriSchematicLinkType || elemType == esriSchematicElementType.esriSchematicNodeType)
                {
                    // get a copy of the feature geometry
                    // then process the cloned geometry rather than the feature geometry directly
                    // Thus the modifications are stored in the heap of the current operation
                    // meaning it can be undone then redo (undo/redo)
                    geometry = inMemoryFeature.ShapeCopy;
                    // Convert the geometry into the SpatialReference of diagram class
                    geometry.Project(spatialReference);
                    // Move the geometry
                    transform = (ITransform2D)geometry;
                    if (transform != null)
                    {
                        transform.Move(m_paramX, m_paramY);

                        // Convert the moved geometry into the spatial reference of storage
                        // and feed it back to the feature
                        IObjectClass table = inMemoryFeature.Class;
                        if (table == null)
                        {
                            continue;
                        }

                        IGeoDataset featureGeoDataset = (IGeoDataset)table;
                        if (featureGeoDataset == null)
                        {
                            continue;
                        }

                        ISpatialReference featureSpatialRef = featureGeoDataset.SpatialReference;
                        if (featureSpatialRef == null)
                        {
                            continue;
                        }

                        IGeometry movedGeometry = (IGeometry)transform;
                        movedGeometry.Project(featureSpatialRef);


                        inMemoryFeature.Shape = movedGeometry;
                    }
                }
            }

            // After Execute part
            algorithmEventsTrigger.FireAfterExecuteAlgorithm(layer, algorithm);

            // update the diagram extent
            schematicLayer.UpdateExtent();
        }