//加载窗体
        private void Form_SelectMergeFeature_Load(object sender, EventArgs e)
        {
            IFeature pFeature = null;

            pEnumFeature.Reset();
            while ((pFeature = pEnumFeature.Next()) != null)
            {
                listBoxControl1.Items.Add(pFeature.OID);
            }
        }
コード例 #2
0
        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;
                }
            }
        }
コード例 #3
0
        /// <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();
                }
            }
        }
コード例 #4
0
        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);
            }
        }
コード例 #5
0
ファイル: ClsMapLayer.cs プロジェクト: johnforrest/GeoCoding
        /// <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);
        }
コード例 #6
0
        /// <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();
            }
        }
コード例 #7
0
ファイル: CmdFollowAlong.cs プロジェクト: secondii/Yutai
        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;
        }
コード例 #8
0
ファイル: Form1.cs プロジェクト: 15968865116/arcengine
        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();
            }
        }
コード例 #9
0
        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);
            }
        }
コード例 #10
0
        /// <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;
        }
コード例 #11
0
ファイル: MovePoint.cs プロジェクト: siszoey/geosufan
        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();
        }
コード例 #12
0
        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();
            }
        }
コード例 #14
0
ファイル: Form1.cs プロジェクト: Flame-c/CYHGIS
        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();
            }
        }
コード例 #15
0
        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);
        }
コード例 #16
0
        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();
            }
        }
コード例 #17
0
        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();
        }
コード例 #18
0
        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();
        }
コード例 #19
0
        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);
        }
コード例 #20
0
 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);
             }
         }
     }
 }
コード例 #21
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);
     }
 }
コード例 #22
0
ファイル: ControlsAttribute.cs プロジェクト: siszoey/geosufan
        /// <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; //确定我们已操作过属性刷,并改变状态,让后面的操作得以进行不出错。
        }
コード例 #23
0
        //给选择的要素,创建表;
        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);
        }
コード例 #24
0
ファイル: CmdSplitLine.cs プロジェクト: frankerlee/Yutai
        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);
        }
コード例 #25
0
        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;
        }
コード例 #26
0
        /// <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;//确定里面有选中的值
            }
        }
コード例 #27
0
ファイル: CmdProportionSplit.cs プロジェクト: secondii/Yutai
        public override void OnClick()
        {
            IEnumFeature featureSelection = _context.FocusMap.FeatureSelection as IEnumFeature;

            featureSelection.Reset();
            IFeature feature = featureSelection.Next();

            (new frmProportionSplit()
            {
                Feature = feature
            }).ShowDialog();
        }
コード例 #28
0
ファイル: AttributeControl.cs プロジェクト: secondii/Yutai
 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, "");
     }
 }
コード例 #29
0
ファイル: CmdPolygonCutHollow.cs プロジェクト: secondii/Yutai
        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();
                }
            }
        }
コード例 #30
0
        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();
        }
コード例 #31
0
        /// <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();
            }
        }