//加载窗体 private void Form_SelectMergeFeature_Load(object sender, EventArgs e) { IFeature pFeature = null; pEnumFeature.Reset(); while ((pFeature = pEnumFeature.Next()) != null) { listBoxControl1.Items.Add(pFeature.OID); } }
public void DrawAllVertex() { if (m_pMap.SelectionCount == 1) { IPolyline pPolyline; IPolygon pPolygon; IFeature pFeature; IEnumFeature pEnumFeature = m_pMap.FeatureSelection as IEnumFeature; if (pEnumFeature == null) { return; } pEnumFeature.Reset(); pFeature = pEnumFeature.Next(); switch (pFeature.Shape.GeometryType) { case esriGeometryType.esriGeometryPolyline: m_pPointCol = new PolylineClass(); pPolyline = pFeature.Shape as IPolyline; m_pPointCol.AddPointCollection(pPolyline as IPointCollection); ShowAllVertex(m_pPointCol); break; case esriGeometryType.esriGeometryPolygon: m_pPointCol = new PolygonClass(); pPolygon = pFeature.Shape as IPolygon; m_pPointCol.AddPointCollection(pPolygon as IPointCollection); ShowAllVertex(m_pPointCol); break; default: break; } } }
/// <summary> /// Occurs when this command is clicked /// </summary> public override void OnClick() { IEnumFeature selectedFeatures = (IEnumFeature)m_mapControl.Map.FeatureSelection; selectedFeatures.Reset(); IFeature selectedFeature = (IFeature)selectedFeatures.Next(); if (selectedFeature == null) { m_PolylineLength = "无线要素"; return; } else { IFeatureClass featureClass = (IFeatureClass)selectedFeature.Class; if (featureClass.ShapeType != esriGeometryType.esriGeometryPolyline) { m_PolylineLength = "不是线要素"; return; } else { IPolyline polyline = (IPolyline)selectedFeature.ShapeCopy; m_PolylineLength = polyline.Length.ToString(); } } }
private void GetSelectedFeature() { if (m_activePoint == null) { return; } IPoint mousePoint = m_activePoint; ISelectionEnvironment pSelectionEnvironment = new SelectionEnvironmentClass(); pSelectionEnvironment.PointSelectionMethod = esriSpatialRelEnum.esriSpatialRelWithin; m_map.SelectByShape(mousePoint as IGeometry, pSelectionEnvironment, true); IEnumFeature SelectedFeatures = m_map.FeatureSelection as IEnumFeature; if (SelectedFeatures == null) { return; } SelectedFeatures.Reset(); m_selectedFeature = SelectedFeatures.Next(); if (m_selectedFeature != null) { m_toolPhase = ToolPhase.Cut; m_activeView.PartialRefresh(esriViewDrawPhase.esriViewGeoSelection, null, m_activeView.Extent); } }
/// <summary> /// 把Map中的选择要素转到Collection中 /// </summary> /// <param name="pMap">选择对象</param> /// <returns>要素集合</returns> public Collection <object> GetSelectFeature(IMap pMap) { //获取选择集 IEnumFeature pEnumFeature = null; pEnumFeature = pMap.FeatureSelection as IEnumFeature; if (pEnumFeature == null) { return(null); } IFeature pFeature = null; pEnumFeature.Reset(); //遍历所选中的要素并将其放入一集合中 Collection <object> pFeatureCol = new Collection <object>(); while ((pFeature = pEnumFeature.Next()) != null) { pFeatureCol.Add(pFeature); } return(pFeatureCol); }
/// <summary> /// 缩放至选择 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void btnZoomToSel_Click(object sender, EventArgs e) { // 调用资源类库实现 //ICommand command = new ESRI.ArcGIS.Controls.ControlsZoomToSelectedCommandClass(); //command.OnCreate(MainMapControl.Object); //command.OnClick(); // 调用类库资源实现 int nSlection = MainMapControl.Map.SelectionCount; if (nSlection == 0) { MessageBox.Show("请选择要素!", "提示"); } else { ISelection selection = MainMapControl.Map.FeatureSelection; IEnumFeature enumFeature = selection as IEnumFeature; enumFeature.Reset(); IEnvelope envelope = new EnvelopeClass(); IFeature feature = enumFeature.Next(); while (feature != null) { envelope.Union(feature.Extent); feature = enumFeature.Next(); } envelope.Expand(1.1, 1.1, true); MainMapControl.ActiveView.Extent = envelope; MainMapControl.ActiveView.Refresh(); } }
private void method_5() { this.bool_6 = true; this.bool_1 = false; IEnumFeature enumFeature = _context.FocusMap.FeatureSelection as IEnumFeature; IGeometryCollection geometryCollection = new GeometryBag() as IGeometryCollection; enumFeature.Reset(); IFeature feature = enumFeature.Next(); object value = Missing.Value; while (feature != null) { esriGeometryType geometryType = feature.Shape.GeometryType; if (geometryType == esriGeometryType.esriGeometryPolygon || geometryType == esriGeometryType.esriGeometryPolyline) { IClone clone = feature.Shape as IClone; geometryCollection.AddGeometry(clone.Clone() as IGeometry, ref value, ref value); this.bool_4 = true; } feature = enumFeature.Next(); } if (this.bool_2) { this.isegmentGraph_0.SetEmpty(); this.isegmentGraphCursor_0 = null; } this.isegmentGraph_0.Load(geometryCollection as IEnumGeometry, false, true); this.bool_2 = false; }
private void 缩放至选择ToolStripMenuItem_Click(object sender, EventArgs e) { int nSelection = axMapControl1.Map.SelectionCount;//统计选择的要素的个数 if (nSelection == 0) { MessageBox.Show("请先选择要素!", "提示"); } else { ISelection selection = axMapControl1.Map.FeatureSelection; //选择的要素 IEnumFeature enumfeature = (IEnumFeature)selection; // enumfeature.Reset(); IEnvelope pEnvelop = new EnvelopeClass(); IFeature pFeature = enumfeature.Next(); while (pFeature != null) { pEnvelop.Union(pFeature.Extent); pFeature = enumfeature.Next(); } pEnvelop.Expand(1.1, 1.1, true); axMapControl1.ActiveView.Extent = pEnvelop; axMapControl1.ActiveView.Refresh(); } }
private void Map_SearchByShape() { IMap pMap = axMapControl1.Map; ISelection pFeatureSelction = pMap.FeatureSelection; IEnumFeature pEnumFeature = pFeatureSelction as IEnumFeature; IEnumFeatureSetup pEnumFeatureSetup = pEnumFeature as IEnumFeatureSetup; pEnumFeatureSetup.AllFields = true; FeatureAttributeEventArgs FeatureAttributes = new FeatureAttributeEventArgs(); IArray pFArray = new ArrayClass(); pEnumFeature.Reset(); IFeature pFeature = pEnumFeature.Next(); while (pFeature != null) { pFArray.Add(pFeature); pFeature = pEnumFeature.Next(); } FeatureAttributes.SelectFeatures = pFArray; if (SelectFeaturEvent != null) { SelectFeaturEvent(this, FeatureAttributes); } }
/// <summary> /// Occurs when this tool is clicked /// </summary> public override void OnClick() { IEnumFeature pEnumFeature = m_MapControl.Map.FeatureSelection as IEnumFeature; if (pEnumFeature == null || m_MapControl.Map.SelectionCount != 1) { return; } pEnumFeature.Reset(); IFeature pFeature = pEnumFeature.Next(); if (pFeature == null) { return; } //画出图形各节点 if (MoData.v_bVertexSelectionTracker == true) { ModPublic.DrawEditSymbol(pFeature.Shape, m_MapControl.ActiveView); } //设置点选容差 ISelectionEnvironment pSelectEnv = new SelectionEnvironmentClass(); m_dblTolearance = ModPublic.ConvertPixelsToMapUnits(m_hookHelper.ActiveView, pSelectEnv.SearchTolerance); m_pFeature = pFeature; }
public override void OnMouseUp(int Button, int Shift, int X, int Y) { //OnClick(); if (Button != 1) { return; } IFeatureLayer curLayer = layerCurSeleted(); IFeatureSelection curLayerSn = curLayer as IFeatureSelection; ISelectionSet pSS = curLayerSn.SelectionSet; if (pSS.Count != 1) { return; } IEnumFeature pEnumFeature = m_MapControl.Map.FeatureSelection as IEnumFeature; pEnumFeature.Reset(); IFeature tmpFeature = pEnumFeature.Next(); IPoint pp = new PointClass(); pp = m_MapControl.ActiveView.ScreenDisplay.DisplayTransformation.ToMapPoint(X, Y); tmpFeature.Shape = pp; tmpFeature.Store(); curLayerSn.Clear(); curLayerSn.Add(tmpFeature); m_MapControl.ActiveView.Refresh(); }
private void GetSelectedFeature() { if (m_activePoint == null) { return; } IPoint mousePoint = m_activePoint; ISelectionEnvironment pSelectionEnvironment = new SelectionEnvironmentClass(); pSelectionEnvironment.PointSelectionMethod = esriSpatialRelEnum.esriSpatialRelWithin; //定义缓冲区 double db = MapManager.ConvertPixelsToMapUnits(m_activeView, 4); ITopologicalOperator pTop; pTop = mousePoint as ITopologicalOperator; IGeometry pGeometry = pTop.Buffer(db); m_map.SelectByShape(pGeometry, pSelectionEnvironment, true); IEnumFeature SelectedFeatures = m_map.FeatureSelection as IEnumFeature; if (SelectedFeatures == null) { return; } SelectedFeatures.Reset(); m_selectedFeature = SelectedFeatures.Next(); if (m_selectedFeature != null) { m_toolPhase = ToolPhase.Cut; m_activeView.PartialRefresh(esriViewDrawPhase.esriViewGeoSelection, null, m_activeView.Extent); } }
//缩放至选择的要素 private void barButtonItem24_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { int nSlection = Variable.pMapFrm.mainMapControl.Map.SelectionCount; if (nSlection == 0) { MessageBox.Show("请先选择要素!", "提示"); } else { ISelection selection = Variable.pMapFrm.mainMapControl.Map.FeatureSelection; IEnumFeature enumFeature = (IEnumFeature)selection; enumFeature.Reset(); IEnvelope pEnvelope = new EnvelopeClass(); IFeature pFeature = enumFeature.Next(); while (pFeature != null) { pEnvelope.Union(pFeature.Extent); pFeature = enumFeature.Next(); } pEnvelope.Expand(1.1, 1.1, true); Variable.pMapFrm.mainMapControl.ActiveView.Extent = pEnvelope; Variable.pMapFrm.mainMapControl.ActiveView.Refresh(); } }
private void ToolStripButton_ZoomSelect_Click(object sender, EventArgs e) { int nSlection = axMapControl1.Map.SelectionCount; if (nSlection == 0) { MessageBox.Show("请先选择要素!", "提示"); } else { ISelection selection = axMapControl1.Map.FeatureSelection; IEnumFeature enumFeature = (IEnumFeature)selection; enumFeature.Reset(); IEnvelope pEnvelope = new EnvelopeClass(); IFeature pFeature = enumFeature.Next(); while (pFeature != null) { pEnvelope.Union(pFeature.Extent); pFeature = enumFeature.Next(); } pEnvelope.Expand(1.1, 1.1, true); axMapControl1.ActiveView.Extent = pEnvelope; axMapControl1.ActiveView.Refresh(); } }
private IFeature SelctFeatureBasedMousePoint(IPoint pPoint) { //对点对象做缓冲区运算 ITopologicalOperator pTopo = pPoint as ITopologicalOperator; IGeometry pBuffer = pTopo.Buffer(0.5); IGeometry pGeometry = pBuffer.Envelope; SetAllPolylinePolygonLayersSelectable(); ISelectionEnvironment selEnvironment = new SelectionEnvironmentClass(); selEnvironment.CombinationMethod = esriSelectionResultEnum.esriSelectionResultNew; m_map.SelectByShape(pGeometry, selEnvironment, true); IEnumFeature SelectedFeatures = m_map.FeatureSelection as IEnumFeature; SelectedFeatures.Reset(); IFeature extendFeature = SelectedFeatures.Next(); SetAllLayersSelectable(); m_activeView.PartialRefresh(esriViewDrawPhase.esriViewGeoSelection, null, m_activeView.Extent); if (extendFeature != null && extendFeature.Shape.GeometryType == esriGeometryType.esriGeometryPolyline) { return(extendFeature); } return(null); }
public override void OnClick() { frmInputValue1 frmInputValue = new frmInputValue1(); frmInputValue.Text = "输入x, y值"; if (frmInputValue.ShowDialog() == System.Windows.Forms.DialogResult.OK) { double inputValue = frmInputValue.InputValue1; double inputValue2 = frmInputValue.InputValue2; double dx = inputValue - EditTools.CurrentPosition.X; double dy = inputValue2 - EditTools.CurrentPosition.Y; Yutai.ArcGIS.Common.Editor.Editor.EditWorkspace.StartEditOperation(); IEnumFeature enumFeature = _context.FocusMap.FeatureSelection as IEnumFeature; enumFeature.Reset(); for (IFeature feature = enumFeature.Next(); feature != null; feature = enumFeature.Next()) { ITransform2D transform2D = feature.Shape as ITransform2D; if (transform2D != null) { transform2D.Move(dx, dy); feature.Shape = (transform2D as IGeometry); feature.Store(); } } Yutai.ArcGIS.Common.Editor.Editor.EditWorkspace.StopEditOperation(); (_context.FocusMap as IActiveView).Refresh(); } }
public override void OnClick() { this.m_offset = SketchShareEx.m_offset; this.m_ConstructOffset = SketchShareEx.ConstructOffset; IEnumFeature featureSelection = _context.FocusMap.FeatureSelection as IEnumFeature; featureSelection.Reset(); object value = Missing.Value; object mConstructOffset = this.m_ConstructOffset; IFeature feature = featureSelection.Next(); IActiveView focusMap = _context.FocusMap as IActiveView; IFeatureClass featureClass = Yutai.ArcGIS.Common.Editor.Editor.CurrentEditTemplate.FeatureLayer.FeatureClass; Yutai.ArcGIS.Common.Editor.Editor.EditWorkspace.StartEditOperation(); while (feature != null) { if (feature.Shape.GeometryType == esriGeometryType.esriGeometryPolyline) { IConstructCurve polylineClass = new Polyline() as IConstructCurve; polylineClass.ConstructOffset(feature.Shape as IPolycurve, this.m_offset, ref mConstructOffset, ref value); this.CreateParallel(polylineClass as IGeometry, featureClass); } feature = featureSelection.Next(); } Yutai.ArcGIS.Common.Editor.Editor.EditWorkspace.StopEditOperation(); focusMap.Refresh(); }
public override void OnMouseDown(int int_0, int int_1, int int_2, int int_3) { IPoint mapPoint = _context.ActiveView.ScreenDisplay.DisplayTransformation.ToMapPoint(int_2, int_3); IEnumFeature featureSelection = _context.FocusMap.FeatureSelection as IEnumFeature; featureSelection.Reset(); IFeature feature = featureSelection.Next(); IInvalidArea invalidAreaClass = new InvalidAreaClass() { Display = (_context.FocusMap as IActiveView).ScreenDisplay }; invalidAreaClass.Add(feature); Yutai.ArcGIS.Common.Editor.Editor.StartEditOperation(feature.Class as IDataset); try { (feature as IFeatureEdit).Split(mapPoint); } catch (Exception exception) { MessageBox.Show(exception.Message); } Yutai.ArcGIS.Common.Editor.Editor.StopEditOperation(feature.Class as IDataset); invalidAreaClass.Invalidate(-2); _context.ClearCurrentTool(); }
private bool method_1() { bool flag; IEnumFeature featureSelection = this._appContext.MapControl.Map.FeatureSelection as IEnumFeature; featureSelection.Reset(); IFeature feature = featureSelection.Next(); while (true) { if (feature == null) { flag = false; break; } else if (feature.Shape.GeometryType != esriGeometryType.esriGeometryPolyline) { flag = false; break; } else if (Editor.CheckWorkspaceEdit(feature.Class as IDataset, "IsBeingEdited")) { flag = true; break; } else { feature = featureSelection.Next(); } } return(flag); }
public static void RefreshLayerWithSelection(IMap imap_0, IEnvelope ienvelope_0, esriViewDrawPhase esriViewDrawPhase_0) { if (imap_0 != null) { IActiveView imap0 = (IActiveView)imap_0; if (ienvelope_0 == null) { IEnumFeature featureSelection = (IEnumFeature)imap_0.FeatureSelection; featureSelection.Reset(); IFeature feature = featureSelection.Next(); ienvelope_0 = feature.Extent; while (feature != null) { ienvelope_0.Union(feature.Extent); feature = featureSelection.Next(); } } for (int i = 0; i < imap_0.LayerCount; i++) { IFeatureLayer layer = (IFeatureLayer)imap_0.Layer[i]; if (((IFeatureSelection)layer).SelectionSet.Count > 0) { imap0.PartialRefresh(esriViewDrawPhase_0, layer, ienvelope_0); } } } }
public override void OnClick() { try { IEnumFeature featureSelection = _context.FocusMap.FeatureSelection as IEnumFeature; featureSelection.Reset(); IFeature feature = featureSelection.Next(); bool flag = false; Yutai.ArcGIS.Common.Editor.Editor.EditWorkspace.StartEditOperation(); while (feature != null) { flag = Yutai.ArcGIS.Common.Editor.Editor.DeComposeGeometry(feature, feature.ShapeCopy as IGeometryCollection); feature = featureSelection.Next(); } Yutai.ArcGIS.Common.Editor.Editor.EditWorkspace.StopEditOperation(); if (flag) { _context.FocusMap.FeatureSelection.Clear(); _context.ActiveView.Refresh(); } else { MessageBox.Show("没有选择多部分要素"); } } catch (Exception exception) { MessageBox.Show(exception.Message); } }
/// <summary> /// 将源要素的属性COPY给同层选中的要素 /// </summary> private void CopyAttribute() { char[] sp = { ' ' }; //以空格分割 char[] sp1 = { ',' }; //以逗号分割 string Feature_value = ""; foreach (DictionaryEntry de in AttributeShow_state.hs_Feature) { Feature_value = de.Value.ToString(); //得到源OID的属性值 } string[] Field = Feature_value.Split(sp1); //以逗号分割 IEnumFeature F_dateset = m_MapControl.Map.FeatureSelection as IEnumFeature; //得到MAP上选中的要素集 F_dateset.Reset(); IFeature Feature = F_dateset.Next();//取得下一个要素 if (Feature == null) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "您没有选择任何要修改的目标要素属性!"); return; } MoData.v_CurWorkspaceEdit.StartEditOperation();//开启编辑操作 while (Feature != null) { IFeatureClass F_class = Feature.Class as IFeatureClass; //MoData.v_CurWorkspaceEdit.RedoEditOperation();//开启可回退 if (Feature.FeatureType != esriFeatureType.esriFTAnnotation)//判别不是注记时发生操作 { //COPY时,将源要素属性除外 if (Feature.OID.ToString() != AttributeShow_state.OID) { for (int n = 0; n < AttributeShow_state.feature_count; n++) { string value = Feature.Fields.get_Field(n).Name.ToLower(); if (value == "objectid" || value == "shape" || value == "shape_length" || value == "shape_area" || value == "element") //确定控件上不能更改的属性 { continue; //如果是这些固定不变的字段那么属性值是不能COPY,进行一下一个字段赋值 } else { string[] tempStr = Field[n].Split(sp); //以空格分割,得到字段 string Value = tempStr[1]; //值 Feature.set_Value(n, Value); } } } } Feature.Store(); Feature = F_dateset.Next(); //遍历下一个要素 } MoData.v_CurWorkspaceEdit.StopEditOperation(); //结束编辑操作 SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "修改成功!"); m_MapControl.Map.ClearSelection(); //清除MAP上的选择集 m_MapControl.ActiveView.Refresh(); AttributeShow_state.state_brush = true; //确定我们已操作过属性刷,并改变状态,让后面的操作得以进行不出错。 }
//给选择的要素,创建表; private DataTable CreateDataTable(AxMapControl axMapControl) { DataTable datatable = new DataTable("属性表"); DataRow row = null; DataColumn column; column = new DataColumn("属性"); column.ColumnName = "属性"; column.AllowDBNull = true; column.Caption = "属性"; column.DataType = System.Type.GetType("System.String"); column.DefaultValue = " "; datatable.Columns.Add(column); column = new DataColumn("值"); column.ColumnName = "值"; column.AllowDBNull = true; column.Caption = "值"; column.DataType = System.Type.GetType("System.String"); column.DefaultValue = " "; datatable.Columns.Add(column); IEnumFeatureSetup iEnumFeatureSetup = (IEnumFeatureSetup)axMapControl.Map.FeatureSelection; iEnumFeatureSetup.AllFields = true; IEnumFeature enumFeature = (IEnumFeature)iEnumFeatureSetup; enumFeature.Reset(); IFeature feature = enumFeature.Next(); while (feature != null) { for (int i = 0; i < feature.Fields.FieldCount; i++) { string value = string.Empty; if (feature.Fields.get_Field(i).Type == esriFieldType.esriFieldTypeGeometry) { value = "polgony"; } else if (feature.Fields.get_Field(i).Type == esriFieldType.esriFieldTypeBlob) { value = "Element"; } else { value = feature.get_Value(i).ToString(); } row = datatable.NewRow(); row[0] = feature.Fields.Field[i].Name; row[1] = value; datatable.Rows.Add(row); } feature = enumFeature.Next(); } return(datatable); }
public override void OnClick(object sender, EventArgs args) { if (_plugin.CurrentLayer == null) { MessageBox.Show(@"未设置当前编辑图层!"); _context.ClearCurrentTool(); return; } IBasicLayerInfo pointLayerInfo = _plugin.CurrentLayer.Layers.FirstOrDefault(c => c.DataType == enumPipelineDataType.Point); if (pointLayerInfo != null) { _gdbhFieldName = pointLayerInfo.GetFieldName(PipeConfigWordHelper.PointWords.GDBH); _dmgcFieldName = pointLayerInfo.GetFieldName(PipeConfigWordHelper.PointWords.DMGC); _pointFeatureLayer = CommonHelper.GetLayerByName(_context.FocusMap, pointLayerInfo.AliasName, true) as IFeatureLayer; _idxGdbhField = _pointFeatureLayer.FeatureClass.FindField(_gdbhFieldName); _idxDmgcField = _pointFeatureLayer.FeatureClass.FindField(_dmgcFieldName); } IBasicLayerInfo lineLayerInfo = _plugin.CurrentLayer.Layers.FirstOrDefault(c => c.DataType == enumPipelineDataType.Line); if (lineLayerInfo != null) { _qdbhFieldName = lineLayerInfo.GetFieldName(PipeConfigWordHelper.LineWords.QDBH); _zdbhFieldName = lineLayerInfo.GetFieldName(PipeConfigWordHelper.LineWords.ZDBH); _qdmsFieldName = lineLayerInfo.GetFieldName(PipeConfigWordHelper.LineWords.QDMS); _zdmsFieldName = lineLayerInfo.GetFieldName(PipeConfigWordHelper.LineWords.ZDMS); _qdgcFieldName = lineLayerInfo.GetFieldName(PipeConfigWordHelper.LineWords.QDGC); _zdgcFieldName = lineLayerInfo.GetFieldName(PipeConfigWordHelper.LineWords.ZDGC); _lineFeatureLayer = CommonHelper.GetLayerByName(_context.FocusMap, lineLayerInfo.AliasName, true) as IFeatureLayer; _idxQdbhField = _lineFeatureLayer.FeatureClass.FindField(_qdbhFieldName); _idxZdbhField = _lineFeatureLayer.FeatureClass.FindField(_zdbhFieldName); _idxQdmsField = _lineFeatureLayer.FeatureClass.FindField(_qdmsFieldName); _idxZdmsField = _lineFeatureLayer.FeatureClass.FindField(_zdmsFieldName); _idxQdgcField = _lineFeatureLayer.FeatureClass.FindField(_qdgcFieldName); _idxZdgcField = _lineFeatureLayer.FeatureClass.FindField(_zdgcFieldName); } if (_pointFeatureLayer == null || _lineFeatureLayer == null) { MessageBox.Show(@"点图层或线图层未设置!"); _context.ClearCurrentTool(); return; } IEnumFeature featureSelection = _context.FocusMap.FeatureSelection as IEnumFeature; featureSelection.Reset(); _feature = featureSelection.Next(); if (_feature == null) { MessageBox.Show(@"未选择将打断的线要素!"); _context.ClearCurrentTool(); return; } _context.SetCurrentTool(this); }
private void Form2_Load(object sender, EventArgs e) { // 读取选中面实体的各种属性并保存下来 DataTable pTable = new DataTable(); IMap pMap = global.pMap; ISelection selection = pMap.FeatureSelection; IEnumFeatureSetup iEnumFeatureSetup = (IEnumFeatureSetup)selection; iEnumFeatureSetup.AllFields = true; IEnumFeature enumFeature = (IEnumFeature)iEnumFeatureSetup; enumFeature.Reset(); IFeature feature = enumFeature.Next(); IFields pFields = feature.Fields; //MessageBox.Show(feature.Fields.FieldCount.ToString()); for (int i = 0; i < pFields.FieldCount; i++) { string FieldName; FieldName = pFields.get_Field(i).AliasName; pTable.Columns.Add(FieldName); } double proArea = 0; double totalCost = 0; double vvvalue; while (feature != null) { DataRow row = pTable.NewRow(); for (int i = 0; i < pFields.FieldCount; i++) { string FieldValue = null; FieldValue = Convert.ToString(feature.get_Value(i)); row[i] = FieldValue; } pTable.Rows.Add(row); proArea += Convert.ToDouble(feature.get_Value(10)); totalCost += Convert.ToDouble(feature.get_Value(11)) * Convert.ToDouble(feature.get_Value(10)) * Convert.ToDouble(feature.get_Value(12)); feature = enumFeature.Next(); } vvvalue = totalCost / proArea; textBox1.Text = Convert.ToString(proArea); textBox2.Text = Convert.ToString(totalCost); textBox3.Text = Convert.ToString(vvvalue); dataGridView1.DataSource = pTable; }
/// <summary> /// 确定地图上是否有选择的要素 /// </summary> private void EnterSelectValueCount() { IEnumFeature features = smpdHook.ArcGisMapControl.Map.FeatureSelection as IEnumFeature; features.Reset(); IFeature feature = features.Next(); if (feature != null) { AttributeShow_state.state_value = true;//确定里面有选中的值 } }
public override void OnClick() { IEnumFeature featureSelection = _context.FocusMap.FeatureSelection as IEnumFeature; featureSelection.Reset(); IFeature feature = featureSelection.Next(); (new frmProportionSplit() { Feature = feature }).ShowDialog(); }
public void InitControl() { try { this.treeView1.Nodes.Clear(); this.textBox1.Text = "编辑" + this.m_pMap.SelectionCount.ToString() + "个要素"; if (this.m_pMap.SelectionCount == 0) { this.m_pAttributeListControl1.SelectObject = null; } else { TreeNode node2 = null; IEnumFeature featureSelection = this.m_pMap.FeatureSelection as IEnumFeature; featureSelection.Reset(); IFeature pFeature = featureSelection.Next(); IClass class2 = null; int num = 0; while (pFeature != null) { if (this.CheckIsEdit(pFeature.Class as IDataset)) { if (class2 != pFeature.Class) { class2 = pFeature.Class; node2 = new TreeNode((class2 as IObjectClass).AliasName) { Tag = class2 }; this.treeView1.Nodes.Add(node2); } TreeNode node = new TreeNode(pFeature.OID.ToString()) { Tag = pFeature }; node2.Nodes.Add(node); this.AddReleationClass(pFeature, node); num++; } pFeature = featureSelection.Next(); } if ((this.treeView1.Nodes.Count > 0) && (this.treeView1.Nodes[0].Nodes.Count > 0)) { this.treeView1.SelectedNode = this.treeView1.Nodes[0].Nodes[0]; } this.textBox1.Text = "编辑" + num.ToString() + "个要素"; } } catch (Exception exception) { Logger.Current.Error("", exception, ""); } }
public void Excute() { IPolygon tempLine = SketchToolAssist.TempLine as IPolygon; tempLine.SimplifyPreserveFromTo(); IEnumFeature featureSelection = _context.FocusMap.FeatureSelection as IEnumFeature; featureSelection.Reset(); IFeature feature = featureSelection.Next(); IPolygon shapeCopy = feature.ShapeCopy as IPolygon; if (!(shapeCopy as IRelationalOperator).Contains(tempLine)) { MessageService.Current.Warn("挖空多边形必须包含原多边形!"); } else { IGeometry geometry = (shapeCopy as ITopologicalOperator).Difference(tempLine); if (!geometry.IsEmpty) { Yutai.ArcGIS.Common.Editor.Editor.SetGeometryZM(geometry, shapeCopy); Yutai.ArcGIS.Common.Editor.Editor.EditWorkspace.StartEditOperation(); try { feature.Shape = geometry; feature.Store(); if (MessageService.Current.Ask("保留挖空面吗?")) { if (this.int_0 == 1) { IFeature feature1 = RowOperator.CreatRowByRow(feature) as IFeature; if (feature1 != null) { Yutai.ArcGIS.Common.Editor.Editor.SetGeometryZM(tempLine, shapeCopy); feature1.Shape = tempLine; feature1.Store(); } } } } catch (Exception exception) { //CErrorLog.writeErrorLog(this, exception, ""); } Yutai.ArcGIS.Common.Editor.Editor.EditWorkspace.StopEditOperation(); (_context.FocusMap as IActiveView).PartialRefresh(esriViewDrawPhase.esriViewGeography, null, shapeCopy.Envelope); (_context.FocusMap as IActiveView).PartialRefresh(esriViewDrawPhase.esriViewGeoSelection, null, null); _context.UpdateUI(); } } }
public override void OnClick(object sender, EventArgs args) { Yutai.ArcGIS.Common.Editor.Editor.DrawNode = true; SketchToolAssist.CurrentTask = this; IEnumFeature featureSelection = _context.FocusMap.FeatureSelection as IEnumFeature; featureSelection.Reset(); IEnvelope envelope = featureSelection.Next().Shape.Envelope; envelope.Expand(10, 10, false); _context.MapControl.ActiveView.PartialRefresh(esriViewDrawPhase.esriViewGeography, null, envelope); base.OnClick(); }
/// <summary> /// Removes features from the map selection. /// </summary> /// <param name="features">A feature enumeration of those features to remove from the selection.</param> /// <param name="layer">The layer to which the features belong.</param> public static void RemoveFeaturesFromSelection(IEnumFeature features, ILayer layer) { if (features != null) { features.Reset(); IFeature feature = features.Next(); IFeatureSelection featureSelection = ((IFeatureLayer)layer) as IFeatureSelection; ISelectionSet selSet = featureSelection.SelectionSet; while (feature != null) { RemoveFeatureFromSelection(feature, selSet); feature = features.Next(); } featureSelection.SelectionChanged(); } }