ArcGIS读取DWG文件路径问题
来源:互联网 发布:超链接调用js函数传参 编辑:程序博客网 时间:2024/06/07 05:48
1、问题背景
最近接手同事留下的一个加载DWG的问题。测试时发现传入DWG文件路径,打开的时候死活报错。
如图:
2、分析步骤
1)怀疑是ArcEngine未授权,于是添加授权代码进行测试,未能解决。
2)使用AccessWorkspaceFactory打开.mdb文件进行测试,发现可以打开。
3)是不是组件版本的问题呢?修改组件引用方式,修改版本,不能解决。
4)发现CadWorkspaceFactory位于ESRI.ArcGIS.DataSourcesFile命名空间下,于是想起打开FileGDB、Shapefile的方式,即传入的应该是文件夹路径。于是修改测试代码,发现可以解决问题。
3、解决办法
如图:
即:CadWorkspaceFactory打开的的文件路径应当是目标DWG文件所在的文件夹,而在使用FeatureWorkspace对象打开要素类即OpenFeatureClass时,其参数才是具体的“文件名+要素类类型”的形式。
4、一点思考
刚开始时觉得ArcEngine中打开DWG文件的方式很怪异,即明明写着OpenFromFile,其参数不是文件路径,而是文件夹路径,OpenFeatureClass时明明只需要指定FeatureClass的类型是点、线、面或注记,却还要在前面加上文件名,真是十分别扭。
结合平时使用C++进行ArcEngine开发的经历,忽然觉得这样也有其合理之处,理由如下:
1)DataSourcesFile本身就已经告诉我们了,我要加载的文件(这一点与基于C++进行ArcEngine开发的方式是一致的)所在的文件夹,而非PGDB。如加载FileGDB时,其参数虽以.gdb结尾,但本身就是一个文件夹,而不是.mdb文件这样的文件路径。
2)打开不同类型的文件,使用不同的WorkspaceFactory引擎,各个引擎之间的参数是不同的。
HRESULT hr;IWorkspaceFactoryPtr ipWorkspaceFactory;if (FissDataTypeFGDB == m_nDataType){hr = ipWorkspaceFactory.CreateInstance(CLSID_FileGDBWorkspaceFactory);}else if (FissDataTypePGDB == m_nDataType){hr = ipWorkspaceFactory.CreateInstance(CLSID_AccessWorkspaceFactory);}else if (FissDataTypeShape == m_nDataType){hr = ipWorkspaceFactory.CreateInstance(CLSID_ShapefileWorkspaceFactory);}if (FAILED(hr) || NULL == ipWorkspaceFactory){return FALSE;}
3)细心很重要。
- ArcGIS读取DWG文件路径问题
- C#读取DWG文件
- C#读取DWG文件方法
- arcGIS加载cad的dwg文件
- C++读取dwg文件数据(整合)
- java 文件读取 路径问题
- 读取Properties文件路径问题!
- CAD控件教程:网上打开dwg文件时,对dwg文件路径加密的功能
- C# 读取CAD文件缩略图(DWG文件)
- JAVA读取文件的路径问题!
- WebLogic10读取文件路径的问题
- 关于读取properties文件找不到路径问题
- java中读取文件路径问题
- XX.properties文件参数读取路径问题
- .properties文件读取时的路径问题
- java读取文件的路径问题
- 关于读取Properties文件以及路径问题
- Qt之文件路径读取问题
- httpClient学习整理
- IDEA 运行maven命令时报错: -Dmaven.multiModuleProjectDirectory system propery is not set
- hdoj 5948 Thickest Burger
- effective C++条款二十五解读
- c#类与结构体区别
- ArcGIS读取DWG文件路径问题
- kotlin中实现匿名内部类
- ONE-ReactNative
- windows下安装python3.6
- pyplot绘制条形图函数bar与barh使用实例源码
- 流程图不会画,分享怎么画流程图快捷技巧
- oracle数据库SQL查询语句练习一
- java操作Excel:技巧
- 膨胀腐蚀-OpenCL加速及kernel变成二进制文件