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("字段")); }
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; } } }
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); } }
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); }
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("请至少选择一个目标图层,原图层和空间关系方式!"); } }
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; } } }
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()); } }
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()); } }
/// <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); }
/// <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); }
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; } }
/// <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); }
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)); } } }
//通过名称获取图层 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); }
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; }
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; }
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); } }
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(); }
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()); } }
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); }
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); } }
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; }
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; } } }
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); } } } } }
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(); }
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); } } } } }
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; }
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; }
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(); }
/// <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 { } } }
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; }
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; }
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); } } } }
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; }
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; }
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; }
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; } }
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; }
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(); }
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]; }
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 ""; }
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; } }
/// <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; }
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]; }
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; } } } }
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; } }
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(); }
// // // 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; }
/// <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; }
//查询 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); }
//-------------------------------------------------------------------------------------- //读取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; }
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; } }
/// <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); } }