dys3996
路人甲
路人甲
  • 注册日期2004-01-18
  • 发帖数4
  • QQ
  • 铜币133枚
  • 威望0点
  • 贡献值0点
  • 银元0个
阅读:1247回复:1

如何读SDE中图层名?

楼主#
更多 发布于:2006-08-02 17:49
<P>我已经完成SDE的连接,将Shape数据通过SDE导入Microsoft SQL Server 2000中。</P>
<P>现在先完成SDE的连接,再将导入的图层读入ListBox 中,就不知道如何实现了?</P>
<P>以下是连接SDE代码:</P>
<P>                      Dim pWorkspaceFactory As IWorkspaceFactory<BR>                   Dim pWorkspace As IFeatureWorkspace<BR>                   Dim pPropSet As IPropertySet<BR>                   Dim pClass As IFeatureClass<BR>                   Dim pLayer As IFeatureLayer<BR>                   Dim pMxDoc As IMxDocument<BR>                   Set pWorkspaceFactory = New SdeWorkspaceFactory<BR>                   Set pPropSet = New PropertySet<BR>                   With pPropSet '设置ArcSDE连接属性<BR>                    .SetProperty "SERVER", Server<BR>                    .SetProperty "INSTANCE", Instance<BR>                    .SetProperty "USER", User<BR>                    .SetProperty "PASSWORD", Password<BR>                    .SetProperty "VERSION", version '可选,缺省为SDE.DEFAULT版本<BR>                   End With<BR>                   Set pWorkspace = pWorkspaceFactory.Open(pPropSet, 0)</P>
<P>                  '如何将图层加载到List1?</P>
<P>                     '谢谢!</P>


<img src="images/post/smile/dvbbs/em12.gif" />
喜欢0 评分0
gm316
路人甲
路人甲
  • 注册日期2004-06-10
  • 发帖数11
  • QQ
  • 铜币57枚
  • 威望0点
  • 贡献值0点
  • 银元0个
1楼#
发布于:2006-08-05 12:57
<P>AE的例子</P>
<DIV class=O v:shape="_x0000_s1026">
<DIV 1; mso-kinsoku-overflow: 1; mso-line-spacing: '80 20 0'; mso-margin-left-alt: 216">&#8226; IPropertySetPtr ps(__uuidof(PropertySet)); </DIV>
<DIV 1; mso-kinsoku-overflow: 1; mso-line-spacing: '80 20 0'; mso-margin-left-alt: 216">&#8226; COleVariant v="gis-mobile"; </DIV>
<DIV 1; mso-kinsoku-overflow: 1; mso-line-spacing: '80 20 0'; mso-margin-left-alt: 216">&#8226; ps->SetProperty(L"SERVER",v); </DIV>
<DIV 1; mso-kinsoku-overflow: 1; mso-line-spacing: '80 20 0'; mso-margin-left-alt: 216">&#8226; v="ESRI_SDE"; </DIV>
<DIV 1; mso-kinsoku-overflow: 1; mso-line-spacing: '80 20 0'; mso-margin-left-alt: 216">&#8226; ps->SetProperty(L"INSTANCE",v); </DIV>
<DIV 1; mso-kinsoku-overflow: 1; mso-line-spacing: '80 20 0'; mso-margin-left-alt: 216">&#8226; v="SDE"; </DIV>
<DIV 1; mso-kinsoku-overflow: 1; mso-line-spacing: '80 20 0'; mso-margin-left-alt: 216">&#8226; ps->SetProperty(L"DATABASE",v); </DIV>
<DIV 1; mso-kinsoku-overflow: 1; mso-line-spacing: '80 20 0'; mso-margin-left-alt: 216">&#8226; v="sde"; </DIV>
<DIV 1; mso-kinsoku-overflow: 1; mso-line-spacing: '80 20 0'; mso-margin-left-alt: 216">&#8226; ps->SetProperty(L"USER",v); </DIV>
<DIV 1; mso-kinsoku-overflow: 1; mso-line-spacing: '80 20 0'; mso-margin-left-alt: 216">&#8226; v="sde"; </DIV>
<DIV 1; mso-kinsoku-overflow: 1; mso-line-spacing: '80 20 0'; mso-margin-left-alt: 216">&#8226; ps->SetProperty(L"PASSWORD",v); </DIV>
<DIV 1; mso-kinsoku-overflow: 1; mso-line-spacing: '80 20 0'; mso-margin-left-alt: 216">&#8226; v="SDE.DEFAULT"; </DIV>
<DIV 1; mso-kinsoku-overflow: 1; mso-line-spacing: '80 20 0'; mso-margin-left-alt: 216">&#8226; ps->SetProperty(L"VERSION",v); </DIV>
<DIV 1; mso-kinsoku-overflow: 1; mso-line-spacing: '80 20 0'; mso-margin-left-alt: 216"></DIV>
<DIV 1; mso-kinsoku-overflow: 1; mso-line-spacing: '80 20 0'; mso-margin-left-alt: 216">&#8226; IWorkspaceFactoryPtr wf(__uuidof(SdeWorkspaceFactory)); </DIV>
<DIV 1; mso-kinsoku-overflow: 1; mso-line-spacing: '80 20 0'; mso-margin-left-alt: 216">&#8226; IWorkspacePtr w; </DIV>
<DIV 1; mso-kinsoku-overflow: 1; mso-line-spacing: '80 20 0'; mso-margin-left-alt: 216">&#8226; wf->Open(ps,NULL,;w); </DIV>
<DIV 1; mso-kinsoku-overflow: 1; mso-line-spacing: '80 20 0'; mso-margin-left-alt: 216"></DIV>
<DIV 1; mso-kinsoku-overflow: 1; mso-line-spacing: '80 20 0'; mso-margin-left-alt: 216">&#8226; //自己添加 </DIV>
<DIV 1; mso-kinsoku-overflow: 1; mso-line-spacing: '80 20 0'; mso-margin-left-alt: 216">&#8226; IEnumDatasetNamePtr edn; </DIV>
<DIV 1; mso-kinsoku-overflow: 1; mso-line-spacing: '80 20 0'; mso-margin-left-alt: 216">&#8226; w->get_DatasetNames(esriDTAny,;edn); </DIV>
<DIV 1; mso-kinsoku-overflow: 1; mso-line-spacing: '80 20 0'; mso-margin-left-alt: 216">&#8226; edn->Reset(); </DIV>
<DIV 1; mso-kinsoku-overflow: 1; mso-line-spacing: '80 20 0'; mso-margin-left-alt: 216">&#8226; IDatasetNamePtr dn; </DIV>
<DIV 1; mso-kinsoku-overflow: 1; mso-line-spacing: '80 20 0'; mso-margin-left-alt: 216">&#8226; edn->Next(;dn); </DIV>
<DIV 1; mso-kinsoku-overflow: 1; mso-line-spacing: '80 20 0'; mso-margin-left-alt: 216"></DIV>
<DIV 1; mso-kinsoku-overflow: 1; mso-line-spacing: '80 20 0'; mso-margin-left-alt: 216">&#8226; CComBSTR bstr; </DIV>
<DIV 1; mso-kinsoku-overflow: 1; mso-line-spacing: '80 20 0'; mso-margin-left-alt: 216">&#8226; CString str; </DIV>
<DIV 1; mso-kinsoku-overflow: 1; mso-line-spacing: '80 20 0'; mso-margin-left-alt: 216">&#8226; while(dn!=NULL) </DIV>
<DIV 1; mso-kinsoku-overflow: 1; mso-line-spacing: '80 20 0'; mso-margin-left-alt: 216">&#8226; { </DIV>
<DIV 1; mso-kinsoku-overflow: 1; mso-line-spacing: '80 20 0'; mso-margin-left-alt: 216">&#8226; dn->get_Name(;bstr); </DIV>
<DIV 1; mso-kinsoku-overflow: 1; mso-line-spacing: '80 20 0'; mso-margin-left-alt: 216">&#8226; str=bstr; </DIV>
<DIV 1; mso-kinsoku-overflow: 1; mso-line-spacing: '80 20 0'; mso-margin-left-alt: 216">&#8226; AfxMessageBox(str); </DIV>
<DIV 1; mso-kinsoku-overflow: 1; mso-line-spacing: '80 20 0'; mso-margin-left-alt: 216">&#8226; edn->Next(;dn); </DIV>
<DIV 1; mso-kinsoku-overflow: 1; mso-line-spacing: '80 20 0'; mso-margin-left-alt: 216">&#8226; } </DIV>
<DIV 1; mso-kinsoku-overflow: 1; mso-line-spacing: '80 50 0'; mso-margin-left-alt: 216"></DIV></DIV>
举报 回复(0) 喜欢(0)     评分
游客

返回顶部