feature改变属性表的值
聲名 內容引用與:https://www.cnblogs.com/henyihanwobushi/archive/2013/03/07/2947275.html
?
首先一定要獲取Featureclass,利用Featureclass獲取IWorkspace和IWorkspaceEdit:
??????????????? IWorkspace workspace = ((IDataset)pFeatureClass).Workspace;
??????????????? IWorkspaceEdit workspaceEdit = workspace as IWorkspaceEdit;
然后開啟編輯狀態:
??????????????? bool startEdit = workspaceEdit.IsBeingEdited();
??????????????? if (!startEdit)
??????????????? {
??????????????????? workspaceEdit.StartEditing(false);
??????????????? }
??????????????? workspaceEdit.StartEditOperation();
然后獲取IFeatureCursor和IFeature:
??????????????? pFeatureCursor = pFeatureClass.Search(pQueryFilter, false);
??????????????? //注意這里一定要為false,因為http://forums.arcgis.com/threads/45879-Cannot-call-Store-on-a-recycled-row-while-editing
??????????????? //如果為true可能會產生0x80040958的錯誤
????????????? ? pFeature = pFeatureCursor.NextFeature();
然后用IFeature.set_Value()方法對Feature進行屬性表值的修改:
???????????????? pFeature.set_Value(i, valueToSet);
修改完成,要用IFeature.store()方法保存:
????????????????pFeature.Store();
然后最好將Feature釋放掉,再進行接下來的修改:
??????????????? System.Runtime.InteropServices.Marshal.ReleaseComObject(pFeature);
??????????????? pFeature = null;
??????????????? pFeature = pFeatureCursor.NextFeature();
接下來用IFeatureCursor.Flush():
??????????????? pFeatureCursor.Flush();
??????????????? System.Runtime.InteropServices.Marshal.ReleaseComObject(pFeatureCursor);
最后停止編輯狀態:
??????????????? workspaceEdit.StopEditOperation();
??????????????? startEdit = workspaceEdit.IsBeingEdited();
??????????????? if (!startEdit)
??????????????? {
??????????????????? workspaceEdit.StopEditing(true);
??????????????? }
轉載于:https://www.cnblogs.com/baimy/p/9983059.html
總結
以上是生活随笔為你收集整理的feature改变属性表的值的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 圆桌的项目Alpha冲刺——测试
- 下一篇: SpringBoot+SpringSec