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等接口来设置,由于比较简单,就不把代码贴出来了。如果大家有其他好的办法,也欢迎留言交流