默认头像
路人甲
路人甲
  • 注册日期2007-04-26
  • 发帖数11
  • QQ
  • 铜币151枚
  • 威望0点
  • 贡献值0点
  • 银元0个
阅读:1479回复:1

高手帮我修改一下代码吧!

楼主#
更多 发布于:2007-05-28 20:23

我的代码实现的是读取.shp文件并且在PageLayoutControl中显示,但是在调试的过程中出现了错误

未处理的“System.NullReferenceException”类型的异常出现在 openshapefile.exe 中。

其他信息: 无效指针

高手们帮我看看是哪里出现了错误!

多谢了!

Dim columName As String
       Dim shapeFileName As String
       Dim shapeFilePath As String
       Dim pWorkspaceFact As IWorkspaceFactory
       Dim pWorkspace As IWorkspace
       Dim pFeatureWorkspace As IFeatureWorkspace
       pWorkspaceFact = New ShapefileWorkspaceFactory
       pWorkspace = pWorkspaceFact.OpenFromFile(shapeFilePath, 0)
       pFeatureWorkspace = pWorkspace

       Dim pFeatureClass As IFeatureClass
       pFeatureClass = pFeatureWorkspace.OpenFeatureClass(shapeFileName)

       Dim pFeatCur As IFeatureCursor
       Dim pFeat As IFeature
       Dim pQueryFilter As IQueryFilter

       pQueryFilter = New QueryFilter
       pQueryFilter.WhereClause = ""

       pFeatCur = pFeatureClass.Search(pQueryFilter, False)
       pFeat = pFeatCur.NextFeature

       Dim value As String
       Do Until pFeat Is Nothing
           If Not IsNothing(pFeat.Value(pFeat.Fields.FindField(columName))) Then
               value = pFeat.Value(pFeat.Fields.FindField(columName))
               Debug.WriteLine(value)
           End If

           pFeat = pFeatCur.NextFeature
       Loop

       Dim sFileName As String
       sFileName = sFileName = "..\..\..\..\..\..\..Data\Data\vegetation.shp"
       If AxPageLayoutControl1.CheckMxFile(sFileName) Then
           AxPageLayoutControl1.LoadMxFile(sFileName)
       End If

喜欢0 评分0
默认头像
路人甲
路人甲
  • 注册日期2006-10-21
  • 发帖数23
  • QQ
  • 铜币164枚
  • 威望0点
  • 贡献值0点
  • 银元0个
1楼#
发布于:2007-05-29 22:31

下面是我在你代码的基础上在VB+AE上实现的

在MapControl中加载图层"States"

  Dim columName As String
  Dim shapeFileName As String
  Dim shapeFilePath As String
  Dim pWorkspaceFact As IWorkspaceFactory
  Dim pWorkspace As IWorkspace
  Dim pFeatureWorkspace As IFeatureWorkspace
 
  shapeFilePath = "E:\新建文件夹\MO课程设计\课程设计\USA"
  shapeFileName = "States"
  columName = "AREA"
 
  Set pWorkspaceFact = New ShapefileWorkspaceFactory
  Set pWorkspace = pWorkspaceFact.OpenFromFile(shapeFilePath, 0)
 
  Set pFeatureWorkspace = pWorkspace

  Dim pFeatureClass As IFeatureClass
 
  Set pFeatureClass = pFeatureWorkspace.OpenFeatureClass(shapeFileName)

  Dim pFeatCur As IFeatureCursor
  Dim pFeat As IFeature
  Dim pQueryFilter As IQueryFilter

  Set pQueryFilter = New QueryFilter
  pQueryFilter.WhereClause = ""

  Set pFeatCur = pFeatureClass.Search(pQueryFilter, False)
  Set pFeat = pFeatCur.NextFeature

  Dim value As String
  Do Until pFeat Is Nothing
     If Not pFeat Is Nothing Then
        value = pFeat.value(pFeat.Fields.FindField(columName))
        Debug.Print value
     End If

     Set pFeat = pFeatCur.NextFeature
   Loop
   
   Dim pFeatureLayer As IFeatureLayer
   Set pFeatureLayer = New FeatureLayer
   Set pFeatureLayer.FeatureClass = pFeatureClass
   Dim pLayer As ILayer
   Set pLayer = pFeatureLayer
   
   Dim pMap As IMap
   Set pMap = MapControl1.Map
   
   pMap.AddLayer pLayer
   
   MapControl1.ActiveView.Refresh

把这段代码放在Private Sub Form_Load()下,记住改一下路径

举报 回复(0) 喜欢(0)     评分
默认头像

返回顶部