|
阅读:1861回复:7
怎么打开一个arcsde数据库的图(组件还是控件)
<P>1,怎么打开一个arcsde数据库的图
2,mapcontrol控件方法只能打开*.mxd文件? 3,用组件的方法:IGxDialog.DoModalOpen(0, pEnumGX)方法后怎么样打开? 有这样的例子? 刚刚开始学,希望得到高手指点。 </P> |
|
|
|
1楼#
发布于:2004-09-10 10:46
<P>Dim pPropset As IPropertySet
Set pPropset = New PropertySet</P> <P>Dim pFact As IWorkspaceFactory Dim pWorkspace As IWorkspace</P> <P>With pPropset .SetProperty "Server", "waterblue" .SetProperty "Instance", "5150" .SetProperty "Database", "sde" ' Ignored with ArcSDE for Oracle .SetProperty "user", "sde" .SetProperty "password", "sde" .SetProperty "version", "sde.DEFAULT" End With</P> <P>Set pFact = New SdeWorkspaceFactory Set pWorkspace = pFact.Open(pPropset, Me.hWnd)</P> <P>Dim pFeatureWorkspace As IFeatureWorkspace Set pFeatureWorkspace = pWorkspace</P> <P>Dim pFeatureClass As IFeatureClass Set pFeatureClass = pFeatureWorkspace.OpenFeatureClass("build")</P> <P>Dim fealayer As IFeatureLayer Set fealayer = New FeatureLayer Set fealayer.FeatureClass = pFeatureClass MapControl1.AddLayer fealayer MapControl1.Extent = MapControl1.FullExtent</P> |
|
|
|
2楼#
发布于:2005-03-01 10:41
sc<img src="images/post/smile/dvbbs/em01.gif" />
|
|
|
3楼#
发布于:2005-03-02 14:34
<P>2楼兄弟说得不错,不过有人做过连接sde,获取数据集列表,然后获取所有要素集列表,在mapcontrol中打开吗</P><P>贴个上来,大家就方便了</P>
|
|
|
|
4楼#
发布于:2005-03-09 16:03
<P>IEnumDatasetPtr pEnumDatasets;</P><P>
///查询FEesriDTFeatureClass类型,查询结果都是IFeatureClass m_pSdeWS->get_Datasets(esriDTFeatureClass,;pEnumDatasets);/ IDatasetPtr pDataset; pEnumDatasets->Next(;pDataset);</P><P>UINT nMask = TVIF_TEXT | TVIF_IMAGE | TVIF_PARAM | TVIF_SELECTEDIMAGE; CGeoTypeArr geoTypeArr; CArrStr nameArr;</P><P>//遍历整个SDE库里面的FeatureClass</P><P> while (pDataset) { CComBSTR bs; CComBSTR bs1; IFeatureClassPtr pFeCla; pDataset.QueryInterface(IID_IFeatureClass,;pFeCla); esriGeometryType geoType; pFeCla->get_ShapeType(;geoType ); pFeCla->get_AliasName(;bs); CString strTemp = bs; geoTypeArr.Add(geoType); nameArr.Add(strTemp);</P><P> pEnumDatasets->Next(;pDataset); } </P> |
|
|
5楼#
发布于:2005-03-17 21:08
wo
<P>我仿照esri给出的例子想得到连接sde后所有图层的名称,但总是为空,哪位高手可以告诉我问题出在哪里了?</P>
<P>Dim pSdeWorkspaceFactory As IWorkspaceFactory Dim pSdeWorkspace As IWorkspace Dim pConnectionProperties As IPropertySet Dim pSdeDSName As IDatasetName Dim pEnumDSName As IEnumDatasetName</P> <P> Set pConnectionProperties = New PropertySet With pConnectionProperties .SetProperty "SERVER", "CENTURY-TAN" .SetProperty "USER", "sa" .SetProperty "INSTANCE", "esri_sde" .SetProperty "PASSWORD", "edit" .SetProperty "VERSION", "SDE.DEFAULT" End With Set pSdeWorkspaceFactory = New SdeWorkspaceFactory Set pSdeWorkspace = pSdeWorkspaceFactory.Open(pConnectionProperties, 0) Set pEnumDSName = pSdeWorkspace.DatasetNames(esriDTFeatureDataset) Set pSdeDSName = pEnumDSName.Next While Not pSdeDSName Is Nothing List1.AddItem pSdeDSName.Name Set pSdeDSName = pEnumDSName.Next Wend</P> <P>其中pSdeDSName 总是nothing,所以得不到,为什么呢?</P> <P> </P> |
|
|
|
6楼#
发布于:2005-03-18 12:43
楼上的函数是返回了数据集的名字,而不是要素类(图层)的名字
|
|
|
|
7楼#
发布于:2005-03-19 18:24
<P> 我已经知道了,下面是得到所有图层的代码:</P>
<P> Set pSdeWorkspaceFactory = New SdeWorkspaceFactory Set pSdeWorkspace = pSdeWorkspaceFactory.Open(pConnectionProperties, 0) Set pEnumDs = pSdeWorkspace.Datasets(esriDTAny) Set pEnumDstt = pEnumDs.Next ' Set pEnumDSName = pSdeWorkspace.DatasetNames(esriDTFeatureDataset) ' Set pSdeDSName = pEnumDSName.Next</P> <P> While Not pEnumDstt Is Nothing List1.AddItem pEnumDstt.Name Set pEnumDstt = pEnumDs.Next Wend</P> |
|
|