ArcGIS调用DataInteroperabilityTools导出数据
2016-03-16 19:59
549 查看
ArcGIS Engine调用DataInteroperabilityTools导出数据
最近需要开发一个功能,在ArcGIS Engine中导出MapInfo的TAB数据以及Google的KML数据。我先是考虑将ArcGIS图层中的数据提取出来,然后根据TAB和KML的格式分别生成数据。后来考虑到这种方法做起来十分复杂,而ArcGIS的扩展模块中有数据导入以及数据导出的工具,能够导出多种格式的数据。因而打算利用DataInteroperabilityTools工具来进行导出数据。
首先,我在ArcMap的ArcToolBox中找到了DataInteroperabilityTools,一点击,发现该功能不可用。原来我安装ArcGIS DeskTop的时候没有安装DataInterop模块,安装改模块之后,DataInteroperabilityTools下的QuickExport和QuickImport都可以用了。
经过测试,发现在ArcMap中可以导出TAB和KML数据。
但是我在ArcGIS Engine中测试的时候,却出现了问题。以下代码在运行时,不报任何错,且利用try catch也无法获取到异常。
Geoprocessor geoprocessor = new Geoprocessor(); geoprocessor.OverwriteOutput = true; QuickExport quickExport = new QuickExport(); quickExport.Input = "E:/TestData/point.shp"; quickExport.Output = "tab,c:/data/buffered.tab"; IGeoProcessorResult results = (IGeoProcessorResult)geoprocessor.Execute(quickExport, null); if (results != null && results.Status == esriJobStatus.esriJobSucceeded) { MessageBox.Show("执行成功!"); }
通过邮件咨询ArcGIS技术支持之后,我发现了我的代码存在两个问题:
1、没有检出esriLicenseExtensionCodeDataInteroperability的许可;
2、导出的output参数不正确。可以根据ArcMap中导出之后的Result来设置output。
于是我在加载ArcGIS许可的时候,添加了检出DataInteroperability的代码:
if (RuntimeManager.Bind(ProductCode.EngineOrDesktop)) { IAoInitialize m_AoInitialize = new AoInitializeClass(); esriLicenseStatus licenseStatus = esriLicenseStatus.esriLicenseUnavailable; licenseStatus = m_AoInitialize.Initialize(esriLicenseProductCode.esriLicenseProductCodeArcInfo); licenseStatus = m_AoInitialize.CheckOutExtension(esriLicenseExtensionCode.esriLicenseExtensionCodeDataInteroperability); }
并且修改了output参数:
export.Output = "MITAB,C:\\Users\\Desktop,\"RUNTIME_MACROS,\"\"BUILD_OPTIMAL_SPATIAL_INDEX,no,ENCODING,\"\",META_MACROS,\"\"DestBUILD_OPTIMAL_SPATIAL_INDEX,no,DestENCODING,\"\",METAFILE,MITAB,COORDSYS,,__FME_DATASET_IS_SOURCE__,false\"";
即可成功导出TAB和KML文件。
相关文章推荐
- 加了FLAG_ACTIVITY_SINGLE_TOP后,不能再多次创建MainActivity
- LightOJ 1138 - Trailing Zeroes (III)(二分&阶乘末尾0的个数)
- DELL R730安装xenserver 6.2,raid卡驱动问题
- Arcgis发布地图时提示Packaging Failed
- git遇到remote: fatal: early EOF + index-pack failed的处理方法
- xcode 7.2 中通过拖拉在Main.storyboard 中定制tabbar
- Predicting the Next Location: A Recurrent Model with Spatial and Temporal Contexts AAAI2016
- 多线程通信的简单实践
- Too many authentic authentication failures for root
- Main.storyboard中使用navigationController
- IllegalStateException: Failure saving state: active Fragment has cleared
- windows下:Failed to set permissions of path: \tmp\ \.staging to 0700
- linux之tail,监控文件内容变化
- 程序进入main函数就崩溃了
- AIX调整swap大小
- MaterailDesign风格的日历,MaterailCalendarView
- 55页Pacific Trails Resort案例分析
- poj2010 Moo University - Financial Aid
- lintcode-medium-Container with Most Water
- inotify-tools使用