/// <summary> /// 配置指定要素的字段 /// </summary> /// <param name="AnnotationFeatureClass"></param> /// <param name="AnnotationFeatureCursor"></param> /// <param name="AnnotationFeature"></param> public void ConfigFields(IFeatureClass AnnotationFeatureClass, IFeatureCursor AnnotationFeatureCursor, IFeature AnnotationFeature) { IWorkspace WorkSpace = ((IDataset)AnnotationFeatureClass).Workspace; IWorkspaceEdit edit = WorkSpace as IWorkspaceEdit; bool startEdit = edit.IsBeingEdited(); if (!startEdit) { edit.StartEditing(false); } edit.StartEditOperation(); try { int index = AnnotationFeature.Fields.FindField("Status"); AnnotationFeature.set_Value(index, esriAnnotationStatus.esriAnnoStatusPlaced); index = AnnotationFeature.Fields.FindField("Angle"); AnnotationFeature.set_Value(index, 90); index = AnnotationFeature.Fields.FindField("FontName"); AnnotationFeature.set_Value(index, "华文彩云"); }//先找到字段的索引值,再set_Value catch { } AnnotationFeature.Store(); System.Runtime.InteropServices.Marshal.ReleaseComObject(AnnotationFeature); AnnotationFeatureCursor.Flush(); System.Runtime.InteropServices.Marshal.ReleaseComObject(AnnotationFeatureCursor); edit.StopEditOperation(); startEdit = edit.IsBeingEdited(); if (startEdit) { edit.StopEditing(true); } }
private void CreateFeature(IGeometry geo, IMap pMap, IFeatureClass fc) { try { if (geo == null || fc == null || pMap == null) { return; } IDataset pDataset = fc as IDataset; IWorkspaceEdit pWorkspaceEdit = pDataset.Workspace as IWorkspaceEdit; int index = fc.FindField(fc.ShapeFieldName); IGeometryDef pGD = fc.Fields.get_Field(index).GeometryDef; if (pGD.HasZ) { IZAware pZA = geo as IZAware; pZA.ZAware = true; IZ pZ = geo as IZ; double zmin = -1000, zmax = 1000; if (pGD.SpatialReference.HasZPrecision()) { pGD.SpatialReference.GetZDomain(out zmin, out zmax); } if (pZ != null) { pZ.SetConstantZ(0); } else { IPoint p = geo as IPoint; if (p.Z.ToString() == "非数字") { p.Z = 0; } } } if (pGD.HasM) { IMAware pMA = geo as IMAware; pMA.MAware = true; } if (!pWorkspaceEdit.IsBeingEdited()) { pWorkspaceEdit.StartEditing(true); pWorkspaceEdit.StartEditOperation(); } IFeature pFeature = fc.CreateFeature(); pFeature.Shape = geo; pFeature.Store(); if (pWorkspaceEdit.IsBeingEdited()) { pWorkspaceEdit.StartEditOperation(); pWorkspaceEdit.StopEditing(true); } pMap.ClearSelection(); } catch (System.Exception ex) { return; } }
/// <summary> /// 提交当前版本(经过仲裁) /// </summary> /// <param name="pWorkspace">工作区</param> /// <param name="sVersion">父版本名称</param> public static void PostVerison(IWorkspace pWorkspace, string sVersion) { IVersion pVersion = (IVersion)pWorkspace; if (!IsLocked(pVersion)) { throw new Exception("不能提交数据到父版本,其它用户正在编辑"); } IWorkspaceEdit pWorkspaceEdit = (IWorkspaceEdit)pVersion; if (!pWorkspaceEdit.IsBeingEdited()) { throw new Exception("请开始编辑会话"); } IVersionEdit pVersionEdit = (IVersionEdit)pVersion; IVersionInfo pVersionInfo = pVersion.VersionInfo; try { string sParentName = pVersionInfo.VersionName; bool bConflicts = pVersionEdit.Reconcile(sParentName); if (bConflicts) { pWorkspaceEdit.StopEditing(true); } else { if (pVersionEdit.CanPost()) { pVersionEdit.Post(sParentName); pWorkspaceEdit.StopEditing(true); } else { pWorkspaceEdit.StopEditing(true); // false //MessageBox.Show("不能提交数据到父版本[" + sParentName + "]"); } } } catch (Exception ex) { throw ex; } finally { if (pWorkspaceEdit.IsBeingEdited()) { pWorkspaceEdit.StopEditing(true); // false } pWorkspaceEdit.StartEditing(true); } }
//停止编辑 public static void StopEditing(AxMapControl axmap, ILayer player) { m_strOperator = ""; if (pWorkspaceEdit == null) { return; } // Check edit conditions before allowing edit to stop m_CurrentLayer = player; m_MapControl = axmap; if (m_CurrentLayer == null) { return; } IFeatureLayer pFeatureLayer = (IFeatureLayer)m_CurrentLayer; if (pFeatureLayer.FeatureClass == null) { return; } IDataset pDataset = (IDataset)pFeatureLayer.FeatureClass; if (pDataset == null) { return; } // If the current document has been edited then prompt the user to save changes //IWorkspaceEdit pWorkspaceEdit = (IWorkspaceEdit)pDataset.Workspace; if (pWorkspaceEdit.IsBeingEdited()) { bool bHasEdits = false; pWorkspaceEdit.HasEdits(ref bHasEdits); bool bSave = false; if (bHasEdits) { DialogResult result; result = MessageBoxEx.Show("你想保存你的编辑吗?", "提示!", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question); if (DialogResult.Yes == result) { bSave = true; } } pWorkspaceEdit.StopEditing(bSave); } m_MapControl.Map.ClearSelection(); m_MapControl.ActiveView.Refresh(); }
/// <summary> /// 开始编辑,使工作空间处于可编辑状态 /// 在进行图层编辑前必须调用本方法 /// </summary> public void StartEditing() { try { if (m_pCurrentLayer == null) { return; } if (!(m_pCurrentLayer is IGeoFeatureLayer)) { return; } IFeatureLayer pFeatureLayer = (IFeatureLayer)m_pCurrentLayer; IDataset pDataset = (IDataset)pFeatureLayer.FeatureClass; if (pDataset == null) { return; } // 开始编辑,并设置Undo/Redo 为可用 IWorkspaceEdit pWorkspaceEdit = (IWorkspaceEdit)pDataset.Workspace; if (!pWorkspaceEdit.IsBeingEdited()) { pWorkspaceEdit.StartEditing(true); pWorkspaceEdit.EnableUndoRedo(); } } catch (Exception e) { Console.WriteLine(e.Message.ToString()); } }
/// <summary> /// 检查工作空间中是否有数据处于编辑状态 /// </summary> /// <returns>是否正在编辑</returns> public bool InEdit() { try { if (m_pCurrentLayer == null) { return(false); } IFeatureLayer pFeatureLayer = (IFeatureLayer)m_pCurrentLayer; if (pFeatureLayer.FeatureClass == null) { return(false); } IDataset pDataset = (IDataset)pFeatureLayer.FeatureClass; if (pDataset == null) { return(false); } IWorkspaceEdit pWorkspaceEdit = (IWorkspaceEdit)pDataset.Workspace; if (pWorkspaceEdit.IsBeingEdited()) { return(true); } return(false); } catch (Exception e) { Console.WriteLine(e.Message.ToString()); return(false); } }
private bool InEdit(ILayer player) { // Check edit conditions before allowing edit to stop CreateShape.m_CurrentLayer = player; if (CreateShape.m_CurrentLayer == null) { return(false); } try { IFeatureLayer pFeatureLayer = (IFeatureLayer)CreateShape.m_CurrentLayer; if (pFeatureLayer.FeatureClass == null) { return(false); } IDataset pDataset = (IDataset)pFeatureLayer.FeatureClass; if (pDataset == null) { return(false); } IWorkspaceEdit pWorkspaceEdit = (IWorkspaceEdit)pDataset.Workspace; if (pWorkspaceEdit.IsBeingEdited()) { return(true); } return(false); } catch { return(false); } }
public static IFeatureLayer FindFeatureLayerByFCName(IBasicMap pMap, string fcName, bool checkEdit) { string str = fcName.ToLower(); UID uid = new UID { Value = "{6CA416B1-E160-11D2-9F4E-00C04F6BC78E}" }; IEnumLayer layer = pMap.get_Layers(uid, true); layer.Reset(); for (ILayer layer2 = layer.Next(); layer2 != null; layer2 = layer.Next()) { if (layer2 is IFeatureLayer) { string[] strArray = ((layer2 as IFeatureLayer).FeatureClass as IDataset).Name.Split(new char[] { '.' }); if (strArray[strArray.Length - 1].ToLower() == str) { if (!checkEdit) { return(layer2 as IFeatureLayer); } IWorkspaceEdit workspace = ((layer2 as IFeatureLayer).FeatureClass as IDataset).Workspace as IWorkspaceEdit; if (workspace.IsBeingEdited()) { return(layer2 as IFeatureLayer); } } } } return(null); }
public static void LinesToPolygons(IFeatureClass ifeatureClass_0, IFeatureClass ifeatureClass_1) { if (ifeatureClass_0.ShapeType == esriGeometryType.esriGeometryPolygon) { IFeatureCursor featureCursor = ifeatureClass_1.Search(null, false); IEnvelope envelope = (ifeatureClass_1 as IGeoDataset).Extent.Envelope; IInvalidArea invalidAreaClass = new InvalidArea(); IFeatureConstruction featureConstructionClass = new FeatureConstruction(); IWorkspaceEdit workspace = (ifeatureClass_0 as IDataset).Workspace as IWorkspaceEdit; if (!workspace.IsBeingEdited()) { workspace.StartEditing(false); workspace.StartEditOperation(); } try { featureConstructionClass.ConstructPolygonsFromFeaturesFromCursor(null, ifeatureClass_0, envelope, true, false, featureCursor, invalidAreaClass, -1, null); workspace.StopEditOperation(); workspace.StopEditing(true); } catch (Exception exception1) { Exception exception = exception1; MessageBox.Show(string.Concat("Construct polygons failed. ", exception.Message)); workspace.AbortEditOperation(); } ComReleaser.ReleaseCOMObject(featureCursor); } else { MessageBox.Show("目标层不是一个面层."); } }
public static void LinesSelfBreak(IFeatureClass ifeatureClass_0, string string_0) { if (ifeatureClass_0.ShapeType == esriGeometryType.esriGeometryPolyline) { IQueryFilter queryFilterClass = new QueryFilter() { WhereClause = string_0 }; IFeatureCursor featureCursor = ifeatureClass_0.Search(queryFilterClass, false); IFeatureConstruction featureConstructionClass = new FeatureConstruction(); IWorkspaceEdit workspace = (ifeatureClass_0 as IDataset).Workspace as IWorkspaceEdit; if (!workspace.IsBeingEdited()) { workspace.StartEditing(false); workspace.StartEditOperation(); } try { featureConstructionClass.PlanarizeLinesFromCursor(null, ifeatureClass_0, featureCursor, -1); workspace.StopEditOperation(); workspace.StopEditing(true); } catch (Exception exception1) { Exception exception = exception1; MessageBox.Show(string.Concat("线打断出错. ", exception.Message)); workspace.AbortEditOperation(); } ComReleaser.ReleaseCOMObject(featureCursor); } else { MessageBox.Show("目标层不是一个线层."); } }
/// <summary> /// 对街道、房屋实体进行编码 /// </summary> /// <param name="pFeatureLayer">需要编码的图层</param> /// <param name="pENTIID">需要编码的字段名称</param> private static void CreateHouseCode(IFeatureLayer pFeatureLayer, string pENTIID) { #region 针对GUID编码来讲 //遍历Feature IDataset pDataset = pFeatureLayer.FeatureClass as IDataset; IWorkspaceEdit pWorkspaceEdit = null; if (pDataset != null) { pWorkspaceEdit = pDataset.Workspace as IWorkspaceEdit; if (pWorkspaceEdit != null || pWorkspaceEdit.IsBeingEdited() == false) { pWorkspaceEdit.StartEditing(true); pWorkspaceEdit.StartEditOperation(); } IFeatureCursor pFeatureCursor = pFeatureLayer.Search(null, false); //test int test = pFeatureLayer.FeatureClass.FeatureCount(null); IFeature pFeature = pFeatureCursor.NextFeature(); while (pFeature != null) { //获取单条Feature的某个字段值 int test2 = pFeature.Fields.FindFieldByAliasName(pENTIID); string pGUID = System.Guid.NewGuid().ToString(); pFeature.set_Value(pFeature.Fields.FindFieldByAliasName(pENTIID), pGUID); pFeature.Store(); pFeature = pFeatureCursor.NextFeature(); } pWorkspaceEdit.StopEditing(true); pWorkspaceEdit.StopEditOperation(); } #endregion }
private void GetSelctionSet(IFeatureLayer pFeatureLayer, IGeometry pGeometry, bool bjustone, int Shift) { IFeatureClass pFeatureClass = pFeatureLayer.FeatureClass; //没开启编辑的不可选择 IDataset pDataset = pFeatureClass as IDataset; IWorkspaceEdit pWorkspaceEdit = pDataset.Workspace as IWorkspaceEdit; if (!pWorkspaceEdit.IsBeingEdited()) { return; } switch (Shift) { case 1: //增加选择结果集 ModPublic.GetSelctionSet(pFeatureLayer, pGeometry, pFeatureClass, esriSelectionResultEnum.esriSelectionResultAdd, bjustone); break; case 4: //减少选择结果集 ModPublic.GetSelctionSet(pFeatureLayer, pGeometry, pFeatureClass, esriSelectionResultEnum.esriSelectionResultSubtract, bjustone); break; case 2: ModPublic.GetSelctionSet(pFeatureLayer, pGeometry, pFeatureClass, esriSelectionResultEnum.esriSelectionResultXOR, bjustone); break; default: //新建选择结果集 ModPublic.GetSelctionSet(pFeatureLayer, pGeometry, pFeatureClass, esriSelectionResultEnum.esriSelectionResultNew, bjustone); break; } }
private void StartEditing() { GetCurrentLayer(); if (m_CurrentLayer == null) { return; } if ((IGeoFeatureLayer)m_CurrentLayer == null) { return; } IFeatureLayer pFeatureLayer = (IFeatureLayer)m_CurrentLayer; IDataset pDataset = (IDataset)pFeatureLayer.FeatureClass; if (pDataset == null) { return; } IWorkspaceEdit pWorkspaceEdit = (IWorkspaceEdit)pDataset.Workspace; if (!pWorkspaceEdit.IsBeingEdited()) { pWorkspaceEdit.StartEditing(true); pWorkspaceEdit.EnableUndoRedo(); } }
// 关闭feature的工作空间编辑状态 public void StopEditing(IFeature pFeature) { try { IFeatureClass pFC = pFeature.Table as IFeatureClass; IDataset pDataset = pFC as IDataset; if (pDataset == null) { return; } //如果数据已被修改,则提示用户是否保存 IWorkspaceEdit pWorkspaceEdit = (IWorkspaceEdit)pDataset.Workspace; if (pWorkspaceEdit.IsBeingEdited()) { pWorkspaceEdit.StopEditing(true); } IActiveView pActiveView = m_SceneCtrl.Scene as IActiveView; pActiveView.Refresh(); } catch (Exception e) { Console.WriteLine(e.Message.ToString()); } }
private void dataGridViewX_CellValueChanged(object sender, DataGridViewCellEventArgs e) { try { IFeature pfeature = advTree.SelectedNode.Tag as IFeature; if (pfeature != null) { IWorkspaceEdit iWE = (pfeature.Class as IDataset).Workspace as IWorkspaceEdit; if (!iWE.IsBeingEdited()) { iWE.StartEditing(false); } iWE.StartEditOperation(); int fdpos = pfeature.Fields.FindFieldByAliasName(dataGridViewX[e.ColumnIndex - 1, e.RowIndex].Value.ToString()); pfeature.set_Value(fdpos, dataGridViewX[e.ColumnIndex, e.RowIndex].Value.ToString()); pfeature.Store(); iWE.StopEditOperation(); labelEditStatus.Text = "已完成更改!"; labelEditStatus.Visible = true; this.Refresh(); iWE = null; } } catch { MessageBox.Show("请按正确的字段格式填写属性!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); } }
private void UpdateFeature(IFeature selectedFeature, ISegmentCollection polylineSegments) { ISegmentCollection polyline = new PolylineClass(); polyline.AddSegmentCollection(polylineSegments); IFeatureClass featureClass = selectedFeature.Class as IFeatureClass; IDataset dataset = featureClass as IDataset; IWorkspaceEdit workspaceEdit = dataset.Workspace as IWorkspaceEdit; if (!(workspaceEdit.IsBeingEdited())) { return; } try { workspaceEdit.StartEditOperation(); selectedFeature.Shape = polyline as IGeometry; selectedFeature.Store(); workspaceEdit.StopEditOperation(); } catch (Exception ex) { workspaceEdit.AbortEditOperation(); MessageBox.Show("移动线段失败!!" + ex.Message, "信息提示", MessageBoxButtons.OK, MessageBoxIcon.Information); } }
private void ToolStripMenuItem_Click(object sender, EventArgs e) { try { IDataset dataset = (IDataset)Variable.pAttributeTableFeatureLayer.FeatureClass; IWorkspaceEdit workspaceEdit = (IWorkspaceEdit)dataset.Workspace; if (workspaceEdit.IsBeingEdited()) { MessageBox.Show("地图处于编辑状态,暂时无法删除字段!"); return; } if (MessageBox.Show(string.Format("确定要删除 {0} 字段吗?", this.columnName), "", MessageBoxButtons.OKCancel) == DialogResult.OK) { IFeatureClass featureClass = Variable.pAttributeTableFeatureLayer.FeatureClass; IFields fields = featureClass.Fields; IField field = fields.get_Field(this.columnIndex); featureClass.DeleteField(field); // 删除字段 dataGridView1.Columns.RemoveAt(this.columnIndex); // 删除列 MessageBox.Show(string.Format("{0} 字段已删除!", this.columnName)); } } catch (Exception ex) { MessageBox.Show(ex.Message + "\n" + ex.ToString(), "异常"); } }
public bool IsValid(object caller, ICSharpCode.Core.Condition condition) { bool hasUndos = false; DF2DApplication app = DF2DApplication.Application; if (app == null || app.Current2DMapControl == null) { return(false); } IWorkspaceEdit pWorkspaceEdit = Class.Common.CurWspEdit; if (pWorkspaceEdit == null) { return(false); } if (pWorkspaceEdit.IsBeingEdited()) { pWorkspaceEdit.HasUndos(ref hasUndos); if (hasUndos) { return(true); } else { return(false); } } else { return(false); } }
//保存编辑 private void barButtonItem3_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { if (pWorkspaceEdit == null) { return; } try { if (attributeEditObjectsList.Count != 0) { WriteAttributeToFeatureClass(featureLayer.FeatureClass); } startEdit = pWorkspaceEdit.IsBeingEdited(); if (startEdit) { pWorkspaceEdit.StopEditing(true); } setButtonEnable(false); ctrlAttrubuteGrid1.SetGridEditable(false); toolStripStatusLabel1.Text = ""; hasEdited = false; attributeEditObjectsList = new List <AttributeEditObject>(); } catch (Exception ex) { MessageBox.Show(ex.Message); PS.Plot.Common.LogHelper.WriteLog(typeof(Form_Attribute), ex, "属性表编辑"); } }
private void tSB_AddField_Click(object sender, EventArgs e) { try { IDataset dataset = (IDataset)Variable.pAttributeTableFeatureLayer.FeatureClass; IWorkspaceEdit workspaceEdit = (IWorkspaceEdit)dataset.Workspace; if (workspaceEdit.IsBeingEdited()) { MessageBox.Show("地图处于编辑状态,暂时无法新建字段!"); return; } NewFieldFrm newFieldForm = new NewFieldFrm(); if (newFieldForm.ShowDialog() == DialogResult.OK) { this.RefreshAttributeTable(); int newColumnIndex = dataGridView1.Columns.Count - 1; dataGridView1.FirstDisplayedScrollingColumnIndex = newColumnIndex; // 滚动到新字段对应的列 MessageBox.Show(string.Format("{0} 字段新建成功!", this.dataGridView1.Columns[newColumnIndex].Name)); } } catch (Exception ex) { MessageBox.Show(ex.Message + "\n" + ex.ToString(), "异常"); } }
//IFeatureClass CreateFeature Example private IFeature IFeatureClass_Create(IFeatureClass featureClass, IGeometry pGeometry) { IWorkspaceEdit iWE = (featureClass as IDataset).Workspace as IWorkspaceEdit; if (!iWE.IsBeingEdited()) { iWE.StartEditing(false); } iWE.StartEditOperation(); IFeature feature = featureClass.CreateFeature(); //Apply the constructed shape to the new features shape feature.Shape = pGeometry; //如果不是shp 则初始化子类型 if ((featureClass as IDataset).Workspace.WorkspaceFactory.WorkspaceType != esriWorkspaceType.esriFileSystemWorkspace) { ISubtypes subtypes = (ISubtypes)featureClass; IRowSubtypes rowSubtypes = (IRowSubtypes)feature; if (subtypes.HasSubtype) // does the feature class have subtypes? { rowSubtypes.SubtypeCode = 1; //in this example 1 represents the Primary Pipeline subtype } // initalize any default values that the feature has rowSubtypes.InitDefaultValues(); //Commit the default values in the feature to the database } feature.Store(); iWE.StopEditOperation(); //iWE.StopEditing(true); iWE = null; return(feature); }
//IFeatureClass CreateFeature Example private IFeature IFeatureClass_Create(IFeatureClass featureClass, IGeometry pGeometry) { if (featureClass.ShapeType != ESRI.ArcGIS.Geometry.esriGeometryType.esriGeometryPolygon) { return(null); } IWorkspaceEdit iWE = (featureClass as IDataset).Workspace as IWorkspaceEdit; if (!iWE.IsBeingEdited()) { iWE.StartEditing(false); } IFeature feature = featureClass.CreateFeature(); //Apply the constructed shape to the new features shape feature.Shape = pGeometry; ISubtypes subtypes = (ISubtypes)featureClass; IRowSubtypes rowSubtypes = (IRowSubtypes)feature; if (subtypes.HasSubtype) // does the feature class have subtypes? { rowSubtypes.SubtypeCode = 1; //in this example 1 represents the Primary Pipeline subtype } // initalize any default values that the feature has rowSubtypes.InitDefaultValues(); //Commit the default values in the feature to the database feature.Store(); iWE.StopEditing(true); iWE = null; return(feature); }
//====================================================================================================== #region 判断要素是否在同一图层以及图层的编辑状态 //=================================================================================================== //陈胜鹏 2009-08-19 添加 /// <summary> /// 从图面上获取选中要素所在数据集的工作空间,判断是否开启编辑 /// </summary> /// <param name="pMap">当前加载了数据的地图对象</param> /// <returns></returns> private bool GetDatasetEditState(ESRI.ArcGIS.Carto.IMap pMap) { int pSameLyr = 0; //记录要素是否为同层 ILayer pLayer = null; //判断选择的要素是否处于同一个图层 for (int i = 0; i < pMap.LayerCount; i++) { IFeatureLayer pFeatLyr = null; IFeatureSelection pFeatSel = null; pLayer = pMap.get_Layer(i); if (pLayer is IGroupLayer) { if (pLayer.Name == "示意图") { continue; } ICompositeLayer pComLayer = pLayer as ICompositeLayer; for (int j = 0; j < pComLayer.Count; j++) { ILayer mLayer = pComLayer.get_Layer(j); pFeatLyr = mLayer as IFeatureLayer; if (pFeatLyr != null) { pFeatSel = pFeatLyr as IFeatureSelection; if (pFeatSel.SelectionSet.Count > 0) { pSameLyr = pSameLyr + 1; m_MergeLayer = pFeatLyr;//当只有一个图层被选中时,pFeatLyr就是要进行融合的目标图层 } } } } pFeatLyr = pLayer as IFeatureLayer; if (pFeatLyr != null) { pFeatSel = pFeatLyr as IFeatureSelection; if (pFeatSel.SelectionSet.Count > 0) { pSameLyr = pSameLyr + 1; m_MergeLayer = pFeatLyr;//当只有一个图层被选中时,pFeatLyr就是要进行融合的目标图层 } } } //如果选择的要素所在的层数不是1,即要素不在同一个层 if (pSameLyr != 1) { return(false); } //一系列的QI后获得IWorkspaceEdit接口对象pWSE IFeatureClass pFeatCls = m_MergeLayer.FeatureClass as IFeatureClass; IDataset pDS = pFeatCls as IDataset; IWorkspace pWs = pDS.Workspace as IWorkspace; IWorkspaceEdit pWSE = pWs as IWorkspaceEdit; return(pWSE.IsBeingEdited()); //返回编辑状态 }
public void executeRegionGroup() { createOutRaster(); if (OutRaster == null) { Console.WriteLine("not all inputs specified"); return; } IWorkspaceEdit wksE = (IWorkspaceEdit)vWks; bool weEdit = true; if (wksE.IsBeingEdited()) { weEdit = false; } else { wksE.StartEditing(false); } wksE.StartEditOperation(); Console.WriteLine("Counter = " + counter.ToString()); int readclmsStep = PixelBlockWidth + 2; int readrwsStep = PixelBlockHeight + 2; IPnt outloc = new PntClass(); IPnt inloc = new PntClass(); try { for (int rp = 0; rp < rws; rp += PixelBlockHeight) //rws { for (int cp = 0; cp < clms; cp += PixelBlockWidth) //clms { Console.WriteLine("Write Raster location = " + cp.ToString() + ":" + rp.ToString()); Console.WriteLine("Read Raster location = " + (cp - 1).ToString() + ":" + (rp - 1).ToString()); outloc.SetCoords(cp, rp); inloc.SetCoords(cp - 1, rp - 1); middleRowColumn(outloc); } } IRaster2 rs2 = (IRaster2)OutRaster; IRasterDataset rsDset = rs2.RasterDataset; IRasterDatasetEdit2 rsDsetE = (IRasterDatasetEdit2)rsDset; rsDsetE.AlterAttributeTable(vatTable); wksE.StopEditOperation(); if (weEdit) { wksE.StopEditing(true); } } catch (Exception e) { Console.WriteLine(e.ToString()); } finally { } return; }
/// <summary> /// 开始编辑 /// </summary> /// <param name="player"></param> public static void StartEditing(ILayer player, string strOperator) { // 开始编辑前检查编辑状态 m_strOperator = strOperator; m_CurrentLayer = player; if (m_CurrentLayer == null) { return; } if ((IGeoFeatureLayer)m_CurrentLayer == null) { return; } IFeatureLayer pFeatureLayer = (IFeatureLayer)m_CurrentLayer; IDataset pDataset = (IDataset)pFeatureLayer.FeatureClass; if (pDataset == null) { return; } // Start editing, making sure that undo/redo are enabled pWorkspaceEdit = (IWorkspaceEdit)pDataset.Workspace; if (!pWorkspaceEdit.IsBeingEdited()) { try { pWorkspaceEdit.StartEditing(true); pWorkspaceEdit.StartEditOperation(); pWorkspaceEdit.EnableUndoRedo(); } catch { if (pWorkspaceEdit.IsBeingEdited()) { pWorkspaceEdit.StopEditOperation(); pWorkspaceEdit.StopEditing(true); pWorkspaceEdit.StartEditing(true); pWorkspaceEdit.StartEditOperation(); pWorkspaceEdit.EnableUndoRedo(); } } } }
/// <summary> /// Stop Edit. /// </summary> /// <param name="workspace"></param> /// <param name="saveEdits"></param> public static void StopEdit(IWorkspace workspace, bool saveEdits) { IWorkspaceEdit iWorkspaceEdit = workspace as IWorkspaceEdit; if (iWorkspaceEdit.IsBeingEdited()) { iWorkspaceEdit.StopEditing(saveEdits); } }
public void StartDataTable() { IWorkspaceEdit workspace = (this.itable_0 as IDataset).Workspace as IWorkspaceEdit; if (!workspace.IsBeingEdited()) { workspace.StartEditing(false); } }
public void SaveDataTable() { IWorkspaceEdit workspace = (this.itable_0 as IDataset).Workspace as IWorkspaceEdit; if (workspace.IsBeingEdited()) { workspace.StopEditing(true); } }
//写历史 private void WriteHisOfFeatureClass(IFeatureClass pCurFeatureClass, IFeatureClass pHisFeatureClass, IGeometry pGeometry) { if (pCurFeatureClass == null) { return; } if (pHisFeatureClass == null) { return; } IWorkspace pTagetWorkspace = null; try { pTagetWorkspace = (pHisFeatureClass as IDataset).Workspace; } catch { } IWorkspaceEdit wsEdit = pTagetWorkspace as IWorkspaceEdit; if (wsEdit.IsBeingEdited() == true) { wsEdit.StopEditing(true); } wsEdit.StartEditing(false); wsEdit.StartEditOperation(); ISpatialFilter pFilter = new SpatialFilterClass(); pFilter.Geometry = pGeometry; pFilter.SpatialRel = esriSpatialRelEnum.esriSpatialRelContains; IFeatureCursor pFeaCursor = pCurFeatureClass.Search(pFilter, false); if (pFeaCursor != null) { Exception err0 = null; System.DateTime pDate = DateTime.Today; NewFeatures(pHisFeatureClass, pFeaCursor, "ZZRQ", DateTime.Today.ToShortDateString() as object, true, null, out err0); System.Runtime.InteropServices.Marshal.ReleaseComObject(pFeaCursor); pFeaCursor = null; if (err0 == null) { wsEdit.StopEditOperation(); wsEdit.StopEditing(true); } else { wsEdit.StopEditOperation(); wsEdit.StopEditing(false); } } else { wsEdit.StopEditOperation(); wsEdit.StopEditing(false); } }
public override void SetValue(object component, object value) { IRow pRow = component as IRow; if (m_CodedValueDomain != null) { if (!m_UseCVDomain) { if (!((IDomain)m_CodedValueDomain).MemberOf(value)) { System.Windows.Forms.MessageBox.Show(string.Format( "Value {0} is not valid for coded value domain {1}", value.ToString(), ((IDomain)m_CodedValueDomain).Name)); return; } } else { bool foundMatch = false; for (int i = 0; i < m_CodedValueDomain.CodeCount; i++) { if (value.ToString() == m_CodedValueDomain.get_Name(i)) { foundMatch = true; value = i; break; } } if (!foundMatch) { System.Windows.Forms.MessageBox.Show(string.Format( "Value {0} is not valid for coded value domain {1}", value.ToString(), ((IDomain)m_CodedValueDomain).Name)); return; } } } pRow.set_Value(m_FieldIndex, value); bool weStartedEditing = false; if (m_WorkspaceEdit != null) { if (!m_WorkspaceEdit.IsBeingEdited()) { m_WorkspaceEdit.StartEditing(false); weStartedEditing = true; } m_WorkspaceEdit.StartEditOperation(); pRow.Store(); m_WorkspaceEdit.StopEditOperation(); if (weStartedEditing) { m_WorkspaceEdit.StopEditing(true); } } }
public void ProcessFeature(IWorkspaceEdit iwe, IFeatureLayer ifl_active, IRow rw) { double value = double.NaN; if (CoordinateSystem == "") { CoordinateSystem = ((IFeature)rw).Shape.SpatialReference.Name; } if (this.LinearUnit == null || this.LinearUnit == "") { if (fieldTier == 2) { LinearUnit = rw.get_Value(GetFieldUnitIndex()).ToString(); } if (this.LinearUnit == null || this.LinearUnit.Trim() == "") { LinearUnit = GetSpatialReferenceLinearUnit(((IFeature)rw).Shape.SpatialReference); } } if (LinearUnit.IndexOf("meter", 0, StringComparison.CurrentCultureIgnoreCase) > -1) { if (useArealUnit) { currentAreaUnit = esriAreaUnits.esriSquareMeters; LinearUnit = "Square Meters"; } else { currentLinearUnit = esriUnits.esriMeters; } } else if (LinearUnit.IndexOf("foot", 0, StringComparison.CurrentCultureIgnoreCase) > -1) { if (useArealUnit) { currentAreaUnit = esriAreaUnits.esriSquareFeet; LinearUnit = "Square Feet"; } else { currentLinearUnit = esriUnits.esriFeet; } } else if (LinearUnit.IndexOf("acre", 0, StringComparison.CurrentCultureIgnoreCase) > -1) { currentAreaUnit = esriAreaUnits.esriAcres; currentLinearUnit = esriUnits.esriUnknownUnits; LinearUnit = "Acres"; } if (doReCalcValues || !double.TryParse(rw.get_Value(GetFieldIndex()).ToString(), out value) || value == double.NaN || value == 0.0) { value = DoMeasure(rw); //try writing the (single) measured value to the table try { IFeature feat = (IFeature)rw; //if we are re-calculating all values, there is no need to start editing on each row if (!doReCalcValues) { if (!iwe.IsBeingEdited()) iwe.StartEditing(true); iwe.StartEditOperation(); } feat.set_Value(GetFieldIndex(), value); feat.set_Value(GetFieldUnitIndex(), LinearUnit); feat.Store(); } catch (Exception err) { } finally { if (!doReCalcValues) { iwe.StopEditOperation(); if (iwe.IsBeingEdited()) iwe.StopEditing(true); //there may be more than one row that requires editing doReCalcValues = true; } } } values.Add(value); }