gis - 启动会话编辑时无法编辑要素图层
问题描述
我正在开发一个基于 ArcGIS Engine 的独立应用程序,当我开始使用以下代码块进行会话编辑时:
//Declare the Engine editor at the class level.
private IEngineEditor m_engineEditor = new EngineEditorClass();
private void StartEditing(IMapControl2 m_mapControl)
{
IMap map = m_mapControl.Map;
//If an edit session has already been started, exit.
if (m_engineEditor.EditState != esriEngineEditState.esriEngineStateNotEditing)
return ;
//Start editing the workspace of the first feature layer found.
for (int layerCounter = 0; layerCounter <= map.LayerCount - 1; layerCounter++)
{
ILayer currentLayer = map.get_Layer(layerCounter);
if (currentLayer is IFeatureLayer)
{
IFeatureLayer featureLayer = currentLayer as IFeatureLayer;
IDataset dataset = featureLayer.FeatureClass as IDataset;
IWorkspace workspace = dataset.Workspace;
m_engineEditor.StartEditing(workspace, map);
((IEngineEditLayers)m_engineEditor).SetTargetLayer(featureLayer);
break;
}
}
}
发生异常,错误代码:HRESULT: 0x80004005 (E_FAIL))。请帮我
解决方案
在询问 Google 并阅读 ArcGIS Engine 文档后。我发现我的 SDE GeoDatabase 不允许编辑数据,因为我关闭了 ArcGIS GeoDatabase 的版本管理器。打开它并添加一些代码来检查要素图层是否可编辑。
IEngineEditLayers m_engineLayersEditor = m_engineEditor as IEngineEditLayers;
if (!m_engineLayersEditor.IsEditable(featureLayer))
{
MessageBox.Show("Can not start editing. Because feature layer is not allow editing", "Warning", MessageBoxButtons.OK, MessageBoxIcon.Warning);
}
推荐阅读
- json - 如何将枚举变体作为整数发送,而不是 Angular 中的字符串
- java - Java REST 服务返回 400
- arduino - stm32 模拟 EEPROM 大小增加
- android - React-native Hermes 生产构建失败
- wordpress - 在 woocommerce 插件中上传 CSV 文件类别明智的文件夹
- react-redux - 在 redux-saga 中链接操作时,React 组件未接收到中间状态
- swagger-ui - SpringFox Boot starter:如何为生产配置文件禁用 swagger-ui?
- statistics - 动态因果效应
- visual-studio - Visual Studio,与服务器的连接丢失错误
- gitlab - 如何排除gitlab代码质量扫描json文件中未包含的文件或文件夹以减少代码质量问题