CAD注记层转到SDE Annotation Features空间参考信息的转换(ArcEngine,C++实现)

在我的上一篇博文里面,谈到了注记的转换问题,但是其中的转换并未包含空间参考信息,所以,再写一篇来记录空间参考信息的转换。

首先,是获取dwg文件中的参考信息,部分关键代码如下

   IWorkspacePtr ipWork;
IWorkspaceFactoryPtr ipWFactory(CLSID_CadWorkspaceFactory);
HRESULT result
= ipWFactory->OpenFromFile(CComBSTR(path),
NULL,
&ipWork);
IFeatureWorkspacePtr ipFWork
= ipWork;

IFeatureDatasetPtr ipDataset;
result
= ipFWork->OpenFeatureDataset(CComBSTR(filename), &ipDataset);

IFeatureClassContainerPtr ipFContainer
= ipDataset;

IArrayPtr arrLayer(CLSID_Array);
long lClassCount = 0;
ipFContainer
->get_ClassCount(&lClassCount);

for (long i = 0; i < lClassCount; i++)
{
IFeatureClassPtr ipFClass;
result
= ipFContainer->get_Class(i, &ipFClass);

esriFeatureType type;
ipFClass
->get_FeatureType(&type);
//判断是否为注记层
if (esriFTCoverageAnnotation != type)
continue;

IGeoDatasetPtr ipGeoDataset(ipFClass);
ISpatialReferencePtr ipSpaRef;
ipGeoDataset
->get_SpatialReference(&ipSpaRef);
}

  接下来,就是把获取到的空间参考信息设置到SDE中的annotation features中,可以通过IFeaturelayer,ILayer等接口来设置,由于比较简单,就不把代码贴出来了。如果大家有其他好的办法,也欢迎留言交流

posted @ 2011-09-02 11:02  junyuz  阅读(1022)  评论(0编辑  收藏  举报