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的添加圖層窗口等
轉載于:https://www.cnblogs.com/DayDreamEveryWhere/p/5936237.html
總結
以上是生活随笔為你收集整理的ArcGIS AddIN开发:如何调用ArcMap中的选择工作空间的窗体的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: libco协程库上下文切换原理详解
- 下一篇: C语言重难点:大端小端