Esempio n. 1
0
        private IEnvelope GetLayerSelectedFeaturesEnvelope(IFeatureLayer pFeatLyr)
        {
            IEnvelope         layerEnvelope = null;
            IFeatureClass     pFeatCls      = pFeatLyr.FeatureClass;
            IFeatureSelection selectLayer   = pFeatLyr as IFeatureSelection;
            ISelectionSet     selectionSet  = selectLayer.SelectionSet;
            IEnumIDs          enumIDs       = selectionSet.IDs;
            IFeature          feature;
            int i  = 1;
            int iD = enumIDs.Next();

            while (iD != -1) //-1 is reutned after the last valid ID has been reached
            {
                feature = pFeatCls.GetFeature(iD);
                IEnvelope envelope = feature.ShapeCopy.Envelope;
                if (i == 1)
                {
                    layerEnvelope = envelope;
                }
                else
                {
                    layerEnvelope.Union(envelope);
                }
                i++;
                iD = enumIDs.Next();
            }
            return(layerEnvelope);
        }
Esempio n. 2
0
        /// <summary>
        /// 显示选中属性
        /// </summary>
        public void ShowSelectionAttribute()
        {
            this.pAttributeMode              = AtrributesMode.SelectionAttribute;
            this.tSB_AllAttribute.Checked    = false;
            this.tSB_SelectAttribute.Checked = true;

            this.SetDataGridViewColumn();  //设置DataGridView的列

            //设置 DataGridView的行
            IFeatureSelection pFeatureSelection = (IFeatureSelection)Variable.pAttributeTableFeatureLayer;
            IEnumIDs          pEnumIDs          = pFeatureSelection.SelectionSet.IDs;
            int pFid = pEnumIDs.Next();

            while (pFid != -1)
            {
                IFeature pFeature  = Variable.pAttributeTableFeatureLayer.FeatureClass.GetFeature(pFid);
                object[] cellValue = new object[dataGridView1.ColumnCount];  //新建一行
                for (int i = 0; i < this.dataGridView1.ColumnCount; i++)
                {
                    cellValue[i] = pFeature.get_Value(i);
                    if (cellValue[i] != null && cellValue[i].ToString().Trim() == "")
                    {
                        cellValue[i] = null;
                    }
                }
                this.dataGridView1.Rows.Add(cellValue);
                pFid = pEnumIDs.Next();
            }
            dataGridView1.ClearSelection();// 清除所有选中单元格
            toolStripStatusLabel1.Text = string.Format("选中了 {0} 条记录,共 {1} 条记录", this.dataGridView1.SelectedRows.Count, this.dataGridView1.RowCount);
        }
Esempio n. 3
0
        private void Update(int status, IFeatureLayer buildingsfeaturelayer)
        {
            //Get the editor
            _editor = GetEditorFromArcMap(_application as IMxApplication);
            if (_editor == null)
            {
                MessageBox.Show("Editor version of ArcMap required.", "Building Inspector", MessageBoxButtons.OK, MessageBoxIcon.Stop);
                return;
            }

            if (_editor.EditState != esriEditState.esriStateEditing)
            {
                MessageBox.Show("Start an edit session first.", "Building Inspector", MessageBoxButtons.OK, MessageBoxIcon.Stop);
                return;
            }

            IFeatureSelection featureselection = buildingsfeaturelayer as IFeatureSelection;

            if (featureselection.SelectionSet.Count == 0)
            {
                MessageBox.Show("Select at least one feature.", "Building Inspector", MessageBoxButtons.OK, MessageBoxIcon.Stop);
                return;
            }



            IFeatureClass featureclass = buildingsfeaturelayer.FeatureClass;
            IEnumIDs      enumIDs      = featureselection.SelectionSet.IDs;

            _editor.StartOperation();
            enumIDs.Reset();
            int intOID = enumIDs.Next();

            while (intOID != -1)
            {
                IFeature feature = featureclass.GetFeature(intOID);
                if (feature != null)
                {
                    int inspectionfieldindex = _utilitiesArcMap.FindField(featureclass, "rsi");
                    if (inspectionfieldindex > -1)
                    {
                        //_editor.StartOperation();
                        feature.set_Value(inspectionfieldindex, status);
                        //_editor.StopOperation("Status updated!" + feature.OID);
                        feature.Store();
                    }
                    else
                    {
                        throw new Exception("Selected layer does not have the 'rsi field'.");
                    }
                }
                intOID = enumIDs.Next();
            }

            _activeView.Refresh();

            _editor.StopOperation("Inspected...");

            GetStatus();
        }
Esempio n. 4
0
        /// <summary>
        /// 根据表,OIDs构造查询条件
        /// </summary>
        /// <param name="pTable"></param>
        /// <param name="OIDs"></param>
        /// <param name="isSwitch"></param>
        /// <returns></returns>
        public static string GetQuerySQL(ITable pTable, IEnumIDs OIDs, bool isSwitch)
        {
            string tmpStr = pTable.OIDFieldName;

            if (OIDs == null)
            {
                return(tmpStr + " in ()");
            }

            OIDs.Reset();
            if (isSwitch)
            {
                tmpStr += " not in (";
            }
            else
            {
                tmpStr += " in (";
            }

            int oid = -1;

            oid = OIDs.Next();
            if (oid != -1)
            {
                while (oid != -1)
                {
                    tmpStr += oid.ToString() + " , ";
                    oid     = OIDs.Next();
                }
                tmpStr = tmpStr.Remove(tmpStr.Length - 3, 3);
            }
            tmpStr += ")";
            return(tmpStr);
        }
Esempio n. 5
0
 private void frmAttributeTable_FeatureLayerSelectionChanged()
 {
     if ((this.m_pTable is IFeatureSelection) && this.m_CanDoFeatureLayerSelectChange)
     {
         this.m_CanDoSelectChange = false;
         IFeatureSelection pTable = this.m_pTable as IFeatureSelection;
         IEnumIDs          iDs    = pTable.SelectionSet.IDs;
         iDs.Reset();
         int    num          = iDs.Next();
         string oIDFieldName = (this.m_pTable as IFeatureLayer).FeatureClass.OIDFieldName;
         int    num2         = 0;
         while (num != -1)
         {
             ((GridView)this.dataGrid1.MainView).ClearSelection();
             for (int i = num2; i < ((GridView)this.dataGrid1.MainView).RowCount; i++)
             {
                 object row = ((GridView)this.dataGrid1.MainView).GetRow(i);
                 if ((row is DataRowView) && (Convert.ToInt32((row as DataRowView).Row[oIDFieldName]) == num))
                 {
                     ((GridView)this.dataGrid1.MainView).SelectRow(i);
                     num2 = i + 1;
                     break;
                 }
             }
             num = iDs.Next();
         }
         this.m_CanDoSelectChange = true;
     }
 }
Esempio n. 6
0
 private bool ReconcileVersionFindConflicts(IFeatureWorkspace pFeatureWorkspace, string strTargetVersion)
 {
     try
     {
         bool         flag = false;
         IVersionEdit edit = pFeatureWorkspace as IVersionEdit;
         edit.CanPost();
         if (edit.Reconcile(strTargetVersion))
         {
             IVersion           startEditingVersion   = edit.StartEditingVersion;
             IVersion           preReconcileVersion   = edit.PreReconcileVersion;
             IVersion           commonAncestorVersion = edit.CommonAncestorVersion;
             IVersion           reconcileVersion      = edit.ReconcileVersion;
             IEnumConflictClass conflictClasses       = edit.ConflictClasses;
             conflictClasses.Reset();
             for (IConflictClass class3 = conflictClasses.Next(); class3 != null; class3 = conflictClasses.Next())
             {
                 IDataset dataset = (IDataset)class3;
                 if (class3.HasConflicts)
                 {
                     flag = true;
                     string   str = dataset.Name + ":";
                     IEnumIDs iDs = class3.UpdateUpdates.IDs;
                     iDs.Reset();
                     int num = iDs.Next();
                     while (num != -1)
                     {
                         str = str + num.ToString() + ";";
                         num = iDs.Next();
                     }
                     iDs = class3.DeleteUpdates.IDs;
                     iDs.Reset();
                     num = iDs.Next();
                     while (num != -1)
                     {
                         str = str + num.ToString() + ";";
                         num = iDs.Next();
                     }
                     iDs = class3.UpdateDeletes.IDs;
                     iDs.Reset();
                     for (num = iDs.Next(); num != -1; num = iDs.Next())
                     {
                         str = str + num.ToString() + ";";
                     }
                     MessageBox.Show("发现冲突," + str, "版本编辑", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                 }
                 else
                 {
                     MessageBox.Show(dataset.Name + " Does Not Have Conflicts", "版本编辑", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
                 }
             }
         }
         return(flag);
     }
     catch (Exception exception)
     {
         this.mErrOpt.ErrorOperate(this.mSubSysName, "ShapeEdit.Editor", "ReconcileVersionFindConflicts", exception.GetHashCode().ToString(), exception.Source, exception.Message, "", "", "");
         return(false);
     }
 }
Esempio n. 7
0
        public override void OnClick()
        {
            if (m_MergeLayer != null)
            {
                List <int>        OIDLst        = new List <int>();
                IFeatureSelection pFeatSel      = m_MergeLayer as IFeatureSelection;
                ISelectionSet     pSelectionSet = pFeatSel.SelectionSet;

                //如果选择的要素多余一个,则可以开始融合
                if (pSelectionSet.Count > 1)
                {
                    int      pOID     = -1;
                    IEnumIDs pEnumIDs = pSelectionSet.IDs;
                    pEnumIDs.Reset();
                    pOID = pEnumIDs.Next();
                    while (pOID != -1)
                    {
                        OIDLst.Add(pOID);
                        pOID = pEnumIDs.Next();
                    }
                    frmDataMerge pfrmDataMerge = new frmDataMerge(m_MergeLayer.FeatureClass, OIDLst, m_Hook);
                    pfrmDataMerge.ShowDialog();
                }
            }
        }
Esempio n. 8
0
        private void ApplyDomain(DomainCode code)
        {
            if (CheckRequirements())
            {
                IFeatureLayer     featureLayer     = _utilities.FeatureLayer(cboFeatureLayer.Text);
                IFeatureClass     featureClass     = featureLayer.FeatureClass;
                IFeatureSelection featureSelection = featureLayer as IFeatureSelection;
                IEnumIDs          enumIDs          = featureSelection.SelectionSet.IDs;
                int fieldIndex = _utilities.FindField(featureClass, cboField.Text);


                _editor.StartOperation();
                enumIDs.Reset();

                int intOID = enumIDs.Next();

                while (intOID != -1)
                {
                    IFeature feature = featureClass.GetFeature(intOID);
                    if (feature != null)
                    {
                        feature.set_Value(fieldIndex, (int)code);

                        feature.Store();
                    }
                    intOID = enumIDs.Next();
                }

                _activeView.Refresh();
                _editor.StopOperation("Update Class Type");
            }
        }
Esempio n. 9
0
        public void Extend(IFeatureSelection featureSelection, double searchTolerance)
        {
            IFeatureLayer featureLayer = (IFeatureLayer)featureSelection;
            IEnumIDs      enumIDs      = featureSelection.SelectionSet.IDs;
            int           i            = -1;
            int           c            = 0;
            int           t            = featureSelection.SelectionSet.Count;

            this.CounterExtended    = 0;
            this.CounterNotExtended = 0;

            while ((i = enumIDs.Next()) != -1)
            {
                try
                {
                    c++;
                    OnExtendFeatureProgress(c, t, "Begin");
                    IFeature feature = featureLayer.FeatureClass.GetFeature(i);
                    Extend(feature, searchTolerance);
                    OnExtendFeatureProgress(c, t, "End");
                }
                catch (Exception ex)
                {
                    System.Diagnostics.Trace.WriteLine("Exception on " + c.ToString() + " of " + t.ToString());
                    System.Diagnostics.Trace.WriteLine(ex.StackTrace);
                }
            }

            OnAfterExtendFeatures(t, this.CounterExtended, this.CounterNotExtended);
        }
Esempio n. 10
0
        /// <summary>
        /// Gets a stack of objectids to update
        /// </summary>
        /// <returns>integer stack of feature object ids</returns>
        private Stack <int> GetObjectIds()
        {
            Stack <int>       objectIDs        = new Stack <int>();
            IFeatureSelection featureSelection = (IFeatureSelection)this.FeatureLayer;

            if (checkBoxUseSelected.Checked && featureSelection.SelectionSet.Count > 0)
            {
                ISelectionSet selectionSet = featureSelection.SelectionSet;

                IEnumIDs enumObjectIDs = selectionSet.IDs;

                int i = -1;
                while ((i = enumObjectIDs.Next()) != -1)
                {
                    objectIDs.Push(i);
                }
            }
            else
            {
                IFeatureCursor cursor  = this.FeatureLayer.FeatureClass.Search(null, true);
                IFeature       feature = null;

                while ((feature = cursor.NextFeature()) != null)
                {
                    objectIDs.Push(feature.OID);
                }
            }

            return(objectIDs);
        }
Esempio n. 11
0
 public override void OnClick()
 {
     try
     {
         if (MessageBox.Show("是否删除所选择的要素?", "提示", MessageBoxButtons.YesNo) != DialogResult.No)
         {
             Editor.UniqueInstance.StartEditOperation();
             IFeatureSelection targetLayer = Editor.UniqueInstance.TargetLayer as IFeatureSelection;
             IEnumIDs          iDs         = targetLayer.SelectionSet.IDs;
             iDs.Reset();
             for (int i = iDs.Next(); i != -1; i = iDs.Next())
             {
                 IFeature editFeature = Editor.UniqueInstance.TargetLayer.FeatureClass.GetFeature(i);
                 AttributeManager.AttributeDeleteHandleClass.AttributeDelete(editFeature);
                 editFeature.Delete();
             }
             this._hookHelper.ActiveView.PartialRefresh(esriViewDrawPhase.esriViewGeoSelection | esriViewDrawPhase.esriViewGeography, Editor.UniqueInstance.TargetLayer, this._hookHelper.ActiveView.Extent);
             Editor.UniqueInstance.StopEditOperation("delete");
         }
     }
     catch (Exception exception)
     {
         Editor.UniqueInstance.AbortEditOperation();
         this._mErrOpt.ErrorOperate(this._mSubSysName, "ShapeEdit.Delete1", "OnClick", exception.GetHashCode().ToString(), exception.Source, exception.Message, "", "", "");
     }
 }
Esempio n. 12
0
        /// <summary>
        /// Reads all rows whose OIDs are within the specified collection and returns them as a (lazily-evaluated) sequence of objects of the specified type.  The returned collection is not sorted.  This method does not "reset" the input IEnumIDs object.
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="table"></param>
        /// <param name="enumIDs"></param>
        /// <returns></returns>
        public static IEnumerable <T> Map <T>(this ITable table, IEnumIDs enumIDs) where T : MappableFeature, new()
        {
            var oids = Enumerable.Range(0, int.MaxValue)
                       .Select(n => enumIDs.Next())
                       .TakeWhile(n => n != -1);

            return(table.Map <T>(oids));
        }
Esempio n. 13
0
        //线构面
        public static void MakePolygonFromPolyline(IWorkspaceEdit pWorkspaceEdit, IFeatureLayer pPolyLineFeaLayer,
                                                   IFeatureLayer pPolygonFeaLayer)
        {
            if (pPolyLineFeaLayer.FeatureClass.ShapeType != esriGeometryType.esriGeometryPolyline)
            {
                return;
            }
            if (pPolygonFeaLayer.FeatureClass.ShapeType != esriGeometryType.esriGeometryPolygon)
            {
                return;
            }

            pWorkspaceEdit.StartEditOperation();

            IFeatureSelection pFeaSelection = pPolyLineFeaLayer as IFeatureSelection;
            ISelectionSet     pSelectionSet = pFeaSelection.SelectionSet;
            IEnumIDs          pEnumIDs      = pSelectionSet.IDs;
            int ID = pEnumIDs.Next();

            while (ID != -1)
            {
                IFeature pFeature = pPolyLineFeaLayer.FeatureClass.GetFeature(ID);
                if (pFeature == null)
                {
                    continue;
                }
                IPolyline pPolyLine = pFeature.ShapeCopy as IPolyline;

                //将选择的线转变成面,并作为面层Feature
                IPolygon pPolygon = PolylineToPolygon(ref pPolyLine);

                IFeature pPolygonFeature = pPolygonFeaLayer.FeatureClass.CreateFeature();
                pPolygonFeature.Shape = pPolygon;
                pPolygonFeature.Store();

                //拷贝属性
                for (int i = 0; i < pFeature.Fields.FieldCount; i++)
                {
                    string sFieldName = pFeature.Fields.get_Field(i).Name;

                    if (sFieldName == "SHAPE")
                    {
                        continue;
                    }
                    int iIndex = pPolygonFeature.Fields.FindField(sFieldName);

                    if ((iIndex > -1) && (pPolygonFeature.Fields.get_Field(iIndex).Editable == true))
                    {
                        pPolygonFeature.set_Value(iIndex, pFeature.get_Value(i));
                    }
                }

                ID = pEnumIDs.Next();
            }

            pWorkspaceEdit.StopEditOperation();
        }
        private void BuildFileList()
        {
            _fileList.Clear();

            IFeatureLayer featureLayer = ((CustomLayer)cbo_layers.SelectedItem).FeatureLayer();
            IFeatureClass featureClass = ((CustomLayer)cbo_layers.SelectedItem).FeatureClass();


            if (rb_all.Checked)
            {
                IFeatureCursor cursor     = featureClass.Search(null, false);
                IFields        fields     = cursor.Fields;
                int            fieldIndex = _utilitiesArcMap.FindField(featureClass, cbo_fieldname.Text);

                IFeature feature = cursor.NextFeature();

                while (feature != null)
                {
                    //string fileName = Utilities.Utilities_General.AddPrefixAndSuffixToFileName(Convert.ToString(feature.get_Value(fieldIndex)), txb_prefix.Text, txb_suffix.Text);
                    string fileName = Convert.ToString(feature.get_Value(fieldIndex));
                    if (!_fileList.ContainsKey(fileName))
                    {
                        _fileList.Add(fileName, false);
                    }

                    feature = cursor.NextFeature();
                }
            }

            if (rb_selected.Checked)
            {
                IFeatureSelection selection = featureLayer as IFeatureSelection;
                IEnumIDs          IDs       = selection.SelectionSet.IDs;
                IDs.Reset();

                int oid = IDs.Next();

                while (oid != -1)
                {
                    IFeature feature = featureClass.GetFeature(oid);
                    if (feature != null)
                    {
                        int    fieldIndex = _utilitiesArcMap.FindField(featureClass, cbo_fieldname.Text);
                        string fileName   = Convert.ToString(feature.get_Value(fieldIndex));
                        if (!_fileList.ContainsKey(fileName))
                        {
                            _fileList.Add(fileName, false);
                        }

                        oid = IDs.Next();
                    }
                }
            }
        }
        private void GenerateFileList()
        {
            // Clear File List
            _fileList.Clear();

            IFeatureLayer featureLayer = _utilitiesArcMap.FeatureLayer(cbo_TileIndex.Text);
            IFeatureClass featureClass = featureLayer.FeatureClass;

            if (rb_all.Checked)  // Grab All Of The Raster :)
            {
                IFeatureCursor cursor = featureClass.Search(null, false);

                IFields fields     = cursor.Fields;
                int     fieldIndex = _utilitiesArcMap.FindField(featureClass, cbo_FieldName.Text);

                IFeature feature = cursor.NextFeature();

                while (feature != null)
                {
                    // Default To True I will validate After Adding All To Dictonary
                    if (!_fileList.ContainsKey(Convert.ToString(feature.get_Value(fieldIndex))))
                    {
                        _fileList.Add(Convert.ToString(feature.get_Value(fieldIndex)), true);
                    }

                    feature = cursor.NextFeature();
                }
            }
            else // Grab Only The Selected Tiles
            {
                IFeatureSelection featureSelection = featureLayer as IFeatureSelection;
                IEnumIDs          enumIDs          = featureSelection.SelectionSet.IDs;
                enumIDs.Reset();
                int intOID = enumIDs.Next();
                while (intOID != -1)
                {
                    IFeature feature = featureClass.GetFeature(intOID);
                    if (feature != null)
                    {
                        int fieldIndex = _utilitiesArcMap.FindField(featureClass, cbo_FieldName.Text);
                        // Default To True I will validate After Adding All To Dictonary
                        if (!_fileList.ContainsKey(Convert.ToString(feature.get_Value(fieldIndex))))
                        {
                            _fileList.Add(Convert.ToString(feature.get_Value(fieldIndex)), true);
                        }
                    }
                    intOID = enumIDs.Next();
                }
            }
        }
Esempio n. 16
0
        public override void OnClick()
        {
            IFeatureSelection targetLayer = Editor.UniqueInstance.TargetLayer as IFeatureSelection;
            IEnumIDs          iDs         = targetLayer.SelectionSet.IDs;

            iDs.Reset();
            int iD = iDs.Next();

            if (iD != -1)
            {
                IFeature pFeature = Editor.UniqueInstance.TargetLayer.FeatureClass.GetFeature(iD);
                this.ExplodeFeature(pFeature);
            }
        }
Esempio n. 17
0
        /// <summary>
        ///     Creates an <see cref="IEnumerable{T}" /> from an <see cref="IEnumIDs" />
        /// </summary>
        /// <param name="source">An <see cref="IEnumIDs" /> to create an <see cref="IEnumerable{T}" /> from.</param>
        /// <returns>An <see cref="IEnumerable{T}" /> that contains the values from the input source.</returns>
        public static IEnumerable <int> AsEnumerable(this IEnumIDs source)
        {
            if (source != null)
            {
                source.Reset();
                int oid = source.Next();
                while (oid >= 0)
                {
                    yield return(oid);

                    oid = source.Next();
                }
            }
        }
Esempio n. 18
0
        /// <summary>
        /// Converts the feature selected features to a list of ObjectIDs (OIDs)
        /// </summary>
        /// <param name="featureSelection">The feature selection.</param>
        /// <returns>OIDList of objectids</returns>
        public static OIDList ToOIDList(this IFeatureSelection featureSelection)
        {
            OIDList oidlist = new OIDList();

            IEnumIDs enumids = featureSelection.SelectionSet.IDs;

            int id = -1;

            while ((id = enumids.Next()) != -1)
            {
                oidlist.Add(id);
            }

            return(oidlist);
        }
Esempio n. 19
0
        private void DeleteSelectedFeatures()
        {
            IFeatureClass     pFeatCls     = currentLayer.FeatureClass;
            IFeatureSelection selectLayer  = currentLayer as IFeatureSelection;
            ISelectionSet     selectionSet = selectLayer.SelectionSet;
            IEnumIDs          enumIDs      = selectionSet.IDs;
            IFeature          feature;
            int iD = enumIDs.Next();

            while (iD != -1) //-1 is reutned after the last valid ID has been reached
            {
                feature = pFeatCls.GetFeature(iD);
                feature.Delete();
                iD = enumIDs.Next();
            }
        }
Esempio n. 20
0
        public List <IFeature> GetSelectedFeatures()
        {
            List <IFeature> list = new List <IFeature>();

            if (this.TargetLayer != null)
            {
                IFeatureSelection targetLayer = this.TargetLayer as IFeatureSelection;
                IEnumIDs          iDs         = targetLayer.SelectionSet.IDs;
                iDs.Reset();
                for (int i = iDs.Next(); i != -1; i = iDs.Next())
                {
                    IFeature item = this.TargetLayer.FeatureClass.GetFeature(i);
                    list.Add(item);
                }
            }
            return(list);
        }
Esempio n. 21
0
        private void Delete(IFeatureLayer buildingsfeaturelayer)
        {
            //Get the editor
            _editor = GetEditorFromArcMap(_application as IMxApplication);
            if (_editor == null)
            {
                MessageBox.Show("Editor version of ArcMap required.", "Building Inspector", MessageBoxButtons.OK, MessageBoxIcon.Stop);
                return;
            }

            if (_editor.EditState != esriEditState.esriStateEditing)
            {
                MessageBox.Show("Start an edit session first.", "Building Inspector", MessageBoxButtons.OK, MessageBoxIcon.Stop);
                return;
            }

            IFeatureSelection featureselection = buildingsfeaturelayer as IFeatureSelection;

            if (featureselection.SelectionSet.Count == 0)
            {
                MessageBox.Show("Select at least one feature.", "Building Inspector", MessageBoxButtons.OK, MessageBoxIcon.Stop);
                return;
            }

            IFeatureClass featureclass = buildingsfeaturelayer.FeatureClass;
            IEnumIDs      enumIDs      = featureselection.SelectionSet.IDs;

            enumIDs.Reset();
            int intOID = enumIDs.Next();

            while (intOID != -1)
            {
                IFeature feature = featureclass.GetFeature(intOID);
                if (feature != null)
                {
                    _editor.StartOperation();
                    feature.Delete();
                    _editor.StopOperation("Status updated!" + feature.OID);
                    feature.Store();
                }
                intOID = enumIDs.Next();
            }

            _activeView.Refresh();
        }
Esempio n. 22
0
        private void InitialFrm(List <IFeatureLayer> layerList)
        {
            foreach (IFeatureLayer aFeatLay in layerList)
            {
                IFeatureSelection featSel = aFeatLay as IFeatureSelection;
                int fdIndex = aFeatLay.FeatureClass.Fields.FindField("SourceOID");
                if (fdIndex == -1)
                {
                    continue;
                }
                IEnumIDs      pEnumIDs = featSel.SelectionSet.IDs;
                int           ID       = pEnumIDs.Next();
                StringBuilder sb       = new StringBuilder();
                while (ID != -1)
                {
                    IFeature pFeat = aFeatLay.FeatureClass.GetFeature(ID);
                    if (sb.Length != 0)
                    {
                        sb.Append(",");
                    }
                    sb.Append(pFeat.get_Value(fdIndex).ToString());
                    ID = pEnumIDs.Next();
                }

                IQueryFilter queryFilter = new QueryFilterClass();
                queryFilter.WhereClause = "SourceOID in (" + sb.ToString() + ")";
                IFeatureLayerDefinition featLayDef = aFeatLay as IFeatureLayerDefinition;
                featLayDef.DefinitionExpression = "";
                featSel.SelectFeatures(queryFilter, esriSelectionResultEnum.esriSelectionResultNew, false);
                featSel.SelectionChanged();

                IFeatureLayer    selFeatLay       = featLayDef.CreateSelectionLayer(aFeatLay.Name, true, "", "");
                IGeoFeatureLayer pGeoFeatureLayer = aFeatLay as IGeoFeatureLayer;
                if (pGeoFeatureLayer != null)
                {
                    (selFeatLay as IGeoFeatureLayer).Renderer = pGeoFeatureLayer.Renderer;
                }
                this.axMapControl.Map.AddLayer(selFeatLay);
            }
            SysCommon.Gis.ModGisPub.LayersCompose(this.axMapControl.Object as IMapControlDefault);

            InitialSliderItem(this.axMapControl.Object as IMapControlDefault);

            InitialbarMap();
        }
Esempio n. 23
0
        private void method_2(TreeNode treeNode_0, ISelectionSet iselectionSet_0, IConflictClass iconflictClass_0)
        {
            IEnumIDs iDs = iselectionSet_0.IDs;

            iDs.Reset();
            for (int i = iDs.Next(); i != -1; i = iDs.Next())
            {
                TreeNode      node = new TreeNode(i.ToString());
                RowCollection unk  = new RowCollection
                {
                    ConflictClass = iconflictClass_0
                };
                this.iarray_0.Add(unk);
                unk.OID  = i;
                node.Tag = unk;
                treeNode_0.Nodes.Add(node);
            }
        }
Esempio n. 24
0
        private void UpdateDataGridView(ISelectionSet selectedFeatures)
        {
            IEnumIDs enumIDs = selectedFeatures.IDs;
            int      iD      = enumIDs.Next();

            while (iD != -1) //-1 is reutned after the last valid ID has been reached
            {
                for (int i = 0; i < dataGridView1.RowCount - 1; i++)
                {
                    if (dataGridView1.Rows[i].Cells[0].Value.ToString() == iD.ToString())
                    {
                        dataGridView1.Rows[i].Selected = true;
                    }
                }

                iD = enumIDs.Next();
            }
        }
Esempio n. 25
0
        private void PrintSelectionSet(ISelectionSet ss)
        {
            IEnumIDs enumIDs = ss.IDs as IEnumIDs;

            try
            {
                int oid = enumIDs.Next();
                while (oid != -1)
                {
                    System.Diagnostics.Debug.WriteLine("OID:" + oid);
                    oid = enumIDs.Next();
                }
            }
            catch
            {
                System.Diagnostics.Debug.WriteLine("End of enum!");
            }
        }
Esempio n. 26
0
        public static void DeletedSelectedZD(IFeatureSelection ifeatureSelection_0)
        {
            IEnumIDs ds = ifeatureSelection_0.SelectionSet.IDs;

            ds.Reset();
            int             num          = ds.Next();
            List <IFeature> features     = new List <IFeature>();
            IFeatureClass   featureClass = (ifeatureSelection_0 as IFeatureLayer).FeatureClass;

            while (num > 0)
            {
                features.Add(featureClass.GetFeature(num));
                num = ds.Next();
            }
            foreach (IFeature feature in features)
            {
                ZDEditTools.DeleteZD(feature);
            }
        }
Esempio n. 27
0
        private void button2_Click(object sender, EventArgs e)
        {
            for (int i = 0; i < layerCount; i++)
            {
                if (pMap.get_Layer(i).Name.Equals(comboBox1.Text))
                {
                    currentLayer = pMap.get_Layer(i) as IFeatureLayer;
                }
            }
            if (currentLayer != null)
            {
                IFeatureSelection featureSelection = currentLayer as IFeatureSelection;
                ISelectionSet     selectionSet     = featureSelection.SelectionSet;
                IEnumIDs          selectedIDs      = selectionSet.IDs;
                selectedIDs.Reset();
                int selectedID = selectedIDs.Next();
                if (selectedID == -1)
                {
                    return;
                }
                IFeature baseFeature = currentLayer.FeatureClass.GetFeature(selectedID);

                if (baseFeature != null)
                {
                    IGeometry      baseGeom = baseFeature.Shape;
                    ISpatialFilter pSFilter = new SpatialFilterClass();
                    pSFilter.Geometry      = baseGeom;
                    pSFilter.GeometryField = "Shape";
                    pSFilter.SpatialRel    = esriSpatialRelEnum.esriSpatialRelTouches;

                    featureSelection.SelectFeatures(pSFilter, esriSelectionResultEnum.esriSelectionResultNew, false);
                    axMapControl1.ActiveView.PartialRefresh(esriViewDrawPhase.esriViewGeoSelection, null, axMapControl1.ActiveView.Extent);
                }
                else
                {
                    MessageBox.Show("筛选之后为空");
                }
            }
            else
            {
                MessageBox.Show("请先选择面图层里面的一个要素");
            }
        }
Esempio n. 28
0
        private void btnQuery_Click(object sender, EventArgs e)
        {
            DeleteGraphics();

            txtMessages.Text += "开始邻接多边形查询: " + "\r\n";
            txtMessages.Text += "查询图层: " + currentLayer.Name + "\r\n";
            txtMessages.Text += DateAndTime.Now.ToString() + "\r\n\r\n";
            txtMessages.Update();

            IFeatureSelection featureSelection = currentLayer as IFeatureSelection;
            ISelectionSet     selectionSet     = featureSelection.SelectionSet;
            IEnumIDs          selectedIDs      = selectionSet.IDs;

            selectedIDs.Reset();
            int selectedID = selectedIDs.Next();

            if (selectedID == -1)
            {
                return;
            }
            IFeature baseFeature = currentLayer.FeatureClass.GetFeature(selectedID);

            //The following code using SpatialFilter, and has been tested successfully!
            if (baseFeature != null)
            {
                IGeometry      baseGeom = baseFeature.Shape;
                ISpatialFilter pSFilter = new SpatialFilterClass();
                pSFilter.Geometry      = baseGeom;
                pSFilter.GeometryField = "Shape";
                pSFilter.SpatialRel    = esriSpatialRelEnum.esriSpatialRelTouches;
                featureSelection.SelectFeatures(pSFilter, esriSelectionResultEnum.esriSelectionResultNew, false);
            }
            m_activeView.PartialRefresh(esriViewDrawPhase.esriViewGeoSelection, null, m_activeView.Extent);
            //突出显示基多边形要素
            DrawGraphics(baseFeature.ShapeCopy);

            txtMessages.Text += "邻接多边形查询结束! " + "\r\n";
            txtMessages.Text += "总查询要素个数: " + m_map.SelectionCount.ToString() + " \r\n";
            txtMessages.Text += DateAndTime.Now.ToString() + "\r\n";
            ScrollToBottom(txtMessages);
            txtMessages.Update();
        }
Esempio n. 29
0
        public ISelectionSetBarriers GetSelectionSetBarries()
        {
            int featureClassID = this._networkInfo.LayerPoint.FeatureClass.FeatureClassID;
            ISelectionSetBarriers selectionSetBarriers = new SelectionSetBarriers();
            IFeatureSelection     featureSelection     = (IFeatureSelection)this._networkInfo.LayerPoint;
            IQueryFilter          barrierQuery         = this.GetBarrierQuery();

            featureSelection.SelectFeatures(barrierQuery, 0, false);
            IEnumIDs iDs = featureSelection.SelectionSet.IDs;

            iDs.Reset();
            for (int i = iDs.Next(); i > 0; i = iDs.Next())
            {
                if (this.listOutBarriers.Items.IndexOf(i.ToString()) == -1)
                {
                    selectionSetBarriers.Add(featureClassID, i);
                }
            }
            return(selectionSetBarriers);
        }
Esempio n. 30
0
        private void CreateRoutesForOrigin(ArrayList harvestUnits, int lnversionid)
        {
            InitSpatial(lnversionid);

            //continue if more than 0
            if (harvestUnits.Count > 0)
            {
                //get cursor of all the specified harvest units
                IQueryFilter queryFilter = new QueryFilterClass();
                queryFilter.WhereClause = Utility.CreateWhereClause(harvestUnits, "HarvestUnit", "HarvestUnitName");
                IFeatureCursor harvestUnitCursor = HarvestUnits.Search(queryFilter, true);

                //iterate through harvest units
                IFeature harvestUnit = harvestUnitCursor.NextFeature();
                while (harvestUnit != null)
                {
                    //get harvest name
                    string harvname = harvestUnit.get_Value(harvestUnit.Fields.FindFieldByAliasName("HarvestUnitName")).ToString();
                    Debug.WriteLine("creating route for " + harvname);

                    //get center of harv
                    IPoint harvCenter = ((IArea)harvestUnit.Shape).Centroid;

                    //intersect harv unit with roads
                    IEnumIDs roadsInHarv = Utility.IntersectFeaturesWithPoly(harvestUnit.Shape, this.RoadEdge);

                    //find the road feature closest to the centroid of the harvest unit
                    IFeature closestRoad = Utility.FindClosestFeatureToPoint(harvCenter, this.RoadEdge, roadsInHarv);

                    //find the mainline or primary road features closest to the harvest unit
                    IEnumIDs destRoads = Utility.SearchForFeatures(harvestUnit.Shape, 2000, 2000, this.RoadEdge, "RoadEdge.Surface IN (3)"
                                                                   , null /*"RoadType"*/);

                    //find the closest of these
                    IFeature closestPrimary = Utility.FindClosestFeatureToPoint(harvCenter, this.RoadEdge, destRoads);

                    //create edgeflag array
                    ArrayList edgeflags = new ArrayList();
                    IPoint    found     = null;
                    edgeflags.Add(CreateRoadEdgeFlagFromRoadFeature(closestRoad, harvCenter, found));
                    edgeflags.Add(CreateRoadEdgeFlagFromRoadFeature(closestPrimary, harvCenter, found));