首页 > 代码库 > ArcGIS AddIN开发:如何调用ArcMap中的选择工作空间的窗体
ArcGIS AddIN开发:如何调用ArcMap中的选择工作空间的窗体
示例代码如下:
public static IWorkspaceName BrowseWorkspace(int hwnd,out IWorkspace ws) { IGxObjectFilterCollection ipFilters = new GxDialogClass(); //IGxObjectFilter ipFilter1 = new GxFilterFeatureDatasetsClass(); //要素数据集 ,导出时,IFeatureClassConverter对象无法写入Dataset中,此处隐藏掉 //ipFilters.AddFilter(ipFilter1,false); IGxObjectFilter ifilt2 = new GxFilterWorkspacesClass(); //数据库工作空间,此类比较含糊,不知道具体指啥 ipFilters.AddFilter(ifilt2,false); IGxObjectFilter ipFilter3 = new GxFilterFileFolderClass(); //文件工作空间 ipFilters.AddFilter(ipFilter3,false); IGxDialog pGDialog = (IGxDialog)ipFilters; pGDialog.RememberLocation = true; pGDialog.Title = "请选择工作空间"; pGDialog.AllowMultiSelect = false; IEnumGxObject pResultEnum = null; //IWorkspace ws = null; ws = null; IWorkspaceName wsn = null; if (pGDialog.DoModalOpen(hwnd, out pResultEnum) && pResultEnum != null) { IGxObject gxObj = pResultEnum.Next(); if (gxObj is IGxDatabase) { IGxDatabase gxDB = gxObj as IGxDatabase; if (gxDB != null) { ws = gxDB.Workspace; wsn = gxDB.WorkspaceName; } } else if (gxObj is IGxFolder) { //Todo: figure out how to decide which workspace to get for // a particular folder (shapefile, raster etc.) //IEnumName enumName = ((IGxFolder)gxObj).FileSystemWorkspaceNames; // for now just assume we want a shapefile ... IWorkspaceFactory wsf = new ESRI.ArcGIS.DataSourcesFile.ShapefileWorkspaceFactoryClass(); ws = wsf.OpenFromFile(((IGxFile)gxObj).Path, hwnd); IDataset pOutDataset = ws as IDataset; wsn = pOutDataset.FullName as IWorkspaceName; } else if (gxObj is IGxDataset) { //如果是数据集工作空间 IGxDataset gxDs = gxObj as IGxDataset; if (gxDs != null) { ws = gxDs.Dataset.Workspace; wsn = gxDs.DatasetName.WorkspaceName; } } Marshal.FinalReleaseComObject(pResultEnum); } pGDialog.InternalCatalog.Close(); Marshal.FinalReleaseComObject(pGDialog); return wsn; }
上述代码可以拓展为:调用ArcMap的添加图层窗口等
ArcGIS AddIN开发:如何调用ArcMap中的选择工作空间的窗体
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。