ArcGIS调用DataInteroperabilityTools导出数据

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值