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中的选择工作空间的窗体的更多相关文章
- ArcGIS AddIN开发异常之--“ValidateAddInXMLTask”任务意外失败
ArcGIS AddIN开发时,产生如下异常错误 2 “ValidateAddInXMLTask”任务意外失败.System.NullReferenceException: 未将对象引用设置到对象的 ...
- ArcGIS AddIn开发笔记(一)
学习AddIn开发,遇到了些稀奇古怪的问题,网上的资料少之又少. (1)AddIn开发,主要是通过ArcMap静态变量,与主程序中的数据等进行交互 (2)failed to register Add ...
- Arcgis Add-In开发入门实例
作为一个本科侧重于应用,工作之后却做了开发的程序员来说,做GIS,开发应该是一门必修课,只是,苦于各种原因吧,做GIS应用的人会开发的很少,做GIS开发的大部分都是计算机出身,痛心疾首啊-- 不好意思 ...
- ArcGIS Add-in开发(一)--获取选定要素的属性值
刚刚接触AE开发,记录一下自己的学习心得! 欢迎大家一起交流探讨! 最近做大赛,突然想到可以让项目更加直观的操作,就在项目中加了幅底图(底图很简单) 我想在arcmap中选中相应的要素后,在后台通过写 ...
- ArcGIS AddIN开发之 设置当前工具为Edit Tool
在GIS数据处理中,经常需要选择要素,再进行操作.所以,为了处理的方便,可以将当前工具处理结束后,将当前工具设置为Edit Tool,以方便下一次的选择处理. 相关资料: 1.ArcMap Name ...
- ArcGIS AddIN开发异常之--修饰符“static”对该项无效
修饰符“static”对该项无效, 修饰符“internal”对该项无效. 该异常弹出的位置为Config.Designer.CS文件中相关插件的声明附近 internal static string ...
- ArcGIS AddIN开发之自定义鼠标样式
如果想修改Windows默认的鼠标样式,可以这样 //设置鼠标样式 this.Cursor = System.Windows.Forms.Cursors.Cross; 可是如果想设置成一些自定义的很好 ...
- iOS开发——高级篇——iOS中如何选择delegate、通知、KVO(以及三者的区别)
在开发IOS应用的时候,我们会经常遇到一个常见的问题:在不过分耦合的前提下,controllers[B]怎么进行通信.在IOS应用不断的出现三种模式来实现这种通信:1委托delegation2通知 ...
- ArcGIS AddIN异常之:object reference not set to an instance of an object
异常出现在 frmDownload frd = new frmDownload(); frd.ShowDialog(); 在ArcMap中能正常弹出窗体,点击按钮时显示此异常:object refer ...
随机推荐
- 修改一个CGRect的值
// 1. 用一个临时变量保存返回值. CGRect temp = self.view.frame; // 2. 给这个变量赋值. temp.size.width = kWIDTH; // 3. 修改 ...
- mysql安装时到最后start service时就不响应了的解决方法
- 不常用的SQL语句记录
只知道字段名,查询哪些表有该字段:假如字段名为Index select sysobjects.name as tablename,syscolumns.name as columnname from ...
- 利用html5、websocket和opencv实现人脸检测 (二)
前一篇的代码在执行时,java.exe占用内存会快速上涨: 在4G内存电脑上,单个连接,会持续上涨到2G多,然后减到1G多,如此循环. 经过一些删减定位,可以确定问题由public byte[] pr ...
- 401 - 未授权:由于凭据无效,访问被拒绝”在iis的解决办法
1.打开"IIS信息服务管理器"-->选择你发布的网站-->选择功能视图中的"身份验证"-->右键匿名身份验证,选择"编辑" ...
- UML大战需求分析——阅读笔记03
读<UML大战需求分析>有感03 状态机图和活动图在样子比较相似,但状态机图是用来为对象的状态及造成状态改变的事件建模.我们大二学习UML统一建模语言状态机图模块时了解到,UML的状态机图 ...
- Hitachi Content Platform学习
相关资料:https://community.hds.com/groups/developer-network-for-hitachi-content-platform/content?filterI ...
- UWP学习记录9-设计和UI之控件和模式6
UWP学习记录9-设计和UI之控件和模式6 1.图形和墨迹 InkCanvas是接收和显示墨迹笔划的控件,是新增的比较复杂的控件,这里先不深入. 而形状(Shape)则是可以显示的各种保留模式图形对象 ...
- Error:Execution failed for task ':clean'. > Unable to delete directory :\build\intermediates (转)
第一种方法: build文件夹,可以使用360文件粉碎机删除,然后重启Android Studio即可! 转自 第二种方法: 进入studio,进入settings,搜索instant run,进入该 ...
- font-family字体总结
宋体 SimSun黑体 SimHei微软雅黑 Microsoft YaHei微软正黑体 Microsoft JhengHei新宋体 NSimSun新细明体 PMingLiU细明体 MingLiU标楷体 ...