ArcGIS调用DataInteroperabilityTools导出数据

来源:互联网 发布:union软件安卓版贴吧 编辑:程序博客网 时间:2024/05/22 10:47

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文件。

0 0
原创粉丝点击