waterblue
路人甲
路人甲
  • 注册日期2004-09-02
  • 发帖数72
  • QQ
  • 铜币387枚
  • 威望0点
  • 贡献值0点
  • 银元0个
阅读:1861回复:7

怎么打开一个arcsde数据库的图(组件还是控件)

楼主#
更多 发布于:2004-09-09 14:50
<P>1,怎么打开一个arcsde数据库的图
2,mapcontrol控件方法只能打开*.mxd文件?
3,用组件的方法:IGxDialog.DoModalOpen(0, pEnumGX)方法后怎么样打开?
有这样的例子?

刚刚开始学,希望得到高手指点。
</P>
喜欢0 评分0
http://www.geostar.com.cn(吉奥 公司) http://www.waterblue.com.cn(水之灵,蓝之静 个人)
waterblue
路人甲
路人甲
  • 注册日期2004-09-02
  • 发帖数72
  • QQ
  • 铜币387枚
  • 威望0点
  • 贡献值0点
  • 银元0个
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>
http://www.geostar.com.cn(吉奥 公司) http://www.waterblue.com.cn(水之灵,蓝之静 个人)
举报 回复(0) 喜欢(0)     评分
hugh
路人甲
路人甲
  • 注册日期2004-06-22
  • 发帖数25
  • QQ
  • 铜币165枚
  • 威望0点
  • 贡献值0点
  • 银元0个
2楼#
发布于:2005-03-01 10:41
sc<img src="images/post/smile/dvbbs/em01.gif" />
举报 回复(0) 喜欢(0)     评分
gis
gis
管理员
管理员
  • 注册日期2003-07-16
  • 发帖数15951
  • QQ
  • 铜币25345枚
  • 威望15368点
  • 贡献值0点
  • 银元0个
  • GIS帝国居民
  • 帝国沙发管家
  • GIS帝国明星
  • GIS帝国铁杆
3楼#
发布于:2005-03-02 14:34
<P>2楼兄弟说得不错,不过有人做过连接sde,获取数据集列表,然后获取所有要素集列表,在mapcontrol中打开吗</P><P>贴个上来,大家就方便了</P>
GIS麦田守望者,期待与您交流。
举报 回复(0) 喜欢(0)     评分
bluewood_cn
路人甲
路人甲
  • 注册日期2004-04-19
  • 发帖数118
  • QQ
  • 铜币551枚
  • 威望0点
  • 贡献值0点
  • 银元0个
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>
举报 回复(0) 喜欢(0)     评分
zhazha
路人甲
路人甲
  • 注册日期2003-10-20
  • 发帖数58
  • QQ
  • 铜币317枚
  • 威望0点
  • 贡献值0点
  • 银元0个
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>
无知者无畏
举报 回复(0) 喜欢(0)     评分
gis
gis
管理员
管理员
  • 注册日期2003-07-16
  • 发帖数15951
  • QQ
  • 铜币25345枚
  • 威望15368点
  • 贡献值0点
  • 银元0个
  • GIS帝国居民
  • 帝国沙发管家
  • GIS帝国明星
  • GIS帝国铁杆
6楼#
发布于:2005-03-18 12:43
楼上的函数是返回了数据集的名字,而不是要素类(图层)的名字
GIS麦田守望者,期待与您交流。
举报 回复(0) 喜欢(0)     评分
zhazha
路人甲
路人甲
  • 注册日期2003-10-20
  • 发帖数58
  • QQ
  • 铜币317枚
  • 威望0点
  • 贡献值0点
  • 银元0个
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>
无知者无畏
举报 回复(0) 喜欢(0)     评分
游客

返回顶部