Engine中如何创建内存图层?

Engine中如何创建内存图层?想对其编辑后再将其导出
已邀请:

朱新颖

赞同来自:

【解决办法】:
首先创建一个内存数据库,然后新建或者获取要素类,添加图层即可。
下面代码是从一个文件数据库中获取的已有要素类,可供参考:


IWorkspaceFactory inMemoryWorkspaceFactory = new InMemoryWorkspaceFactoryClass();
            // Create a new in-memory workspace. This returns a name object.
            IWorkspaceName inMemoryWorkspaceName = inMemoryWorkspaceFactory.Create(null, MyWorkspace, null, 0);
            IWorkspaceFactory fileGDBWF = new FileGDBWorkspaceFactoryClass();
            IWorkspaceName workspaceName = new WorkspaceNameClass();
            workspaceName.PathName = @E:\ZhuXinying\testData\test.gdb;
            workspaceName.WorkspaceFactoryProgID = esriDataSourcesGDB.FileGDBWorkspaceFactory;
            bool flag = fileGDBWF.Copy(workspaceName, , out inMemoryWorkspaceName);
            IName name = (IName)inMemoryWorkspaceName;
            IWorkspace inmemoryWorkspace = name.Open() as IWorkspace;//刚建立的内存工作空间
            IFeatureClass featureClass = openFeatureClass(inmemoryWorkspace,Polyline);
addFeatureLayer(axMapControl1.Map, featureClass);

private IFeatureClass openFeatureClass(IWorkspace workspace, string name)
{
IFeatureWorkspace featureWorkspace = workspace as IFeatureWorkspace;
IFeatureClass featureClass = featureWorkspace.OpenFeatureClass(name);
return featureClass;
}
private void addFeatureLayer(IMap map, IFeatureClass featureClass)
{
IFeatureLayer featureLayer = new FeatureLayerClass();
featureLayer.FeatureClass = featureClass;
featureLayer.Name = (featureClass as IDataset).Name;
map.AddLayer(featureLayer as ILayer);
axMapControl1.Refresh();
}

 

要回复问题请先登录注册