liujingqiu598
路人甲
路人甲
  • 注册日期2005-03-12
  • 发帖数10
  • QQ
  • 铜币190枚
  • 威望0点
  • 贡献值0点
  • 银元0个
阅读:1523回复:2

想用VBA打开一个coverage

楼主#
更多 发布于:2005-05-24 15:50
<P>Dim pWorkspaceFactory As IWorkspaceFactory
Set pWorkspaceFactory = New ShapefileWorkspaceFactory
Dim pWorkSpace As IFeatureWorkspace
Set pWorkSpace = pWorkspaceFactory.OpenFromFile("C:\Source\", 0)
Dim pClass As IFeatureClass
Set pClass = pWorkSpace.OpenFeatureClass("USStates")
Dim pLayer As IFeatureLayer
Set pLayer = New FeatureLayer
Set pLayer.FeatureClass = pClass
pLayer.Name = pClass.AliasName
Dim pMxDoc As IMxDocument
Set pMxDoc = ThisDocument
pMxDoc.AddLayer pLayer
pMxDoc.ActiveView.PartialRefresh esriViewGeography, pLayer, Nothing</P>
<P>上面是例子中的打开shapefile,我现在想用此来打开coverage中的featureclass,怎么改,还请高手帮忙!先谢谢</P>
喜欢0 评分0
gaonet
路人甲
路人甲
  • 注册日期2003-09-18
  • 发帖数9
  • QQ
  • 铜币134枚
  • 威望0点
  • 贡献值0点
  • 银元0个
1楼#
发布于:2005-07-13 18:18
<P>Dim pWorkspaceFactory As IWorkspaceFactory<BR>Set pWorkspaceFactory = New <a href="ms-its:esriDataSourcesFile.chm::/ArcInfoWorkspaceFactory.htm" target="_blank" ><STRONG>ArcInfoWorkspaceFactory </STRONG></A><BR>Dim pWorkSpace As IFeatureWorkspace<BR>Set pWorkSpace = pWorkspaceFactory.OpenFromFile("C:\Source\", 0)<BR>Dim pClass As IFeatureClass<BR>Set pClass = pWorkSpace.OpenFeatureClass("USStates:polygon") '如果USStates是polygon文件类型<BR>Dim pLayer As IFeatureLayer<BR>Set pLayer = New FeatureLayer<BR>Set pLayer.FeatureClass = pClass<BR>pLayer.Name = pClass.AliasName<BR>Dim pMxDoc As IMxDocument<BR>Set pMxDoc = ThisDocument<BR>pMxDoc.AddLayer pLayer<BR>pMxDoc.ActiveView.PartialRefresh esriViewGeography, pLayer, Nothing</P>
举报 回复(0) 喜欢(0)     评分
windsnow
路人甲
路人甲
  • 注册日期2005-07-06
  • 发帖数1
  • QQ
  • 铜币118枚
  • 威望0点
  • 贡献值0点
  • 银元0个
2楼#
发布于:2005-08-08 16:35
<P 0cm 0cm 0pt; LINE-HEIGHT: 10pt; mso-line-height-rule: exactly">Private Sub ConnectCoverageFile(ByVal sFilePath As String, ByVal sFileName As String)<p></p></P>
<P 0cm 0cm 0pt; LINE-HEIGHT: 10pt; mso-line-height-rule: exactly">    Dim pWorkspace                  As IWorkspace<p></p></P>
<P 0cm 0cm 0pt; LINE-HEIGHT: 10pt; mso-line-height-rule: exactly">    Dim pWorkspaceFactory           As IWorkspaceFactory<p></p></P>
<P 0cm 0cm 0pt; LINE-HEIGHT: 10pt; mso-line-height-rule: exactly">    Dim pPropertySet                As IPropertySet<p></p></P>
<P 0cm 0cm 0pt; LINE-HEIGHT: 10pt; mso-line-height-rule: exactly">    Dim pDataset                    As IDataset<p></p></P>
<P 0cm 0cm 0pt; LINE-HEIGHT: 10pt; mso-line-height-rule: exactly">    Dim pEnumDataset                As IEnumDataset<p></p></P>
<P 0cm 0cm 0pt; LINE-HEIGHT: 10pt; mso-line-height-rule: exactly">    Dim pFeatureClassC              As IFeatureClassContainer<p></p></P>
<P 0cm 0cm 0pt; LINE-HEIGHT: 10pt; mso-line-height-rule: exactly">    Dim pFeatureLayer               As IFeatureLayer<p></p></P>
<P 0cm 0cm 0pt; LINE-HEIGHT: 10pt; mso-line-height-rule: exactly">    Dim pMxDocument                 As IMxDocument<p></p></P>
<P 0cm 0cm 0pt; LINE-HEIGHT: 10pt; mso-line-height-rule: exactly">    Dim pMap                        As IMap<p></p></P>
<P 0cm 0cm 0pt; LINE-HEIGHT: 10pt; mso-line-height-rule: exactly">    Dim nNumber                     As Integer<p></p></P>
<P 0cm 0cm 0pt; LINE-HEIGHT: 10pt; mso-line-height-rule: exactly">    Dim sWorkspace                  As String<p></p></P>
<P 0cm 0cm 0pt; LINE-HEIGHT: 10pt; mso-line-height-rule: exactly">    <p></p></P>
<P 0cm 0cm 0pt; LINE-HEIGHT: 10pt; mso-line-height-rule: exactly">On Error GoTo ErrorHandler:<p></p></P>
<P 0cm 0cm 0pt; LINE-HEIGHT: 10pt; mso-line-height-rule: exactly"> <p></p></P>
<P 0cm 0cm 0pt; LINE-HEIGHT: 10pt; mso-line-height-rule: exactly">    sWorkspace = Dir(sFilePath, vbDirectory)<p></p></P>
<P 0cm 0cm 0pt; LINE-HEIGHT: 10pt; mso-line-height-rule: exactly">    If (sWorkspace = "") Then<p></p></P>
<P 0cm 0cm 0pt; LINE-HEIGHT: 10pt; mso-line-height-rule: exactly">        MsgBox ("文件不存在")<p></p></P>
<P 0cm 0cm 0pt; LINE-HEIGHT: 10pt; mso-line-height-rule: exactly">        Exit Sub<p></p></P>
<P 0cm 0cm 0pt; LINE-HEIGHT: 10pt; mso-line-height-rule: exactly">    End If<p></p></P>
<P 0cm 0cm 0pt; LINE-HEIGHT: 10pt; mso-line-height-rule: exactly">    Set pWorkspaceFactory = New ArcInfoWorkspaceFactory<p></p></P>
<P 0cm 0cm 0pt; LINE-HEIGHT: 10pt; mso-line-height-rule: exactly">    Set pPropertySet = New PropertySet<p></p></P>
<P 0cm 0cm 0pt; LINE-HEIGHT: 10pt; mso-line-height-rule: exactly">    'canada is an arcinfoworkspace<p></p></P>
<P 0cm 0cm 0pt; LINE-HEIGHT: 10pt; mso-line-height-rule: exactly">    pPropertySet.SetProperty "DATABASE", sFilePath<p></p></P>
<P 0cm 0cm 0pt; LINE-HEIGHT: 10pt; mso-line-height-rule: exactly">    'pWorkSp is a pointer to the IArcInfoWorkspace<p></p></P>
<P 0cm 0cm 0pt; LINE-HEIGHT: 10pt; mso-line-height-rule: exactly">    Set pWorkspace = pWorkspaceFactory.Open(pPropertySet, 0)<p></p></P>
<P 0cm 0cm 0pt; LINE-HEIGHT: 10pt; mso-line-height-rule: exactly">    'now get to dataset objects using Idataset<p></p></P>
<P 0cm 0cm 0pt; LINE-HEIGHT: 10pt; mso-line-height-rule: exactly">    Set pDataset = pWorkspace<p></p></P>
<P 0cm 0cm 0pt; LINE-HEIGHT: 10pt; mso-line-height-rule: exactly">    <p></p></P>
<P 0cm 0cm 0pt; LINE-HEIGHT: 10pt; mso-line-height-rule: exactly">    'use enum to get datasets<p></p></P>
<P 0cm 0cm 0pt; LINE-HEIGHT: 10pt; mso-line-height-rule: exactly">    Set pEnumDataset = pDataset.Subsets<p></p></P>
<P 0cm 0cm 0pt; LINE-HEIGHT: 10pt; mso-line-height-rule: exactly">    pEnumDataset.Reset<p></p></P>
<P>    'use FeatureClassContainer to get datasets</P>
<P 0cm 0cm 0pt; LINE-HEIGHT: 10pt; mso-line-height-rule: exactly"><FONT color=#000000>Set pFeatureClassC = pEnumDataset.Next<p></p></FONT></P>
<P 0cm 0cm 0pt; LINE-HEIGHT: 10pt; mso-line-height-rule: exactly"><FONT color=#000000>    Do While Not pFeatureClassC Is Nothing<p></p></FONT></P>
<P 0cm 0cm 0pt; LINE-HEIGHT: 10pt; mso-line-height-rule: exactly"><FONT color=#000000>        Set pDataset = pFeatureClassC<p></p></FONT></P>
<P 0cm 0cm 0pt; LINE-HEIGHT: 10pt; mso-line-height-rule: exactly"><FONT color=#000000>        If (pDataset.Name <> sFileName) Then<p></p></FONT></P>
<P 0cm 0cm 0pt; LINE-HEIGHT: 10pt; mso-line-height-rule: exactly"><FONT color=#000000>            Set pFeatureClassC = pEnumDataset.Next<p></p></FONT></P>
<P 0cm 0cm 0pt; LINE-HEIGHT: 10pt; mso-line-height-rule: exactly"><FONT color=#000000>        Else<p></p></FONT></P>
<P 0cm 0cm 0pt; LINE-HEIGHT: 10pt; mso-line-height-rule: exactly"><FONT color=#000000>            Exit Do<p></p></FONT></P>
<P 0cm 0cm 0pt; LINE-HEIGHT: 10pt; mso-line-height-rule: exactly"><FONT color=#000000>        End If<p></p></FONT></P>
<P 0cm 0cm 0pt; LINE-HEIGHT: 10pt; mso-line-height-rule: exactly"><FONT color=#000000>    Loop<p></p></FONT></P>
<P 0cm 0cm 0pt; LINE-HEIGHT: 10pt; mso-line-height-rule: exactly"><FONT color=#000000>       </FONT>'add FeatureClassContainer to map<p></p></P>
<P 0cm 0cm 0pt; LINE-HEIGHT: 10pt; mso-line-height-rule: exactly"><FONT color=#000000>    If (pFeatureClassC Is Nothing) Then<p></p></FONT></P>
<P 0cm 0cm 0pt; LINE-HEIGHT: 10pt; mso-line-height-rule: exactly"><FONT color=#000000>        MsgBox ("文件不存在")<p></p></FONT></P>
<P 0cm 0cm 0pt; LINE-HEIGHT: 10pt; mso-line-height-rule: exactly"><FONT color=#000000>    Else<p></p></FONT></P>
<P 0cm 0cm 0pt; LINE-HEIGHT: 10pt; mso-line-height-rule: exactly"><FONT color=#000000>        nNumber = 0<p></p></FONT></P>
<P 0cm 0cm 0pt; LINE-HEIGHT: 10pt; mso-line-height-rule: exactly"><FONT color=#000000>        Set pMxDocument = ThisDocument<p></p></FONT></P>
<P 0cm 0cm 0pt; LINE-HEIGHT: 10pt; mso-line-height-rule: exactly"><FONT color=#000000>        Set pMap = pMxDocument.FocusMap<p></p></FONT></P>
<P 0cm 0cm 0pt; LINE-HEIGHT: 10pt; mso-line-height-rule: exactly"><FONT color=#000000>        <p></p></FONT></P>
<P 0cm 0cm 0pt; LINE-HEIGHT: 10pt; mso-line-height-rule: exactly"><FONT color=#000000>        Do While nNumber < pFeatureClassC.ClassCount<p></p></FONT></P>
<P 0cm 0cm 0pt; LINE-HEIGHT: 10pt; mso-line-height-rule: exactly"><FONT color=#000000>            Set pFeatureLayer = New FeatureLayer<p></p></FONT></P>
<P 0cm 0cm 0pt; LINE-HEIGHT: 10pt; mso-line-height-rule: exactly"><FONT color=#000000>            Set pFeatureLayer.FeatureClass = pFeatureClassC.Class(nNumber)<p></p></FONT></P>
<P 0cm 0cm 0pt; LINE-HEIGHT: 10pt; mso-line-height-rule: exactly"><FONT color=#000000>            pFeatureLayer.Name = pFeatureLayer.FeatureClass.AliasName<p></p></FONT></P>
<P 0cm 0cm 0pt; LINE-HEIGHT: 10pt; mso-line-height-rule: exactly"><FONT color=#000000>            nNumber = nNumber + 1<p></p></FONT></P>
<P 0cm 0cm 0pt; LINE-HEIGHT: 10pt; mso-line-height-rule: exactly"><FONT color=#000000>            pMap.AddLayer pFeatureLayer<p></p></FONT></P>
<P 0cm 0cm 0pt; LINE-HEIGHT: 10pt; mso-line-height-rule: exactly"><FONT color=#000000>        Loop<p></p></FONT></P>
<P 0cm 0cm 0pt; LINE-HEIGHT: 10pt; mso-line-height-rule: exactly"><FONT color=#000000>    End If<p></p></FONT></P>
<P 0cm 0cm 0pt; LINE-HEIGHT: 10pt; mso-line-height-rule: exactly"><FONT color=#000000>    Exit Sub<p></p></FONT></P>
<P> </P>
举报 回复(0) 喜欢(0)     评分
游客

返回顶部