|
阅读:1114回复:0
打开GeoDatabase数据出现问题!
<P>//打开GeoDatabase<BR>IWorkspacePtr CDataOperator::OpenPGD(CString sFullName)<BR>{<BR> IWorkspacePtr ipWorkspace;<BR> HRESULT hr; </P>
<P> IWorkspaceFactoryPtr ipWSFactory(CLSID_AccessWorkspaceFactory);<BR> hr = ipWSFactory->OpenFromFile((_bstr_t)sFullName,NULL,;ipWorkspace);<BR> if(FAILED(hr))<BR> return NULL;</P> <P> return ipWorkspace;<BR>}</P> <P>//用以打开工作空间中指定的FeatureClass<BR>IFeatureClassPtr CDataOperator::OpenPGDFeatCls(IWorkspacePtr ipWs, CString sFCName)<BR>{<BR> if(ipWs == NULL)<BR> return NULL;<BR> HRESULT hr;</P> <P> IFeatureClassPtr ipFeatCls;<BR> IFeatureWorkspacePtr ipFeatureWS;<BR> hr = ipWs ->QueryInterface(__uuidof(IFeatureWorkspace),(void* *);ipFeatureWS);<BR> if(FAILED(hr))<BR> return NULL;<BR> hr = ipFeatureWS ->OpenFeatureClass((_bstr_t)sFCName,;ipFeatCls); //出现错误。 ;<BR> if(FAILED(hr))<BR> return NULL;<BR> return ipFeatCls;</P> <P>}</P> <P>//用来从GeoDatabase得到特征层<BR>BOOL CDataOperator::GetFeatLyrFromPGD()<BR>{<BR> //指定文件名和特征类名,可以根据需要指定相应的带有路径的完整文件名<BR> CString sFileName = "E:\\arcgis\\ArcTutor\\Map\\airport.mdb";<BR> CString sFCName ="tracts";<BR> CString sFLyrName = "tracts_pdb";</P> <P><BR> //打开工作空间和其中的FeatureClass<BR> IWorkspacePtr ipWs = OpenPGD(sFileName);<BR> IFeatureClassPtr ipFeatCls = OpenPGDFeatCls(ipWs,sFCName);<BR> if(ipFeatCls == NULL)<BR> return FALSE;</P> <P> //将打开的FeatureClass添加到地图中<BR> BOOL bRes = AddFC2Map(ipFeatCls,sFLyrName,5);<BR> if(bRes == FALSE)<BR> return FALSE;</P> <P> return TRUE;<BR>}</P> <P>.............................................................................................</P> <P>hr = ipFeatureWS ->OpenFeatureClass((_bstr_t)sFCName,;ipFeatCls); //出现错误</P> <P>ipFeatCls返回NULL,这是怎么回事啊?</P> <P>各位帮帮忙吧!万分感谢。</P> |
|