private void Symbolize_Load(object sender, EventArgs e)
        {
            //MapControl中没有图层时返回
            if (this._MapControl.LayerCount <= 0)
            {
                return;
            }
            //获取MapControl中的全部图层名称,并加入ComboBox
            //图层
            ILayer pLayer1;
            //图层名称
            string strLayerName;

            for (int i = 0; i < this._MapControl.LayerCount; i++)
            {
                pLayer1      = this._MapControl.get_Layer(i);
                strLayerName = pLayer1.Name;
                //图层名称加入cboLayer
                this.cboLayer.Items.Add(strLayerName);
            }
            //默认显示第一个选项
            this.cboLayer.SelectedIndex = 0;
            pLayer        = _MapControl.get_Layer(cboLayer.SelectedIndex);
            mFeatureLayer = _MapControl.get_Layer(cboLayer.SelectedIndex) as IFeatureLayer;
            dt.Columns.Add(new DataColumn("字段"));
        }
示例#2
0
        private void button1_Click(object sender, EventArgs e)
        {
            string layerName = comboBox1.Text;

            this.Close();

            int count = mMap.LayerCount;

            for (int i = 0; i < count; i++)
            {
                if (((IFeatureLayer)mMap.get_Layer(i)).FeatureClass.ShapeType == mLayerType && mMap.get_Layer(i).Name == layerName)
                {
                    ILayer        currentLayer = mMap.get_Layer(i);
                    IFeatureLayer featureLayer = currentLayer as IFeatureLayer;

                    ((IEngineEditLayers)mEngineEditor).SetTargetLayer(featureLayer, 0);
                    ICommand pCmd = new ControlsEditingPasteCommandClass();
                    pCmd.OnCreate(mMap.Object);
                    mMap.CurrentTool = pCmd as ITool;
                    pCmd.OnClick();
                    XtraMessageBox.Show("粘贴成功", "提示信息", MessageBoxButtons.OK);
                    return;
                }
            }
        }
示例#3
0
 private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
 {
     for (int i = 0; i < axMapControl1.LayerCount; i++)
     {
         if (axMapControl1.get_Layer(i).Name == comboBox1.SelectedItem.ToString())
         {
             pFeatureLayer = axMapControl1.get_Layer(i) as IFeatureLayer;
             string temp = pFeatureLayer.FeatureClass.ShapeType.ToString();
             if (ShapeType == "")
             {
                 ShapeType = temp;
                 Console.WriteLine(temp);
                 listBox1.Items.Add(comboBox1.SelectedItem.ToString());
                 arr[this.count++] = pFeatureLayer;
                 // AddMerge(pFeatureLayer);
             }
             else if (ShapeType == temp)
             {
                 listBox1.Items.Add(comboBox1.SelectedItem.ToString());
                 // AddMerge(pFeatureLayer);
                 arr[this.count++] = pFeatureLayer;
             }
             else
             {
                 MessageBox.Show("请选择相同的Shape文件");
             }
         }
     }
 }
 private void 属性查询_Load(object sender, EventArgs e)
 {
     for (int i = 0; i < axmapcontrol.LayerCount; i++)
     {
         comboBox1.Items.Add(axmapcontrol.get_Layer(i).Name);
     }
 }
示例#5
0
        private string GetLayerList()
        {
            string       layerList    = "";
            string       firstLayer   = "";
            ILayer       pInputLayer  = null;
            IRasterLayer presterlayer = null;

            for (int j = 0; j < listBox1.Items.Count; j++)
            {
                string layname = listBox1.Items[j].ToString();
                for (int i = 0; i < axmapcontrol.LayerCount; i++)
                {
                    if (axmapcontrol.get_Layer(i).Name == layname)
                    {
                        pInputLayer = axmapcontrol.get_Layer(i);
                    }
                }
                if (pInputLayer != null && (pInputLayer as IRasterLayer) != null)
                {
                    presterlayer = pInputLayer as IRasterLayer;
                    String rasterPath = presterlayer.FilePath;
                    if (j == 0)
                    {
                        firstLayer = rasterPath;
                    }
                    layerList += rasterPath + ";";
                }
            }
            return(layerList);
        }
示例#6
0
        private void AddAllLayerstoComboBox()
        {
            try
            {
                comboBoxLayers.Items.Clear();

                int pLayerCount = MainAxMapControl.LayerCount;
                if (pLayerCount > 0)
                {
                    comboBoxLayers.Enabled = true;//下拉菜单可用

                    for (int i = 0; i <= pLayerCount - 1; i++)
                    {
                        if (MainAxMapControl.get_Layer(i) is IFeatureLayer)  //只添加矢量图层,栅格图层没有属性表
                        {
                            comboBoxLayers.Items.Add(MainAxMapControl.get_Layer(i).Name);
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
                return;
            }
        }
        private void button1_Click(object sender, EventArgs e)
        {
            //获取目标图层;
            IFeatureLayer[] player  = new IFeatureLayer[5];
            int             counter = 0;

            for (int i = 0; i < checkedListBox1.CheckedItems.Count; i++)
            {
                for (int j = 0; j < pmapcontrol.LayerCount; j++)
                {
                    if (checkedListBox1.CheckedItems[i].ToString() == pmapcontrol.get_Layer(j).Name)
                    {
                        player[counter++] = pmapcontrol.get_Layer(j) as IFeatureLayer;
                    }
                }
            }


            // 获取源图层;
            IFeatureLayer pyuanLyaer = null;

            for (int k = 0; k < pmapcontrol.LayerCount; k++)
            {
                if (comboBox1.GetItemText(comboBox1.SelectedItem) == pmapcontrol.get_Layer(k).Name)
                {
                    pyuanLyaer = pmapcontrol.get_Layer(k) as IFeatureLayer;
                }
            }

            //空间参考
            esriSpatialRelEnum pesriSpatialRelEnum = SpatialRelConvert(comboBox2.GetItemText(comboBox2.SelectedItem));


            //空间位置判断
            if (pyuanLyaer != null && player.Length >= 1)
            {
                ISpatialFilter pISpatialFilter = new SpatialFilterClass();
                for (int i = 0; i < player.Length && player[i] != null; i++)
                {
                    IFeatureCursor    pFeatureCursor     = pyuanLyaer.FeatureClass.Search(null, true);
                    IFeature          pfeature           = pFeatureCursor.NextFeature();
                    IFeatureSelection pIFeatureSelection = player[i] as   IFeatureSelection;
                    while (pfeature != null)
                    {
                        pISpatialFilter.Geometry   = pfeature.ShapeCopy;
                        pISpatialFilter.SpatialRel = pesriSpatialRelEnum;
                        pIFeatureSelection.SelectFeatures(pISpatialFilter as IQueryFilter, esriSelectionResultEnum.esriSelectionResultAdd, true);
                        pfeature = pFeatureCursor.NextFeature();
                    }
                }
                pmapcontrol.Refresh();
                this.Close();
            }
            else
            {
                MessageBox.Show("请至少选择一个目标图层,原图层和空间关系方式!");
            }
        }
示例#8
0
 private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
 {
     for (int i = 0; i < axMapControl1.LayerCount; i++)
     {
         if (axMapControl1.get_Layer(i).Name == comboBox1.SelectedItem.ToString())
         {
             pFeatureLayer = axMapControl1.get_Layer(i) as IFeatureLayer;
         }
     }
 }
示例#9
0
 public Form_Clip(AxMapControl axMapControl1)
 {
     InitializeComponent();
     axmapcontrol = axMapControl1;
     for (int i = 0; i < axmapcontrol.LayerCount; i++)
     {
         comboBox1.Items.Add(axmapcontrol.get_Layer(i).Name.ToString());
         comboBox2.Items.Add(axmapcontrol.get_Layer(i).Name.ToString());
     }
 }
示例#10
0
 public Form_Pansharpen(AxMapControl axMapControl)
 {
     InitializeComponent();
     axmapcontrol = axMapControl;
     //将mapcontrol中的图层的名字添加到Combobox中
     for (int i = 0; i < axmapcontrol.LayerCount; i++)
     {
         quanse.Items.Add(axmapcontrol.get_Layer(i).Name.ToString());
         duoguangpu.Items.Add(axmapcontrol.get_Layer(i).Name.ToString());
     }
 }
示例#11
0
 /// <summary>
 /// 根据名称获取地图图层接口
 /// </summary>
 /// <param name="layer">图层名</param>
 public ILayer GetLayerByName(AxMapControl axMapControl1, string layer)
 {
     for (int i = 0; i < axMapControl1.LayerCount; i++)
     {
         if (axMapControl1.get_Layer(i).Name.Equals(layer))
         {
             return(axMapControl1.get_Layer(i));
         }
     }
     return(null);
 }
示例#12
0
 /// <summary>
 /// 根据图层名称,在地图控件上查找对应图层,找不到则返回Null
 /// </summary>
 /// <param name="mapControl"></param>
 /// <param name="layerName">图层名称</param>
 /// <returns></returns>
 public static ILayer GetLayer(this AxMapControl mapControl, string layerName)
 {
     for (int i = 0; i < mapControl.LayerCount; i++)
     {
         if (mapControl.get_Layer(i).Name.Equals(layerName))
         {
             return(mapControl.get_Layer(i));
         }
     }
     return(null);
 }
示例#13
0
        private void SpatialQueryForm_Load(object sender, EventArgs e)
        {
            comboLayers.Items.Clear();

            for (int i = 0; i < m_axMapControl.LayerCount; i++)
            {
                ILayer pLayer = m_axMapControl.get_Layer(i);
                comboLayers.Items.Add(pLayer.Name);

                comboLayers.SelectedIndex = 0;
            }
        }
示例#14
0
 /// <summary>
 /// 根据图层名称,在地图控件上查找对应图层,找不到则返回Null
 /// </summary>
 /// <param name="mapControl"></param>
 /// <param name="layerName">图层名称</param>
 /// <param name="layerIndex">图层索引</param>
 /// <returns></returns>
 public static ILayer GetLayer(this AxMapControl mapControl, string layerName, out int layerIndex)
 {
     for (layerIndex = 0; layerIndex < mapControl.LayerCount; layerIndex++)
     {
         if (mapControl.get_Layer(layerIndex).Name.Equals(layerName))
         {
             return(mapControl.get_Layer(layerIndex));
         }
     }
     layerIndex = -1;
     return(null);
 }
示例#15
0
        private void LoadData()
        {
            int LayerCount = mapcontrol.LayerCount;

            for (int i = 0; i < LayerCount; i++)
            {
                if (mapcontrol.get_Layer(i) is IRasterLayer)
                {
                    axMapControl1.AddLayer(mapcontrol.get_Layer(i));
                }
            }
        }
示例#16
0
 //通过名称获取图层
 public ILayer GetLayerByName(string layerName, AxMapControl axMapControl1)
 {
     //历遍所有图层查找图层名相同的图层
     for (int i = 0; i < axMapControl1.LayerCount; i++)
     {
         if (axMapControl1.get_Layer(i).Name.Equals(layerName))
         {
             return(axMapControl1.get_Layer(i));
         }
     }
     //若没有则返回null
     return(null);
 }
示例#17
0
        private void StretchRenderFrm_Load(object sender, System.EventArgs e)
        {
            this.Left = 300; this.Top = 100;
            int LayerCount = m_mapControl.LayerCount;

            for (int i = 0; i < LayerCount; i++)
            {
                if (m_mapControl.get_Layer(i) is IRasterLayer)
                {
                    comboBoxSelectRaster.Items.Add(m_mapControl.get_Layer(i).Name);
                }
            }
            comboBoxStretchType.SelectedIndex = 0;
        }
示例#18
0
        private void cboLayer_SelectedIndexChanged(object sender, EventArgs e)
        {
            cboField.Items.Clear();
            txtStateName.Text = "";
            mFeatureLayer     = mMapControl.get_Layer(cboLayer.SelectedIndex) as IFeatureLayer;
            IFeatureClass pFeatureClass = mFeatureLayer.FeatureClass;
            string        strFldName;

            for (int i = 0; i < pFeatureClass.Fields.FieldCount; i++)
            {
                strFldName = pFeatureClass.Fields.get_Field(i).Name;
                this.cboField.Items.Add(strFldName);
            }
            this.cboField.SelectedIndex = 0;
        }
示例#19
0
        private void comboBoxInData_SelectedIndexChanged(object sender, System.EventArgs e)
        {
            string        sLayerName = comboBoxInData.Text;
            AxMapControl  axMap      = pMainFrm.getMapControl();
            IFeatureLayer pFeatLyr   = null;

            comboBoxField.Items.Clear();
            comboBoxField.Items.Add("无");
            try
            {
                for (int i = 0; i <= axMap.LayerCount - 1; i++)
                {
                    ILayer pLyr = axMap.get_Layer(i);
                    if (pLyr.Name == sLayerName)
                    {
                        if (pLyr is IFeatureLayer)
                        {
                            pFeatLyr = pLyr as IFeatureLayer;
                            IFeatureClass m_pFeatCls = pFeatLyr.FeatureClass;
                            for (int j = 0; j <= m_pFeatCls.Fields.FieldCount - 1; j++)
                            {
                                comboBoxField.Items.Add(m_pFeatCls.Fields.get_Field(j).Name);
                            }
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
示例#20
0
        public void ClearRouteAnalyst(AxMapControl mapControl)
        {
            //清除所有图标
            SymbolUtil.ClearElement(mapControl);
            stopPoints.Clear();
            barryPoints.Clear();
            barryElements.Clear();
            stopElements.Clear();
            //清除网络分析图层
            for (int i = 0; i < mapControl.LayerCount; i++)
            {
                ILayer        layer        = mapControl.get_Layer(i);
                INetworkLayer networkLayer = layer as INetworkLayer;
                INALayer      naLayer      = layer as INALayer;
                if (networkLayer != null || naLayer != null)
                {
                    mapControl.DeleteLayer(i);
                }
            }
            //清除网络数据集
            ILayer datalayer = LayerUtil.QueryLayerInMap(mapControl, "网络数据集");

            if (datalayer != null)
            {
                mapControl.Map.DeleteLayer(datalayer);
            }
            IActiveView pActiveView = mapControl.ActiveView;

            pActiveView.PartialRefresh(esriViewDrawPhase.esriViewGraphics, null, null);
            mapControl.Refresh();
        }
示例#21
0
        private void cboLayer_SelectedIndexChanged(object sender, EventArgs e)
        {
            try
            {
                //清空listBoxField控件的内容
                this.listBoxField.Items.Clear();
                //获取cboLayer中选中的图层
                mFeatureLayer = mMapControl.get_Layer(cboLayer.SelectedIndex) as IFeatureLayer;
                pFeatureClass = mFeatureLayer.FeatureClass;
                if (pFeatureClass != null)
                {
                    //字段名称
                    string strFldName;
                    for (int i = 0; i < pFeatureClass.Fields.FieldCount; i++)
                    {
                        strFldName = pFeatureClass.Fields.get_Field(i).Name;
                        //图层名称加入cboField
                        this.listBoxField.Items.Add(strFldName);
                    }

                    //默认显示第一个选项
                    this.listBoxField.SelectedIndex = 0;
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }
        }
示例#22
0
        public static IGeometry GetSelectGeometry(AxMapControl axMapControl)
        {
            for (int i = 0; i < axMapControl.LayerCount; i++)
            {
                IFeatureLayer     pFeatureLayer     = axMapControl.get_Layer(i) as IFeatureLayer;
                IFeatureSelection pFeatureSelection = pFeatureLayer as IFeatureSelection;
                ISelectionSet     pSelectionSet     = pFeatureSelection.SelectionSet;

                ICursor pCursor = null;
                pSelectionSet.Search(null, false, out pCursor);
                IFeatureCursor pFeatureCursor = pCursor as IFeatureCursor;
                IFeature       pFeature       = pFeatureCursor.NextFeature();

                System.Runtime.InteropServices.Marshal.ReleaseComObject(pFeatureCursor);
                GC.Collect();
                GC.WaitForPendingFinalizers();

                if (pFeature != null)
                {
                    return(pFeature.Shape);
                }
            }

            return(null);
        }
示例#23
0
        private void comboBoxInData_SelectedIndexChanged(object sender, EventArgs e)
        {
            string       sLayerName = comboBoxInData.Text;
            AxMapControl axMap      = pMainFrm.getMapControl();


            try
            {
                for (int i = 0; i <= axMap.LayerCount - 1; i++)
                {
                    ILayer pLyr = axMap.get_Layer(i);
                    if (pLyr.Name == sLayerName)
                    {
                        if (pLyr is IRasterLayer)
                        {
                            m_pRasterLyr = pLyr as IRasterLayer;
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
示例#24
0
        private IFeatureLayer GetLayerByName(string selectedLayerName)
        {
            IFeatureLayer pFeatureLayer = null;
            IFeatureLayer reFeatureLayer = null;

            try
            {
                for (int i = 0; i < axMap.LayerCount; i++)
                {
                    pFeatureLayer = (IFeatureLayer)axMap.get_Layer(i);
                    if (pFeatureLayer.Name == selectedLayerName)
                    {
                        reFeatureLayer = pFeatureLayer;
                    }
                }
                return reFeatureLayer;
            }
            catch (System.Exception ex)
            {

            }

            return pFeatureLayer;

        }
示例#25
0
        private void ShowLayerTips()
        {
            AxMapControl axMap = pMainFrm.getMapControl();

            //Loop through the maps layers
            for (int i = 0; i <= axMap.LayerCount - 1; i++)
            {
                //Get ILayer interface
                ILayer layer = axMap.get_Layer(i);
                //If is the layer selected in the control
                if (comboBoxLayer.Text == layer.Name)
                {
                    //If want to show map tips
                    if (chkShowTips.CheckState == CheckState.Checked)
                    {
                        layer.ShowTips = true;
                    }
                    else
                    {
                        layer.ShowTips = false;
                    }
                }
                else
                {
                    layer.ShowTips = false;
                }
            }
        }
示例#26
0
        private void PopulateComboWithMapLayers(ComboBox Layers, bool bLayer, System.Collections.Hashtable LayersIndex)
        {
            Layers.Items.Clear();
            LayersIndex.Clear();

            ILayer       aLayer;
            AxMapControl axMap = pMainFrm.getMapControl();

            for (int i = 0; i <= axMap.LayerCount - 1; i++)
            {
                // Get the layer name and add to combo
                aLayer = axMap.get_Layer(i);
                if (aLayer.Valid == true)
                {
                    if (bLayer == true)
                    {
                        if (aLayer is IFeatureLayer)
                        {
                            Layers.Items.Add(aLayer.Name);
                            LayersIndex.Add(Layers.Items.Count - 1, aLayer);
                        }
                    }
                    else
                    {
                        if (aLayer is IRasterLayer)
                        {
                            Layers.Items.Add(aLayer.Name);
                            LayersIndex.Add(Layers.Items.Count - 1, aLayer);
                        }
                    }
                }
            }
        }
示例#27
0
        private void button2_Click(object sender, EventArgs e)
        {
            IActiveView        pIActiveView        = pmapcontrol.Map as IActiveView;
            IGraphicsContainer pIGraphicsContainer = pIActiveView.GraphicsContainer;

            pIGraphicsContainer.DeleteAllElements();

            IFeatureLayer  pIFeatureLayer  = pmapcontrol.get_Layer(0) as IFeatureLayer;
            IFeatureCursor pIFeatureCursor = pIFeatureLayer.FeatureClass.Search(null, false);

            IFeature pfeature = pIFeatureCursor.NextFeature();

            while (pfeature != null)
            {
                ITopologicalOperator pITopologicalOperator = pfeature.Shape as ITopologicalOperator;
                IPolygon             pPolygon = pITopologicalOperator.Buffer(double.Parse(textBox1.Text)) as IPolygon;

                IElement pIElement = new PolygonElement();
                pIElement.Geometry = pPolygon;

                pIGraphicsContainer.AddElement(pIElement, 0);

                pfeature = pIFeatureCursor.NextFeature();
            }
            pmapcontrol.Refresh();
            this.Close();
        }
示例#28
0
        private void PopulateComboWithMapLayers(ComboBox Layers, bool bLayer)
        {
            Layers.Items.Clear();


            ILayer       aLayer;
            AxMapControl axMap = pMainFrm.getMapControl();

            for (int i = 0; i <= axMap.LayerCount - 1; i++)
            {
                // Get the layer name and add to combo
                aLayer = axMap.get_Layer(i);
                if (aLayer.Valid == true)
                {
                    if (bLayer == true)
                    {
                        if (aLayer is IFeatureLayer)
                        {
                            IFeatureLayer pFeatLayer = aLayer as IFeatureLayer;
                            if (pFeatLayer.FeatureClass.ShapeType != esriGeometryType.esriGeometryPolygon)
                            {
                                Layers.Items.Add(aLayer.Name);
                            }
                        }
                    }
                    else
                    {
                        if (aLayer is IRasterLayer)
                        {
                            Layers.Items.Add(aLayer.Name);
                        }
                    }
                }
            }
        }
示例#29
0
        private void button2_Click(object sender, EventArgs e)
        {
            string text;

            text = textBox1.Text;


            Geoprocessor GP = new Geoprocessor();

            GP.OverwriteOutput = true;
            ESRI.ArcGIS.AnalysisTools.Buffer pBuffer = new ESRI.ArcGIS.AnalysisTools.Buffer();

            ILayer        pLayer    = aMap.get_Layer(0);
            IFeatureLayer featLayer = pLayer as IFeatureLayer;

            pBuffer.in_features = featLayer;
            string filepath = @"c:\temp";

            pBuffer.out_feature_class = filepath + "\\" + pLayer.Name + ".shp";

            pBuffer.buffer_distance_or_field = text;
            pBuffer.dissolve_option          = "ALL";

            GP.Execute(pBuffer, null);

            aMap.AddShapeFile(filepath, pLayer.Name);

            aMap.MoveLayerTo(1, 0);
        }
        public FormAtrribute(AxMapControl ax)
        {
            InitializeComponent();

            pLayer = ax.get_Layer(0);
            a      = ax;
        }
示例#31
0
        public static IFeatureLayer getLayerFromName(AxMapControl mapControl)
        {
            IFeatureLayer layer = null;
            int s = 0;
            for (int i = 0; i < mapControl.LayerCount; i++)
            {
                ILayer layers = mapControl.get_Layer(i);
                if (layers is GroupLayer || layers is ICompositeLayer)   //判断是否是groupLayer
                {
                    MessageBox.Show(layers.Name);
                    //创建文件夹:slgc,ztdt,bhzy
                    if(layer.Name.Equals("水利工程"))
                    {
                        //创建文件夹:slgc

                        //将该文件路径传入函数中
                        layer = getSubLayer(layers);  //递归的思想
                    }
                    else if (layer.Name.Substring(0, 2).Equals("方案"))
                    {
                        s++;
                        //创建ztdu文件夹

                        //传入参数  ztdt和方案i

                        layer = getSubLayer(layers);  //递归的思想

                    }
                    else
                    {
                        //创建bhzy文件夹

                        //传入参数
                         layer = getSubLayer(layers);  //递归的思想
                    }

                    if (layer != null)
                    {
                        continue;
                    }
                }
                else
                {
                    //if (mapControl.get_Layer(i).Name.Equals(layerName))
                    //{
                        layer = layers as IFeatureLayer;

                    //}
                }
            }
            //MessageBox.Show(layer.Name);
            return layer;
        }
示例#32
0
 public static void AddLayersToEagleEye(AxMapControl axMapControl1,AxMapControl axMapControl2)
 {
     // 当主地图显示控件的地图更换时,鹰眼中的地图也跟随更换
     axMapControl2.Map = new MapClass();
     axMapControl2.ClearLayers();
     // 添加主地图控件中的所有图层到鹰眼控件中
     for (int i = axMapControl1.LayerCount - 1; i >= 0; i--)
     {
         axMapControl2.AddLayer(axMapControl1.get_Layer(i));
     }
     // 设置 MapControl 显示范围至数据的全局范围
     axMapControl2.Extent = axMapControl1.Extent;
     // 刷新鹰眼控件地图
     axMapControl2.Refresh();
 }
示例#33
0
        /// <summary>
        /// 删除feature图元
        /// </summary>
        /// <param name="intObjID"></param>
        /// <param name="strLayerName"></param>
        /// <param name="map"></param>
        public void DelFeature(int intObjID, string strLayerName, AxMapControl map)
        {
            IFeatureLayer pfeaLayer;
            for (int intI = 0; intI < map.LayerCount; intI++)
            {
                try
                {
                    pfeaLayer = map.get_Layer(intI) as IFeatureLayer;
                    if (pfeaLayer != null && pfeaLayer.FeatureClass.AliasName == strLayerName)
                    {

                        //定义一个地物类,把要编辑的图层转化为定义的地物类
                        IFeatureClass fc = pfeaLayer.FeatureClass;
                        //先定义一个编辑的工作空间,然后把转化为数据集,最后转化为编辑工作空间,
                        IWorkspaceEdit w = (fc as IDataset).Workspace as IWorkspaceEdit;
                        //开始事务操作
                        w.StartEditing(false);
                        //开始编辑
                        w.StartEditOperation();
                        IQueryFilter queryFilter = new QueryFilterClass();
                        queryFilter.WhereClause = "OBJECTID=" + intObjID;
                        IFeatureCursor updateCursor = pfeaLayer.FeatureClass.Update(queryFilter, false);
                        IFeature feature = updateCursor.NextFeature();

                        int m = 0;
                        while (feature != null)
                        {
                            m++;
                            updateCursor.DeleteFeature();
                            feature = updateCursor.NextFeature();
                        }
                        //结束编辑
                        w.StopEditOperation();
                        //结束事务操作
                        w.StopEditing(true);
                        break;
                    }
                }
                catch
                {

                }
            }
        }
示例#34
0
文件: GisUtil.cs 项目: Leooonard/CGXM
        public static ILayer getLayerByName(string name, AxMapControl mapControl)
        {
            if (mapControl == null)
            {
                return null;
            }

            for (int i = 0; i < mapControl.LayerCount; i++)
            {
                ILayer layer = mapControl.get_Layer(i);
                ICompositeLayer compositeLayer = layer as ICompositeLayer;
                if (compositeLayer == null)
                {
                    //说明不是一个组合图层, 直接获取图层名.
                    if (layer.Name == name)
                    {
                        return layer;
                    }
                }
                else
                {
                    for (int j = 0; j < compositeLayer.Count; j++)
                    {
                        ILayer ly = compositeLayer.get_Layer(j);
                        if (ly.Name == name)
                        {
                            return compositeLayer as ILayer;
                        }
                    }
                }
            }
            return null;
        }
示例#35
0
 public List<string> UpdateMapLayerNameList(List<string> mapLayerNameList, AxMapControl mapControl)
 {
     mapLayerNameList = new List<string>();
     //每次读取地图, 都要更新图层列表中的图层名.
     for (int i = 0; i < mapControl.LayerCount; i++)
     {
         ILayer layer = mapControl.get_Layer(i);
         ICompositeLayer compositeLayer = layer as ICompositeLayer;
         if (compositeLayer == null)
         {
             //说明不是一个组合图层, 直接获取图层名.
             mapLayerNameList.Add(layer.Name);
         }
         else
         {
             for (int j = 0; j < compositeLayer.Count; j++)
             {
                 ILayer ly = compositeLayer.get_Layer(j);
                 mapLayerNameList.Add(ly.Name);
             }
         }
     }
     return mapLayerNameList;
 }
示例#36
0
 protected void updateMapLayerNameList(ObservableCollection<string> mapLayerNameList, AxMapControl mapControl)
 {
     //每次读取地图, 都要更新图层列表中的图层名.
     for (int i = 0; i < mapControl.LayerCount; i++)
     {
         ILayer layer = mapControl.get_Layer(i);
         ICompositeLayer compositeLayer = layer as ICompositeLayer;
         if (compositeLayer == null)
         {
             //说明不是一个组合图层, 直接获取图层名.
             mapLayerNameList.Add(layer.Name);
         }
         else
         {
             for (int j = 0; j < compositeLayer.Count; j++)
             {
                 ILayer ly = compositeLayer.get_Layer(j);
                 mapLayerNameList.Add(ly.Name);
             }
         }
     }
 }
示例#37
0
文件: GisUtil.cs 项目: Leooonard/CGXM
 public static List<IRasterLayer> GetRasterLayer(AxMapControl mapControl)
 {
     List<IRasterLayer> rasterLayerList = new List<IRasterLayer>();
     for (int i = 0; i < mapControl.LayerCount; i++)
     {
         ILayer layer = mapControl.get_Layer(i);
         ICompositeLayer cLayer = layer as ICompositeLayer;
         if (cLayer == null)
         {
             IFeatureLayer fLayer = layer as IFeatureLayer;
             if (fLayer == null)
             {
                 IRasterLayer rLayer = layer as IRasterLayer;
                 rasterLayerList.Add(rLayer);
             }
         }
         else
         {
             for (int j = 0; j < cLayer.Count; j++)
             {
                 IFeatureLayer fLayer = cLayer.get_Layer(j) as IFeatureLayer;
                 if (fLayer == null)
                 {
                     IRasterLayer rLayer = cLayer.get_Layer(j) as IRasterLayer;
                     rasterLayerList.Add(rLayer);
                 }
             }
         }
     }
     return rasterLayerList;
 }
示例#38
0
文件: GisUtil.cs 项目: Leooonard/CGXM
        public static bool CheckMapIntegrity(string folder, AxMapControl mapControl)
        {
            for (int i = 0; i < mapControl.LayerCount; i++)
            {
                ICompositeLayer cLayer = mapControl.get_Layer(i) as ICompositeLayer;
                if (cLayer == null)
                {
                    ILayer layer = mapControl.get_Layer(i);
                    if (!CheckLayerIntegrity(layer, folder))
                    {
                        return false;
                    }
                }
                else
                {
                    for (int j = 0; j < cLayer.Count; j++)
                    {
                        ILayer layer = cLayer.get_Layer(j);
                        if (!CheckLayerIntegrity(layer, folder))
                        {
                            return false;
                        }
                    }
                }
            } 

            return true;
        }
示例#39
0
        public static bool CheckMapIntegrity(string folder, AxMapControl mapControl)
        {
            for (int i = 0; i < mapControl.LayerCount; i++)
            {
                ICompositeLayer cLayer = mapControl.get_Layer(i) as ICompositeLayer;
                if (cLayer == null)
                {
                    ILayer layer = mapControl.get_Layer(i);
                    IFeatureLayer fLayer = layer as IFeatureLayer;
                    if (fLayer == null)
                        continue;
                    IFeatureClass featureClass = fLayer.FeatureClass;
                    if (featureClass == null)
                        return false;
                    string fileName = featureClass.AliasName;
                    if (!File.Exists(folder + "//" + fileName + ".shp"))
                        return false;
                }
                else
                {
                    for (int j = 0; j < cLayer.Count; j++)
                    {
                        ILayer layer = cLayer.get_Layer(j);
                        Ut.M(layer.Name);
                        IFeatureLayer fLayer = layer as IFeatureLayer;
                        if (fLayer == null)
                            continue;
                        string fileName = fLayer.FeatureClass.AliasName;
                        if (!File.Exists(folder + "//" + fileName + ".shp"))
                            return false;
                    }
                }
            }

            //检查是否有行政

            return true;
        }
示例#40
0
        public static void AddData_CAD(AxMapControl axMapControl1)
        {
            IWorkspaceFactory pWorkspaceFactory;
            IFeatureWorkspace pFeatureWorkspace;
            IFeatureLayer pFeatureLayer;
            IFeatureDataset pFeatureDataset;
            //获取当前路径和文件名
            OpenFileDialog dlg = new OpenFileDialog();
            if (dlg.ShowDialog() == DialogResult.OK)
            {
                string strFullPath = dlg.FileName;
                if (strFullPath == "") return;
                int Index = strFullPath.LastIndexOf("//");
                string filePath = strFullPath.Substring(0, Index);
                string fileName = strFullPath.Substring(Index + 1);
                //打开CAD数据集
                pWorkspaceFactory = new CadWorkspaceFactoryClass();
                pFeatureWorkspace = (IFeatureWorkspace)pWorkspaceFactory.OpenFromFile(filePath, 0);
                //打开一个要素集
                pFeatureDataset = pFeatureWorkspace.OpenFeatureDataset(fileName);
                //IFeaturClassContainer可以管理IFeatureDataset中的每个要素类
                IFeatureClassContainer pFeatClassContainer = (IFeatureClassContainer)pFeatureDataset;
                //对CAD文件中的要素进行遍历处理
                for (int i = 0; i < pFeatClassContainer.ClassCount - 1; i++)
                {
                    IFeatureClass pFeatClass = pFeatClassContainer.get_Class(i);
                    if (pFeatClass.FeatureType == esriFeatureType.esriFTCoverageAnnotation)
                        //如果是注记,则添加注记层
                        pFeatureLayer = new CadAnnotationLayerClass();
                    else
                        //如果是点、线、面,则添加要素层
                        pFeatureLayer = new FeatureLayerClass();
                    pFeatureLayer.Name = pFeatClass.AliasName;
                    pFeatureLayer.FeatureClass = pFeatClass;
                    axMapControl1.Map.AddLayer(pFeatureLayer);
                    axMapControl1.ActiveView.Refresh();
                }

                ILayer layer = axMapControl1.get_Layer(0);
                axMapControl1.Extent = layer.AreaOfInterest;
            }
        }
示例#41
0
文件: GisUtil.cs 项目: Leooonard/CGXM
 public static IGroupLayer getGroupLayerFromName(string name, AxMapControl mapControl)
 {
     for (int i = 0; i < mapControl.LayerCount; i++)
     {
         if (mapControl.get_Layer(i).Name == name)
         {
             IGroupLayer layer = mapControl.get_Layer(i) as IGroupLayer;
             return layer;
         }
     }
     return null;
 }
示例#42
0
文件: GisUtil.cs 项目: Leooonard/CGXM
        public static void ShowAllLayerInMap(AxMapControl mapControl)
        {
            if (mapControl == null)
            {
                return;
            }

            for (int i = 0; i < mapControl.LayerCount; i++)
            {
                mapControl.get_Layer(i).Visible = true;
            }

            mapControl.ActiveView.Refresh();
        }
示例#43
0
文件: GisUtil.cs 项目: Leooonard/CGXM
 public static string GetShpNameByLayerIndex(AxMapControl mapControl, int index)
 {
     List<string> shpNameList = new List<string>();
     for (int i = 0; i < mapControl.LayerCount; i++)
     {
         ICompositeLayer cLayer = mapControl.get_Layer(i) as ICompositeLayer;
         if (cLayer == null)
         {
             ILayer layer = mapControl.get_Layer(i);
             IFeatureLayer fLayer = layer as IFeatureLayer;
             if (fLayer == null)
             {
                 shpNameList.Add("");
                 continue;
             }
             IFeatureClass featureClass = fLayer.FeatureClass;
             if (featureClass == null)
             {
                 shpNameList.Add("");
                 continue;
             }
             string fileName = featureClass.AliasName;
             shpNameList.Add(fileName);
         }
         else
         {
             for (int j = 0; j < cLayer.Count; j++)
             {
                 ILayer layer = cLayer.get_Layer(j);
                 IFeatureLayer fLayer = layer as IFeatureLayer;
                 if (fLayer == null)
                     continue;
                 string fileName = fLayer.FeatureClass.AliasName;
                 shpNameList.Add(fileName);
             }
         }
     }
     return shpNameList[index];
 }
示例#44
0
文件: GisUtil.cs 项目: Leooonard/CGXM
 public static string GetShpNameByMapLayerName(AxMapControl mapControl, string mapLayerName)
 {
     for (int i = 0; i < mapControl.LayerCount; i++)
     {
         ICompositeLayer cLayer = mapControl.get_Layer(i) as ICompositeLayer;
         if (cLayer == null)
         {
             ILayer layer = mapControl.get_Layer(i);
             IFeatureLayer fLayer = layer as IFeatureLayer;
             if (fLayer == null)
             {
                 continue;
             }
             IFeatureClass featureClass = fLayer.FeatureClass;
             if (featureClass == null)
             {
                 continue;
             }
             string fileName = featureClass.AliasName;
             if (layer.Name == mapLayerName)
                 return fileName;
         }
         else
         {
             for (int j = 0; j < cLayer.Count; j++)
             {
                 ILayer layer = cLayer.get_Layer(j);
                 IFeatureLayer fLayer = layer as IFeatureLayer;
                 if (fLayer == null)
                     continue;
                 string fileName = fLayer.FeatureClass.AliasName;
                 if (layer.Name == mapLayerName)
                     return fileName;
             }
         }
     }
     return "";
 }
示例#45
0
        public static int query(AxMapControl axMapControl1, string searchName,int index,bool flash)
        {
            ILayer layer = axMapControl1.get_Layer(index);
            IFeatureLayer featureLayer = layer as IFeatureLayer;
            int i=0;
            if(featureLayer==null)
            {

                MessageBox.Show("选择图层不是Feature图层!");

                return i;

            }
            //获取featureLayer的featureClass

            IFeatureClass featureClass = featureLayer.FeatureClass;
            IFeature feature = null;

            IQueryFilter queryFilter = new QueryFilterClass();

             //queryFilter.WhereClause = "SELECT * FROM " + featureClass.AliasName + " WHERE: 'CC' = '" + searchName + "'";

            try
            {
                queryFilter.WhereClause = "用地类型 = '" + searchName + "'";
                IFeatureCursor featureCusor = featureLayer.Search(queryFilter, false); ;
                //featureCusor

                //search的参数第一个为过滤条件,第二个为是否重复执行。
                while ((feature = featureCusor.NextFeature()) != null)
                {
                    //axMapControl1.Extent =(IEnvelope) feature.Shape;
                    axMapControl1.Map.SelectFeature(axMapControl1.get_Layer(index), feature);
                if(flash)
                    axMapControl1.FlashShape(feature.Shape);
                    //axMapControl1.Refresh(esriViewDrawPhase.esriViewGraphicSelection, null, null);
                   i++;
                }
                axMapControl1.ActiveView.Refresh();
                return i;
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
                return i;
            }
        }
示例#46
0
        /// <summary>
        /// 获取字段唯一值
        /// </summary>
        public static string[] GetUniqueValue(AxMapControl axMapControl1, int index,string strFld)
        {
            ILayer layer = axMapControl1.get_Layer(index);
            IFeatureLayer featureLayer = layer as IFeatureLayer;
            int i = 0;
            if (featureLayer == null)
            {
                MessageBox.Show("选择图层不是Feature图层!");
                return null ;
            }
            //获取featureLayer的featureClass

            IFeatureClass pFeatureClass = featureLayer.FeatureClass;
            //得到IFeatureCursor游标
            IFeatureCursor pCursor = pFeatureClass.Search(null, false);
            //coClass对象实例生成
            IDataStatistics pData = new DataStatisticsClass();
            pData.Field = strFld;
            pData.Cursor = pCursor as ICursor;
            //枚举唯一值
            System.Collections.IEnumerator pEnumVar = pData.UniqueValues;
            //记录总数
            int RecordCount = pData.UniqueValueCount;
            //字符数组
            string[] strValue = new string[RecordCount];
            pEnumVar.Reset();
            //int i = 0;
            while (pEnumVar.MoveNext())
            {
                strValue[i++] = pEnumVar.Current.ToString();
            }
            return strValue;
        }
示例#47
0
文件: GisUtil.cs 项目: Leooonard/CGXM
 public static string getLayerNameByLayerIndex(AxMapControl mapControl, int index)
 {
     List<string> mapLayerNameList = new List<string>();
     for (int i = 0; i < mapControl.LayerCount; i++)
     {
         ILayer layer = mapControl.get_Layer(i);
         ICompositeLayer compositeLayer = layer as ICompositeLayer;
         if (compositeLayer == null)
         {
             mapLayerNameList.Add(layer.Name);
         }
         else
         {
             for (int j = 0; j < compositeLayer.Count; j++)
             {
                 ILayer ly = compositeLayer.get_Layer(j);
                 mapLayerNameList.Add(ly.Name);
             }
         }
     }
     return mapLayerNameList[index];
 }
示例#48
0
 public static void AddData_GDB(AxMapControl axMapControl1)
 {
     IWorkspaceFactory pWorkspaceFactory;
     IFeatureWorkspace pFeatureWorkspace;
     IFeatureLayer pFeatureLayer;
     IFeatureDataset pFeatureDataset;
     //获取当前路径和文件名
     OpenFileDialog dlg = new OpenFileDialog();
     dlg.Title = "选择图层";
     dlg.Filter = "gdb文件|*.gdb";
     if (dlg.ShowDialog() == System.Windows.Forms.DialogResult.OK)
     {
         string strFullPath = dlg.FileName;
         if (strFullPath == "") return;
         //打开personGeodatabase,并添加图层
         pWorkspaceFactory = new FileGDBWorkspaceFactoryClass();
         //IWorkspaceFactory pAccessWorkspaceFactory = new AccessWorkspaceFactoryClass();
         //打开工作空间并遍历数据集
         IWorkspace pWorkspace = pWorkspaceFactory.OpenFromFile(strFullPath, 0);
         IEnumDataset pEnumDataset = pWorkspace.get_Datasets(ESRI.ArcGIS.Geodatabase.esriDatasetType.esriDTAny);
         pEnumDataset.Reset();
         IDataset pDataset = pEnumDataset.Next();
         //如果数据集是IFeatureDataset,则遍历它下面的子类
         if (pDataset is IFeatureDataset)
         {
             pFeatureWorkspace = (IFeatureWorkspace)pWorkspaceFactory.OpenFromFile(strFullPath, 0);
             pFeatureDataset = pFeatureWorkspace.OpenFeatureDataset(pDataset.Name);
             IEnumDataset pEnumDataset1 = pFeatureDataset.Subsets;
             pEnumDataset1.Reset();
             IDataset pDataset1 = pEnumDataset1.Next();
             //如果子类是FeatureClass,则添加到axMapControl1中
             if (pDataset1 is IFeatureClass)
             {
                 pFeatureLayer = new FeatureLayerClass();
                 pFeatureLayer.FeatureClass = pFeatureWorkspace.OpenFeatureClass(pDataset1.Name);
                 pFeatureLayer.Name = pFeatureLayer.FeatureClass.AliasName;
                 axMapControl1.Map.AddLayer(pFeatureLayer);
                 axMapControl1.ActiveView.Refresh();
                 ILayer layer = axMapControl1.get_Layer(0);
                 axMapControl1.Extent = layer.AreaOfInterest;
             }
         }
     }
 }
示例#49
0
        public static void AddData_RST(AxMapControl axMapControl1)
        {
            IWorkspaceFactory pWorkspaceFactory;
            IRasterWorkspace pRasterWorkspace;
            OpenFileDialog openFileDialog2 = new OpenFileDialog();
            openFileDialog2.Filter = "Layer File(*.lyr)|*.jpg;*.bmp;*.tiff";
            openFileDialog2.Title = "添加数据";

            //获取当前路径和文件名
            if (openFileDialog2.ShowDialog() == System.Windows.Forms.DialogResult.OK)
            {
                string strFullPath = openFileDialog2.FileName;
                if (strFullPath == "") return;
                int Index = strFullPath.LastIndexOf("\\");
                string fileName = strFullPath.Substring(Index + 1);
                string filePath = strFullPath.Substring(0, Index);
                pWorkspaceFactory = new RasterWorkspaceFactoryClass();
                pRasterWorkspace = (IRasterWorkspace)pWorkspaceFactory.OpenFromFile(filePath, 0);
                IRasterDataset pRasterDataset = (IRasterDataset)pRasterWorkspace.OpenRasterDataset(fileName);
                IRasterLayer pRasterLayer = new RasterLayerClass();
                pRasterLayer.CreateFromDataset(pRasterDataset);
                axMapControl1.Map.AddLayer(pRasterLayer);

                ILayer layer = axMapControl1.get_Layer(0);
                axMapControl1.Extent = layer.AreaOfInterest;
            }
        }
示例#50
0
文件: GisUtil.cs 项目: Leooonard/CGXM
        public static void HideAllLayerInMap(AxMapControl mapControl)
        {
            if (mapControl == null)
            {
                return;
            }

            for (int i = 0; i < mapControl.LayerCount; i++)
            {
                ILayer layer = mapControl.get_Layer(i);
                layer.Visible = false;   
            }

            mapControl.ActiveView.Refresh();
        }
示例#51
0
        //
        //
        //
        public static int getLyrIndexByName(AxMapControl pMapCtrl, string lyrName)
        {
            ILayer pLayer;
            String fName;
            for (int ii = 0; ii < pMapCtrl.LayerCount; ii++)
            {
                pLayer = pMapCtrl.get_Layer(ii);
                fName = pLayer.Name;
                if (fName.Equals(lyrName))
                {
                    return ii;

                }
            }
            return -1;
        }
示例#52
0
 /// <summary>
 /// �������ƻ�ȡ��ͼͼ��ӿ�
 /// </summary>
 /// <param name="layer">ͼ����</param>
 public ILayer GetLayerByName(AxMapControl axMapControl1, string layer)
 {
     for (int i = 0; i < axMapControl1.LayerCount; i++)
     {
         if (axMapControl1.get_Layer(i).Name.Equals(layer))
         {
             return axMapControl1.get_Layer(i);
         }
     }
     return null;
 }
示例#53
0
        //查询
        public static void QueryByBuffer(AxMapControl axMapControl)
        {
            // IDataset data = null;
            ILayer layer = axMapControl.get_Layer(0);
            IFeatureLayer featureLayer = layer as IFeatureLayer;
            //获取featurelayer的featureClass
            IFeatureClass featureClass = featureLayer.FeatureClass;
            IFeature feature = null;
            IQueryFilter queryFilter = new QueryFilterClass();
            IFeatureCursor featureCursor;
            queryFilter.WhereClause = "NAME";
            featureCursor = featureClass.Search(queryFilter, true);
            feature = featureCursor.NextFeature();
            if (feature != null)
            {
                axMapControl.Map.SelectFeature(axMapControl.get_Layer(axMapControl.Map.LayerCount), feature);
                axMapControl.Refresh(esriViewDrawPhase.esriViewGeoSelection, null, null);
            }
            axMapControl.MousePointer = ESRI.ArcGIS.Controls.esriControlsMousePointer.esriPointerCrosshair;
            IGeometry geometry = null;
            geometry = axMapControl.TrackPolygon();

            //geometry = axMapControl.get_Layer(axMapControl.Map.LayerCount - 1) as IGeometry;
            axMapControl.Map.SelectByShape(geometry, null, false);
            axMapControl.Refresh(esriViewDrawPhase.esriViewGeoSelection, null, null);
        }
示例#54
0
//--------------------------------------------------------------------------------------
        //读取groupLayer
        public void getGroupLayer(AxMapControl mapControl, string outPath_Mid)
        {
            //IFeatureLayer layer = null;
            max = mapControl.LayerCount;
           
            for (int i = 0; i < mapControl.LayerCount; i++)
            {
                pgrs(i);
                ILayer layers = mapControl.get_Layer(i);
                if (layers is GroupLayer || layers is ICompositeLayer)   //判断是否是groupLayer
                {
                    //MessageBox.Show(layers.Name);
                    //创建文件夹:slgc,ztdt,bhzy
                    if (layers.Name.Equals("水利工程"))
                    {
                        //创建文件夹:slgc
                        string slgcPath= importTool.createFolder(outPath_Mid+"\\slgc");
                        //将该文件路径传入函数中
                        getSubLayer(layers, slgcPath,null,false);  //递归的思想
                    }
                    else if (layers.Name.Substring(0, 2).Equals("方案"))
                    {
                        
                        //创建ztdu文件夹
                        string ztdtPath= importTool.createFolder(outPath_Mid + "\\ztdt");

                        //传入参数  ztdt和方案i

                        getSubLayer(layers, ztdtPath,layers.Name+"_",false);  //递归的思想

                    }
                    else
                    {
                        //创建bhzy文件夹
                        string bhzyPath = importTool.createFolder(outPath_Mid + "\\fhys");
                        ////传入参数
                        getSubLayer(layers, bhzyPath, null,true);  //递归的思想
                    }

                }
                else
                {
                   
                }
            }
            //MessageBox.Show(layer.Name);
            //return layer;
        }
示例#55
0
        public static void AddData_SHP(AxMapControl axMapControl1)
        {
            IWorkspaceFactory pWorkspaceFactory;
            IFeatureWorkspace pFeatureWorkspace;
            IFeatureLayer pFeatureLayer;
            //获取当前路径和文件名
            OpenFileDialog dlg = new OpenFileDialog();
            dlg.Title = "选择shp图层";
            dlg.Filter = "shp文件|*.shp";
            if (dlg.ShowDialog() == System.Windows.Forms.DialogResult.OK)
            {
                string strFullPath = dlg.FileName;
                if (strFullPath == "") return;
                int Index = strFullPath.LastIndexOf("\\");
                string filePath = strFullPath.Substring(0, Index);
                string fileName = strFullPath.Substring(Index + 1);
                //打开工作空间并添加shp文件
                pWorkspaceFactory = new ShapefileWorkspaceFactoryClass();
                //注意此处的路径是不能带文件名的
                pFeatureWorkspace = (IFeatureWorkspace)pWorkspaceFactory.OpenFromFile(filePath, 0);
                pFeatureLayer = new FeatureLayerClass();
                //注意这里的文件名是不能带路径的
                pFeatureLayer.FeatureClass = pFeatureWorkspace.OpenFeatureClass(fileName);
                pFeatureLayer.Name = pFeatureLayer.FeatureClass.AliasName;
                axMapControl1.Map.AddLayer(pFeatureLayer);
                axMapControl1.ActiveView.Refresh();

                ILayer layer = axMapControl1.get_Layer(0);
                axMapControl1.Extent = layer.AreaOfInterest;
            }
        }
示例#56
0
        /// <summary> �ڵ�ͼ�ؼ������͸����ʱͼԪ/// </summary>
        /// <param name="pMapCtrl">��ͼ�ؼ�</param>
        /// <param name="pGeo">Envelope��Polygon����ʵ��</param>
        /// <param name="bAutoClear">�Ƿ����ԭ������</param>
        public void AddTransTempEle(AxMapControl pMapCtrl, IGeometry pGeo, bool bAutoClear)
        {
            try
            {
                if (pMapCtrl == null) return;
                if (pGeo == null) return;
                if (pGeo.IsEmpty) return;
                IGeometry pPolygon = null;
                if (pGeo is IEnvelope)
                {
                    object Miss = Type.Missing;
                    pPolygon = new PolygonClass();
                    IGeometryCollection pGeoColl = pPolygon as IGeometryCollection;
                    pGeoColl.AddGeometry(pGeo, ref Miss, ref Miss);
                }
                else if (pGeo is IPolygon)
                {
                    (pGeo as ITopologicalOperator).Simplify();
                    pPolygon = pGeo;
                }
                else
                {
                    MessageBox.Show("����ʵ�����Ͳ�ƥ��", "��ʾ", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    return;
                }
                //��ȡ͸��Ҫ�ز�
                IFeatureLayer pFlyr = null;
                for (int i = 0; i < pMapCtrl.LayerCount; i++)
                {
                    if (pMapCtrl.get_Layer(i).Name == "TransTemp")
                    {
                        pFlyr = pMapCtrl.get_Layer(i) as IFeatureLayer;
                        break;
                    }
                }
                //͸����ʱ�㲻������Ҫ����
                if (pFlyr == null)
                {
                    pFlyr = AddFeatureLayerByMemoryWS(pMapCtrl, pMapCtrl.SpatialReference);
                    if (pFlyr == null)
                    {
                        MessageBox.Show("����͸����ʱͼ�㷢���쳣", "��ʾ", MessageBoxButtons.OK, MessageBoxIcon.Information);
                        return;
                    }
                }
                IFeatureClass pFC = pFlyr.FeatureClass;
                if (bAutoClear)
                {
                    if (pFC.FeatureCount(null) > 0)
                    {
                        IFeatureCursor pFCursor = pFC.Search(null, false);
                        if (pFCursor != null)
                        {

                            IFeature pFeature = pFCursor.NextFeature();
                            if (pFeature != null)
                            {
                                while (pFeature != null)
                                {
                                    pFeature.Delete();
                                    pFeature = pFCursor.NextFeature();
                                }
                            }
                            System.Runtime.InteropServices.Marshal.ReleaseComObject(pFCursor);
                        }
                    }
                }
                //����Ҫ��
                IFeature pNFeature = pFC.CreateFeature();
                pNFeature.Shape = pPolygon;
                pNFeature.set_Value(pFC.FindField("Code"), "1");
                pNFeature.Store();
                pMapCtrl.Refresh(esriViewDrawPhase.esriViewGeography, pFlyr, pFlyr.AreaOfInterest);
            }
            catch (Exception Err)
            {
                MessageBox.Show(Err.Message, "��ʾ", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
        }