ArcEngine 导出网络数据集

软件版本:ArcEngine 10.2.2
问题:如何把SDE库中的网络数据集 导出到 本地的PGDB或FGDB中?
我想到的解决方法:
1.调用GP工具(Copy)来导出,这种方法用arcmap已测试过可行。
2.我想着用IGeoDBDataTransfer接口
3.其它可能更好的方法??
我的疑惑:
1.如果用第二种方法将网络数据集导出,这块我不知道是参数不对,还是这个接口就只能将数据集从一个工作空间导出到另外一个工作空间,不支持直接将网络数据集导出到另外一个工作空间?
 
2.如果用这个接口可以导出网路数据集,参数我该什么设置?
数据路径大概如下:
源路径:...sde.sde\A_Dataset\A_Network_test
目标路径:...B.GDB\A_Dataset\A_Network_test
即:
IName pSrcName=???
INme pTarName=???
 
参考资料链接:
1.http://blog.sina.com.cn/s/blog_5d25ac4e0102w5m4.html
2..http://resources.arcgis.com/en/help/arcobjects-net/conceptualhelp/index.html#//0001000001wz000000
3.http://blog.csdn.net/gisoracle/article/details/4320978
4.http://blog.csdn.net/u011609113/article/details/51155116
不知道我表达清楚没,觉得哪儿块描述不清楚的我再补充,任何帮助都不胜感激!
已邀请:

YoungHappy

赞同来自: GIS知乎 刘峥

自问自答吧,试了半天总算成功了。
IName pSrcName=(pNetworkDataset as IDataset).FullName;
//注意事项:1.如果GDB中没有此数据集需创建 2.操作网络数据集需要CheckOut出网络数据的许可
IName pTarName=pTarDataset.FullName
 
            IDataset pFeaDataset = pNetworkDataset as IDataset;
IName pSrcName = pFeaDataset.FullName;
IEnumName pSrcEnumName = new NamesEnumeratorClass();
IEnumNameEdit sourceEnumNameEdit = (IEnumNameEdit)pSrcEnumName;
sourceEnumNameEdit.Add(pSrcName);

string sDatasetName = node.ParentNode.GetDisplayText(0);
IDataset pTarDataset = null;
if ((pOutputWorkspace as IWorkspace2).get_NameExists(esriDatasetType.esriDTFeatureDataset, sDatasetName))
{
pTarDataset = (pOutputWorkspace as IFeatureWorkspace).OpenFeatureDataset(sDatasetName);
}
else
{
pTarDataset = (pOutputWorkspace as IFeatureWorkspace).CreateFeatureDataset(sDatasetName, (pFeaDataset as IGeoDataset).SpatialReference);
}
IName pTarName = pTarDataset.FullName;

IGeoDBDataTransfer pGeoDBDataTransfer = new GeoDBDataTransferClass();
IEnumNameMapping pEnumNameMapping = null;
IAoInitialize m_AoInitialize = new AoInitializeClass();
esriLicenseStatus licenseStatus = m_AoInitialize.CheckOutExtension(esriLicenseExtensionCode.esriLicenseExtensionCodeNetwork);
if (licenseStatus == esriLicenseStatus.esriLicenseCheckedOut)
{
Boolean conflictsFound = pGeoDBDataTransfer.GenerateNameMapping(pSrcEnumName,
pTarName, out pEnumNameMapping);
}

要回复问题请先登录注册